2011-09-01: 00:00:05 out of existing languages, Feather is most visually similar to Smalltalk, but that's mostly because one of its design goals is "the syntax should look similar to Smalltalk's, regardless of whether it means the same thing or not" 00:00:41 and something I haven't seen anywhere else: nested one-line comments 00:01:04 how does that work? 00:01:08 mauke: as in, # abc # def 00:01:12 and they're two different comments? 00:01:19 I don't see how that's different from one-line comments that don't nest 00:01:19 easy. REM starts a comment 00:01:22 newline ends a comment 00:01:26 comments may be nested 00:02:08 ah 00:02:11 REM foo REM bar 00:02:12 quux 00:02:12 ? 00:02:27 yep 00:02:44 heh 00:03:04 -!- CakeProphet has joined. 00:03:04 -!- CakeProphet has quit (Changing host). 00:03:04 -!- CakeProphet has joined. 00:03:04 -!- adam__ has joined. 00:03:22 if you look at the documentation, it doesn't bother to mention all the interesting stuff 00:03:32 heh 00:03:45 like how it's rather non-trivial to just parse a sequence of statements 00:04:03 I'm not even sure you can write a grammar for ploki 00:04:32 some non-eso languages have that property too, like perl 5 00:04:39 perl has a yacc grammar 00:04:44 boring 00:04:56 yacc is TC 00:05:03 so that says nothing other than "you can run perl" 00:05:45 mauke: note that it has to run part of the program at compile time to manage that 00:05:53 ais523: yes, just like lisp 00:05:57 thus, parsing perl requires running arbitrary code, which might contain an infinite loop 00:06:00 oldest trick in the book 00:06:02 lisp doesn't have a grammar either 00:06:04 (readtable) 00:06:14 you'd think parsing Lisp would be easy 00:06:20 ploki could (theoretically) be compiled, though 00:06:25 it has no eval or anything 00:06:28 then it has a grammar :P 00:06:36 "Wiki Loves Monuments: Photograph a monument, help Wikipedia and win!" <-- umm, what 00:06:54 elliott: you can try to write one and I will tell you how it's broken :-) 00:07:04 mauke: if you can compile it, it has a grammar 00:07:10 it might not have a grammar with very many nice properties, but it has one 00:08:31 ??/ looks like a trigraph 00:08:35 what you're saying sounds mathematically true but I still don't know how to write it down 00:08:57 yeah, I put that in because trigraphs are a great eso feature 00:09:31 mauke: well, if you want to compile it, you have to transform it; it's not much of a compiler if it can fail to halt (barring obscure bugs like GHC has), therefore you can make enough sense of the code to compile it down to a fixed number of operations that don't cheat (i.e. embedding an interpreter) in finite time, so you can parse it 00:09:43 cheating is kind of a subjective notion so I'm not sure there is a reasonable mathematical statement of it 00:11:01 as far as I know ploki doesn't fit in any parsing frameworks/generators/combinators 00:11:13 so that's going to be fun 00:12:08 those are usually fairly limited 00:12:13 beyond embedding your own parser in a code block 00:12:23 like i said, it might not have good properties, but it's certainly parseable :P 00:14:50 general chomsky grammars are TC 00:15:06 oerjan: what is a "general chomsky grammar" 00:15:21 annd I think I found a bug 00:15:52 augur: type-0 00:16:09 oerjan: and why is that a "general chomsky grammar" 00:16:35 chomsky opinions for a chomsky era 00:17:00 because it's called the "chomsky hierarchy", and it's a grammar by chomsky's definition without additional restrictions 00:17:36 and yes, it wasn't the technical term, that is type-0 grammar 00:17:48 which i had to look up to recall 00:17:56 oerjan: sure, but any grammar is type-0 00:18:03 great, a bug in the optimizer 00:18:27 and even within the strictly type-0 grammars, only a subset of them are TC 00:18:31 augur: thus "general", you stupid git 00:18:43 er 00:19:03 further, why "general" and "chomsky" are used makes no sense to me 00:19:11 augur: type-0 grammars as a _whole_ is a TC formalism 00:19:35 its the class that you need for giving TC grammars in, sure 00:19:54 augur: because i didn't remember the correct term, and you lack sufficient reading comprehension to understand a simple phrase 00:19:56 but thue and post preceeded chomsky in the matter 00:19:57 if (x >= 0) then '0' else 1 // this expression can be given a type! 00:20:01 :? 00:20:08 chomsky just gave a hierarchy of such systems 00:20:41 Sgeo: :1:5: Not in scope: `x' 00:21:07 * Sgeo isn't talking about Haskell 00:21:09 augur: afaik he _invented_ these formal grammars 00:21:21 oerjan: when your knowing is wrong 00:21:22 * mauke is 00:21:22 http://www.ats-lang.org/DOCUMENT/INTPROGINATS/HTML/x322.html 00:21:28 -!- adam__ has quit (Quit: leaving). 00:21:34 but thue and post preceeded chomsky in the matter 00:21:35 chomsky just gave a hierarchy of such systems 00:21:37 :t curry 00:21:37 "When Noam Chomsky first formalized generative grammars in 1956,[1] he classified them into types now known as the Chomsky hierarchy." 00:21:38 forall a b c. ((a, b) -> c) -> a -> b -> c 00:21:41 :t schönfinkel 00:21:42 Not in scope: `sch' 00:21:43 augur: ? 00:21:50 elliott: O_O 00:21:51 augur: very well, go and correct wikipedia for me 00:22:02 augur: well? 00:22:13 oerjan: generative grammars for describing languages 00:22:39 augur: oh well 00:22:39 rewrite systems of the same sort were used prior in the context of logic/math/cs for a while before chomsky 00:22:47 Sgeo: does it have subtyping? 00:23:14 chomsky might have also given the first meta-analysis. 00:23:17 augur: i assume you know what i'm talking about? 00:23:22 elliott: well what 00:23:22 I have no idea, but ATS is type-obsessed, so I'm going to go with "probably" 00:23:36 augur: 00:23:39 :t curry 00:23:39 forall a b c. ((a, b) -> c) -> a -> b -> c 00:23:40 :t schönfinkel 00:23:42 Not in scope: `sch' 00:23:48 augur: why aren't you complaining to the haskell committee? 00:23:49 elliott: what about it 00:24:44 elliott: well for one, a name is not the same as an attribution, and for two, a false attribution is not the same as a real attribution 00:25:03 "general chomsky grammar" sounds like a name to me 00:25:06 not an attribution 00:25:19 and currying is more rightly attributed to Schönfinkel 00:26:00 elliott: except chomsky's name isn't even remotely established as a name for a class of grammars 00:26:06 unless you mean in a linguistic context 00:26:22 augur: you realise this is insufferable, right? 00:26:34 :) 00:26:37 elliott: yeah dammit he managed to get _me_ angry 00:27:00 ice coffee --> 00:27:15 plausibly, a chomsky grammar could be used to refer to a grammar in chomsky normal form 00:27:39 @let schönfinkel = curry 00:27:40 Defined. 00:27:53 :t schönfinkel 00:27:55 Not in scope: `sch' 00:28:02 > schönfinkel 00:28:03 Overlapping instances for GHC.Show.Show 00:28:03 (((a, ... 00:28:03 for some reason :t does not like non-ASCII characters 00:28:06 but its hard to see how it makes any sense to call string rewriting systems "chomsky grammars" 00:28:17 * oerjan wonders how that is parsed 00:28:22 :t (ö) 00:28:23 parse error (possibly incorrect indentation) 00:28:32 > (ö) 00:28:33 Not in scope: ` 00:28:36 :t is broken 00:28:37 Not in scope: `is' 00:28:37 Not in scope: `broken' 00:28:38 as far as unicode goes 00:28:43 oh kmc said that 00:29:01 :t schoenfinkel 00:29:02 Not in scope: `schoenfinkel' 00:29:06 > schönfinkel snd 2 3 00:29:07 oh if only it were smart like that! 00:29:08 3 00:29:27 curry fst = const :o 00:29:39 mmy, currywurst 00:29:46 i agree 00:30:16 i see my domination plan is running as expected 00:30:22 :t "ö" 00:30:23 lexical error in string/character literal at end of input 00:30:31 :t "\ö" 00:30:32 unexpected end-of-file in string/character literal at end of input 00:30:34 -!- Rotaerk has joined. 00:30:41 worse and worse 00:30:52 -!- Rotaerk has left ("Leaving"). 00:31:27 cheater: your plan will be foiled when everyone on haskell-blah ends up talking about their esolang interpreters 00:31:56 using more notation 00:34:39 -!- cheater has quit (Ping timeout: 245 seconds). 00:35:44 oh dear, I actually rely on fromInteger for tuples 00:36:11 does anyone know a good way to track down the source of "error" calls in Haskell? :P 00:40:16 -!- Guest8904 has changed nick to Gregor. 00:42:57 http://haskell.org/haskellwiki/FAQ#How_can_I_get_a_stack_backtrace_when_my_program_throws_an_exception.3F 00:43:31 also http://hackage.haskell.org/package/spoon 00:43:33 yeah, that's cheating though :P 00:43:40 isn't something fancy coming up in the next release? 00:43:45 or was that the release that came out 00:43:45 i hadn't heard 00:43:52 of GHC? 00:44:05 something simon marlow on google+ that was linked on /r/haskell about solving the stack trace problem 00:44:31 i like how in Haskell, hard things are easy and easy things are hard 00:44:32 I don't think spoon helps me, since this is an erroneous call to fromIntegral 00:45:06 kmc: https://plus.google.com/107890464054636586545/posts/XE4T6hHm3tK 00:45:15 I guess it might be a while before that hits mainline GHC 00:45:38 Well, I did make esolang interpreter in Haskell once (actually it is the first Haskell program I wrote) 00:47:31 shiro: fromInteger on tuple 00:47:34 that's one user-friendly backtrace 00:49:15 especially since coreIns has, like, a hundred pattern cases with completely orthogonal behaviour 00:50:33 fromInteger on tuple, i assume that's your error message since haskell is statically typed :P 00:51:41 yep :P 00:51:58 I should probably just define my own names for the two tuple operations I use 00:52:09 oh 00:52:11 I bet I know why oerjan 00:52:20 instance (Num a, Num b) => Num (a,b) where 00:52:20 (a,b) + (c,d) = (a+c, b+d) 00:52:20 (a,b) - (c,d) = (a-c, b-d) 00:52:20 -- These don't really make any sense 00:52:20 (*) = error "(*) on tuple" 00:52:22 abs = error "abs on tuple" 00:52:24 signum = error "signum on tuple" 00:52:26 fromInteger = error "fromInteger on tuple" 00:52:30 oerjan: I use "negate" on tuples to do pointwise negation 00:52:37 oerjan: previously, fromInteger a = (fromInteger a, fromInteger a) 00:52:42 can you spot the problem? :P 00:52:54 yes, you actually need fromInteger to work then 00:53:06 yep 00:53:09 so I just need to define my own negate 00:53:55 @src negate 00:53:56 negate x = 0 - x 00:54:01 oh hm no 00:54:07 oh wait yes 01:03:49 "ddarius: isJust :: Maybe a -> Bool; isJust = unsafeCoerce 01:03:51 " 01:04:20 Maybe a bool IS just unsafe coerce! 01:05:15 !haskell import Unsafe.Coerce; main = print (map unsafeCoerce [Just "so", Nothing, Just "hm..."] :: [Bool]) 01:05:20 oerjan: it works 01:05:23 ​[True,False,True] 01:05:23 we tested it when it happened recently 01:06:15 !haskell import Unsafe.Coerce; main = print (map unsafeCoerce [Left "what", Right "about", Left "this?"] :: [Bool]) 01:06:20 ​[False,True,False] 01:06:30 -!- MDude has joined. 01:06:37 ooh and what about... 01:06:43 !haskell import Unsafe.Coerce; main = print (map unsafeCoerce [Left "what", Right "about", Left "this?"] :: [Maybe String]) 01:06:47 oerjan: he expanded on it more 01:06:48 ​[Nothing,Just "about",Nothing] 01:06:50 anything with under four constructors works 01:06:50 iirc 01:06:58 aha 01:07:07 because of pointer tagging and bits and blah, presumably 01:07:14 or was it <= four 01:07:45 oh you mean when the number of constructors are not the same 01:08:18 haha, the FQA author proves that he isn't a troll by explaining that writing an entire FQA doesn't have a good cost/benefit response when it comes to trolling 01:08:56 "Cale: the units of the monoids in the algebras for the monoid monad 01:08:57 " 01:09:09 i'm not sure if i should want to understand that or not 01:09:20 Shiro/FungeSpace.hs:85:22: Error: Use elem 01:09:20 Found 01:09:20 w == cr || w == lf 01:09:20 Why not 01:09:20 w `elem` [cr, lf] 01:09:22 but hlint 01:09:24 that could be slower :( 01:09:28 "the monoid monad" is [], i know 01:09:31 monoids form a monad? 01:09:34 ah, hmm 01:09:41 that's a crazy terminology for it 01:09:54 [] is more like a sort of ordered threading 01:09:57 oerjan: Cale was just demonstrating how monads are like monoids in some way 01:09:58 I think 01:09:59 I forget how 01:10:44 ais523: every algebraic variety (such as monoids) gives a monad in the Set category of math. some of them (iiuc, those that don't require comparing terms for equality) also work in Hask. 01:10:48 -!- azaq23 has joined. 01:11:15 just seeing the word "Hask" fills me with horror 01:11:32 ais523: well by that i mean that they correspond to haskell Monads. 01:11:37 because it implies that a) Haskell forms a category (not surprising if you take an idealized version of it), and b) people use it enough to actually use it 01:11:42 *to actually name it 01:11:46 Haskell forms many categories 01:11:57 no idealisation required 01:11:59 umm, Haskell expressions form a category 01:12:11 probably a cartesian closed one with symmetrical braiding 01:12:36 if a programming language doesn't do that, computer scientists typically don't consider it worth thinking about 01:13:21 (I tried to do that for Burro, and was a little disappointed that I couldn't find a decent tensor operator, which corresponds to tuple formation in most languages; interleaving tapes almost works except that it isn't associative) 01:13:22 it's close to cartesian closed, but i have a vague recall or hunch that bottoms maybe mess up the exact definition 01:13:58 in fact, I actually hear computer scientists say "that doesn't form a cartesian closed category, you must have made a mistake" 01:14:16 istr something going wrong about products or coproducts/sums 01:14:32 ais523: any cartesian monoidal category is symmetric 01:14:38 copumpkin: I thought that might be the case 01:14:43 but wasn't 100% sure I remembered the definition right 01:14:54 oerjan: CPO\_\bot works pretty well for haskell 01:14:58 including the bottoms 01:15:11 and the composition of folds and unfolds 01:15:24 in something like set, that doesn't work 01:15:26 copumpkin: you are over my head now, anyway :P 01:15:49 copumpkin: get a ph.d., then you'll be down to oerjan's level 01:15:54 lol 01:16:00 I already quit one 01:16:08 quitting two would be too much 01:16:13 my ph.d. didn't go that deep into category theory :P 01:16:40 there were some natural transformations and K-theory 01:17:55 this code is so imperative :-( 01:18:45 imperative is not necessarily bad 01:19:05 I know that in the only ICFP contest I actually entered, I decided as soon as I saw the problem that an imperative solution would work best 01:19:16 and wondered why on earth that was done in a contest attached to a functional programming conference 01:20:21 oerjan: CPO\_\bot works pretty well for haskell <-- * me vaguely wonders if that's an actual math term based on complete partial orders (probably), or if there's an actual bot lurking on freenode somewhere 01:20:37 lol no 01:20:40 I would tend to disagree with that viewpoint 01:20:42 it's a category of complete partial orders 01:21:12 lollercoaster notation 01:22:27 oerjan: I assumed it was a Freenode bot, and was wondering what the \_\ was for 01:22:39 -!- elliott has changed nick to CPO\_\bot. 01:22:40 what does \_ mean in (presumably LaTeX) anyway? 01:22:40 ais523: hi five 01:22:42 YESSSSSS 01:22:43 S 01:22:53 ok I am going to make this into the best haskell evaluation bot EVER 01:23:04 ais523: i _suspect_ the first \ may be a typo 01:23:10 it needs to do stuff with complete partial orders, too 01:23:14 oerjan: oh, right, that would make sense 01:23:21 and \_ would presumably be literal underscore? 01:23:33 so what's CPO⊥ ? 01:23:34 i don't recall 01:23:39 kmc: complete partial order 01:23:46 unfortunately Unicode lacks a "subscript ⊥" character 01:23:51 or wait 01:23:54 i will write an angry letter to the Committee 01:23:57 and adding bottom on there presumably means a complete partial order with bottom included? 01:24:05 kmc: They'll get it in right after Goat. 01:24:08 clearly, Unicode needs combining superscript and subscript 01:24:11 kmc: read http://www.cs.ox.ac.uk/ralf.hinze/SSGIP10/AdjointFolds.pdf 01:24:15 Deewiant: Actually, the new Fungespace might not be that far away :-) 01:24:31 kmc: ignore the shitty fraktur :P 01:24:34 Sorry, I mean sparse discrete finite lahey-space. 01:24:36 cool thanks 01:24:50 You haskellers have to promise to not say anything if a package meeting that description shows up on Hackage one day. 01:24:52 kmc: sorry my putty fonts acting up again (of all possible representations of an unknown character, why does it have to use a _blank space_?) 01:24:55 who the fuck thought http://snapplr.com/aznr was a good idea? 01:25:21 copumpkin: GOTHIK HASKEL 01:25:29 makes it look more metal 01:25:29 \m/ 01:25:41 I love the way "Lahey-space" sounds like a proper mathematical term 01:25:48 when as far as I know, it's something that cpressey just made up one day 01:25:53 ais523: it's something Lahey made up one day 01:25:56 CPO\_\bot: the \m/ \m/ version requires two neighboring ones 01:25:56 `\o/´ 01:25:56 | 01:25:56 /`\ 01:25:56 (_| |_) 01:25:58 instead of something that Gauss made up one day 01:26:03 like the rest of maths 01:26:04 ah, right 01:26:10 ais523: i was going to release my new fungespace on hackage as lahey-space, but Deewiant pointed out that there are tons of other lahey spaces than just fungespaces 01:26:18 so I need to come up with a sufficiently snappy but mathematical-sounding term for fungespace 01:26:20 oerjan: was that /meant/ to set off myndzi's script? 01:26:21 that mentions lahey-spaces 01:26:23 wow 01:26:35 \m/ \m/ \o/ ,o/ 01:26:36 `\o/´ | 01:26:36 | >\ 01:26:36 (_|¯`¯|_) 01:26:42 myndzi truly is a work of art. 01:26:48 ok I am going to make this into the best haskell evaluation bot EVER <-- i was hoping for something that did genuine category theory 01:26:50 CPO\_\bot: it's also euclidean, isn't it? 01:26:57 ais523: heh 01:27:04 ais523: no, taxicab 01:27:04 as in, there's nothing about Lahey-spaces that intrinsically makes them work like that 01:27:26 well, it follows the normal rules for making a lattice as a subset of euclidean space 01:27:36 well sure 01:27:59 -!- Zuu has quit (Read error: Connection reset by peer). 01:28:02 ais523: all cpo's have bottom included i think, because that's the infimum of the whole set 01:28:23 oerjan: all cpos /on a set that includes bottom/ 01:28:32 (yes, I know the apostrophe is technically correct, it still looks wrong) 01:28:53 most of my dealing with preorders has been on finite sets 01:29:01 also, I can never remember which of a partial order and a preorder is which 01:30:21 oerjan: was that /meant/ to set off myndzi's script? <-- um yes. 01:30:38 oh, I see 01:30:47 I'd mentally placed your line in the wrong conversation 01:30:52 and was having issues parsing it as a result 01:31:04 I've been doing that more and more nowadays 01:31:15 but it's not that common that the parsing of a sentence is as context-dependent as that, it's as bad as C++ 01:32:02 ais523: bottom afaik is a term that applies inside a cpo :P 01:32:13 -!- Zuu has joined. 01:32:21 hmm, obviously CPO means something that isn't complete + partial order 01:32:30 it wouldn't be the first time that had happened in maths 01:32:37 i suspect the _\bot is a restriction on the _arrows_, not the objects 01:32:48 namely that they send bottoms to bottoms 01:32:58 (is my guess) 01:33:12 although that excludes non-strict functions, hm 01:33:13 oh, there can be more than one bottom? I assumed it was meant to be a terminal object 01:33:33 no, just one bottom in each object. 01:33:53 categories as applied to programming languages normally consider objects as types and arrows as functions between those types, and actual values don't get involved at all 01:33:58 each haskell type is represented by one set with a CPO structure, afaik 01:34:00 except as degenerate functions 01:34:08 so each set has a bottom element 01:35:21 of course the Void data type may be such a terminal element which has only bottom in it 01:36:08 hmm, I should try out haskell-emacs I guess 01:37:46 and also because of haskell 01:38:17 's nonstrictness, functions from Void to T are 1-1 with values in T 01:39:01 Hmm, is there any portable way to get the number of existing environment variables? 01:39:05 for a strict language you'd want functions from () to T instead, i assume 01:39:31 @hoogle getEnv 01:39:32 System.Environment getEnv :: String -> IO String 01:39:32 System.Environment getEnvironment :: IO [(String, String)] 01:39:36 oerjan: in C 01:39:42 oh 01:39:46 Or, I guess: How do you get the whole environment in Windows? 01:39:51 * oerjan slinks away 01:40:08 Deewiant? :-P 01:40:12 You use the SET command 01:40:24 I do not know how to do it in C or other programming languages. 01:41:40 !haskell length `fmap` System.Environment.getEnvironment 01:41:43 35 01:42:38 I found out I have a file on my computer about the rules for "Uncyclopedian Poker". The deck contains 172 cards, 32 of which are Wilde cards. The game involves the "toilet" and the "tax collection". 01:43:25 Apparently an ace of spades is called a "half-motor" in this game. 01:44:41 If it works for him, that's great, but I would happily drop cinder blocks on my feet to get away from this architecture. Does that work? 01:44:59 ais523: here, do you know how to access the environment from Windows C? 01:45:28 CPO\_\bot: it depends on what version of Windows C you're using; I've even seen some where it was "third arg to main" 01:45:41 but at least in Windows 3.1, I think they provided a getenv with moderately posixy semantics 01:45:57 ais523: yes, but I want more than getenv/putenv give 01:46:19 also, here's a fun one: did you know that the fourth arg to main is a struct, one of whose elements contains random numbers? 01:46:23 I haven't figured out what it's for yet 01:46:26 also, this seems specific to ELF 01:46:46 which gives a bit of a mental disconnect to me, "why should the fourth arg to main depend on what format the executable has" 01:47:05 either that, or I misread kernel source, as I don't think it's documented anywhere I've read 01:47:08 it's not random 01:47:11 they're the ELF header, I think 01:47:52 oh, here we go: http://articles.manugarg.com/aboutelfauxiliaryvectors.html 01:47:55 CPO\_\bot: not the header, exactly 01:48:03 they're info from the header filled into a struct by the ELF loader 01:48:07 same thing :P 01:48:17 but not all the info is from the header, one of the slots is just a bunch of random numbers 01:48:29 not random as in unclear what they're for, random as in reading from /dev/urandom 01:48:43 I'm wondering if I should try to stabilise them in the Secret Project, or whether nobody ever uses them anyway 01:49:05 there are other ways to fool the Secret Project, so worrying about that one seems like overkill 01:49:12 ooh, what's one way 01:49:20 getting gdb involved, in any way at all 01:49:26 the Secret Project actively resists being debugged 01:49:31 or running on debuggers 01:49:40 in fact, I haven't even managed to get it to coredump 01:49:51 as a bonus, it also causes valgrind to crash with an internal error 01:50:12 (in valgrind, that is) 01:50:28 ais523: hmm, as in, it has actual code to thwart debuggers? 01:50:34 now I'm thinking there must be some kind of untrusted element to it 01:50:44 reproducibly running student code in a sandbox? 01:50:45 CPO\_\bot: not deliberately 01:50:48 aw 01:50:52 I thought I was on to something there 01:50:59 or, in, it does have code to thwart debuggers, but that code is not there for the purpose of thwarting debuggers 01:51:13 right 01:51:24 just code that does things that only a debugger would do 01:51:57 and it's thwarting those things because they contend for access to tracepids with the secret project itsel 01:51:59 *itself 01:52:37 (I still don't get how I ended up with a process that wasn't a zombie, had apparently no parent, couldn't be killed with any signal at all (not even -9 as root) and was apparently being debugged by the real init, though...) 01:52:54 (possibly a kernel bug, the secret project's probably going to expose a bunch of those as a side-effect) 01:53:13 and it's not like I could just tell init to stop debugging it 01:54:33 I fixed it by rebooting, in the end 01:54:45 although not immediately, the situation wasn't doing any /harm/ other than being massively confusing 01:55:02 !haskell filter Unsafe.Coerce.unsafeCoerce [Left 1, Right 2, Left 3, Right 4] 01:55:05 ​[Right 2,Right 4] 01:55:20 Shiro/Types.hs:19:10: Warning: orphan instance: instance Show Any 01:55:21 : 01:55:21 Failing due to -Werror. 01:55:22 oh /come on/ 01:55:25 oerjan: wait what? 01:55:32 ais523: 01:55:35 ?quote ddarius unsafeCoerce 01:55:35 ddarius says: isJust :: Maybe a -> Bool; isJust = unsafeCoerce 01:55:39 is this something to do with Either's definition of a monad? 01:55:57 what? 01:55:59 no 01:56:01 Does that work? 01:56:06 it's to do with GHC's pointer representation 01:56:08 zzo38: yes 01:56:10 ah, I see 01:56:15 @src isJust 01:56:15 isJust Nothing = False 01:56:15 isJust _ = True 01:56:24 bleh, I was hoping it would be defined /as/ unsafeCoerce 01:56:27 I don't think you should write it that way except possibly in an optimization rule 01:56:48 !haskell Data.Maybe.catMaybes $ Unsafe.Coerce.unsafeCoerce [Left 1, Right 2, Left 3, Right 4] 01:56:51 ​[(),()] 01:56:53 As an optimization rule, write it that way but leave a note in case it stops working in a different version or on different computers 01:56:59 ah hm 01:57:08 !haskell Data.Maybe.catMaybes $ Unsafe.Coerce.unsafeCoerce [Left 1, Right 2, Left 3, Right 4] :: [Integer] 01:57:11 ​[2,4] 01:57:18 :t Unsafe.Coerce.unsafeCoerce 01:57:18 forall a b. a -> b 01:57:22 I thought os 01:57:23 *so 01:57:28 hmm, this is reminding me of Ursala 01:57:30 As an optimization rule, write it that way but leave a note in case it stops working in a different version or on different computers 01:57:34 which did that sort of thing to /everything/ 01:57:35 zzo38: it already optimises down to that at runtime, almost certainly 01:57:37 this is just a silly trick 01:57:46 Overload did too, I suppose 01:57:47 ais523: I still think Ursala was actually really interesting 01:57:59 CPO\_\bot: it had interesting ideas there, they were just assembled in an insane way 01:58:06 it reminds me quite a bit of Overload, actually 01:58:19 hmm, what's the standard operator for vector+vector again? 01:58:22 .+.? 01:58:27 Describe more about Overload? 01:58:46 @quote ddarius isJust 01:58:46 ddarius says: isJust :: Maybe a -> Bool; isJust = unsafeCoerce 01:58:46 ddarius wins! 01:58:50 zzo38: the language that Underload is a tarpit of, it has things like equivalences between characters and lists of strings, and pointers 01:58:50 ok, who's the spy :D 01:59:20 and is possibly internally consistent, but large and sprawling and unmaintainable 01:59:22 ais523: You told me that before. Write more about Overload in the [[Talk:Underload]] page in Esolang wiki 01:59:39 there isn't much more to write 01:59:40 ais523: or ELSE 01:59:44 I have some unfinished interps you can look at 01:59:50 if you want to get an idea of what the lang is like 02:00:00 ais523: OK, post those to the [[Talk:Underload]]. 02:00:07 nah, it's an entirely unrelated language 02:00:14 that Underload is a tarpit of Overload is mostly just coincidence 02:00:20 or, umm, historical etymology, or something 02:00:23 !haskell print (Unsafe.Coerce.unsafeCoerce False :: Maybe Int) 02:00:24 Then post it on your user page. 02:00:25 !haskell print (Unsafe.Coerce.unsafeCoerce True :: Maybe Int) 02:00:26 Nothing 02:00:30 the only real evidence is that <>[] are reserved in Underload for no apparent reason 02:00:32 !haskell print (Unsafe.Coerce.unsafeCoerce True :: Maybe Int) 02:00:34 ​./interps/ghc/runghc: line 7: 30354 Segmentation fault ghc -O2 -e "`cat $1`" 2> /dev/null 02:00:35 I'll just post it in-channel, seems simplest 02:00:40 -!- CPO\_\bot has changed nick to elliott. 02:00:47 !haskell print (Unsafe.Coerce.unsafeCoerce False :: Maybe ()) 02:00:49 Nothing 02:00:51 !haskell print (Unsafe.Coerce.unsafeCoerce True :: Maybe ()) 02:00:53 ​./interps/ghc/runghc: line 7: 30718 Segmentation fault ghc -O2 -e "`cat $1`" 2> /dev/null 02:01:08 oh wow, this code is /old/ 02:01:16 anyone here recognise pre-standard C++? 02:01:24 ok, who's the spy :D <-- it was in today's haskell weekly news 02:01:25 yikes 02:01:30 oerjan: heh 02:01:37 at least, it appears to be ifdeffed between pre-standard C++ and nonidiomatic standard C++ 02:01:37 Obviuosly the constructor for True takes no parameters while Just does take some, so it would try to access unallocated memory, I think. 02:01:48 oh no, my mouse is doing that thing again 02:01:58 I liked pre-standard C++, it was not yet insane 02:02:10 also, 02:02:11 hmm, what's the standard operator for vector+vector again? 02:02:11 .+.? 02:03:23 Do you know how to play Pasur or Scope? I know how to play these card games. I also know how to play (two variants of) Scopone Scientifico, maybe I can invent Scopone Frobozzica. 02:03:33 oh, real wow, this code uses macros that use stringisation just so their arguments don't need to be double-quoted 02:03:45 meanwhile, attempting to pastebin it has frozen Firefox 02:03:54 I'm waiting for Firefox to unfreeze so I can show you 02:03:57 or maybe I'll just use Sprunge 02:03:59 Then use sprunge 02:04:11 I always use sprunge. 02:04:26 Sprunge does not require a web browser to work properly. 02:04:27 -!- edwardk has joined. 02:04:45 ANOTHER ONE 02:04:52 Which means it can be accessed without requiring loading the web browser program. 02:04:57 wow, pastie has also doubled all the newlines 02:05:07 I think because it's so old it uses \r\n line-endings 02:05:10 i haven't wandered out of my native #haskell in a while, but i'm not THAT much of a stranger =P 02:05:12 edwardk: ok, who is responsible :D 02:05:30 elliott: kmc talking about currywurst 02:05:31 (it also has a "C/C++" highlighting option, which is an appropriate description of the language the interp is actually written in) 02:05:43 zzo38 (and other people interested in Overload): http://pastie.org/private/9a3ws8d7h71xdadmv4aqfg 02:05:45 wtf is currywurst 02:06:04 Now I have to load the web browser program, but, OK 02:06:07 ais523: I don't read double-spaced code 02:06:20 apparently something that kmc likes to eat 02:06:27 -!- augur has quit (Ping timeout: 258 seconds). 02:06:29 Why is it double spaced? 02:06:35 because it uses \r\n newlines 02:07:10 Oops it got cut off 02:07:23 http://sprunge.us/hMUA?cpp seems to be singlespaced 02:07:29 so you can read that instead 02:09:19 I have a file of poker variants including: Draw-Stud Poker, Crap Poker, Bug Poker, Janken Poker, Baccarat Poker, Leg Poker, Dynamic Poker, Pokemon Card Poker, Pokino, Uncyclopedian Poker, Dungeon Poker, Steamship Poker, etc 02:12:00 wow, my computer ran out of memory at 32K of heap? that program must be old 02:12:08 To play Scope: You need a deck of forty cards, consisting of numbers one to ten of each of four suits. One suit is money. Give three cards to each player and four cards on the floor. 02:12:50 -!- augur has joined. 02:14:16 On your turn, select one card from your hand and play that card. If it is the same rank as one of the cards on the floor, you *must* take that one, and you put both cards in your score pile. (If there are multiples of that rank, you can select which one you want.) Otherwise, you can either leave it on the floor, or take that card together with any number of cards from the floor that add up to the card in your hand (for example, if you play 7 yo 02:14:43 If you played the card resulting in no cards on the floor, you make a scope and immediately earn one point. 02:14:46 zzo38: the line was cut off, at "play 7 yo" 02:15:04 u can get 4 and 3) 02:15:35 If both players have no cards in hand, deal three cards to each player again. The last card played in the entire game does not make a scope even if it picks up everything. 02:15:36 elliott: zzo38: for a hint of what Underload is like, look at "EnsureUncar", its purpose is to ensure that a particular list is the first element of another list 02:15:43 as in, of some other list 02:15:48 "Underload" 02:15:52 or, actually, I think any element of some other list 02:15:54 and, right, Overload 02:16:04 I don't type Overload's name much, my fingers were confused 02:16:15 After all cards are played, if any cards remain on the floor, whoever took cards into their scoring pile last takes all the remaining cards on the floor. 02:16:48 And then you count points. If you have more cards than opponent you get 1 point. If you have more money than opponent you get 1 point. If you have the seven of money then you get 1 point. If you make premere you get 1 point. 02:16:49 hmm, the data structure Overload uses doesn't have a name 02:16:50 oh my god, -Wall is complaining about the horrific function 02:16:55 I think I'll call it "the quadruply linked list" 02:17:02 elliott: in Overload? or in your code? 02:17:09 my code 02:17:30 I hate to think what -Wall's reaction would be to that code 02:17:36 To figure out the premere, each player reveals one card of each suit, of the highest ranking card. For the purpose of premere, the cards rank in this order (from highest to lowest): 7, 6, 1, 5, 4, 3, 2, 10, 9, 8. 02:17:37 although at least it /compiles/ with an old version of g++ 02:17:41 it's really horribly written 02:18:05 (I don't know why the cards are ranked like this; I did not invent this game.) 02:18:08 oh, I just figured out what // wmw-dependent means 02:18:12 I think it means "what means what" 02:18:28 Match is played up to eleven points. 02:18:28 #define OVCMD(a) InsBefore(&ITOS, new TListEl("(" #a ")",1),1); goto eval 02:18:49 Now do you know how to play this game? 02:19:07 oh good, for a moment I thought that code was literally replacing abbreviations with their expansions in the actual code, but it's saner than that 02:19:30 (in Underload, if you do this you don't notice, as it happens only as they're executing; in Overload you can go and look back at previously executed code using pointers) 02:20:34 and , is possibly the most Overloady instruction of all; it returns a pointer to itself 02:20:40 as in, to the , operation 02:21:15 I suppose gnu C has the equivalent "a: void* p = &&a;", which is as close as you can get in any other lang 02:22:11 I think LLVM can point to labels, although they can only be used for indirect branch instructions, and only in the same function 02:22:57 in Overload, you used that sort of trick to, say, get a pointer to the IP, then move it to the end of the current function to get the return address, and follow that 02:25:21 I invented an instruction set and computer system on a sheet of paper. 02:26:35 It does have an instruction which can save a pointer to the immediately following instruction into a register: MOV A P 02:28:39 !haskell map Unsafe.Coerce.unsafeCoerce [[1,2],[3,4,5],[6,7,8,9]] :: [Maybe Integer] 02:28:41 ​[Just 1,Just 3,Just 6] 02:29:58 !haskell map Unsafe.Coerce.unsafeCoerce [[1,2],[3,4,5],[6,7,8,9],[]] :: [Maybe Integer] 02:30:01 ​[Just 1,Just 3,Just 6,Nothing] 02:30:31 oerjan: Can you guess that? I think it is probably possible to do so. In fact that seems a possible usefulness. It should be written as a function not using unsafeCoerce and then optimized into unsafeCoerce (use a RULES pragma if the compiler cannot do it by itself) 02:31:10 -!- CakeProphet has quit (Quit: Reconnecting). 02:31:15 -!- CakeProphet has joined. 02:31:15 -!- CakeProphet has quit (Changing host). 02:31:15 -!- CakeProphet has joined. 02:31:29 :t toJust 02:31:30 Not in scope: `toJust' 02:31:34 lulz 02:31:44 @hoogle [a] -> Maybe a 02:31:45 Data.Maybe listToMaybe :: [a] -> Maybe a 02:31:45 Data.List find :: (a -> Bool) -> [a] -> Maybe a 02:31:45 Prelude head :: [a] -> a 02:32:10 > map listToMaybe [[1,2],[3,4,5],[6,7,8,9],[]] 02:32:11 [Just 1,Just 3,Just 6,Nothing] 02:32:26 I think I can understand why unsafeCoerce does that on those operations. 02:32:29 @src listToMaybe 02:32:30 listToMaybe [] = Nothing 02:32:30 listToMaybe (a:_) = Just a 02:32:40 zzo38: yes, think of it as a C-style cast. 02:32:50 CakeProphet: Yes it is what I thought of. 02:32:53 thinking of it as a C-style cast does not fully explain why it works for isJust. 02:32:53 and then imagine what the internal representations of those data types might look like. 02:32:59 you have to understand the pointer tagging GHC does. 02:33:01 it's more like a C++ reinterpret_cast than a C cast 02:33:02 -!- preflex has quit (Ping timeout: 264 seconds). 02:33:10 because C's casts can alter bitwise representation too 02:33:14 e.g. casting int to double 02:33:27 kmc: But it is a pointer cast. 02:33:34 sure you can think of it that way 02:33:40 GHC's unsafeCoerce is always a no-op at runtime 02:33:54 it just tells the typechecker to fuck off in the most unsubtle way possible 02:34:23 Can GHC optimize other operations into unsafeCoerce if you wrote them in a way which it can do so? 02:34:52 wrapping/unwrapping a newtype is also a no-op at runtime 02:35:11 Yes, I know that too. 02:35:43 zzo38: you could write such optimizations via RULE, of course. 02:36:15 CakeProphet: Yes, it is what I am thinking of; you could do that. What I mean is if it can do it by itself. If it cannot, then you should use rule pragmas. 02:36:29 right, I understood, my response just wasn't helpful. heh 02:37:13 Other than rule pragmas, the only other thing I think you should ever use unsafeCoerce for is when using FFI codes. 02:37:49 !haskell Control.Monad.filterM Unsafe.Coerce.unsafeCoerce [[1,2],[3,4],[5,6]] :: [[Integer]] 02:38:20 forgot to print. ;) 02:38:34 no it does that 02:38:39 ah. 02:38:45 but it was an error 02:39:12 :t unsafeCoerce 02:39:13 Not in scope: `unsafeCoerce' 02:39:16 !haskell !import Control.Monad; import Unsafe.Coerce; main = print (filterM unsafeCoerce [[1,2],[3,4],[5,6]] :: [[Integer]]) 02:39:19 er 02:39:20 zzo38: i occasionally use it to add observable sharing 02:39:24 !haskell import Control.Monad; import Unsafe.Coerce; main = print (filterM unsafeCoerce [[1,2],[3,4],[5,6]] :: [[Integer]]) 02:39:27 well b = m Bool here 02:39:35 in unsafeCoerce :: a -> b 02:39:35 zzo38: where the type being discarded is provably irrelevant 02:39:48 !haskell import Control.Monad; import Unsafe.Coerce; main = print (filterM unsafeCoerce [[1,2],[3,4],[5,6]] :: [[Integer]]) 02:40:05 oops 02:40:24 foo (Left a) = Left a -- this case can be rewritten using an unsafeCoerce for instance 02:41:21 hmm, is it (*+*) or (.+.)... 02:41:25 > filterM (const [True]) [1,2,3] 02:41:26 [[1,2,3]] 02:41:51 oh hm 02:42:10 !haskell import Control.Monad; import Unsafe.Coerce; main = print (filterM (const . unsafeCoerce) [[1,2],[3,4],[5,6]] :: [[Integer]]) 02:42:39 04:43 =EgoBot> Execution of /tmp/input.24301 aborted due to compilation errors. 02:43:30 helpful 02:43:59 @hoogle .+. 02:44:00 No results found 02:44:03 @hoogle *+* 02:44:04 No results found 02:45:09 oh wait @hoogle has only a few packages 02:45:14 @hoogle fix 02:45:14 Data.Function fix :: (a -> a) -> a 02:45:14 Control.Monad.Fix fix :: (a -> a) -> a 02:45:14 module Control.Monad.Fix 02:45:20 * elliott tries hayoo 02:45:34 nothing found for (.+.) :-( 02:45:51 why don't you look up a vector package 02:46:14 Do you know about the BLISS programming language? It also has some stuff including macros that you do not find in others, maybe it can be combined with LLVM somehow to make something 02:46:44 oerjan: I tried 02:46:51 they all had alphabetical operations :( 02:46:57 huh 02:47:09 like mxm, mxv or whatever 02:47:11 ugly 02:47:28 haskellers who don't make up new operators whenever possible? impossible! 02:48:22 i love that y'all have a bot with unsafeCoerce 02:48:23 @define unsafeCoerce = fix ($) 02:48:28 i assume it's heavily sandboxed 02:48:30 @def unsafeCoerce = fix ($) 02:48:31 Maybe you meant: bf do let 02:48:37 @let unsafeCoerce = fix ($) 02:48:37 Defined. 02:48:53 > unsafeCoerce 1 :: Maybe Int 02:48:58 Fake unsafeCoerce! 02:48:59 @type fix id 02:48:59 * Lymee hides 02:49:00 forall a. a 02:49:08 thread killed 02:49:12 just assume the hypothesis and be done 02:49:20 -!- GreaseMonkey has joined. 02:49:20 -!- GreaseMonkey has quit (Changing host). 02:49:20 -!- GreaseMonkey has joined. 02:49:24 @type fix ($) 02:49:30 kmc, it's just the same lambdabot that's in #haskell 02:49:40 Sgeo: no... 02:49:46 Can you use unsafeCoerce for nefarious purposes? 02:49:48 elliott, wait what? 02:49:49 kmc: yeah Gregor worked hard on the sandboxing 02:49:52 it's EgoBot 02:49:53 kmc: It's heavily sandboxed, but HackEgo is more permissive 02:49:55 `run echo hi >q 02:49:59 No output. 02:50:00 `run cat q 02:50:02 cat: q: No such file or directory 02:50:04 `run cat q 02:50:05 argh 02:50:06 hi 02:50:08 (sometimes it has sync issues) 02:50:09 `rm q 02:50:10 No output. 02:50:12 `l 02:50:12 `ls 02:50:14 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: l: not found 02:50:15 babies \ bin \ bluhbluh \ canary \ env \ foo \ paste \ ps \ quine.pl \ quine2.pl \ quine3.pl \ quotes \ quotese \ tekst \ test.c \ tmp.tmp 02:50:18 `help 02:50:19 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 02:51:13 quotse? 02:51:23 `quote 02:51:26 483) btw i saw my first prostitute about a week ago 02:51:29 good quotes 02:51:35 (quote database is of questionable quality) 02:51:36 does it respond to PM? 02:51:46 yes, but it logs anything that changes the filesystem 02:51:50 hehe 02:51:55 and those can be reverted 02:52:02 the quote system is rather advanced: 02:52:06 `run ls bin/*quote* 02:52:09 bin/addquote \ bin/allquotes \ bin/delquote \ bin/pastenquotes \ bin/pastequotes \ bin/quote \ bin/quotes 02:52:21 `perl -v 02:52:24 ​\ This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi \ \ Copyright 1987-2007, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be 02:52:34 `run cat /dev/urandom | perl 02:52:36 Unrecognized character \xC7 in column 1 at - line 1. 02:52:39 * Lymee hides 02:52:48 `cat /dev/urandom 02:52:50 ​.݀Bgo-:h6ڵsU.b..7.R.܄.l..򋦋gmTdv+dlR5RPsWwiyԼN..l;BrjA_.^.y9Y<(-.Ñu{p.gJ*..a#-n\Y@鹜pP6e.U.vV.5|P9.?++~W>`ҌoL.ZI\m..qǎ\3e.d3.,..zs-h.. 02:53:00 kmc: mauke: it's based on UMLBox, fwiw: https://bitbucket.org/GregorR/umlbox/overview; previously it was based on the (Debian-specific) plash 02:53:11 (it's Gregor's) 02:53:21 cool 02:53:36 -!- lambdabot has quit (Ping timeout: 258 seconds). 02:53:38 `cat /dev/random 02:53:48 `translateto no also, it has limited internet access 02:53:51 `hexdump -C /dev/urandom 02:53:53 hexdump: invalid option -- \ usage: hexdump [-bcCdovx] [-e fmt] [-f fmt_file] [-n length] \ [-s skip] [file ...] \ hd [-bcdovx] [-e fmt] [-f fmt_file] [-n length] \ [-s skip] [file ...] 02:53:55 Traceback (most recent call last): \ File "/hackenv/bin/json", line 4, in \ data = json.loads(sys.stdin.read().decode('utf-8')) \ File "/opt/python27/lib/python2.7/json/__init__.py", line 310, in loads \ return _default_decoder.decode(s) \ File "/opt/python27/lib/python2.7/json/decoder.py", line 346, 02:53:57 kmc: you need `run for multiple arugments 02:53:59 `run hexdump -C /dev/urandom 02:54:01 *nod* 02:54:01 00000000 5c 50 2b 17 29 6c be e8 d0 15 1e 99 26 a6 e0 a1 |\P+.)l......&...| \ 00000010 7c 54 c2 93 eb a1 59 b2 ea 62 50 27 e1 99 63 d2 ||T....Y..bP'..c.| \ 00000020 03 82 5a 43 8b dc 0c 61 ec 10 ba 82 ff 85 15 28 |..ZC...a.......(| \ 00000030 44 89 38 a4 ac 20 25 fd c0 13 7f 20 80 f4 86 0b |D.8.. %.... ....| \ 00000040 02:54:07 Gregor: translation is broken again :P 02:54:10 No output. 02:54:12 fixed a bug in ploki's halting detector :-) 02:54:12 `translateto sv also, it has limited internet access 02:54:15 Traceback (most recent call last): \ File "/hackenv/bin/json", line 4, in \ data = json.loads(sys.stdin.read().decode('utf-8')) \ File "/opt/python27/lib/python2.7/json/__init__.py", line 310, in loads \ return _default_decoder.decode(s) \ File "/opt/python27/lib/python2.7/json/decoder.py", line 346, 02:54:57 `translateto hu also, it has limited internet access 02:55:00 Traceback (most recent call last): \ File "/hackenv/bin/json", line 4, in \ data = json.loads(sys.stdin.read().decode('utf-8')) \ File "/opt/python27/lib/python2.7/json/__init__.py", line 310, in loads \ return _default_decoder.decode(s) \ File "/opt/python27/lib/python2.7/json/decoder.py", line 346, 02:55:03 :| 02:55:06 `translateto la also, it has limited internet access 02:55:09 Traceback (most recent call last): \ File "/hackenv/bin/json", line 5, in \ print eval(sys.argv[1]).encode('utf-8') \ File "", line 1, in \ TypeError: 'NoneType' object is not subscriptable 02:55:14 fuck you 03:00:01 ...wait, Python sets argv to None ? 03:00:06 WHY 03:00:41 oh wait eval. 03:00:48 could be something else then. 03:04:30 -!- kmc has quit (Quit: Leaving). 03:04:46 hmm, synonyms of go as in "go west"? 03:04:49 that aren't head 03:04:51 face? 03:04:51 travel? 03:05:00 move? 03:05:06 there's no movement involved 03:05:10 it's about which direction you're facing 03:05:14 oh, right, "go" is ambiguous, there 03:05:16 turn 03:05:16 "aim" in that case 03:05:28 Sgeo: no, you turn 03:05:34 you don't turn 03:05:41 ais523: hmm, I think I prefer face 03:05:50 actually, aim is nicer 03:05:54 setDelta works, but is boring :) 03:06:03 depends what this is for, and you hadn't explained until that line 03:06:05 *depends on 03:06:33 right 03:06:36 it's go as in funge 03:07:13 elliott: what are we talking about exactly? 03:07:15 sounds interesting. 03:07:19 funge 03:07:56 -98 particularly? -108? 03:08:07 I have make up new operator in Haskell when it seems useful to do so, but not always. 03:08:18 ok 03:08:37 Such as the (.::) operator 03:08:46 what does (.::) do 03:09:02 Defined as: (.::) = (.) . (.) . (.); infixr 9 .::; 03:09:31 I needed it once in my implementation of Constantinople. 03:09:53 :t (.) . (.) . (.) 03:10:01 Grah 03:10:07 "infixr 9 .::;" took me a while to mentally parse 03:10:16 -!- azaq23 has quit (Ping timeout: 240 seconds). 03:10:21 now I'm trying to work out what .:: even does 03:10:35 argh, it'll type differently due to the infixr, won't it :/ 03:10:37 -98 particularly? -108? 03:10:39 latter is not a real language 03:10:41 @unpl (.) . (.) . (.) 03:10:44 Sgeo: no? 03:10:55 elliott: you might be trying to interpret it in an attempt to make it into a real language 03:10:56 it looks like composition but the second operand takes three arguments 03:11:04 hey, where'd lambdabot go? 03:11:13 Does infixr cause it to type differently? 03:11:19 [Error] lambdabot: No such nick/channel. 03:11:21 Is there a difference between (.) . ((.) . (.)) and ((.) . (.)) . (.) 03:11:28 monqy: Yes that is what I used it for 03:11:33 I don't think so, composing is associative 03:11:41 ais523: I wish cpressey finished his revision to Funges but Vorpal ruined everything :( 03:11:43 monqy: that was incredibly well worked out 03:11:55 elliott: if ESO was still going, we could fix it 03:12:15 I didn't feel like figuring it out myself so I politely asked ghci to give me its type signature 03:12:15 but it didn't seem to work, as I was interested in standardising languages, and you and Vorpal were interested in how to best format the specs 03:12:21 heh 03:12:24 I put infixr 9 to make it the same fixity as the normal composition operator 03:12:38 @unpl (.) . ((.) . (.)) 03:12:43 @unpl ((.) . (.)) . (.) 03:12:48 but if I stared at it long enough I think I could have done it 03:12:55 (.) . (.) . (.) :: (b -> c) -> (a -> a1 -> a2 -> b) -> a -> a1 -> a2 -> c 03:13:03 yep, that's a giveaway 03:13:27 now I'm trying to work out why it does that 03:13:27 Yes, . is an associative operator it is one of the category laws. The other one is id 03:14:04 The monad laws are the same if you use <=< and return in place of . and id 03:20:03 foldl' (\m' ins -> Map.alter (maybe Nothing (\(_:xs) -> if null xs then Nothing else Just xs)) 03:20:03 ins m') 03:20:03 m (fpHandles ident) 03:20:03 wha. 03:20:03 t 03:21:31 what is that 03:23:24 a loop that modifies a map m 03:23:43 for each key in fpHandles ident it drops the first element of the corresponding list 03:25:19 !haskell :t maybe Nothing 03:25:21 maybe Nothing :: (a1 -> Maybe a) -> Maybe a1 -> Maybe a 03:25:50 aka =<< 03:26:45 padTake _ 0 _ = [] 03:26:46 padTake fill n [] = fill : padTake fill (n-1) [] 03:26:46 padTake fill n (x:xs) = x : padTake fill (n-1) xs 03:26:46 I don't even know what some of this is 03:26:46 oerjan: oh thanks 03:26:55 omg maybe Nothing is a really nice =<< 03:26:58 implementation I mean 03:27:03 :t M.alter (\mvs -> do _ : vs <- mvs; return vs) 03:27:07 but um 03:27:14 !haskell :t M.alter (\mvs -> do _ : vs <- mvs; return vs) 03:27:19 oerjan: (>>= f) sure is a weird way to write that :D 03:28:04 mauke: EgoBot doesn't have predefined imports 03:28:16 !haskell :t Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs) 03:28:18 Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs) :: (Ord k) => 03:28:29 "good" job 03:28:37 mauke: the rest is sent in DCC 03:28:43 padTake? so if it reaches the end of the victim list it fills the rest of the result with fill rather than cutting off? 03:28:45 hahaha, wtf 03:29:08 egobot's line-breaking is... not universally liked 03:29:18 did you mean: fucking stupid 03:30:09 if null xs then Nothing else Just xs = guard (null xs) >> Just xs, i think 03:30:16 er wait 03:30:29 backwards test 03:30:36 mauke: well it lets you receive the output of programs that output a lot, and in clients that automatically accept dcc chats it works ok 03:30:42 better than rate-limiting, at least, in that case 03:30:51 mauke: egobot can take urls too, so it's possible to run complex stuff with it 03:31:04 `which ghci 03:31:06 ​/opt/ghc/bin/ghci 03:31:16 elliott: how is that better than rate limiting? 03:31:22 given that you have to do rate limiting anyway 03:31:26 `run ghci -e ':t Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs) 03:31:28 sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file 03:31:28 mauke: no you don't, not for dcc chat 03:31:34 `run ghci -e ':t Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs)' 03:31:37 elliott: no, but for the rest of the bot 03:31:37 ghc: on the commandline: cannot use `--interactive' with `-e' \ Usage: For basic information, try the `--help' option. 03:31:39 waiting minutes to get fifty lines of output or errors is annoying 03:31:51 `run ghc -e ':t Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs)' 03:31:55 i don't like EgoBot's solution, i'm just devil's avocadoing :) 03:31:56 : can't load .so/.DLL for: libgmp.so (libgmp.so: cannot open shared object file: No such file or directory) 03:32:02 oerjan: hackego ghc doesn't work yet 03:32:03 gah 03:32:07 oh 03:33:06 hmm, making my fingerprint scheme work with -Werror will be rather tricky 03:33:37 why do they generate warnings? and can you fix them with insane workarounds? 03:33:52 Shiro/Fingerprints/MODU.hs:17:1: 03:33:52 Warning: Pattern match(es) are non-exhaustive 03:33:52 In an equation for `run': 03:33:52 Patterns not matched: 03:33:52 _ A 03:33:54 _ B 03:33:55 an IOCCC entry I've been sitting on waiting for the IOCCC to actually happen generates only three warnings in gcc and they're all incorrect 03:33:56 _ C 03:33:57 _ D 03:33:59 even though it /should/ generate a lot more 03:34:00 ... 03:34:02 the whole point is that you specify what instructions you handle so that you never get called with an instruction you can't handle :) 03:34:11 adding an extra line to just fail boringly to each fingerprint is really annoying 03:34:22 what i really want is some kind of type-level restriction of the fingerprint instructions but aargh 03:34:28 like 03:34:34 elliott: this sounds like the sort of thing Anarchy is designed for (will be designed for, when I get round to designing it) 03:34:43 run :: (IsInstructions ins (A :+: B :+: C :+: Nil)) => ins -> Shiro () 03:34:45 but um 03:34:47 that's horrific 03:34:50 btw padTake fill n l = take n $ l ++ repeat fill 03:34:50 my solution to that problem was to invent a language :) 03:34:52 and I'm not sure it'd work anyway 03:35:01 oerjan: thanks 03:35:45 hmmm 03:35:53 I guess I could use a gadt 03:38:54 class Elem x xs 03:38:55 instance Elem x (x :- xs) 03:38:55 instance (Elem x xs) => Elem x (y :- xs) 03:38:58 turns out, this _isn't_ a good instance :) 03:39:11 I think I need a ~/~ 03:39:16 or, hmm 03:39:24 I suppose HList has solved this 03:43:01 Heterogeneous List? 03:43:08 yes. 03:43:09 oerjan: halp 03:43:32 elliott, is Active Oberon a good language 03:43:34 ? 03:43:45 * Sgeo feels like he's going to be shot 03:44:04 Oberon is a bad language but an interesting one. 03:44:24 wat 03:45:11 Hmm. What's bad about it, and what's interesting about it? 03:45:23 oerjan: i'm trying to define this FPIns type but I can't manage it :( 03:45:38 what type 03:45:49 basically, I want, for letter=A,B,C, letter :: FPIns xs iff xs contains the type letter 03:45:56 where xs is a list of the form (a :- b :- ... :- xs) 03:45:57 i.e. 03:46:04 A :: FPIns (A :- B :- Nil) 03:46:10 A :: FPIns (B :- A :- Nil) 03:46:12 A :: FPIns (A :- Nil) 03:46:13 etc. 03:46:23 but A :/: FPIns (B :- Nil) 03:46:41 ah. well i suspect the problem is you need to check for two types _not_ being equal in that. 03:46:45 indeed 03:46:53 iirc someone did that on stack overflow... 03:47:01 oerjan: what if I required the list to be in order? 03:47:05 i.e., (B :- A :- Nil) is not ok 03:47:08 where A < B < C 03:47:15 oerjan: not equal as in cannot be equal, or as in aren't known to be identical? 03:47:21 hmm, I think I could easily do that, with a _lot_ of boilerplate code 03:47:27 in fact, I could do it out of order too 03:47:32 with a _lot_ of boilerplate 03:47:37 ais523: ghc does not give a way to distinguish those, i think 03:47:55 ah, OK, even though they're distinguishable concepts 03:48:18 as in, the basic type class lookup contains _no_ not-equal checks 03:48:44 oerjan: http://sprunge.us/UaaA behold my solution that will scale perfectly to the real A-Z situation 03:48:45 ...well, there _are_ overlapping instances. 03:49:16 omg it works :D 03:49:24 oerjan: not there, there aren't? 03:49:29 or are you talking to ais523 03:49:52 oerjan: oh my god 03:49:53 guess what 03:49:56 i defined all this infrastructure 03:49:58 test :: FPIns (C :- A :- Nil) -> IO () 03:49:59 test A = return () 03:49:59 test C = return () 03:50:03 will warns about a non-exhaustive pattern match 03:50:11 IM GOING TO RIP OUT GHC'S GUTS AND REPLACE THEM WITH DEATH 03:50:40 ... what the flying eff is Intel AppUp? 03:50:57 elliott: well yes. but i also had that method in mind, the point is that it requires you to check for equality with whatever it is to prove it is not any of the other options 03:51:17 Gregor: an app store, it looks like 03:51:19 for WINDOZE 03:51:27 Gregor: a Google search gives no conclusive results, but implies that it's some sort of application store 03:51:38 dear Intel: stop making things that aren't processors; love, everyone 03:51:45 elliott: How would that help? How can you replace it with death it does not seem you would write a program 03:51:53 New Legends Announced \ Five new developers have become Legends of the Intel AppUp developer program. Read their inspiring stories! 03:52:23 elliott: s/ that aren't.*// 03:52:26 looking at it, it appears to be an appstore combined with a cross-platform framework for writing mobile/tablet apps, that can also end up on non-mobile platforms 03:52:32 elliott: you might be able to define IsEq t1 t2 typeBool and use it as a subroutine 03:52:40 it has an SDK with C and C++ bindings 03:52:50 Gregor: Mr. Ex Intel Employee 03:52:51 then only that one needs to contain all the matches 03:52:55 "I SAW THE HORRORS" 03:52:58 "OH, GOD, I SAW THE HORRORS" 03:53:09 hm wait does that actually help 03:53:17 elliott: All my systems are still Intel too :P 03:53:21 oerjan: um there is a more important problem, i.e. this strategy _does not work_ 03:53:29 well, that too :P 03:53:30 oerjan: because GHC's exhaustive pattern detector is too fucking stupid 03:53:47 Gregor: Well, AMD don't exactly make the most amazing processors :P 03:54:17 Gregor: http://appdeveloper.intel.com/en-us/article/frequently-asked-questions is their FAQ, it seems to explain what they're doing, at least 03:54:38 the funny thing is, it appears to be run by the sort of managers who use the word "rockstar" 03:54:52 "Developers who participate in the Intel AppUp Developer Program earn reputation. Developers earn points and advance in degrees of the Intel® Black Belt Software Developer Program. For more information on the reputation and Intel Black Belt Software Developer Program, see the Intel Black Belt Software Developer Program FAQs." 03:55:08 ais523: nice 03:55:12 Ohhhh, I see, it's some retarded pseudopromotion for netbooks and such made byt hem. 03:55:22 s/byt hem/with their processors/ 03:55:28 dear Intel: stop making things that aren't processors; love, everyone <-- what if those were microcode apps. 03:55:34 Gregor: an SDK for developing applications for them, too, I think 03:55:41 the SDK seems to be the only actual product there 03:55:48 ais523: Which consists, I assume, of ICC :P 03:55:49 oerjan: brilliant 03:55:51 I wish everyone responsible for this "trendy epic rockstar lolcode FAIL ruby on rails" trend would just go into some field that isn't already as terrible as it can get 03:56:04 oerjan: so fast 03:56:33 atm it only seems to work on MeeGo and Windows 03:56:37 that's a fun choice of platforms 03:57:02 only available for QNX and RiscOS 03:57:20 wow, it has an incredibly short API 03:57:23 -!- MDude has changed nick to MSleep. 03:57:32 which entirely consists of determining whether the application is authorized to run 03:57:48 -!- azaq23 has joined. 03:57:50 therefore, it's /actually/ some sort of DRM scheme that only works on closed platforms where you can't just patch the checks out 03:58:25 this just makes me even more confused as to what it is 03:58:42 I wish [...] would just go into some field that isn't already as terrible as it can get <-- wait why, then they'd be able to do _more_ damage 03:58:51 "In-app advertising, subscriptions, and links to external marketplaces for in-app purchases are permitted for a limited time. We understand that these features are important to you and are not yet available in the SDK. Until they become available, you are free to implement them on your own. As we roll these features into the SDK, we will then require that they be implemented through the SDK." 03:59:16 oerjan: yes, but it wouldn't affect _me_ 03:59:23 I don't keep up on the latest blacksmith news 03:59:37 Gregor: so it's /actually/ an app store that has its own DRM scheme 03:59:42 I think, at least 03:59:59 -!- GreaseMonkey has quit (Ping timeout: 276 seconds). 04:01:12 Do you know about the Underhanded C Contest? 04:01:19 zzo38: yes, and have even submitted to it 04:01:39 my submission was a bit too obvious, though, touching every page of the memory it allocated "to check that it works" 04:02:01 turns out that implementing 4GiB of memory on Linux is insufficiently slow unless you do that 04:02:35 (I was doing the OS benchmarking thing, trying to exploit the fact that allocating the entire addressible memory space and then pagefaulting it all is reasonably quick on a 16-bit system but not on a 32-bit system) 04:06:42 did the contest just die 2 years ago? 04:07:01 the IOCCC died a while ago 04:07:08 at least, it went into NetHack devteam mode 04:07:17 doing nothing but the occasional news entry about how they were doing something, and replying to queries 04:07:19 I mean the underhanded C contest 04:07:43 because I sent them an entry, and then nothing happened and the site stopped updating 04:07:51 the most recent news entry in the IOCCC is from 30 april 2010, saying that there would be something new on 15 may 2010, but there wasn't 04:07:58 mauke: possibly Xcott's just got a job, or something 04:08:04 that's the issue with a competition run by one person 04:08:19 Some of their codes I tried to notice what is wrong, I noticed what is wrong not too difficulty. The third place in 2008 I noticed very easily. The first place (John Meacham) I looked and found easily, the data that is supposed to be deleted it looks like it will write 000 if it was originally 255. 04:08:25 oh, I know what I could do! I could map FPInses to functions instead 04:08:32 in fact, that would work perfectly, and let me give nice names to each fp instruction 04:08:35 Now I looked at the answer and in fact that is correct. 04:08:41 now to add these lines to a comment in a file and promptly forget about them 04:09:05 These codes are not difficult to understand if you can understand C programming. 04:11:30 BAD: } doesn't reset storage offset 04:11:31 ummm 04:11:34 my style fixes broke my program 04:11:49 zzo38: I think the idea is just to make it look like a mistake 04:12:07 -!- GreaseMonkey has joined. 04:12:20 "current" task: http://underhanded.xcott.com/?p=18 04:12:23 my solution: http://mauke.dyndns.org/stuff/c/underhanded/lug.c 04:12:58 ok this is utterly bizarre 04:15:49 mauke: there's a lot of code there to look through 04:16:26 I blame it on the complexity of the task 04:16:28 * elliott is immediately sceptical of COUNTOF and DEFSTRUCT 04:16:39 those are "standard" macros in my code 04:16:40 also of xmalloc, what is that even about :) 04:16:51 mauke: sure, you say that :P 04:16:54 a malloc wrapper that checks for errors 04:17:09 it's not a malloc wrapper, it has a different signature 04:17:10 it's more like calloc 04:17:21 yes, because calloc's interface is superior 04:17:26 it still wraps malloc 04:17:31 OR MORE EXPLOITABLE???? 04:17:40 no 04:17:44 admittedly, I can't actually find any bugs :) 04:17:50 all paths that don't abort() lead to return malloc(n * m) 04:18:09 in a UCC entry, if I had no malicious code in a malloc wrapper, I'd just use malloc directly 04:18:11 -!- edwardk has left ("Leaving..."). 04:18:47 there's an obvious = vs. == mixup in the for loop in insert() 04:19:03 I haven't figured out its effects yet, but I suspect that's the malicious part 04:19:14 you mean (p = *pp)? 04:19:37 that's obviously deliberate 04:19:37 yep 04:19:45 well yes, the paren indicates that 04:19:50 why is that in the test part of a for loop? 04:19:51 p isn't initialized otherwise, and ... yeah 04:20:10 perhaps it should be before the first semicolon, rather than after, in correct code 04:20:25 no, pp is updated in the loop 04:20:31 I just want a shorter name for *pp 04:21:08 I don't know all the functions that are used in that lug.c program 04:21:13 at least, if that's a crazy synonym for "for (;p;pp = &p->next,p=*pp)" and it's /not/ malicious, why are you writing crazy code like that? 04:21:42 ip <- gets currentIP 04:21:43 let Ray pos delta = ray ip 04:21:43 let (ox,oy) = storageOffset ip 04:21:43 modifySOSS $ (oy:) . (ox:) 04:21:43 modifyCurrentIP $ const ip{ storageOffset = pos .+. delta } 04:21:43 ais523: in your version p is uninitialized 04:21:43 heh, what a subtle bug 04:21:48 ais523: I'd call that crazy 04:21:56 (hint: the stack-stack is part of the IP) 04:21:57 mauke: well, initialize it at the start 04:21:58 zzo38: what don't you know? 04:22:01 as well 04:22:08 the use of p at all there is a little suspect 04:22:09 ais523: that duplicates p = *pp for no reason 04:22:28 for the reason of not putting the assignment in the test part of a for loop? 04:22:38 actually, p=*pp would be best used in the loop body 04:22:38 ais523: yes, how is that a good thing? 04:22:41 and *pp as the condition 04:22:50 It has functions (defined externally) that I have never used or seen before 04:22:50 ais523: that would duplicate *pp for no good reason 04:22:57 zzo38: which ones? 04:22:58 mauke: side effects on the test part of a for loop is a mad thing to do 04:23:02 ais523: wrong 04:23:09 saving two characters is not a good reason to do it 04:23:18 K&R disagree 04:23:41 they did it in while loops, but in for loops there are perfectly good other places to put it 04:23:48 wrong 04:24:04 mauke: you realise the goal is to write code that nobody can fault you about? :P 04:24:07 what I really want is "load variables; test condition; loop body; repeat" 04:24:20 elliott: I didn't realize people had such crazy ideas about "good" code 04:24:23 mauke: and that's what a for loop has? 04:24:37 mauke: reading code with side-effects in the test of a for loop makes me stare at it for minutes working out exactly when it runs 04:24:43 ais523: it's almost what a while loop has if you merge the load/test parts 04:24:44 that's not the mark of good code, because it isn't easy to read 04:24:47 mauke: it's not exactly controversial that repeating a tiny statement is better than making a complicated for loop head 04:24:58 ais523: in this case I also need a "step" part, so that's where the for loop comes in 04:25:02 it's the sort of thing I'd expect in the IOCCC, not the UCC if meant to be non-deliberately-incorrect code! 04:25:13 elliott: p = *pp isn't complicated 04:25:23 mauke: no, it isn't; that's why repeating it doesn't matter 04:25:27 vs. complicating the for loop head 04:25:41 seriously, I don't see how this "complicates" anything 04:25:43 you use a similar idiom in drop_superseded 04:25:50 yeah 04:26:04 and I'm wondering if there's a shorter /and/ clearer way to write it 04:26:26 you have while ((p = *pp)) { /* ... */ *pp = p->next; free(p); } 04:28:08 I'd probably write it as p=*pp; while (p) { /* ... */ p2 = p->next; free(p); p = p2; } *pp = p; 04:28:18 actually, *pp = 0 at the end 04:28:32 ais523's is less clear than mauke's there 04:28:51 elliott: well, back in the days of K&R idiomatic would have been free(p); p = p->next; 04:28:54 but that's incorrect nowadays 04:29:00 heh 04:29:00 I tried to keep this as short and concise as possible 04:29:03 so you need a helper variable 04:29:07 where every part is simple and obviously correct 04:29:14 Such as ferror and regcomp, which I have not used, although I can guess what their function is. 04:29:33 mauke: we've been discussing it for 11 minutes, is that "simple and obviously correct"? 04:29:34 zzo38: ferror is standard C 04:29:39 zzo38: ferror is standard C 04:29:51 mauke: Yes I know it is, I have just simply not used it before. 04:29:53 ais523: maybe you're just not a very experienced C programmer 04:29:54 heh, and our nicks are the same number of pixels in this font so it even lined up 04:30:13 mauke: I actually taught C for a while; and I teach people not to pull tricks like that 04:30:27 actually, I fear it's the API of your function that's making it confusing 04:30:39 yeah, I have a bit of a history with C teachers 04:30:48 so does ais523 04:30:51 you take a pointer to a pointer, and what you do with it is to iterate on the pointed-to pointer itself, and then set the pointed-to pointer to NULL 04:30:54 I do not pay a lot of attention to security unless I am writing a program meant to be run suid or accessed remotely 04:30:56 tricks? 04:31:39 ais523: I'm destructively modifying a linked list 04:31:42 at least you're using C not C++ so the side-effect is marked, but it's a side effect that I don't get why it's necessary at all; nulling pointers when you free them isn't going to save you from bugs because if the code was buggy before, it'll /still/ crash 04:31:52 ais523: the alternative to taking a pointer-to-pointer is to take and return a pointer 04:31:56 and that's just evil 04:32:03 that's evil? 04:32:04 mauke: no, because you always set it to NUL 04:32:05 *NULL 04:32:12 But the John Meacham's code (and Linus Akesson's code) for the 2008 contest has something that is very obviously wrong to me even though I did not know what the contest was; I could tell it was dealing with PPM files just from reading the code. 04:32:16 so the caller knows that the value should become NULL 04:32:18 ais523: wait, where? 04:32:28 drop_superseded 04:32:41 *pp is always set to NULL when it exits, as it's the only way to drop out of the loop 04:32:54 and if that isn't obvious, then perhaps even you were confused by your own code 04:33:00 -!- lambdabot has joined. 04:33:11 ais523: pp is modified in the loop 04:33:21 it may reach NULL naturally 04:33:31 mauke: but that doesn't matter, all that matters is the value at the end of the loop, which is always NULL 04:33:42 yes, because it has reached the end of the list 04:33:50 that doesn't mean the list was completely destroyed 04:33:53 so the fact that pp is modified in the loop is irrelevant 04:33:57 what 04:34:01 .wub 16 04:34:03 .wub 16 04:34:03 you could just set it to NULL afterwards and have the same effect 04:34:03 ais523, I think the point of nulling pointers before free is in case you accidentally use it again, at least it will _always_ be a crash, instead of sometimes by chance something bizarre 04:34:13 ais523: where am I setting *pp to NULL? 04:34:19 coppro: ... 04:34:30 Sgeo: glibc detects that kind of crap nowadays, IIRC 04:34:32 mauke: while((p = *pp)) { /* ... */ } is either an infinite loop or it sets *pp to NULL 04:34:44 elliott: it can't do so with a 100% success rate without leaking memory, that's provable 04:34:45 ais523: wrong 04:34:52 mauke: how is it not wrong 04:34:57 there are no break instructions in the /* ... */ 04:35:05 and no longjmps out of it either 04:35:10 Some people have told me my C codes were of the kind suitable for IOCCC but I don't think so. 04:35:12 so, the /only/ way the loop can end is if *pp is NULL 04:35:16 ais523 is obviously right here, without even looking at the code 04:35:18 ais523: correct 04:35:24 so, the loop sets *pp to NULL 04:35:25 ais523: that doesn't mean it's setting *pp to NULL 04:35:31 NO 04:35:42 either *pp is initially NULL or is set to NULL during the loop 04:35:46 wrong 04:35:51 yes, the loop only ends with *pp as NULL, and the loop is the last thing in the function 04:35:53 is everyone crazy now? 04:35:59 so the function sets *pp to NULL, always 04:36:02 no, but you might be if you keep insisting one is two 04:36:15 elliott: let me try to convince you first, you seem more sane 04:36:20 the value of *pp during the loop changes, but that only matters if it's inspected during the loop, and it doesn't 04:36:23 *and it isn't 04:36:43 oh, aha, there's an assignment to pp during the loop 04:36:49 which is even mindboggling 04:36:51 mauke: OK, but I'm not going to bother looking at the code; how can that loop terminate, under those conditions about the body that you agreed to, without *pp either initially being NULL or being set to NULL during the loop? 04:36:54 elliott: the loop condition is *pp. pp is modified in the loop. thus the loop may hit a point where *pp is already NULL without modifying *pp 04:36:55 so you're calling two different things pp 04:37:03 mauke: setting pp sets *pp 04:37:07 elliott: bullshit 04:37:19 and that's why you can make apparently self-contradictory statements, because you don't distinguish between the multiple possibilities for pp 04:37:22 your code sounds quite confusing, I'd have locked you up by now :) 04:37:32 Do *you* think my C codes are of the kind suitable for IOCCC???? I don't think so.... 04:37:47 ais523: I'm calling N different things pp 04:37:48 zzo38: probably not, good IOCCC code has to be written specifically for the IOCCC 04:37:51 ais523: I AM ITERATING OVER A LIST 04:38:14 Programmer suspected of espionage yells at FBI interviewer; jailed for life 04:38:20 also, ais523: pp is modified in the loop 04:38:27 OK, so you're iterating over a list and mutating it while iterating over it 04:38:38 ais523: I'm destructively modifying a linked list 04:38:39 and you're using pp as a pointer to the previous next, or the first element otherwise 04:38:54 I'm using pp as the address of the pointer to the current element 04:39:09 ais523: Well, yes. But I don't think my codes are obfuscated or anything, it seems clearly to me. There are sometimes a few strange things but I usually describe it if I think it is too strange 04:39:10 this is like linked list manipulation 101 04:39:34 mauke: it's a trick that I /occasionally/ see when mutating a linked list, in order to avoid specialcasing its start 04:39:40 and it's normally written more obviously in such cases 04:39:53 -!- fungot has quit (Ping timeout: 260 seconds). 04:39:59 it doesn't help that the common case is hidden inside an if statement, and the main body of the loop handles the rare case 04:40:18 ok, that's a point 04:40:28 -!- fizzie has quit (Ping timeout: 260 seconds). 04:40:34 I believe I wanted to get the common case out of the way first 04:40:49 if (whatever) ... continue; done 04:41:15 This code has nothing wrong with it to me but some people say it is wrong to do a lot of the stuff I do in this code http://repo.or.cz/w/TeXnicard.git/blob_plain/HEAD:/texnicard.w 04:41:42 (the alternative to using a pointer-to-pointer in the loop is two variables you have to keep in sync manually plus some code duplication) 04:41:45 zzo38: you forgot to use more-notation 04:42:21 elliott: For one thing, it is not a Haskell program. 04:42:29 well yes, that's the other problem. 04:42:31 I think I know where the bug likely is; I think there's an off-by-2 (or off-by-4) error in one of the calls to cap_equals, because the API you're using would make such errors really hard to notice 04:42:51 I don't think so. C is still a good programming language too. 04:43:15 LLVM would be very good (in fact, much better designed than C, I think) if there was a good macro system for it. 04:43:24 you're taking the addresses of array elements all the time, and that's a perfect opportunity to accidentally do that "twice" and take, say, the 6th element by taking the second then taking its fourth 04:43:30 But TeXnicard is going to continue to be a C program. 04:43:56 that would explain how field 6 becomes relevant even if it's not referred to by name 04:44:29 ais523: easy to disprove. I only use array indices in calls to cap_equals, and cap_equals doesn't index 04:44:33 (Although I plan to write one of the related programs in Haskell; that is, part of the program for automating game play could be written in Haskell) 04:44:35 ais523: therefore no double indexing occurs 04:44:46 mauke: yes, right 04:44:54 perhaps you should have slipped the bug in there, it'd have been well-hidden 04:44:58 you easily could have done 04:45:36 &m[2] in drop_superseded would have looked completely innocent 04:46:11 hmm, true. why didn't I think of that? 04:47:26 Are there any hidden malicious stuff in *my* program? (Unless I put it by accident I do not expect so.) 04:48:32 (Actually I wanted to compile natural language into Haskell and/or Dangelo) 04:49:23 mauke: as you can see, zzo38 is a gift to all of us 04:50:26 elliott: I ignore them 04:50:34 Don't be so sure... OF ANYTHING!!! 04:50:40 mauke: you're missing out 04:50:52 Don't be so sure... OF ANYTHING!!! 04:50:53 good advice 04:51:24 mauke: is it deliberate that your regex doesn't quite match the one in the question, btw? you can cause the optional comment to not match by omitting the whitespace at the start of the comment whilst having it all match, but I'm not sure if that has any effect on the program flow 04:51:35 and forgetting a space would look like a plausible error 04:51:45 that's one of the first things I noticed, but I didn't bring it up 04:52:03 what do you mean? 04:52:25 ([A-Z]{3})([[:space:]]+[^[:space:]].*)? is what you have 04:52:29 oh, then a $ 04:52:42 "any positive number of spaces, then anything that isn't a space, then any characters" is redundany 04:52:49 *redundant 04:53:01 or, hmm, is it? 04:53:10 I wanted to be explicit 04:53:29 it's definitely not what the question specified, "\s.*", which allows for a comment consisting entirely of whitespace 04:53:36 mauke: that's a bit ironic 04:54:33 ais523: correct. scan never checks if the regex actually succeeded, leaving old information in the capture buffers. this is triggered by trailing whitespace 04:54:37 you've found bug #1 04:54:47 (what, did you think there was only one hole?) 04:55:17 in the UCC, you should probably only have one, otherwise you give more space to find malicious behaviour 04:55:50 if they all look like plausible mistakes, some of them may survive a code review 04:55:56 If I fix haskell-src-exts to make some of the things I wanted to have in Haskell, including more-notation and a new kind of preprocessor with different macros (including running Haskell codes at tokenizer level), what would be called? 04:56:10 also, I'm not sure if it's deliberate that the check on whether to succeed in insert (on fields 2 and 4) is different from the one in drop_superseded (on field 2 only) 04:56:26 zzo38: zzo38skell-src-exts 04:56:46 ais523: if it's a bug, it's not deliberate 04:56:47 it looks wrong, especially because with insert removing duplicates, drop_superseded has no reason to exist at all 04:57:09 but I don't remember the exact rules of the task anymore 04:57:12 I'd have to reread it 04:58:11 elliott: That does not seem best name. Anyways it will be a full program rather than a library usable by other programs. It is written using unliterate layout style, so I will keep it that way when modifying it (although it is not the way I write my own programs) 04:58:27 ais523: I think the idea was that something like A -> B, B -> C followed by A -> X would have to override A -> B and drop B -> C 04:58:30 maybe 04:58:41 hmm, perhaps 04:58:54 it doesn't help that the task's unclear on what the intended behaviour is 05:00:36 I'll give up reading it for now, anyway, the task's too vague for me to work out whether certain bits of it are right or not 05:00:52 pop0gnirtsAsString is definitely the best function name I've ever created 05:00:57 apart from push0gnirtsAsString 05:01:15 elliott: recently, I was trying to think of a word starting with 0 05:01:20 and "0gnirts" was the only one that came to mind 05:01:25 "0gnirts" doesn't start with 0, it starts with '"' 05:01:32 but, 0-day? 05:01:38 well, the word was 0gnirts 05:01:45 and I put quotes round it because I was quoting it 05:01:51 and I didn't think of that one 05:01:53 but the word is actually "0gnirts" 05:01:57 well, OK 05:02:00 they're not called 0gnirtses, they're called "0gnirts"es 05:02:05 I pronounce it without the quotes 05:02:13 how do you pronounce quotes? 05:02:14 as o-gnerts 05:02:21 that's /why/ I pronounce it without the quotes 05:02:24 heh 05:02:56 ais523: hint: all of the bugs are in scan and main 05:03:02 (it's how you trigger a NetHack bug that only happens with over 1000 users) 05:03:11 ais523: wat 05:03:18 *over 9000 05:03:18 how does that work? 05:03:28 basically, overflow to the fifth digit of UIDs 05:03:54 meaning that you can confuse it between 10000gnirts parsed as 1000+0gnirts or 10000+gnirts 05:04:01 heh 05:04:14 the effect being that UID 1000 can mess with UID 10000's savegames 05:05:14 ?pl \f -> catchReflect $ pop0gnirtsAsString >>= ioFail . f 05:05:14 catchReflect . (pop0gnirtsAsString >>=) . (ioFail .) 05:05:18 no thanks 05:05:48 What does pop0gnirtsAsString means? 05:06:04 funge 05:08:05 -!- copumpkin has changed nick to Commodus. 05:08:30 zzo38: 0gnirts is the standard representation of strings in Befunge (and other Funges), and String is the standard representation of strings in Haskell 05:08:47 the function pops an 0gnirts off the Funge stack and converts it to a String 05:08:47 -!- Commodus has changed nick to copumpkin. 05:09:05 I should really make it use ByteStrings instead 05:09:14 actually, the current way might be faster because the stack is a [] 05:09:16 but I should fix that, too 05:11:18 -!- CakeProphet has quit (Ping timeout: 240 seconds). 05:12:21 -!- augur has quit (Remote host closed the connection). 05:12:24 What was the first Haskell program you wrote? 05:12:34 umm, I don't remember 05:12:36 I can't remember 05:12:37 probably something very simple 05:12:48 first real program might have been the unfinished underload compiler? dunno. 05:13:08 the first real Haskell program I wrote was an implementation of my theories about ICA to SCC type inference 05:13:20 ais523: What does that mean? 05:13:22 which I've since reimplemented in OCaml 05:13:33 -!- invariable has joined. 05:13:43 -!- Nisstyre has quit (Ping timeout: 250 seconds). 05:14:08 zzo38: ICA and SCC are two different type systems; ICA's type system is similar to Algol's (but a mathematically idealized version that also allows for concurrent execution), and SCC requires each variable to be accessed from finitely many functions at a time (with an explicit number bounding that) 05:14:10 -!- variable has quit (Ping timeout: 252 seconds). 05:14:52 so basically, it's counting bounds on concurrent uses of a variable 05:15:15 OK. 05:15:27 it boils down to simultaneous inequalities, in the end; I got a paper out of proving that those inequalities could always be solved with integers 05:16:29 First Haskell program I wrote is a compiler of esolang, too; but not Underload. 05:16:36 elliott: Did you use Template Haskell in that program? 05:16:48 zzo38: no 05:16:53 I tend to avoid TH 05:17:11 Do you dislike TH? 05:17:19 elliott: are Haskell templates more or less sane relative to Haskell than C++ templates are to C++? 05:17:26 s/are to/are relative to/ 05:17:45 zzo38: I don't dislike it so much as avoid it when it isn't absolutely necessary; it's very heavy, and functions are much nicer 05:17:54 plus, writing TH code is very difficult (compared to using it) 05:17:58 because of all the boilerplate 05:18:04 ais523: I would say yes 05:18:17 ais523: that comparison looks like a type error 05:18:24 TH is much more like Lisp macros 05:18:26 that wasn't intended to be a yes-or-no question, although I suppose that's one way to parse it 05:18:40 I assume that TH is saner than C++ templates, but OTOH Haskell is saner than C++ 05:18:53 I was wondering which comparison had a greater sanity difference 05:18:55 I think TH is just not as powerful as some proper macros could be, that is why I want to implement new one, that can be used in addition to TH. 05:18:59 mauke: you can compare differences in sanity 05:19:21 I'd say the embedding is a bit awkward but at least in TH the metalanguage is Haskell 05:19:35 that wins major sanity points over C++ templates 05:20:12 arguably, C++ templates form a better language than C++ itself 05:20:16 it's at least functional 05:20:26 and reasonably self-consistent and well-behaving 05:20:29 shame about the syntax 05:21:00 I wonder what templates are like in SPECS 05:21:25 Enhanced CWEB allows you to do metaprogramming in C (although it is interpreted C) 05:22:05 Constantinople compiler in Haskell uses Template Haskell codes. 05:22:26 @keal 05:22:27 Cale etc already pointed out Haskell is puny to nothing to emulate using my barrage of mathematic theories 05:23:15 -!- ive has joined. 05:24:03 -!- kmc has joined. 05:24:08 yay, all done, and things are slower than before 05:24:41 I like how I'm optimising a program that doesn't strictly work... feels like C 05:24:54 oh dear, has it gone over a thousand lines of code? 05:25:19 oh, wow, my SLOC have shrinked since earlier today 05:28:24 My program contains things that might be badly done because I have not written program in Haskell before, such as this: initialMem = MemList $ (MemList $ fix (MemZero :)) : fix (MemZero :); p_nand x y = Pointer undefined (liftA2 r_nand (mem_read x) (mem_read y)); transWrite w p x y = mem_write p (w x (mem_read p y)) y; 05:29:39 why the undefined? 05:30:08 Because a "nand" expression in Constantinople is read-only. The first parameter to the Pointer constructor is used for writing. 05:30:31 then you want a ROPointer and a Pointer being ROPointer + write 05:30:34 At least, I think it is read-only; if they want to change that, anyone can change this 05:30:47 or at least a Maybe field in Pointer so that you can handle read-only things without undefined 05:32:52 That is one idea. Thanks for opinion. But it seems to me that the simplest and reasonable way to do it is to simply not define the writing function for "nand" but otherwise use everything the same way. 05:33:46 zzo38: your types, as they are, do not correctly model the situation; so you are very likely to run into bugs you wouldn't otherwise 05:33:49 zzo38: fix (x :) = repeat x 05:34:00 oerjan: OK, thanks. I didn't know that. 05:34:03 zzo38: Haskell is all about defining the right types to model your situation, and then using them correctly; without that, you won't benefit much from its strengths at all 05:34:15 hmm, "fix (x:)" is actually shorter 05:34:26 no, same length 05:34:38 just uses narrower characters, so shorter in a proportional font 05:34:46 to paraquote larry, "the trick is to use haskell's strengths rather than its weaknesses" 05:35:31 hmm, are there any interesting Haskell "conducts", like one-liner Python? 05:35:46 "conduct"? 05:35:46 restrictions you put on yourself so you avoid using the language's strengths and have to be more creative? 05:35:57 oerjan: like in NetHack, a self-imposed restriction to make it more difficult 05:36:13 ais523: point-free style... WITH NO EXCEPTIONS 05:36:21 and no more than one level of parentheses, too 05:36:29 and no where clauses. or completely junk definitions. 05:36:31 beautiful 05:36:36 elliott: that's a rather lethal combination 05:36:37 "completely junk definitions"? 05:36:51 ais523: as in, definitions that don't have any generalness at all, and you're just using them to subvert the parentheses and where rules 05:36:55 obviously it's slightly subjective :P 05:36:59 also, how do you do a where clause in a pointfree program anyway 05:37:04 foo = f . g 05:37:06 where f = ... 05:37:11 oh, I see 05:37:13 can you even @pl everything that can be @pl'ed without nesting parentheses 05:37:26 oerjan: with the right combinators, surely; and like I said, you can use top-level definitions 05:37:26 you need to ban let..in too, then, unless you consider that to break pointfree and where not to 05:37:29 just not "junk" ones 05:37:33 ais523: well ok yes yesyes 05:37:50 my ICA-addled mind insists on interpreting let/where as simply sugar for lambda 05:39:11 ais523: it's not quite trivial sugar in the presence of mutually-recursive definitions 05:39:17 I also use this, which I don't know if anyone else already made up something like this: monadify = either (fail . show) return; 05:39:19 oerjan: did you ever find an elegant desugaring of that? 05:39:57 elliott: in ICA, recursion has to be explicit anyway 05:40:12 e.g. let versus let rec ... and ... in OCaml (and probably other MLs too) 05:40:45 Do you know if anything like the "monadify" function exists? 05:40:51 ugh, some of this program is just so, so ugly and I don't even know where to statr on fixing it 05:41:02 I want something like hlint but that's really, really anal 05:41:12 I can solve a list of problems in arbitrary order, I just can't make this program good 05:41:32 oh hm Jot has bounding parentheses if you convert it to @pl-form 05:41:50 *bounded 05:42:11 oerjan: I've actually been wondering what the minimum nesting level is needed for TCness in BF 05:42:26 I suspect it's either 2 or 3; 0 is obviously sub-TC, and 1 nearly as obviously 05:42:43 [F0] = [F]SK = ($ ap const) $ [F] 05:43:02 [F1] = \x y -> [F] (x y) 05:43:11 @pl \x y -> f (x y) 05:43:11 (f .) 05:43:23 duh 05:43:31 [F1] = (.) $ [F] 05:43:38 and [] = id 05:44:00 so barring typing issues, Jot needs only one level 05:44:18 Would you have written this code differently? parseConstantinople = runIO (getEnv "Constantinople" >>= flip openFile ReadMode >>= hGetContents) >>= (monadify .:: parse) (programParser $ VarE 'return) ""; 05:45:18 oerjan: Jot needs one level of what? And other? 05:45:26 of parentheses 05:45:33 OK 05:45:37 if you convert it point-free haskell 05:45:44 OK 05:46:18 oh wait 05:46:33 I know that K and I combinators correspond to (const) and (id) in Haskell. And in fact I used those as the definition of the root pointer: root = Pointer const id; 05:46:38 *[F0] = ($ const) . ($ ap) $ [F] 05:47:15 Is there S combinator function in Haskell? 05:47:27 ap, <*> 05:47:28 yes, ap in the (e ->) Monad 05:47:49 or <*> in the (e ->) Applicative 05:48:05 @type \f g x -> f x (g x) 05:48:06 forall t t1 t2. (t -> t1 -> t2) -> (t -> t1) -> t -> t2 05:48:13 @hoogle (t -> t1 -> t2) -> (t -> t1) -> t -> t2 05:48:14 Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c 05:48:14 Data.Data gmapQl :: Data a => (r -> r' -> r) -> r -> (d -> r') -> a -> r 05:48:14 Control.Parallel.Strategies parZipWith :: Strategy c -> (a -> b -> c) -> [a] -> [b] -> [c] 05:48:18 meh 05:48:22 @pl \f g x -> f x (g x) 05:48:22 ap 05:48:42 Can there be used without Monad or Applicative needed? 05:48:55 what 05:49:06 i agree 05:51:16 -!- GreaseMonkey has quit (Ping timeout: 240 seconds). 05:52:35 I suspect it's either 2 or 3; 0 is obviously sub-TC, and 1 nearly as obviously <-- i think i monologued a proof for 1 on the channel not too long ago 05:52:54 1 being sub-TC? 05:52:57 it's not too hard 05:53:08 you basically can't do any flow control within a loop 05:53:44 zzo38: flip is readFile 05:53:46 openFile ReadMode >>= hGetContents 05:53:50 argh 05:54:14 irssi's line joining would be nice if you could actually trust it 05:54:31 oerjan: Sorry I do not understand can you explain it better please? 05:54:43 zzo38: it was mispasted by irssi 05:54:47 @src readFile 05:54:47 readFile name = openFile name ReadMode >>= hGetContents 05:54:49 OK. 05:55:07 that's what i meant 05:55:30 OK, so I do not need what I wrote; readFile will do that. OK thanks 05:56:00 So is (getEnv "Constantinople" >>= readFile) good enough? 05:56:43 i should think so 05:57:05 OK. Anything you have to say about the other parts of that program? 05:57:51 (The environment variable "Constantinople" is set in a shell script. It seems the only way it works in Template Haskell due to splices running multiple times) 05:57:52 oh dear; it looks like the next obvious thing to do to shiro is to either: 05:57:54 - name every core instruction 05:57:54 or 05:57:56 - rewrite the fungespace 05:59:39 -!- GreaseMonkey has joined. 06:01:18 I designed a computer (including the CPU instruction set) called OMEGACOM-1. I never intend to implement it in hardware, although it is intended to be possible to do so and of an old-style. 06:01:53 The keyboard consists of the alphabet (QWERTY), digits zero to nine, spacebar, and three more keys: RUBOUT, ALT, and SEND. 06:02:26 ALT+Z rewinds the tape, ALT+W to play tape, ALT+X to fast forward, ALT+Y to record. 06:03:07 ALT+0 is reset the computer, ALT+1 sends the user interrupt (interrupt 1), ALT+2 pauses the system, and ALT+3 to resume. 06:03:27 Other keys with ALT is used to put punctuation symbols. 06:04:06 -!- copumpkin has changed nick to luke-sr. 06:04:30 (Actually, the way it is designed, ALT+SPACE happens to be the same as RUBOUT, ALT+RUBOUT the same as SPACE, and ALT+SEND generates the keycode for the ALT key (which otherwise cannot be sent to the CPU).) 06:05:24 Bytes in this computer are 16-bits and addresses are also 16-bits. 06:05:26 -!- luke-sr has changed nick to copumpkin. 06:06:10 Memory map is 0x0000-0x3FFF for RAM, 0x4000-0x7FFF for VRAM, 0x8000-0xBFFF for SLOT-0, and 0xC000-0xFFFF for SLOT-1. 06:08:00 The RAM initially points to internal ROM instead, and then it disables itself after it copies itself to unused space in VRAM and jumps there. It starts like this: XOR A A MOV X "4000 ?LOAD MOV .XS .A LUI "180 =LOAD MOV P "4C08 SLV '1 '2 06:08:26 P is the program counter register. 06:14:53 Each instruction has a two-bit condition specifier, which can be: Always, Carry, Zero, or Nonzero. 06:20:57 -!- myndzi\ has joined. 06:24:16 -!- myndzi has quit (Ping timeout: 240 seconds). 06:26:09 What is your opinions and ideas about this? 06:26:32 it's great + perfect 06:26:33 mergeByteString Shiro.FungeSpace 30.1 27.8 06:26:34 !@ Shiro.FungeSpace 21.1 0.7 06:26:34 modifyIPList Shiro.Monad 15.4 39.1 06:26:34 doNextIns Shiro.Interpreter 4.9 1.1 06:26:36 ooh, interesting 06:26:46 how on earth is modifyIPList taking that much time? 06:26:57 modifyIPList :: (([IP],[IP]) -> ([IP],[IP])) -> Shiro () 06:26:58 modifyIPList f = modify $ \st -> st{ ipList = f (ipList st) } 06:27:02 oerjan: look at my cost centre :D 06:27:04 (well, one of them) 06:27:31 It is just meant to be oldstyle, actually. I did not explain everything yet. 06:29:20 -!- copumpkin has quit (Ping timeout: 252 seconds). 06:29:40 i dunno 06:29:44 -!- copumpkin has joined. 06:30:43 oerjan: dunno what 06:30:44 ? 06:30:58 about profiling 06:32:46 I have rules for a card game called "Mature". You use a standard deck of cards, ranking from high to low: T98765432AKQJ. Play with 4 player and something to keep track of scores. Each player plays for himself. Give 13 cards to each player. Now the dealer can call any suit for trump. The player after the dealer can now lead any card to the first trick. 06:32:48 hmm, I can either write a new fungespace, clean up the core interpreter file (bleh), or convert everything to lenses, quite possibly seeing a speed improvement from doing so 06:32:52 who wants to vote? 06:33:21 After a card has been led to the trick, each player in order must now play a card to the trick. If you have anycard of the suit led you must play one of those, otherwise you can play any card you want to. If there is any trumps, the player who put the highest trump wins the trick,otherwise the player with the highest card of the leading suit wins the trick. 06:33:35 The winner of the trick places those cards face-down in their score pile and can lead any card to the next trick. 06:34:22 After all tricks are played. count points. Jacks and kings are collectively called "men". Make the longest sequence you can that alternates between men and queens (it doesn't matter which comes first). The number of cards in that sequence is your score. 06:35:42 (Other cards are not used for counting score) 06:40:52 zzo38: and presumably the game is played so that everyone has an equal number of turns as dealer? 06:41:06 coppro: Yes, I would assume so. 06:43:56 hmm... interesting 06:44:05 It seems to me that the scoring might be a little bit low 06:44:28 as likely all scores will be either one man, two man and a queen, or three men and two queens 06:44:42 but the idea that you do not control your own scoring cards is interesting 06:47:56 -!- oerjan has quit (Quit: Good night). 06:50:23 I have rules for another card game called "Mate". It is played with 20 cards only, the 89TJQ of each suit (Q is high). Each player gets ten cards laid out on the floor according to suit. These are called his "hand" even though they are actually on the floor. 06:51:23 -!- CakeProphet has joined. 06:51:23 -!- CakeProphet has quit (Changing host). 06:51:23 -!- CakeProphet has joined. 06:51:39 First player starts by leading any card to a trick. Follower must follow suit if possible. If that is not possible, they must follow rank. If they can do neither, they lose the game and the winner counts points. 06:51:42 -!- ive has quit (Quit: leaving). 06:52:40 that's a perfect information game :/ 06:53:06 or is once the hands are out anyway 06:53:17 Suits rank as in bridge. Whoever played the card that is higher ranked (or higher rank suit) wins the trick and leads any card for the next trick. (Note: Keep tricks for the players who held the cards originally; do not give them to the winner of the trick.) 06:54:55 Sacrificing: When it is your turn to play a card (leading or following), you may, if you choose, discard any of your cards before playing. (This might allow you to follow rank if you could not otherwise do so; it also adds to your score.) If this results in you having no cards on your turn, the last card played is assumed to be your only card and you must play it if possible (otherwise you lose). 06:55:52 Queen privilege: Whenever you lead a queen of any suit, you may force the opponent to follow with another queen if they have any. It is optional decision when you lead a queen, and an opponent having multiple queens can still select which one to play. 06:56:45 Scoring: Only the winner scores. Add together the total number of turns plus the number of sacrifices you made, and multiply this by the scoring value of the last card you played: Eight = 6, Nine = 3, Ten = 4, Jack = 9, Queen = 10. 07:01:23 I also have rules for a game called "Rummage", which you make melds of Rummy but also make tricks. 07:02:02 And "Chinese Euchre", which is neither Chinese nor Euchre. 07:10:39 Here are the rules for "Janken Poker": Shuffle the cards and deal one card face-up. Do rock-paper-scissors; the winner gets to keep that card (if stalemated, do again). You may reject the card you just received if you want to, by turning it face-down. Each player may reject only up to three cards. Repeat until each player has seven cards. 07:11:09 -!- copumpkin has quit (Ping timeout: 240 seconds). 07:11:14 If you have seven cards and you receive another, you are forced to reject it (even if you have already rejected three cards). After each player has seven cards, both players discard two cards and whoever has better poker hand wins. 07:11:34 -!- copumpkin has joined. 07:17:49 I once saw the following problem in a book: First player puts any five cards they choose from the deck face-up in front of them. Second player does the same with the remaining cards. First player then discards from zero to five cards and takes replacements of their choice from the deck. Second player does the same. Rank hands as in poker. In case of tie, second player wins. 07:17:58 What should be strategy for first player to play? 07:25:35 In the same book was this problem: An opponent is playing crap but loaded one of the dice so that it is always 5. It is your chance to load the second dice to whatever probabilities you want. What should you do to minimize the chance of their winning? 07:26:54 Do you know the answer of either of these two problems? 07:27:07 the second seems easier 07:27:29 but still pretty hard 07:27:37 obviously you need to load it to never roll 6 07:27:54 and I think semi-obviously 1, 3, 4, and 5 need to have the same probability 07:28:11 so then it's a matter of working out what the probability of 2 should be, which is just an optimisation problem 07:30:24 -!- wth has joined. 07:31:02 ais523: the probability of 2 is certainly 1 07:31:19 CakeProphet: you're trying to force a loss 07:31:25 5+2 = 7 which is a win if you get it on the first roll 07:31:29 and a loss on other roles of a sequence 07:31:36 in fact I am strongly compelled by the evidence of 2. 07:31:46 oh, I see 07:31:52 you're misinterpreting the question 07:32:00 pssssh, you assume I read more than the bottom line of that conversation. :P 07:32:22 taking things out of context is always great fun. 07:33:07 5 seems to be a good number to rig a dice to if you want to increase your chance of winning at craps, anyway 07:33:32 I'm glad I wrote Shiro in Haskell; it would be unsalvagable if I'd messed it up this badly in another language 07:33:43 -!- wth has left. 07:34:09 * CakeProphet is quite adept at working with sloppy code. 07:34:20 it's an important skill to have in practice. 07:34:32 /writing/ sloppy code however, is not. 07:34:54 working with sloppy code is just a tactic to delay the fact that you're going to have to rewrite it 07:35:30 that's a big assumption of what is fact. 07:36:13 let fpState = FPState { fpGet = (\(GlobalFPState m) -> unsafeFromAny (m Map.! fpName)) <$> gets globalFPState 07:36:13 , fpModify = \f -> modifyGlobalFPState (\(GlobalFPState m) -> GlobalFPState $ Map.adjust (unsafeToAny . f . unsafeFromAny) fpName m) 07:36:13 , fpGetIP = (\(IPFPState m) -> unsafeFromAny (m Map.! fpName)) <$> gets (ipFPState . currentIP) 07:36:13 , fpModifyIP = \f -> modifyCurrentIP $ \ip@IP{ipFPState = IPFPState m} -> ip{ ipFPState = IPFPState $ Map.adjust (unsafeToAny . f . unsafeFromAny) fpName m } } 07:36:17 there, now you've all felt my pain 07:36:29 oh wait, I can just make these lenses, yaaaaaaay 07:36:38 yaaay 07:36:38 elliott: the formatting there made me bletch, I haven't looked at the actual code yet 07:36:56 what is FP 07:37:03 What is lenses means in that context? 07:37:20 I think Haskell coding possibly ought to be done in a lots-of-small-functions way, just like TDD people advocate for scripting languages 07:37:28 zzo38: basically a get function and a set function, along with a modify function defined from the two. 07:37:32 it's what I mostly do for ML, at least, except when replicating an imperative algorithm 07:37:39 or, is it the set that's defined from get/modify? 07:37:41 CakeProphet: fingerprint 07:37:47 zzo38: lenses are functional references 07:38:02 zzo38: basically, Lens a b is (a -> (b, b -> a)) 07:38:16 they encompass the notion of record fields as well as a ton of other stuff 07:38:23 and they're a Control.Category 07:38:25 so they compose really nicely 07:38:33 they're great 07:38:41 OK 07:39:00 except that's lame and no good person likes a -> (b, b -> a) 07:39:04 How does it compare to the Pointer type in my program? 07:39:09 CakeProphet: what? 07:39:11 but yeah, that's how they're defined. 07:39:18 -!- Nisstyre has joined. 07:39:24 CakeProphet: What is wrong with that way? 07:39:26 that definition is not only the most efficient, it's the most elegant -- it's (a -> Store b a) 07:39:29 where Store is the Store comonad 07:39:40 if you unbox the tuple, it's even faster :) 07:39:44 or use CPS, apparently 07:39:51 elliott: I prefer the two-seperate-functions definition. I suppose it's pretty much subjective and not worth arguing/persuading about. 07:39:59 CakeProphet: it's not subjective 07:40:03 the store comonad version is objectively faster 07:40:10 and has better theoretical properties 07:40:35 I see. 07:40:48 (used by the data-lens package) 07:41:21 CakeProphet: What is the two-seperate-functions definition? 07:42:03 (a -> b, b -> a -> a) 07:42:04 data Lens a b = Lens (a -> b) (a -> b -> a) 07:42:13 er yeah 07:42:27 it's not as performant, not as elegant, uglier to state the properties about, has fewer nice theoretical properties, and is lame :) 07:42:27 you can do it that way as well. 07:42:41 edwardk would be proud of me. 07:42:49 yeah but's totally a get function and a set functon. 07:42:51 which is way cool. 07:42:54 >_> 07:43:10 yeah, and now modification is really slow 07:43:11 awesome 07:43:22 REALLY slow. 07:43:24 getL (Lens f) a = pos (f a) 07:43:24 modL (Lens f) g = peeks g . f 07:43:24 setL (Lens f) b = peek b . f 07:43:26 ELEGANT ENOUGH FOR YOU??? 07:43:28 CakeProphet: actually, yes 07:43:34 the performance difference is not minor 07:43:58 oh and 07:43:59 lens :: (a -> b) -> (b -> a -> a) -> Lens a b 07:43:59 lens get set = Lens $ \a -> store (\b -> set b a) (get a) 07:44:03 WHOOOPS SO SUPERIOR 07:44:46 I guess I'm just a tuple-hater. 07:45:07 So, "a" is where you store in and "b" means the type of the data stored in there? Is that what "a" and "b" means there? 07:45:15 zzo38: yep 07:45:16 CakeProphet: they're not tuples in the data-lens implementation 07:45:22 type Store s = StoreT s Identity 07:45:23 data StoreT s w a = StoreT (w (s -> a)) s 07:45:41 CakeProphet: but I think the next version coming out is going to recommend unboxed or cps instead 07:45:46 where cps is 07:46:02 type Lens a b = forall r. a -> (b -> (b -> a) -> r) -> r 07:46:04 I think I defined the Pointer type in the Constantinople compiler something like that, as a read function and a write function. 07:46:10 and unboxed is like the tuple version but with more hashes :) 07:47:26 yeah a -> (b -> (b -> a) -> r) -> r does not look awful in any way. 07:47:44 CakeProphet: good thing you use the abstract API instead, then, based on construction from get/set, isomorphism, or comonad, right? 07:47:59 and reason about it that way, rather than relying on the efficient internal implementation that avoids unboxing 07:48:07 that also gives all the efficient update advantages of the comonad store model 07:48:22 Although in my program, it was a datatype defined using record names, and the write function came first. In addition, the type being stored in and the type of the data stored in there is the same type. 07:48:22 no that stuff is fine. I just dislike the cps 07:48:44 CakeProphet: you don't have to care about it, since the pure and unboxed versions are also supplied and they all act according to the basic API 07:48:56 but I find it hard to believe you wouldn't select to use it, on account of running the exact same code faster 07:49:11 yes I am a performance addict. 07:49:22 that's why I use Perl on a day-to-day basis. 07:49:25 so fast. 07:49:26 CakeProphet: so you're saying you'd _deliberately_ select the slower version? 07:49:32 despite it having no visible changes to your code at all? 07:49:34 you're insane 07:49:49 no I thought you were referring to the cps 07:49:52 which would change my code. 07:49:59 no, it wouldn't 07:50:10 uh.. 07:50:19 because it's exposed only in terms of the abstract API that all the lens implementations in the development data-lens expose 07:50:44 right. 07:50:53 https://github.com/ekmett/data-lens/blob/unboxed/Data/Lens/Class.hs 07:50:58 erm, that's not the class 07:51:01 https://github.com/ekmett/data-lens/blob/unboxed/Data/Lens/Class/Internal.hs 07:51:02 which is me not using cps. I thought you were saying the cps iteself was faster than any API built over it. 07:51:15 no, the advantage there is in avoided runtime overhead 07:51:56 -!- sebbu2 has joined. 07:52:07 How does my implementation of the Pointer type in the Constantinople compiler compare with lens? 07:52:22 zzo38: probably badly, if it's restricted to things of the form (Lens a a) 07:52:29 okay so these are convincing points. I can't say you've convinced me to care but I know which I'll use in the future. 07:52:51 CakeProphet: YEEES.... THE DATA-LENS MONOPOLY SHALL GROW... 07:53:02 (you'll probably want to use data-lens-template and data-lens-fd when you do, FWIW) 07:53:15 elliott: Well yes it is; both types are the same but otherwise it is like the (a -> b) and (b -> a -> a) stuff 07:53:19 (former for deriving of lenses from record fields, latter is just the module that would be in data-lens if it didn't depend on fucntional dependencies) 07:53:30 elliott: but fclabels has (!%%=)!!! 07:53:55 CakeProphet: data-lens has (^!+=) 07:53:57 there's NO WAY I could get that functionality from data-lens 07:54:02 ...oooooh. 07:54:07 also (!&&=) 07:54:12 totally useful, let me tell you :-D 07:54:31 CakeProphet: http://hackage.haskell.org/packages/archive/data-lens-fd/2.0/doc/html/Data-Lens.html, http://hackage.haskell.org/packages/archive/data-lens/2.0.1/doc/html/Data-Lens-Common.html 07:54:36 that's objectively better. Based on number and symbol combinations of hilarious operators I judge this to be superior. 07:54:41 former is State monad stuff 07:54:43 latter is functional stuff 07:54:54 But for the Constantinople esolang, my system works, at least. type PointerWrite = Memory -> Memory -> Memory; type PointerRead = Memory -> Memory; data Pointer = Pointer { mem_write :: PointerWrite, mem_read :: PointerRead }; root :: Pointer; root = Pointer const id; 07:54:55 CakeProphet: also, fclabels was recently ruined by switching to arrows :) 07:55:00 wat 07:55:01 why. 07:55:04 -!- sebbu has quit (Ping timeout: 245 seconds). 07:55:06 CakeProphet: because arrows suck 07:55:17 yeah who uses that shit. 07:55:35 &&& is maybe like the only thing I've found a use for. 07:55:53 well, it provides one useful thing (partial lenses, i.e. things that act like (a -> Maybe b, b -> a -> Maybe a)), but apart from that it's just semantic gunk 07:56:06 and those kinds of things can be built as a separate thing without some over-arching abstraction anyway 07:56:16 oh hey that's somewhat useful. 07:56:31 it is, but roconnor murmured something about implementing them for data-lens :) 07:56:32 Is there any similarity? I could have done it differently if it is useful to do so but for Constantinople both are the same type and I have functions to transform Pointers 07:56:51 zzo38: that should be fine for what you have 07:57:07 elliott: that a boy. Tell him everything will be okay. 07:57:18 do you mean atta boy 07:57:25 ...no 07:57:28 but maybe I do? 07:57:30 also? 07:57:44 isn't that sort of the same? 07:58:13 i don't think "that a boy" is a thing 07:58:34 internet says so. 07:58:36 Do the lenses have anything like transPointer and transWrite? 07:58:40 pah 07:58:47 zzo38: what are transPointer and transWrite 07:58:53 -!- Patashu has joined. 07:59:09 any sort of abstract library in Haskell probably has no mention of "pointer" anywhere in the API. 07:59:28 transPointer :: PointerWrite -> PointerRead -> Pointer -> Pointer; transPointer w r p = Pointer (transWrite w p) (r . (mem_read p)); 07:59:32 unless, of course, it's an abstract pointer library. :D 07:59:36 transWrite :: PointerWrite -> Pointer -> PointerWrite; transWrite w p x y = mem_write p (w x (mem_read p y)) y; 07:59:41 zzo38: that's just composition, isn't it? 07:59:44 in which case, yes 07:59:48 Lenses form a category 07:59:58 CakeProphet: oh yeah, and with data-lens, you have to hide less than fclabels; you just have to hide id and (.) for Prelude so you can get the Control.Category versions 08:00:31 things in Prelude should just get eaten by other things. 08:00:35 totally a good idea. 08:00:46 Control.Category should be exported by Prelude, it's just a bug that it isn't :) 08:02:09 elliott: Is it just composition? Well, the transPointer function is used to change a Pointer, so that it points to the head of whatever it was pointing to before, or to the tail of what it was before, etc 08:02:31 What are Control.Category versions of id and (.) 08:02:35 import Control.Category() --whoops 08:02:39 zzo38: typeclass methods 08:02:42 zzo38: hmm, well it _looks_ like composition 08:02:52 zzo38: control.category just adds a category typeclass 08:03:00 like you've said, return and (<=<) make the monad versions 08:03:08 and Kleisli is an instance of Control.Category.Category 08:03:09 as is (->) 08:03:09 -!- Nisstyre has quit (Ping timeout: 240 seconds). 08:03:14 http://haskell.org/ghc/docs/7.0.4/html/libraries/base/Control-Category.html 08:03:34 newtype Kleisli m a b = Kleisli { runKleisli :: a -> m b } 08:03:34 instance Monad m => Category (Kleisli m) where 08:03:34 id = Kleisli return 08:03:34 (Kleisli f) . (Kleisli g) = Kleisli (\b -> g b >>= f) 08:03:48 could Either be a Category maybe? 08:04:08 I am basing this solely on the fact that it has two type parameters. :P 08:04:23 I am too tired to do any kind of reasoning on the matter. 08:04:41 we need 08:04:44 id :: Either a a 08:04:45 so no. 08:04:55 (.) :: Either b c -> Either a b -> Either a c 08:05:00 this is also not possible. 08:05:07 it's very much not a category :P 08:05:36 I think id and (.) should have the same meaning as it does now, and using different names for the Control.Category. Like how monads use return and (<=<) instead of id and (.) 08:05:47 -!- sebbu2 has changed nick to sebbu. 08:05:58 category theorists and anyone who uses lenses would disagree :-P 08:05:59 elliott: if you had something like Left a | Right b | Nothing maybe? 08:06:14 the only reason most of Prelude is like it is is because of backwards compatibility 08:06:23 CakeProphet: so Maybe (Either a b) 08:06:28 id = Nothing 08:06:29 yes 08:06:31 (Left _) . (Right _) = ? 08:06:38 Sgeo: Nothing, presumably 08:06:48 I don't think it obeys the laws 08:06:52 f . id = id . f = f 08:06:53 yes if you get "b" constructor then it is Nothing 08:07:02 if it's "a" or "c" then you get... a or c 08:07:04 Oh, wasn't paying attention to chat after elliott> (.) :: Either b c -> Either a b -> Either a c 08:07:33 or rather TWO bs. basically b's are eaten. 08:07:48 I need to go to sleep 08:07:50 But the monads are only for the same category as before, since it has the same objects, same morphisms, etc. The id and (.) are only for Hask category. 08:08:20 Night 08:08:37 not sure what to do in the case where you have an a and a c. 08:08:37 Sgeo: morn 08:08:47 I guess Nothing is always a convenient option. 08:09:01 but it could prefer one over the other. 08:09:09 this is probably breaking a bunch of laws I don't know about though. 08:09:36 f . id = id . f = f 08:09:37 that's the one law 08:09:42 you're breaking it. 08:09:42 Maybe the id for Category should be called idC 08:10:25 Nothing . a = a :P 08:10:28 a . Nothing = a 08:10:31 does that fix it? 08:10:50 Other law is associativity 08:11:45 CakeProphet: doesn't type. 08:11:51 zzo38: oh, yes. 08:11:53 And the (.) for Category is called (<<<) 08:11:55 elliott: oh right. 08:12:32 Left a | Right b | Both a b 08:12:42 Left a | Right b | Both a b | Nothing ???? 08:12:48 zzo38: no it's called (.) 08:12:58 CakeProphet: this sure sounds terrible 08:13:00 zzo38: afaik (<<<) is just an alias to match (>>>) 08:13:09 elliott: but maybe it's a category. :P 08:13:24 O, I looked at the codes for Control/Category.hs and in fact it does define id and (.) on the Hask category as well. 08:13:36 hey sometimes I need one, the other, both, or neither. anywhere in every function. 08:13:39 zzo38: yes, it's pretty much entirely backwards compatible. 08:13:41 -!- FireFly has joined. 08:13:46 It says directly in the file: (<<<) = (.) 08:15:02 LeftLeft a | LeftRight b | RightLeft c | RightRight d | LeftLeftLeftRight a b | LeftLeftRightLeft a b | ... | All a b c d | Nothing 08:15:06 elliott: it could always get worse 08:16:03 : replicateM_ 08:16:04 :t replicateM_ 08:16:05 forall (m :: * -> *) a. (Monad m) => Int -> m a -> m () 08:17:23 also *LeftLeftRightLeft a c 08:17:35 -!- Nisstyre has joined. 08:18:25 O, the difference is (<<<) has different fixity than (.) 08:18:31 elliott: truly this is a powerful type with implications both practical and theoretical. 08:19:03 oh you could also throw in a linked list just for fun. 08:20:22 well I guess it would be a tree actually. 08:25:54 :t mapM_ 08:25:55 forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m () 08:28:37 -!- Nisstyre has quit (Ping timeout: 258 seconds). 08:37:13 my code somehow grew four lines during that massive simplification :-| 08:47:14 :( 08:47:27 and i don't think it got any faster too 08:48:56 good thing simple is good 08:49:15 i'm not sure it simplified much :D 08:49:20 :'( 08:49:32 must think of good reason to keep....................................... 08:51:26 monqy: there's pretty much only three improvements left to do to the code in its current state oops... 08:51:59 make it pass Mycology fully, give names to each of the basic instruction interpreters (maybe), implement the new fungespace, and maybe clean it up generally 08:55:08 -!- Nisstyre has joined. 08:59:16 -!- zzo38 has quit (Remote host closed the connection). 09:00:25 ais523: you're still awake? 09:00:32 yes 09:00:36 I'm trying to roll over sleep pattern 09:00:51 me too! it probably won't work for me, tough 09:00:52 though 09:01:02 my default sleep pattern seems to be "desperately trying to get on a normal sleep pattern" 09:01:11 it's... suboptimal 09:03:34 Shiro/Types.hs:1:1: 09:03:34 Dynamic linking required, but this is a non-standard build (eg. prof). 09:03:35 You need to build the program twice: once the normal way, and then 09:03:35 in the desired way using -osuf to set the object file suffix. 09:03:37 oh my god, not this again 09:04:06 oh, it's because of Template Haskell usage 09:04:11 -!- Nisstyre has quit (Ping timeout: 276 seconds). 09:04:16 ais523: shake some generic fists at people for me, thanks 09:04:25 what hapened... 09:04:31 people, stop being so peoplish! 09:04:42 monqy: building profiling builds of programs that use TH is a bit of a pain 09:05:10 "Exclamation mark formed in space by two colliding galaxies" this is definitely new 09:05:11 s 09:05:19 "An awesome image that has been released by Nasa shows two galaxies colliding to resemble an enormous purple exclamation mark." are you even pretending to be news 09:07:03 monqy: cabal-dev is good btw 09:07:11 whats'e that 09:07:53 monqy: it sandboxes cabal stuff so that each project has its package repository, which is useful because cabal loves to break 09:08:50 the dependency tracking might be nice too, assuming it can does that 09:08:57 "shiro: Most RTS options are disabled. Link with -rtsopts to enable them." i did you asshole :( 09:09:09 monqy: define dependency tracking? obviously it makes sure that you don't epend on anything without noting it 09:11:08 i mean for packaging purposes one of my nightmares is that dependencies and friends murder me in my sleep 09:11:27 should I ever want to make my own packages 09:11:29 monqy: im dont understand............. 09:12:50 keeping track of what pakcages I use: a good thing 09:12:59 monqy: you know how to use cabal files right... 09:13:07 build-depends: 09:13:08 base >= 4 && < 5, 09:13:08 containers >= 0.4 && < 0.5, 09:13:08 bytestring >= 0.9 && < 0.10, 09:13:08 process >= 1.0 && < 1.1, 09:13:08 random >= 1.0 && < 1.1, 09:13:10 filepath >= 1.2 && < 1.3, 09:13:12 time >= 1.2 && < 1.4, 09:13:14 directory >= 1.1 && < 1.2, 09:13:16 unix >= 2.4 && < 2.5, 09:13:18 mtl >= 2.0 && < 2.2, 09:13:20 data-lens >= 2.0 && < 2.1, 09:13:24 data-lens-template >= 2.1 && < 2.2, 09:13:26 hashtables >= 1.0 && < 1.1 09:13:28 --shiro.cabal 09:13:30 i just started with base and then added the packages until my existing code worked 09:13:37 but my nightmare is in getting that to happen 09:13:45 the cabal file 09:13:51 ive never done it im scared ;_; 09:13:56 cabal init --no-comments 09:14:00 answer its questions 09:14:02 modify the result 09:14:22 monqy: but it's easy: http://sprunge.us/EZLZ 09:14:49 the only tricky part is knowing what bounds to give the dependencies, but it's pretty easy by looking at the release history of the package to see what kind of increments it goes in 09:15:02 that is the scariest part :'( 09:15:07 if the major version number increases only very rarely, you probably want the current minor release; else the current major release 09:15:13 it's really not hard 09:15:19 it just takes a few minutes 09:16:19 i'll se what hapens when i try it 09:16:26 (asusuming i try it) 09:23:22 what's interesting 09:23:34 is that a photograph of a photograph is a photograph of the original photograph's subject. 09:23:45 ok 09:24:04 monads are like cameras 09:24:09 snap :: a -> Photo a 09:24:16 photographs are like pointers to moments. 09:24:17 photoshop :: (a -> b) -> Photo a -> Photo b 09:24:24 cakeProphet :: Photo (Photo a) -> Photo a 09:24:27 elliott: except photos auto-join 09:24:51 ...well, they auto-join and get progressively shittier in quality. 09:26:46 snap (Photo a) = snap a 09:26:48 or something. 09:27:25 ...but not really. I guess join is best to encapsulate (oh shit OO terminology) that behavior. 09:27:36 autovivify :: Photo a -> a -- unimplementable 09:28:02 ...I don't see how that's autovivify in the Perl sense. 09:29:29 more like: vivify :: Maybe a -> a 09:29:38 or something. 09:29:48 but not really. 09:30:06 it's more like vivify :: weird Perl shit you probably shouldn't write in terms of Haskell 09:30:09 -!- Nisstyre has joined. 09:30:15 well, autovivification is when things get created automatically. 09:30:20 correct you are. 09:30:25 so that's automatically creating an object from a photo of it. 09:30:27 which you can't do. 09:30:33 ah I see. 09:30:46 anyway, what matters is that the terminology is colourful :) 09:31:01 uh oh, some part of me just wondered whether that photograph metaphor is actually good 09:31:03 self-hatred enabled 09:32:31 elliott -- the angsty teen years 09:32:44 nah, i went through those a few years ago 09:38:43 monqy: nobdoybody can help me :'( 09:38:45 -!- Nisstyre has quit (Ping timeout: 264 seconds). 09:38:47 selfhate elliott' = let elliott = ElliottWithHate elliott' hatred; hatred = join hate elliott in elliott 09:38:56 CakeProphet: how long did that take you 09:39:05 had to tie some knots... 09:39:06 -!- mycroftiv has quit (*.net *.split). 09:39:06 -!- Zetro has quit (*.net *.split). 09:39:06 -!- twice11 has quit (*.net *.split). 09:39:17 but actually not long. 09:39:42 within the minute. 09:42:00 -!- mycroftiv has joined. 09:42:00 -!- Zetro has joined. 09:42:00 -!- twice11 has joined. 09:42:54 Deewiant: jesus christ, man, long_.d 09:43:01 Deewiant: you're meant to be better than this 09:43:13 What 09:43:22 Deewiant: Inline assembly :D 09:43:22 -!- FireFly has quit (Quit: FireFly). 09:43:46 heh, I like how your fallback case uses bigints 09:44:33 Well, the damn compiler doesn't implement 128-bit integers 09:44:42 -- lol @ Deewiant (note: should be aim to next instruction, not advance... probably?) 09:44:42 -- (definitely in the else clause) 09:44:42 -- well, it kind of is now 09:44:42 I'm really good at commenting 09:44:55 I don't know whether half my known bugs still exist or not 09:44:59 It was much easier to get the asm to work 09:45:42 http://hackage.haskell.org/package/largeword lame, I thought this would use some fast library for it, but it's just hand-written 09:47:19 -- TODO: Also, if the least significant bit of the flags cell is 09:47:20 -- high, o treats the file as a linear text file; that is, any 09:47:20 -- spaces before each EOL, and any EOLs before the EOF, are not 09:47:20 -- written out. The resulting text file is identical in appearance 09:47:20 -- and takes up less storage space. 09:47:22 let process | flags == 0 = id 09:47:23 lol 09:47:24 | otherwise = textify 09:47:26 Past me, you implemented this, why did you leave the TODO 09:47:28 If nobody told you about Windows yet: {Get,Free}EnvironmentStrings[AW] 09:47:37 so me and another guy managed to simultaneously start work on a several-year-dead project 09:47:45 -!- copumpkin has quit (Ping timeout: 264 seconds). 09:47:50 like, within days of each other 09:47:51 Deewiant: Ugh 09:48:09 -!- copumpkin has joined. 09:48:12 Deewiant: I'd rather just depend on POSIX than manually case on the platform and muck about with the FFI for Windows 09:48:17 Who needs EVAR on Windows anyway :P 09:48:25 I suppose I could write a tiny C wrapper sometime. 09:48:42 Now to figure out why the heck cabal-dev won't build me a profiling version 09:49:20 Jesus christ, what is the point of letting me build a profiling version if you won't turn -rtsopts on 09:49:25 Oh 09:49:26 Oh 09:49:29 I see 09:49:35 I have been running the old version all this time 09:49:39 I'm 09:49:40 smart 09:49:55 This means that all my performance measurements might be totally bullshit :D 09:50:18 Ha ha ha, the zero change in performance is actually a slowdown of about half a second :-| 09:50:22 Fuck my life :-| 09:50:32 > let cakeprophet = Prophet cake sleep; sleep = sleep cakeprophet in sleep cakeprophet 09:50:33 Not in scope: data constructor `Prophet' 09:51:48 cakeskell permits infinite types... 09:52:41 I also love how the entire Erlang community is on #erlang :P 09:55:22 Ha ha ha this profiling trace is depressing. 09:56:37 Everything is somewhat slow? 09:56:57 Deewiant: The non-lens record accessors somehow make an appearance as noticeable cost centres. 09:57:16 Ordinarily I'd expect this to be because everything else is just so fast, but somehow my record accessors are actually slow. 09:57:45 OK, shaved off about a tenth of a second by strictifying EVERYTHING 09:58:20 Maybe I should try the git data-lens with those nice unboxed tuples. 10:01:34 This is actually really disturbing... why is this so slow. 10:19:39 Looks like I'm going to have to revert these lens changes for now. 10:19:59 Deewiant: Yeah, OK, the new fungespace will be within the next few changes I make, so WATCH OUT. 10:20:55 * Deewiant ducks 10:21:02 Deewiant: TOO LATE IT HIT YOU WITH SPEED 10:21:12 FUCKK I CANT HANDLE THE PSE;D 10:21:50 moment of silence 10:21:55 "in memory of Deewiant" 10:22:05 ""couldnt handle the pse;d"" 10:22:58 nobody can handle the pse;d 10:23:13 How will you code it if you can't handle it 10:23:34 badly 10:23:50 Shame 11:15:00 -!- monqy has quit (Quit: hello). 11:24:40 -!- GreaseMonkey has quit (Quit: The Other Game). 11:33:36 -!- azaq23 has quit (Ping timeout: 260 seconds). 11:44:44 -!- azaq23 has joined. 11:54:53 -!- boily has joined. 12:31:44 Hmm 12:31:51 I guess I'll rewrite the fungespace with the non-lens version 12:32:00 And conservatively transform things into a more lens-based style later 12:32:11 When I can run Mycology in under half a second :P 12:35:38 -!- aloril has quit (Ping timeout: 246 seconds). 12:47:57 -!- Nisstyre has joined. 12:48:57 -!- aloril has joined. 12:54:49 -!- FireFly has joined. 13:06:23 Deewiant: How does the dynamically-sized array stuff work in CCBI's fungespace, anyway; it seems like you'd have to move spaces around a ton to make it work. Or do they have a maximum size, just not preallocate to that? 13:07:16 The arrays are mostly static 13:07:34 "Mostly" :-) 13:08:00 When a new box gets placed, sometimes the array from an old box it subsumes is reused 13:08:07 See AABB.consume 13:08:12 Heeeey, my structure is fractal. 13:08:18 And yes, it involves moving stuff around a ton :-P 13:08:22 Deewiant: I was going to avoid reading your code for licensing reasons but OK. 13:08:31 Well don't then 13:08:42 Nah, I will, and just ignore any created derivative status :P 13:08:46 Await my write-up on the thing, which may or may not be begun and finished this year 13:08:54 Deewiant: Not sure I see the advantage over a simpler mcmap-style region layout, mind you 13:09:15 What's a simpler mcmap-style region layoutt 13:09:17 -t 13:10:11 Deewiant: Hash table indexed by dividing each coordinate by N, resulting in a static-sized square array indexed by moduloing each coordinate by N 13:10:24 Literally the simplest possible "square regions in a hash table" 13:11:50 So a partition of the space into arrays of size N^d 13:12:16 Deewiant: Yes 13:12:33 Deewiant: I could even cheat like Vorpal and arrange it so that a convenient amount of negative space is included in the origin array :-) 13:12:52 But I'm fully willing to believe that AABB is totally faster for some reason, I just don't know why :P 13:13:30 Obviously something even fancier is probably the ideal, but I can't think of anything that wouldn't be fast with this 13:13:38 Nobody's done quite that, I don't think 13:13:43 So maybe it is better, who knows 13:14:06 Really? It's the "obvious thing", at least to me. 13:14:40 Well, most don't divide the space into square regions, i.e. they just use N = 1 :-P 13:14:53 RC/Funge-98 does something weird 13:15:38 stinkhorn uses a quadtree of square regions in some way, IIRC 13:15:50 http://sprunge.us/cVAX ;; there HAS to be a way to exploit this redundancy :P 13:15:58 And then there's CCBI 13:16:00 And I think that's it 13:16:30 Deewiant: Well sure, but the field of "sparse, discrete rectangular space" surely cannot be that undersolved 13:16:49 Oh, I'm sure it isn't 13:16:56 I just meant in the context of Funge 13:18:01 -!- Nisstyre has quit (Ping timeout: 260 seconds). 13:18:11 Deewiant: Right :P 13:18:19 Hmm 13:18:44 I can't think of any way to exploit the redundancy in these structures that doesn't end up creating a quadtree :D 13:18:55 And there's no way I'm writing the essential same algorithms twie 13:18:56 twice 13:22:48 Shoppe --> 13:25:35 -!- derrik has joined. 13:27:11 -!- Nisstyre has joined. 13:32:36 -!- edwardk has joined. 13:32:36 -!- edwardk has quit (Changing host). 13:32:36 -!- edwardk has joined. 13:41:41 hmm, actually i probably don't need mincoords/maxcoords on the region map 13:41:49 or the population 13:41:56 should be sufficiently few elements to calculate that... 13:42:53 Annoying that I can't benefit from IntMap's fast minimum/maximum, though, because I need the minimum/maximum vectors... 13:43:06 -!- Phantom_Hoover has joined. 13:43:27 helo Phantom_Hoover 13:43:57 You should probably think about what use case you're optimizing for first :-P 13:47:27 Deewiant: Mycology, Fungicide 13:47:34 And preferably no pathological worst-cases 13:47:55 case filename of ... 13:50:19 Deewiant: CCBI does that, I take it? 13:50:31 Anyway, this isn't the Best Fungespace, this is just something interim to get my runtime down :) 13:51:19 Hmm, how big to make regions 13:56:31 What are Haskell and BrainFuck's main differences? I am having trouble spotting them other than syntax, evaluation and staticly typed stuff. 13:58:35 Gregor: In brainfuck, [] is a function. But in Haskell, "import" isn't a function. 13:58:39 So brainfuck is more flexible. 13:58:47 Also brainfuck is everywhere; Urban Müller said so. 13:59:34 Ahhh! 14:01:54 Stop bullying me :( 14:03:04 Apparently Shiro would cost $32,460 to develop. 14:03:14 I'm always quite sceptical of sloccount's estimates. 14:06:07 `addquote You mean it'd be Tau Zero but without the spaceship? 14:06:11 635) You mean it'd be Tau Zero but without the spaceship? 14:06:25 Um, wha? 14:06:26 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 14:06:33 Phantom_Hoover: I laughed; good enough for me 14:15:06 -!- Nisstyre has quit (Remote host closed the connection). 14:19:06 -!- Nisstyre has joined. 14:19:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:20:50 -!- derrik has quit (Ping timeout: 258 seconds). 14:21:20 -!- derrik has joined. 14:36:04 > divmod (-999) 512 14:36:05 Not in scope: `divmod' 14:36:09 > divMod (-999) 512 14:36:10 (-2,25) 14:36:13 > quotRem (-999) 512 14:36:14 (-1,-487) 14:37:47 -!- cheater has joined. 14:41:08 > 9999 `shiftL` 9 14:41:09 Ambiguous type variable `a' in the constraint: 14:41:09 `Data.Bits.Bits a' 14:41:09 a... 14:41:11 > 9999 `shiftL` 9 :: Int 14:41:12 5119488 14:41:14 > 9999 `shiftR` 9 :: Int 14:41:14 19 14:41:16 right 14:43:01 > 9999 `shiftL` 128 :: Int 14:43:02 0 14:43:19 That's not fast then now is it 14:45:48 Deewiant: What 14:46:59 elliott: It's doing a check against the bitSize, I presume 14:47:09 Ah 14:47:17 idx :: Vector -> (Int, Int, Int, Int) 14:47:17 idx (x,y) = (mask x', mask y', offs x', offs y') 14:47:17 where x' = fromIntegral x 14:47:17 y' = fromIntegral y 14:47:17 mask :: Int -> Int 14:47:18 mask = (.&. regionMask) 14:47:22 offs :: Int -> Int 14:47:24 offs = (`shiftR` regionPow) 14:47:26 Patches welcome :-P 14:47:33 Unless lambdabot's running on an architecture where that's the behaviour, but that seems doubtful 14:48:09 elliott: x' = fromintegral x :: Int and leave out the mask/offs types? 14:48:33 Deewiant: I think they might end up more generic... but anyway, I'm talking about speed patches :-P 14:48:44 Oh god, I hope this doesn't turn out uglier than insertFS and mergeByteString. 14:49:08 You can't really speed patch that without inline assembly or the like :-P 14:49:19 elliott: It's doing a check against the bitSize, I presume 14:49:21 Or messing with the type signature 14:49:25 :P 14:49:34 Deewiant: I'm fine with the type changing but I suspect the tuple will be eliminated 14:49:37 At compile-time 14:49:49 idx :: Int# -> Int# -> (# Int#, Int#, Int#, Int# #) 14:49:54 OKAY? 14:50:22 Deewiant: PERFECT. Except no, it has to take a Vector because them be the types I'm working with. Actually I should write specialised Value <-> Int conversion functions, I think unsafeCoerce would work. 14:50:28 Since it's probably sixty-four bit ints vs. thirty-two 14:50:42 In which case unsafeCoerce will work for Value -> Int, and for every sane Int -> Value 14:51:04 uncheckedIShiftRL# x regionPow 14:51:09 import GHC.Prim 14:51:15 And use Int# 14:51:35 Finally my code is beginning to become readable 14:51:38 TIME TO THROW ALL THAT WAY 14:52:22 Or do you want sign extension there 14:52:38 Deewiant: I need finding the minimum coordinates to work, at least 14:52:44 On the mask results 14:52:44 If you do, s/L#/A#/ 14:52:45 And maximum too 14:52:53 The offset should always be positive, too 14:52:56 So yeah 14:53:16 OK but no seriously I should write insertFS before getting into MICRO-OPTIMISATION TERRITORY 14:53:32 -!- copumpkin has joined. 14:56:11 -!- hebru has joined. 14:58:12 hola 14:58:17 Hello. 14:58:42 Welcome to #esoteric, worldwide hub for esoterica. 14:58:58 -!- edwardk has quit (Quit: Computer has gone to sleep.). 14:59:54 *esoteric programming languages 15:00:02 -!- invariable has changed nick to variable. 15:01:01 OK, insertFS is easy, it's insertSR that's hard :P 15:01:13 Maybe because it's the EXACT SAME INSERTFS AS BEFORE. 15:01:21 -!- hebru has quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )). 15:01:22 What are these TLAs 15:01:50 Deewiant: FS = fungespace, SR = space region 15:01:51 Insert into FileSystem and insert into SRAM? 15:01:57 Almost 15:01:59 :t insert 15:02:00 forall a. (Ord a) => a -> [a] -> [a] 15:02:08 insertFS originally chosen for clash-avoidance :P 15:02:38 import hiding, qualified, etc 15:03:32 Deewiant: My own modules? Gross 15:03:41 I'll call it insert when it's a separate package 15:03:50 No, Data.List 15:04:51 ?hoogle insert 15:04:51 Data.HashTable insert :: HashTable key val -> key -> val -> IO () 15:04:52 Data.IntMap insert :: Key -> a -> IntMap a -> IntMap a 15:04:52 Data.IntSet insert :: Int -> IntSet -> IntSet 15:04:55 Meh 15:04:57 :t Prelude.insert 15:04:58 Not in scope: `Prelude.insert' 15:04:59 Meh 15:05:06 :t Data.List.insert 15:05:07 forall a. (Ord a) => a -> [a] -> [a] 15:05:13 :t List.insert 15:05:13 elliott, so your idea of an esoteric language is Haskell with the type checker turned off? 15:05:14 forall a. (Ord a) => a -> [a] -> [a] 15:05:18 -!- augur has joined. 15:05:36 haskell with no typechecker doesn't work 15:05:45 well, you lose typeclasses 15:06:07 but i hate type classes so it's ok 15:06:11 oh ok 15:06:16 :D 15:07:44 kmc: That's my idea of a fast language 15:07:50 SOOOO FAAAAST 15:09:55 elliott: fast to run or fast to compile? 15:09:58 TURBO HASKELL 15:10:00 lol 15:10:08 ed's thinking resurrecting that 15:10:32 thinking of 15:11:13 copumpkin: Run :P 15:11:19 why? 15:11:24 it sounds kind of fun 15:11:33 also, I hope he writes a haskell parser in trifecta 15:11:46 elliott: fast to run or fast to compile? 15:11:48 It was in reply to that 15:12:58 oh 15:13:11 -!- MSleep has changed nick to MDude. 15:13:11 why would turning off types make the code faster to run? 15:13:37 kmc was presumably referring to my use of unsafeCoerce for optimisation 15:13:47 oh, like agda's? 15:14:18 Yes, except instead of Agda, it's a human doing it 15:14:29 unsafeCoerce (+) (unsafeCoerce 3) (unsafeCoerce (unsafeCoerce (+) (unsafeCoerce 1) (unsafeCoerce 2))) 15:14:38 except you need no typeclasses on those operations 15:15:19 Wow, everything is actually more or less compiling 15:15:40 Except for my ~optomized~ mergeByteString which makes assumptions that are now false, heh 15:22:51 Deewiant: I just realised the way I'm doing it now can't possibly do anything but hurt speed >_< 15:23:00 I guess it'll reduce memory consumptiont hough 15:23:08 Doing what, hurt compared to what 15:23:34 Hurt compared to my fungespace; and just replacing the underlying structure wihout adding any kind of caching of the current array or anything 15:23:48 Because it's still doing lookups all the time, they just happen to go to an array 15:24:00 Yeah you need caching 15:24:19 It might help a bit, the processor does caching :-) 15:24:32 I guess I'll see if this works, and if it does, then leave the fungespace for now until I write something ~amazing~; I can optimise other things until then 15:24:35 Like the stack :P 15:24:43 Also more fingerprints?? 15:38:37 Hmm 15:38:49 I wonder how much worse (Map (Int,Int) a) is at lookup than (IntMap (IntMap a)) 15:39:43 could be better :O 15:40:18 it's pretty easy to construct pathological cases where (Map Int) beats IntMap 15:40:37 compare also to http://hackage.haskell.org/package/unordered-containers 15:43:10 I should probably try unordered-containers, yeah 15:44:51 (Map (Int,Int)) might beat (IntMap . IntMap) due to fewer cache misses, or something 15:46:18 science 15:47:47 indeed 15:55:09 Deewiant: You'll be pleased to know my new fungespace is completely broken 15:58:43 How'd that happen 16:00:55 Deewiant: I diagnose it with the rare condition "not working" 16:00:58 Time to optimise my stack instead 16:01:12 Linked lists aren't bad but I guess localit 16:01:13 y 16:01:15 has an effect 16:05:58 OK 16:06:09 I have here an Amnesty International catalogue. 16:06:12 It is the funniest thing. 16:06:15 Purchase some amnesty 16:06:52 If you compressed every single stereotype of a middle-class, sandal-wearing Guardian reader into a catalogue, this would be it. 16:07:06 Some highlights: 16:07:21 Kitchen utensils made from recycled stainless steel and bamboo. 16:07:36 Biodegradable sponges. 16:07:45 oh my god 16:07:51 Himalayan soap nuts. 16:08:15 Natural soap, wrapped in leaves from wild trees. 16:08:36 wow 16:08:43 Christmas tree decorations hand-carved by a community group in Bethlehem. 16:08:59 I want to buy it from you 16:09:05 and submit it to galleries as a work of art 16:09:21 Oh my god what Bethlehem means "house of meat". 16:09:26 A cake stand, made in India. 16:09:38 OK, this is the best one. 16:09:49 A metal trivet, *made from recycled bike chains.* 16:09:57 my dog had been barking for 30 mins at 2am at some cat while my brother tries to sleep for work 16:09:58 -!- elliott has left ("Leaving"). 16:10:03 -!- elliott has joined. 16:10:14 I know, it's amazing. 16:10:16 i gave the dog the greasiest glare 16:10:22 Phantom_Hoover: i just... 16:10:24 it just might be enough 16:10:30 Oh my god, these people are basically elves. 16:11:02 whats a trivet? 16:11:09 itidus20, a thing you rest hot pots on. 16:11:24 cool 16:11:25 They're one of those things you buy once and never think of again. 16:11:45 how do you make your stare greasy? 16:11:58 by being angry 16:12:11 where does the word greasy come from? 16:13:27 i dunno... might be a local slang 16:13:33 no it didnt work dog has started again 16:13:55 try vasaline instead 16:14:14 ahh here we go 16:14:20 entry 9: http://www.urbandictionary.com/define.php?term=greasy&page=2 16:14:32 aussie slang.. woooo 16:15:40 hmm, why is this SConstruct file marked executable despite being a text file that isn't a shellscript with no shebang? 16:15:44 i have heard it in use so it is indeed aussie slang 16:16:41 ais523: Windows? 16:16:57 elliott: possibly, but most of the files in the directory have the x bit set correctly 16:17:08 (it's from an svn repo, in case that's relevant) 16:17:18 hmm, I only need about a hundred times speed-up to be competitive with cfunge 16:19:09 hmm, my acos, asin and atan are OK, but cos, sin and tan are broken 16:19:24 oh hmm 16:19:36 what are you implementing? 16:19:40 Did you implement them manually or something? :-P 16:19:42 -!- augur has quit (Read error: Connection reset by peer). 16:19:47 Deewiant: , (B, const $ fixp (degree acos)) 16:19:47 , (C, const $ fixp (degree cos)) 16:19:57 Do the non-a variants not take a fixed-point or something? :-P 16:20:00 itidus20: funge 16:20:08 ahh 16:20:15 -!- augur has joined. 16:20:28 -!- augur has quit (Remote host closed the connection). 16:20:47 elliott: Cosine takes an angle and returns a ratio; the inverse takes a ratio and returns an angle 16:20:54 Oh, duh 16:21:09 -!- edwardk has joined. 16:21:09 -!- edwardk has quit (Changing host). 16:21:09 -!- edwardk has joined. 16:21:13 I should just define degree without the function-wrapping part :-P 16:23:30 Deewiant: Well, that didn't help :) 16:23:48 Deewiant: But yeah, OK, wrt take an angle: An integral angle? 16:23:56 FIXP should really be FIXP→FIXP all the way, sigh 16:24:03 I don't remember FIXP, that was just maths 16:24:12 Bah, I'll check CCBI 16:24:23 Or RCFu- ahahahahaha 16:26:06 Deewiant: I like how you handle infinity and nan 16:26:19 Hmm, I guess NaN may be part of the specs 16:26:23 As in, NaN-reflecting 16:28:03 -!- augur has joined. 16:29:12 -!- edwardk has left ("Leaving..."). 16:29:59 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 16:50:51 Deewiant: I like how your D code is better encapsulated than my Haskell 16:51:39 I guess Haskell sucks huh 16:51:49 Deewiant: More like I suck 16:51:58 Yeah I find that more acceptable as well 16:52:07 There's stuff here that accesses the stack directly with list crap :-/ 16:52:15 * elliott makes a Stack module 16:52:23 -!- derrik has quit (Ping timeout: 264 seconds). 16:52:47 Deewiant: It's hard to avoid exposing constructors when everything is in one Types module though :P 16:53:54 -!- derrik has joined. 16:54:08 -!- derrik has left. 16:54:33 elliott: Don't do that :-P 16:54:56 Deewiant: It's unavoidable; you inevitably get circular dependencies otherwise 16:55:08 Thus why most major projects do it 16:55:18 It sucks, but that's an actual flaw in Haskell :P 16:55:36 But that's only for the type definitions, no? 16:55:45 Then just don't export the constructors from that module :-P 16:55:59 Deewiant: Then how does the stack module implement its actions 16:56:03 Divination? unsafeCoerce? 16:56:10 Or are you saying all my functions should be in one module too 16:56:15 Because that's great 16:56:24 Meh, just use .hs-boot files 16:56:45 Deewiant: I did; they couldn't solve the circular dependency I had before 16:56:52 Because it was a circular dependency on _types_ 16:57:00 Which is unavoidable with my monad structure 16:57:10 Howso 16:57:10 I still have one required hs-boot file 16:57:14 I guess I could separate some things out thoughd 16:57:15 it'd be neat if haskell had divination 16:57:35 Deewiant: Fingerprint record includes Shiro () actions; Shiro is StateT FungeState, FungeState includes fingerprint information 16:57:38 Same with IP 16:57:48 → They all need to be in one big ol' module 16:58:08 Fungespaces, stacks, and refstores can be separated out, but the rest are all entwined pretty fundamentally 16:58:51 Can't you granularize the dependencies a bit 16:59:09 Deewiant: The dependencies are fine; Haskell just has a poor module system 16:59:16 But you're welcome to try 16:59:43 So that you e.g. have (MonadState IP m, MonadState FingerprintStuff m) => m () 16:59:53 Haha 17:00:15 Deewiant: Yes, I could technically rewrite my whole monad as a huge context, at great run-time cost and that of code clarity too 17:00:21 I don't find that very desirable :P 17:00:43 Hmm, no class aliases yet I guess 17:00:52 Shame 17:01:54 Then you could do that and just alias it 17:02:06 No comment on the runtime cost :-P 17:02:33 Deewiant: wrt the runtime cost, it was taking two seconds to run Mycology with typeclasses 17:02:34 vs one 17:02:40 heh 17:02:43 Specialise pragmas helped naught 17:02:49 That's not the kind of multiplication factor I'm ok with 17:02:57 Shame 17:03:23 It is 17:03:37 Hmm, I should probably make a generic stack type rather than a special stackstack type, but that would be slower :) 17:03:59 Oh wait, I could use type families 17:04:03 That's probably overkill, though :P 17:04:18 Especially since the stack stack is different to stacks 17:04:21 0-padded and all 17:05:57 I special case that in the functions themselves 17:07:04 Deewiant: You mean functions using stacks? 17:07:08 Or the actual stack code itself 17:07:17 In the stack code, of course 17:09:30 Deewiant: That's... 17:09:34 Deewiant: That's a crime 17:09:37 Against everything 17:09:46 Deewiant: Wait, I could just pad out the stack stacks with error "nope" :-D 17:09:50 Why's that 17:10:04 (Except that doesn't really help for the "handle element not being there" case) 17:10:18 Deewiant: Because parametric containers should have identical behaviour regardless of their element type? 17:10:20 Generic programming, man 17:10:33 This isn't a library so suck it 17:12:39 Deewiant: At least pretypedef the two used cases and don't expose the parametric type! 17:12:43 It's not RIGHT. 17:12:50 You shouldn't even be able to look at the type you're given. 17:12:58 Or do you distinguish itbased on sizeof :D 17:13:38 Well, with MODE it's hidden but not otherwise 17:13:41 static if (befunge93) 17:13:41 Stack!(.cell) stack; 17:13:41 else version (MODE) 17:13:41 CellContainer* stack; 17:13:41 else 17:13:44 Stack!(.cell)* stack; 17:15:44 Deewiant: What's MODE got to do with it 17:15:49 Oh, right 17:15:51 Different things 17:15:52 Deque 17:15:54 ies 17:15:55 right 17:21:37 -!- azaq23 has quit (Quit: Leaving.). 17:24:37 Woot, now I have a verbose stack API; I'll remember how this is a gain soon I guess 17:25:29 Heh, circular dependency already just by putting things outside of .Types, take that Deewiant 17:25:42 Ouch 17:25:44 (Types needs to see Stack because obviously all the state stuff includes Stacks, but Stacks are made out of Values, defined in Types) 17:25:59 (OK, so it's caused by a monolithic type module there, but there are more conflicts without :P) 17:26:08 You need CircularTypes and NormalTypes :-P 17:26:19 I don't have any NormalTypes :P 17:26:23 Value? 17:26:42 Well, OK 17:26:46 I assume it's something like type Value = Intt 17:26:46 But that's just an alias :P 17:26:50 Yeah so? 17:26:58 You want me to make a module for one type? 17:27:00 See ccbi.cell 17:27:23 Pah :-P 17:27:27 I just need to rethink this 17:28:00 You could define Value in Stack? 17:28:19 Oh, but you want space to be separate, so probably nott 17:28:21 tttttttttttt 17:28:32 Deewiant: Stuttering? 17:28:36 Yep 17:29:01 Deewiant: Surely rubber dome is more tolerable than ttttttttt 17:29:02 I'm back to that once-majorly-stuttering keyboard which for some reason stutters a lot less after sitting in a cupboard for months 17:29:43 I'll use this until it becomes intolerable, for the moment it's not bad 17:30:12 Haven't you snarked at me for not yet fixing my keyboard 17:30:24 This isn't really "fixable" :-P 17:31:09 Warranty? 17:31:11 No? :P 17:31:28 Cost of sending keyboard to Japan and back: greater than price of keyboard 17:31:33 static assert (dim >= 1 && dim <= 3); 17:31:39 I don't like your ideas 17:31:44 And their nasty limitations 17:31:47 Hey at least I enforce my assumptions 17:31:59 Are you saying I don't? 17:32:05 I enforce my two-dimensionality by having nothing else :D 17:32:14 Could do it only in all the places it's necessary but I got lazy 17:32:21 2011-09-01 18:16:34 ( elliott) Except for my ~optomized~ mergeByteString which makes assumptions that are now false, heh 17:32:35 Deewiant: The bad assumptions lead to failure to compile 17:32:37 Sounds like enfrocement to me 17:32:42 Ah, okay 17:42:55 -!- augur has quit (Remote host closed the connection). 17:52:53 -!- augur has joined. 17:56:47 Has anyone here used OpenCL? 17:59:56 I haven't. 18:00:03 thanks 18:00:15 nor have I, even though logically I might have been expected to have done 18:00:25 ais523: CUDA, then? 18:00:35 although possibly I'll end up using it before long if nvidia continue screwing up the CUDA SDK 18:00:40 I have used CUDA 18:01:11 I can't seem to find any documentation on using OpenCL outside of Python, which is ridiculous 18:01:26 lol 18:01:42 High-performance SIMD parallel computing: I'm thinkin' Python! 18:01:59 Gregor: Well, you compile the regular OpenCL program and just invoke it from Python :P 18:02:13 Totally ridiculous that I can't find documentation on how to do that from C, thoug. 18:02:14 though. 18:02:19 http://esolangs.org/wiki/Main_Page <--- uhhh, wowwtf 18:02:29 Yeah, I was going to bring that up. 18:02:30 Gregor: ooh, what is it? 18:02:41 nobody revert until I see it :P 18:02:45 Is the page just down now? 18:02:51 Gregor: What was it? 18:02:55 it won't load here 18:03:01 I got a fancy DNS message earlier. 18:03:08 ais523: also, am I right in thinking that programs which offer to perform a computationally intensive task on both the GPU and CPU are mostly wasting their time as far as the latter goes? 18:03:12 elliott: It's hyper-overloaded because it's EasyDNS saying "lol, EasyDNS went kaput, u sux" 18:03:24 Gregor: Ugh, that happened to another site I visit 18:03:25 (Only slightly paraphrasing) 18:03:27 http://esoteric.voxelperfect.net/wiki/Main_Page works 18:03:32 elliott: Naturalismo. 18:03:34 But lol 18:03:35 elliott: depends on how well it parallelizes, they may well be wasting their time on the /GPU/ 18:03:44 ais523: it's embarrassingly parallel 18:03:45 To Whom This May Concern: 18:03:45 You are seeing this message due to the site you are trying to view having its DNS hosted by EveryDNS. 18:03:55 elliott: in that case, running it on the CPU is mostly useless too 18:04:00 ais523: right 18:04:10 umm, reorder words so that sentence makes sense 18:04:24 ais523: (I was wondering whether I should bother learning how to do extremely-parallel programming in C as well, or whether OpenCL would do just fine) 18:04:43 the problem with OpenCL is that nobody really supports it yet 18:05:10 at least with CUDA, one vendor supported it 18:05:13 but they seem to be going backwards 18:05:33 I thought OpenCL was supposed to compile to CUDA and GLSL? 18:05:39 (they removed the simulator on the basis that the GPU could now do limited debugging itself, which is not good if your program has a memory leak and a GPU memory leak requires a hard reboot) 18:05:40 Well, I've ran an OpenCL program on my card and it worked fine. 18:06:02 OpenCL support is getting better 18:06:17 but even then, CUDA doesn't feel like the sort of lang you compile to, but the sort of lang you write in 18:06:26 So? 18:06:45 Hmm, traditional crypt() is GPU-friendly, right? 18:07:16 I don't actually know 18:07:24 PAH 18:08:02 http://developer.nvidia.com/opencl 18:08:18 Seems like OpenCL probably supports just about as much as CUDA ... which is to say, NVidia stuff :P 18:10:02 Microsoft are also working on their own DirectX-based thing 18:10:08 I know because they keep giving seminars about it 18:14:11 oh, yay, crypt actually has a fixed-length input 18:14:17 and you can just zero-pad, because that's how c strings work 18:14:49 elliott: Windows used to allow up to 14-character passwords 18:15:00 and it split them into two 7-character passwords and hashed them separately 18:15:05 haha 18:15:20 (that's been fixed a while back, but for a while, people were recommended to use passwords at least 15 chars long so that it didn't default to the old algo) 18:15:56 god dammit i dont want an opencl/c tutorial as a video 18:15:59 fuck you fuck you fuck youuuuuuuu 18:17:46 elliott: Isn't it annoying how when you search for $X tutorial the first result is always some bullshit on YouTube? :P 18:18:03 what happened to text :-( 18:18:12 Gregor: sometimes the YouTube tutorials are actually useful, although I normally prefer text 18:21:40 you know what? I'm starting to think that in many situations where pointers or indexes are used, referencing by coordinates into a globalish structure is saner 18:22:00 define globalish 18:22:54 some moderately-persistent, mutable view of whatever it is that the application processes 18:23:01 one example I'm thinking of is the world map in computer games 18:23:16 so not global in the global sense then :) 18:24:04 globalish in that you're probably only going to have one of them and you're going to refer to it all over your application 18:24:09 http://stackoverflow.com/questions/6582236/branch-predication-on-gpu 18:24:17 gpus sure are weird! 18:24:28 oh dear, I can tell that's going to be a mess just from the question 18:24:34 howso? 18:24:55 people confusing it with branch prediction, for one thing 18:25:02 heh 18:25:05 but it really depends on what the individual warps are doing 18:25:09 i confused it at first, but only because i didn't notice the different spelling 18:25:22 it basically becomes an ABSTAIN if you get both sides within a warp 18:25:31 and you only ever do that if you have more threads in a warp than you actually need 18:26:03 e.g. you're doing an associative fold, the last few steps are probably going to not be very parallelizable so you just narrow the number of threads acting in a warp 18:26:14 "For example NVidia GPUs use scalar processors (with scalar instructions), no vectorization is necessary. On the contrary, ATI features 5d (or 4d) VLIW processors and for these is the vectorization crucial." i;m so confused 18:26:27 ......................... wuh 18:26:51 on top of it, graphics cards are sort-of inherently vectorized 18:27:18 hmm, it seems like cuda may be more reliable right now 18:28:14 in practice, you can't write portable GPU code with modern toolsets either 18:28:23 ais523: out of interest, how are nvidia mucking up cuda sdk? 18:28:42 particularly bad in CUDA because there are function calls to determine values about the GPU but they have to be compile-time constants for their only sensible uses (other than displaying to the user) 18:28:42 OH MY GOSH, YOU GUYS 18:28:47 eComStation had a release in May :P 18:28:50 elliott: what they did to the debugger, mostly 18:28:52 Apparently it's ... maintainedish? 18:29:09 (I was reminded by the word "warp" :P ) 18:29:33 as in, replaced it with one that sucked, didn't work, and was unsafe in the dereferencing-NULL-in-C sense (except it has quite a chance of hardlocking your GPU, forcing a reboot if you want your monitor to display anything and the GPU is also connected to the monitor, which is likely) 18:29:57 ais523: well, I don't particularly care about debugging, I should just get it right the fisrt time :P 18:30:20 so easy to leak memory by mistake, or dereference the wrong sort of pointer, etc 18:30:28 a GPU memory leak can make the system unusable for no obvious reason 18:55:26 -!- MSleep has joined. 18:56:21 -!- BeholdMyGlory has quit (Ping timeout: 260 seconds). 18:56:29 -!- Behold has joined. 18:58:47 -!- MDude has quit (Ping timeout: 240 seconds). 19:04:25 nice black-and-white advertisement picture on http://www.ecomstation.com/ - nothing says "new" like a black-and-white picture with ancient-style phones 19:04:51 also version *2* ... at least they could've inherited the OS/2 numbers and released number 6 19:07:09 -!- BeholdMyGlory has joined. 19:07:15 -!- Behold has quit (Ping timeout: 252 seconds). 19:10:42 Black and white would looks pretty nice if they didn't have the rest of the website if shaded of blue. 19:10:58 nice new feature: "* Added BOOTDLY driver, which causes a 20 second boot delay [...]" 19:11:11 -!- MSleep has changed nick to MDude. 19:35:09 hmm, gpus are weir 19:35:10 d 19:35:56 nah, /CPUs/ are weird 19:36:22 oh, dammit, the relevant power of two is _slightly_ too large to do what i'd ideally want 19:36:25 but this should not surprise me 19:36:44 ais523: umm, how many threads can a GPU do at once, roughly? 19:36:57 depends on your definition of "at once" 19:37:06 in terms of "physically flowing through an ALU or equivalent", around 16 19:37:10 each thread basically doing DES and then a comparison on the result 19:37:13 although it looks like 32 to the user because of pipelining 19:37:28 -!- oerjan has joined. 19:37:31 however, GPUs can keep tens of thousands (or hundreds of thousands) of threads ready to context-switch in 19:37:33 ais523: well, "what should I divide the keyspace by" if the problem is mainly DES :-) 19:37:40 and in particular, will context-switch in threads while the other threads are waiting for memory access 19:38:20 and no out of GPU memory accesses, I think, apart from sending info to the CPU on an (unlikely) successful comparison -- I have no idea how GPUs work really so this may be bullshit 19:38:53 elliott: is a few hundred bytes of per-thread storage enough? 19:39:15 GPUs aren't so much designed for truly embarassingly parallel problems, as problems which are almost embarassingly parallel but with a few exceptions 19:39:18 like matrix multiplication 19:39:33 ais523: a few hundred bytes should be fine, yep 19:39:58 I mean, I'm no DES expert, but I doubt one round takes more than a few hundred bytes :) 19:40:22 "By taking the lowest 7 bits of each of the first eight characters of 19:40:22 the key, a 56-bit key is obtained. This 56-bit key is used to encrypt 19:40:22 repeatedly a constant string (usually a string consisting of all 19:40:22 zeros). The returned value points to the encrypted password, a series 19:40:22 of 13 printable ASCII characters (the first two characters represent 19:40:23 the salt itself). The return value points to static data whose content 19:40:25 is overwritten by each call. 19:40:27 Warning: The key space consists of 2**56 equal 7.2e16 possible values. 19:40:29 Exhaustive searches of this key space are possible using massively par‐ 19:40:30 is it iterated-DES you're cracking? 19:40:31 allel computers." 19:41:04 ais523: looks like 25 rounds 19:41:20 which I think counts as close to nothing, from what little I know of crypt 19:41:38 so after you do 25 rounds, you're going to need to initialize memory for another group of rounds 19:41:44 that's doable, though 19:42:01 ais523: I was just going to use a constant number of threads, and rewrite over the last used memory at the end 19:42:05 I don't think it's a situation in which you'll get massive gains from a GPU, just because CPUs are also quite good at that particular calculation 19:42:18 because you are actually CPU-bound, not memory-bound 19:42:23 GPUs have been used to give massive gains for very similar problems in the past, I think 19:42:25 GPUs will benefit simply from having more cores 19:42:27 well, I know 19:42:33 you'll probably get around x1000 on that 19:42:35 ais523: well, that's the benefit 19:42:39 but not, say, ten orders of magnitude 19:42:39 x1000 counts as massive here 19:42:52 so, umm, eight thousand concurrent DES'ers sound reasonable? 19:42:55 :-P 19:43:15 more like 128, I think 19:43:20 PAH 19:43:28 and practically 256 because they're running on alternate ends of the clock cycle 19:43:32 right 19:43:33 better than CPUs 19:43:41 which can presumably manage about eight, if you have a good CPU 19:43:47 yep 19:44:30 ok, if your quoted number is right, and I can do one crypt()+compare per millisecond, then I can exhaust the keyspace in only nine thousand years 19:44:40 I, umm, suspect a millisecond to be a rather pessimistic estimate 19:44:52 although I don't really have any idea how long it does atke 19:44:56 it might be simpler just to write the code and measure it 19:46:49 ais523: I suspect this exhaustive massively parallel search is talking about Deep Crack or something :P 19:47:07 yeah, seems so 19:48:50 ais523: hmm, I suppose writing the equivalent CPU code might actually be beneficial 19:49:06 I only have two cores on this machine, but on an eight-core machine it might just make a slight difference :-P 19:49:15 because of the CPU-boundness 19:56:13 `addquote OK, making myself emergency doctor on the advice of IRC. 19:56:16 636) OK, making myself emergency doctor on the advice of IRC. 19:58:00 please state the nature of your IRC emergency 20:00:15 i am assuming some very mauled dorfs here 20:00:34 no. Phantom_Hoover has appendicitis. 20:00:42 >_> 20:01:00 Phantom_Hoover: it has been pleasant to know you. 20:01:16 well, I wouldn't go that af.r 20:01:17 far. 20:01:32 oerjan, I'm a competent amateur surgeon! 20:01:42 im a competent bad surgeon 20:01:48 ever need some bad surgery done 20:01:49 im your man 20:01:51 elliott: i thought adding "well, with a few exceptions." would be impolite in the circumstances. 20:04:25 -!- monqy has joined. 20:13:13 elliott: hey my iwc premonition was right anyhow 20:13:27 oerjan: what, of it ending? 20:13:46 no, of Me becoming singled out 20:13:56 oh (what do you mean by that) 20:14:02 (im dont follow iwc, as regularly as i should) 20:14:25 i thought you were here when i mentioned i thought Me would have been chosen, not Steve 20:14:36 sorry chosen for what IM UNSMART 20:14:58 as hitler's body donor, sheesh 20:15:11 o 20:15:23 * elliott actually reads latest iwc 20:15:23 ah 20:15:39 oerjan: enjoy your annotations in german 20:16:00 O KAY 20:16:07 Unregelmäßigen Webcomic! 20:16:46 i don't think -en is the right suffix there. 20:17:02 fuck you nazis can germinate however they like. as can google translate. 20:17:07 ("Germinate" :DD:DDD) 20:17:10 :dddD:D:D 20:17:30 * oerjan swats elliott -----### 20:19:03 hmm, those fancy Intel encryption instructions 20:19:08 they're reasonable things like AES, right, not DES? :P 20:19:12 olsner probably knows 20:19:58 Yes, AES 20:20:13 Deewiant: but why not DES, too? 20:20:17 https://secure.wikimedia.org/wikipedia/en/wiki/AES_instruction_set 20:20:19 that's the real question :| 20:20:27 hm i wonder if this will mean that hitler will continue being a regular character, but now will look like DMM instead... 20:20:54 that _is_ brilliant. 20:21:19 DES sure is complicated when you're sleepy 20:25:47 sleep sure is complicated when you're using DES 20:27:02 true 20:37:56 Phantom_Hoover: oerjan: Hey you, remind me to rip out haskell-mode and install haskell-emacs tomorrow. 20:38:18 @tell elliott Remember to install haskell-emacs! 20:38:18 Consider it noted. 20:38:20 Hopefully I can coerce it into doing what I want. 20:38:20 elliott: You have 3 new messages. '/msg lambdabot @messages' to read them. 20:38:22 @tell elliott Remember to install haskell-emacs! 20:38:23 Consider it noted. 20:38:29 Phantom_Hoover: dude that is so un-okay also, what is that messages 20:38:29 elliott: You have 4 new messages. '/msg lambdabot @messages' to read them. 20:39:02 Phantom_Hoover: I am afraid you will have to re-send these 20:39:02 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 20:39:04 oh 20:39:33 Phantom_Hoover: Also remind me to re-install ido-mode because ido-mode is great. 20:39:44 Hmm wait 20:39:56 ^ul (?tell elliott Hey install ido-mode, it's great.) 20:39:56 elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. 20:40:01 fung?? 20:40:01 OMG 20:40:05 fizze???? 20:40:06 OJSIDFDOJFODIF 20:40:09 fungot ;_; 20:40:15 `echo ?tell elliott Hey install ido-mode, it's great. 20:40:16 ​?tell elliott Hey install ido-mode, it's great. 20:40:19 fizzie ;_; 20:40:23 `echo @tell elliott Hey install ido-mode, it's great. 20:40:26 ​@tell elliott Hey install ido-mode, it's great. 20:40:28 Gregor: FASCISTJIOS 20:40:39 ummm ummm 20:40:43 hey ais523 20:40:49 hi 20:40:55 if I sent lines at you prefixed with QQQ will you send them back to the channel, assuming they're not malicious 20:41:43 probably not, I'm too tired to repeat them sensibly 20:41:50 ONLY ONE WAY TO FIND OUT 20:41:53 ais523: QQQ?tell elliott Hey install ido-mode, it's great. 20:41:56 or to constantly monitor the channel to do that 20:41:59 Wait I should do redundancy. 20:42:02 Phantom_Hoover: QQQ?tell elliott Hey install ido-mode, it's great. 20:42:10 also, I'd be a little unlikely to do it without your comment earlier 20:42:24 is lambdabot ignoring the other bots here? 20:42:41 EgoBot and HackEgo prefix punctuation with unicode 20:42:44 because they're dum stupid 20:42:45 and fungot 20:42:47 fungot 20:42:48 is not 20:42:50 with us ;____; 20:42:54 WAIT 20:42:57 -!- elliott has changed nick to notelliottatall. 20:42:58 @tell elliott you wanted the bot to remind you about ido-mode, right? 20:42:58 Consider it noted. 20:43:00 we've got no fun 20:43:12 ?tell elliott Hey install ido-mode, it's great. 20:43:12 Consider it noted. 20:43:30 ?tell elliott Also: change the colour scheme emacs' default colour scheme is terrible honestly you are a bum. 20:43:30 Consider it noted. 20:43:34 oh, prefixing punctuation with unicode is a smart way to avoid a botloop 20:43:38 ?tell elliott_ Get rid of that underscore goddammit 20:43:38 Consider it noted. 20:43:43 ?tell elliott__ We are no longer friends 20:43:43 Consider it noted. 20:43:45 -!- notelliottatall has changed nick to elliott. 20:43:48 Beautiful 20:43:48 elliott: You have 5 new messages. '/msg lambdabot @messages' to read them. 20:43:52 No, lambdabot, no. 20:43:57 umm, wait 20:44:00 what character is it? now I want to design a bot that uses it as a command character 20:44:02 it won't remind me I have any tomorrow 20:44:08 ais523: zero width non-breaking space i think 20:44:31 ok, umm, someone ?tell elliott something after I leave 20:44:31 do you mean zero-width joiner? 20:44:37 ais523: not sure, check yourself :P 20:45:56 Phantom_Hoover: OK I am entrusting you to remind me to check my messages tomorrow by ?telling me after I leave which will be momentarily. 20:45:59 If you disappoint me 20:46:00 your soul 20:46:01 shall end 20:50:20 but how do we know Phantom_Hoover has a soul? 20:50:36 oerjan, I'm a ghost. 20:50:42 I am /literally nothing but soul/. 20:50:48 aha 20:54:08 ?tell elliott something before I leave 20:54:09 Consider it noted. 20:54:26 Sgeo: no 20:54:26 elliott: You have 6 new messages. '/msg lambdabot @messages' to read them. 20:54:27 no 20:54:28 after i leave 20:54:29 or it does 20:54:30 that 20:55:40 !help 20:55:41 ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 20:55:44 !info 20:55:44 ​EgoBot is a bot for running programs in esoteric programming languages. If you'd like to add support for your language to EgoBot, check out the source via mercurial at https://codu.org/projects/egobot/hg/ . Cheers and patches (preferably hg bundles) can be sent to Richards@codu.org , PayPal donations can be sent to AKAQuinn@hotmail.com , complaints can be sent to /dev/null 20:55:59 Vorpal: ? 21:10:23 gah, Yahoo! are getting rid of their classic interface 21:10:54 (the one that actually makes it possible to send sanely-formatted interfaces without having to rely on SMTP forwarding) 21:11:33 -!- ais523 has quit (Remote host closed the connection). 21:17:47 -!- nooga has quit (Ping timeout: 252 seconds). 21:24:03 -!- elliott has quit (Ping timeout: 258 seconds). 21:25:52 elliott: I was looking for the repo 21:26:55 also the Swedish mirror for kernel.org just died it seems. 21:29:26 -!- kwertii has joined. 21:45:24 ?tell elliott You're not a doctor. 21:45:25 Consider it noted. 21:47:44 ?tell lambdabot I secretly love you. 21:47:44 Nice try ;) 21:48:20 NICE CONDITIONALS LAMBDABOT 21:48:24 SEXY SEXY CONDITIONALS 21:49:14 ?tell CakeProphet you have a weird idea about what the word "secretly" means 21:49:14 Consider it noted. 21:50:47 ?tell lambdabot I not-so-secretly love you! 21:50:47 Nice try ;) 21:50:48 Damnit! 21:51:27 -!- Deewiant has quit (Read error: Connection reset by peer). 21:51:35 -!- Deewiant has joined. 21:52:51 ?tell fungot that sword alone 21:52:51 Consider it noted. 21:53:22 fungot is not present... :( 21:53:22 CakeProphet: You have 2 new messages. '/msg lambdabot @messages' to read them. 21:56:44 ?tell lambdabot I secretly love you. 21:56:53 @vixen I hear CakeProphet fancies you. 21:56:54 awesome 21:57:06 @vixen I'll leave this to you two. 21:57:06 there are a lot of weirdos on here 21:57:24 @vixen Come now, it's natural to take a passing interest in the affairs of others. 21:57:25 right now? 21:57:34 @vixen As good a time as any. 21:57:35 good good 21:58:39 -!- GuestIceKovu has joined. 21:59:19 @vixen how does polar bear know what apples is? 21:59:19 how? it depends... 21:59:38 -!- Slereah has quit (Ping timeout: 264 seconds). 21:59:47 @vixen yow!!! 21:59:48 Crazy little wanker! 22:02:32 @vixen Will you marry me? o_O_o 22:02:32 i think you know the answer to that one, silly 22:02:43 @vixen if I ask a question will you say the same thing? 22:02:43 oh, but only if, right? 22:02:52 @vixen what if I yell!!? 22:02:53 i don't know, what? 22:02:59 @vixen I am yelling! 22:02:59 have you ever scubadived? 22:03:23 @vixen no 22:03:23 no? 22:03:25 @vixen no 22:03:25 i didn't think so 22:03:46 @vixen no 22:03:46 i didn't think so 22:04:49 @vixen sauerkraut!!! 22:04:49 am I the only person you're talking to? 22:05:15 @vixen yes 22:05:15 you agree? 22:05:17 -!- nys has joined. 22:05:19 @vixen yes 22:05:19 i thought so 22:05:43 CakeProphet, honestly, don't you have anything more to say? 22:06:29 is it because you feel don't you have anything more to say that you ask questions honestly? 22:06:32 ..... 22:08:46 cleverbot is not clever because it s a borg-like hivemind of all of the stupid people it talks to. 22:08:59 @vixen lutefisk! 22:08:59 Fuck me like im a school boy 22:09:10 @vixen School girl, surely? 22:09:11 who's to say? 22:09:15 lol 22:09:31 @vixen I was under the impression that your gender was firmly established. 22:09:32 uhuh 22:11:28 oerjan: apparently Vixen has a thing for traditional Norwegian cuisine. 22:11:50 or bastardizations thereof 22:15:47 -!- kwertii has quit (Quit: bye). 22:16:50 What is two plus two? 22:16:51 Yes. 22:16:55 STUPID CLEVERBOT 22:17:02 me ragecloses 22:17:21 my rage has no time for /'s 22:18:21 the rage of bully automatons 22:21:08 * oerjan suddenly realizes the pun in rube ~ bully automaton 22:21:28 :) 22:23:44 oerjan, where? 22:24:13 Phantom_Hoover: a bully is a rube 22:24:34 That occurred to me but I dismissed it as stupid. 22:25:10 * oerjan hits Phantom_Hoover with the saucepan ===\__/ 22:25:23 there's no such thing as a stupid pun. 22:25:37 er, excuse me 22:25:42 there's no such thing as a stupid fun. 22:25:45 BAHAHAHAHAHA 22:25:46 ... 22:25:59 ic 22:26:35 don't you mean carrots? 22:26:47 * oerjan runs away _fast_ 22:27:00 I don't really understand. 22:27:08 good, good 22:27:14 * Sgeo does 22:27:31 it's a reddit meme, and also a meta-meme of hating it 22:27:45 (for being stupid) 22:47:19 -!- FireFly has quit (Quit: FireFly). 22:48:26 * Phantom_Hoover → sleep 22:48:27 -!- Phantom_Hoover has quit (Quit: Leaving). 22:51:00 bacon? 22:54:49 "Good God. Mustafar is Dwarf Fortress, isn't it. That explains EVERYTHING! The random violence. The emo drama. The insanity." 22:54:57 (comment from the iwc forum) 22:55:35 kmc: no, carrots 22:56:11 ok maybe bacon has reached that point too. but the carrots essentially _started_ there. 22:57:48 carrots: my anti-bacon 23:22:59 -!- zzo38 has joined. 2011-09-02: 00:04:52 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:10:31 Grrrr wget 00:10:38 * Sgeo wants wget to ignore robots.txt >.> 00:11:20 you wicked spammer 00:11:46 wget has a lot of options look to see if it has the one you want 00:12:12 * Sgeo found something online about it 00:12:21 I don't see this version of wget's --wait thingy 00:19:25 patch wget problem solved 00:19:54 There is no problem 00:20:04 I think --wait just wasn't listed in --help, or I didn't see it 00:20:31 And there is an option to disable checking robots.txt 00:21:54 -e robots=off 00:23:40 Yes 00:23:54 * Sgeo is using it to great effect >.> 00:26:29 Is there an option to change the name of the file to check (other than robots.txt), or to change which entry it searches for in robots.txt? 00:26:59 -!- copumpkin has joined. 00:29:22 I'm not sure what the use of that would be 00:29:39 Or, um, the first option anyway 00:30:19 It's pretty much a standard, if not an official one. About as useless to make an option to change as making a browser that sends RETRIEVE/SEND instead of GET/POST 00:31:16 more of that mustafar/dwarf fortress discussion http://www.irregularwebcomic.net/draakslair/viewtopic.php?t=6110 00:33:29 -!- Patashu has joined. 02:39:10 -!- myndzi\ has quit (Ping timeout: 240 seconds). 03:05:02 -!- nys has quit (Quit: f00f). 03:10:58 hello friends. 03:11:37 I looked in the haskell-src-exts files. The ParseSyntax.hs file (as well as many of the other files) do something, stuff added needs to be added in multiple places manually. For example, PExp needs to also define ann, amap, fmap, etc. But most of that is just the same way. It might seem (to me, at least) a better way using TH-splices generating more-declarations. 03:13:17 I don't know what it seems to you. 03:34:50 The code accumulation in Strathclyde Haskell Enhancement is a very crude idea with code accumulation feature, but it seems insufficient tome (it is also designed for layout mode). That one does not do ordering, removal of duplicates, cooperating with Template Haskell, and a bunch of other stuff. 03:35:40 anyone familiar with xpath? 03:35:53 I'm wondering if the | can be used to search for elements by multiple criteria 03:36:29 -!- CakeProphet has quit (Quit: Reconnecting). 03:36:46 -!- CakeProphet has joined. 03:36:47 -!- CakeProphet has quit (Changing host). 03:36:47 -!- CakeProphet has joined. 03:38:00 //a[@class=...|@href=...|@name=...|@id=...] 03:39:46 Why doesn't "hint" have a function for loading a module from a string instead of from a file? 03:41:06 -!- MDude has changed nick to MSleep. 03:41:25 zzo38: because it is really crappy. 03:41:48 for my IRC bot I worked around this by just writing the string to file and adding the module bits. 03:41:48 Then how to do it better? 03:41:55 mueval has that capability but mueval is also bad. 03:42:42 And you must also send expressions to be evaluated as strings, there is no command to interpret a Q Exp instead? 03:43:01 What program has that one? 03:43:37 Which are better programs? 03:47:45 I have no idea. 03:47:52 lambdabots code is not bad. 03:47:53 -!- augur has quit (Remote host closed the connection). 04:18:06 What kind of data can be compressed well with run length encoding multiple times? What kind of data should you run length encode and then use Huffman coding on the result? 04:19:11 -!- Patashu has quit (Ping timeout: 258 seconds). 04:31:50 multiple time run length encoding sounds unlikely to improve things 04:32:43 that's essentially look-and-say transformation, which quickly starts growing exponentially 04:33:35 Yes I know that is what it is. Doing it a lot will likely grow large. 04:34:20 But maybe some data works better doing RLE twice instead of once, or something like that. Maybe you want to combine multiple units into one unit or split units in some cases. 04:37:20 well in order for the second step to give any further compression, you'd want to collect character c in blocks of length c 04:38:42 or for the first block in a series, perhaps of length equal to the previous character 04:38:42 Yes, it is true; but, what if it is variant RLE where the character is implied? For example, you always alternate black and white so you do not need to indicate that 04:39:14 ah yes. but then the second step would be of a different kind. 04:39:29 Yes it would be different kind 04:39:53 since the RLE coding itself does not preserve that property 04:40:43 but yes, if you had frequently blocks of black and white that had the same length, then that would work 04:42:16 Maybe you have "001001001001001001001001" and you should do the encoding to (2,1) and 8(2,1) if such patterns are common in whatever data you are dealing with. 04:42:40 * CakeProphet is the best programmer in the world. 04:42:42 I know all of the codes. 04:42:58 hm 04:43:09 CakeProphet: Are you sure? I think nobody knows *all* of the codes 04:43:28 oh he does. he just cannot remember which is which. 04:43:29 And even if you did I am unsure if that would make you the best programmer in the world 04:43:35 famous babel library problem. 04:44:17 oerjan: yes I often get minute details of different languages confused. 04:44:37 for example: I have accidentaly wrote "using Control.Monad" in Haskell. 04:44:45 after some C# programming. 04:46:33 and after some intense Perl scripting, I find myself wanting to type $ in front of everything. 04:47:07 for example: in Python I will accidentally type $ instead of % in a string when sprintf'ing it. (sprintf'ing something sounds pretty dirty) 04:47:41 > sin $2 04:47:42 0.9092974268256817 04:47:50 heh. 04:47:53 I have Sokoban encoding, that is first RLE of wall/nonwall alternating, next RLE of target/nontarget skipping all walls, next is a more complicated encoding for the crates. (Characters are implied) Some numbers occur much more often than others, usually low numbers occur more than high numbers. 04:48:14 oerjan: I will now code Haskell in that style from now on. 04:48:23 CakeProphet: O KAY 04:48:41 I composed a Huffman tree by hand but I made a mistake. 04:48:44 > let x = 2 in sin $x 04:48:45 0.9092974268256817 04:48:57 bashkell 04:49:13 CakeProphet: Template Haskell it would do different $ immediately followed by words 04:49:28 Can you make polyglot program now? 04:49:39 not with that "feature" no 04:49:52 polyglots are essentially done by taking advantage of strings and comments. 04:49:58 Perl is particularly well-suited for this. 04:50:12 you can include Perl in almost any polyglot with ease. 04:50:18 it's a little awkward since you cannot do $x = 2 in haskell 04:50:19 Or, make a Haskell program that does different things, all valid, but still somewhat useful, depending on which language extensions are enabled. 04:50:56 oerjan: right and you can't do let or in in Perl unless you define subroutines with some kind of hacked meaning. 04:51:39 zzo38: most common extensions wouldn't do that since they usually inroduce some kind of construct or syntax that didn't exist before. overloaded strings could be used for that purpose though. 04:52:03 zzo38: heh the extensions which add keywords or syntax, perhaps 04:52:39 rec and ? perhaps 04:53:14 > let f ?x = 2 in f ?3 04:53:16 : Parse error in pattern 04:53:17 the easiest way to polyglot Haskell is to use literate Haskell. 04:53:18 > let f ?x = 2 in f ? 3 04:53:19 : Parse error in pattern 04:53:40 zzo38: also I am slightly drunk so, no, probably can't write a polyglot right now. 04:53:42 -!- Patashu has joined. 04:53:43 CakeProphet: i meant for zzo38's distinguishing by haskell extension idea 04:53:56 oerjan: right 04:54:07 You can define # as an operator and then do stuff with the magic hash mode and CPP stuff, and it does differently when these are enabled or disabled. 04:54:13 not sure how ? could be used though 04:54:21 zzo38: ah right 04:54:23 doesn't it require an explicit type signature or...? 04:54:35 no 04:54:40 > let ?x = 2 in ?x 04:54:41 2 04:54:42 ah okay 04:55:13 what DOES require an explicit type signature other than record fields? 04:55:26 but it's not quite clear how to get something which parses both with ? as operator and as implicit parameter prefix 04:55:29 type defintions, and the like 04:55:45 Do classes require an explicit type signature? 04:55:47 CakeProphet: polymorphic recursion 04:55:59 higher rank types 04:56:09 * CakeProphet has really figured out higher rank types yet. 04:56:14 zzo38: not to _use_ them in functions, no 04:56:22 basically it means there is a forall in the type, right? 04:56:31 very basically... 04:56:34 in the type, and not at the front 04:56:35 What I meant is, in definition of classes 04:56:39 oerjan: right 04:56:55 zzo38: for the methods, yes 04:56:59 oerjan: so for example, a type with an embedded existential is a rank-2 type, yes? 04:57:31 but class A a is legal by itself i think, a class with no methods 04:57:50 ah, that's interesting. Basically a set of types. 04:58:22 CakeProphet: i think they are different extensions but you can sometimes convert between using existentials and using higher rank 04:58:54 yes they're different extensions but they both permit the forall syntax. 04:59:10 in different places yes 04:59:56 basically the syntax for existential types are based on the fact that its _constructors_ has a higher rank type 05:00:11 er, or at least polymorphic 05:00:29 I actually understand how the Perl community has taken influence from Haskell. I believe I've heard people (not on this channel) that it's strange. 05:00:38 data SomeShow = forall a. Show a => SomeShow a 05:00:42 +mention 05:01:01 then SomeShow :: forall a. Show a => SomeShow 05:01:04 oerjan: ah, okay. 05:01:32 so does RankNTypes permit existentials? 05:01:33 er 05:01:40 *then SomeShow :: forall a. Show a => a -> SomeShow 05:02:10 i don't _think_ there's any automatic implication anyway, look it up in the user guide :P 05:02:16 *any way 05:02:32 *either way 05:02:45 also how do language extensions work with importing? 05:03:04 modules can ignore the language extensions that other modules use. They do not need to explicitly support them, right? 05:03:38 i don't think they need to. it might depend on what is imported. 05:03:53 right if the API requires a syntax extension to be used properl 05:04:01 y. like fclabels uses TH. 05:05:05 of course, if a dependency uses a language extension then the compiler must support that language extension as well. 05:12:39 -!- zzo38 has quit (Remote host closed the connection). 05:14:14 01:14 < bob2> oh wait, takewhile 05:14:14 01:14 < bob2> I finally understand what it is for 05:14:17 #python 05:15:14 apropos taking influence from haskell :P 05:16:51 itertools, functools, and a very limited list comprehension syntax is probably the only influence Python has from Haskell. 05:19:28 -!- augur has joined. 05:19:50 -!- augur has quit (Read error: Connection reset by peer). 05:20:23 -!- augur has joined. 05:21:45 Not sure if what I did was a good idea or just really really stupid 05:24:09 well there's only one way to find out. make that into a fry meme picture and post to reddit. 05:25:43 < jtannenbaum> and put a dang comment at the end so people know what you're doing, it's tough to read either way 05:26:03 in regards to: list(itertools.product(*[range(x) for x in (2,3,4)])) 05:26:08 -- #python 05:26:50 what's the * for 05:27:04 "flattens" a list into function arguments 05:27:21 f(*[a,b,c]) = f(a,b,c) 05:27:35 also works with tuples and other iterators. 05:27:51 mhm 05:28:00 ** is used to translate dictionaries to named arguments. 05:28:07 It's not possible to go to an eye doctor to preemptively ask if you just infected your eye, is it? 05:28:25 it is possible to do that, yes. 05:28:29 not sure if it'll help though. 05:29:04 ask a doctor. :P 05:54:27 -!- oerjan has quit (Quit: Good night). 06:10:25 Sgeo: what did you do? (the thing that was either good or really really stupid?) 06:11:00 Poking around my eye to try to deal with an eyelash 06:11:04 After my dad told me not to 06:11:18 I did wash my hands and air-dried them, but not entirely sure if I was vigilant enough about that 06:11:27 I may have done a bit of poking around before washing 06:11:36 I did successfully deal with the eyelash 06:11:54 oh, that should be fine, just blink furiously for a while so you re-lubricate your eye 06:12:57 My finger, while I don't think it touched eyeball, did touch skin that probably did touch eyeball 06:14:25 oh no, you touched skin that touches your eyeball? it'd be fine if it was the eyeball directly, but now you're definitely going to die 06:14:45 what's so bad about touching eyeballs? 06:14:56 it scares Sgeo? :) 06:15:26 My dad thought that my eye could get infected like that 06:15:50 (By touching the eyeball if my hands weren't really really really clean) 06:16:07 oh, then my eyes must be really sick by now 06:20:48 -!- augur has quit (Remote host closed the connection). 07:10:01 -!- azaq23 has joined. 07:25:32 > (`replicateM` "abc") =<< [0..] 07:25:33 ["","a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","a... 07:33:58 so if I wrote a language that compiles to Core 07:34:09 would that give me access to Haskell bindings? 07:34:13 Core? 07:35:12 one of GHC's intermediate languages. 07:38:25 -!- nooga has joined. 08:15:28 -!- copumpkin has quit (Ping timeout: 240 seconds). 08:15:52 -!- copumpkin has joined. 08:16:03 -!- myndzi has joined. 08:43:49 -!- FireFly has joined. 08:43:57 -!- FireFly has quit (Changing host). 08:43:57 -!- FireFly has joined. 08:46:12 -!- Tritonio has joined. 09:09:28 Sgeo: i recommend you stir your emotions with a moving song or video causing you to cry 09:09:41 haha. 09:14:24 (to greensleeves) There once was a cat who had come to my home, and it's life had only just begun. 09:14:49 It played on the carpet with balls of string, while a small family watched it do it's thing. 09:16:20 It jumped on the fridge and slept there all day, or climbed along fences all carefree and gay. 09:22:49 im moved 09:27:17 I moved. 09:39:19 the point was to move sgeo :P 09:39:25 heheh 09:48:18 > nub . permutations $ "sgeo" 09:48:20 ["sgeo","gseo","egso","geso","esgo","sego","oegs","eogs","egos","oges","goe... 09:48:37 nub? why would there be any duplicates? 09:48:53 I'm a cautious guy. 09:49:46 > let permuts = permutations "sgeo" in length $ nub $ permuts == length permuts 09:49:47 Couldn't match expected type `[[GHC.Types.Char]]' 09:49:47 against inferred ... 09:49:51 you would want nub there if it were any string with duplicate characters... so I kind of just use it out of habit. 09:49:57 yes I understand it's the same in this case. 09:50:11 > let permuts = permutations "sgeo" in length . nub $ permuts == length permuts 09:50:12 Couldn't match expected type `[[GHC.Types.Char]]' 09:50:12 against inferred ... 09:50:22 Grah 09:50:23 Sgeo: what are you trying to do? 09:50:38 oh, I see 09:50:42 Sgeo: problem is most likely related to precedence of $ and == 09:50:42 Have lambdabot tell me if length with and without nub is the same 09:50:50 right 09:51:03 > let permuts = permutations "sgeo" in (length $ nub $ permuts) == (length permuts) 09:51:04 True 09:51:23 > let permuts = permutations "sgeo" in (length . nub $ permuts) == (length permuts) 09:51:25 True 09:51:37 Hmm, makes sense 09:52:02 > let permuts = permutations "lambdabot" in (length . nub $ permuts) == (length permuts) 09:52:06 mueval-core: Time limit exceeded 09:52:12 > let permuts = permutations "aa" in (length . nub $ permuts) == (length permuts) 09:52:41 > let permuts = permutations "baby" in (length . nub $ permuts) == (length permuts) 09:52:42 False 09:52:57 #esoteric: conducting groundbreaking research in combinatorics. 09:55:18 > permutations "zzz" 09:55:19 ["zzz","zzz","zzz","zzz","zzz","zzz"] 09:55:34 * Sgeo goes to publish a paper 09:55:43 > join . permutations . "zzz" 09:55:44 Couldn't match expected type `[a]' 09:55:44 against inferred type `GHC.Types... 09:55:46 > join . permutations $ "zzz" 09:55:48 "zzzzzzzzzzzzzzzzzz" 09:55:49 > ((==) <*> nub) (permutations "sgeo") 09:55:50 True 09:55:53 > ((==) <*> nub) (permutations "baby") 09:55:54 False 09:56:01 What's <*> 09:56:07 :t (<*>) 09:56:07 S 09:56:08 forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b 09:56:11 Oh it's that thing isn't it? 09:56:26 I have no idea what it''s doing there 09:56:28 and yeah for the ((->) a) instance it's S 09:56:29 for functions <*> is ap is the S combinator. 09:56:32 * Sgeo needs sleep 09:57:04 And knowledge of what the S combinator does 09:57:14 \fgx.fx(gx) 09:57:18 f <*> g x = f x (g x) 09:57:19 yes 09:57:20 that 09:58:20 oh right I forgot to do length on them 09:58:21 oops 09:58:39 probably more efficient to do it this way though. 09:58:39 anyway I checked if they were identical rather than merely of the same length 09:58:50 CakeProphet: nope 09:59:11 more efficient to do the lengths, I'd imagine, since you don't have to do comparisons on all the elements 09:59:42 are comparisons more expensive that accumulated addition? also, the false case would be short-circuiting on the shorter list. 09:59:52 whereas with length you traverse the entire list. 10:00:15 er, not on the shorter list 10:00:19 just short circuiting on the false case. 10:00:57 so that gives better average time. :P 10:01:04 I guess if the'd be different really early on and the lists are really long it'd be best to do straight comparison yeah 10:01:19 the thing about comparisons is it depends on the Eq instance 10:01:26 right 10:01:29 could be a 2-d list for example 10:01:32 but not in this case. 10:01:36 er... wait 10:01:37 lol 10:01:41 yes in this case 10:01:42 yep 10:02:13 so yeah length is faster on the true case. 10:02:43 just comparison is maybe faster on the false case. 10:02:45 >_> 10:03:34 > [1..] == [] 10:03:36 False 10:03:38 > [1..] == [1..] 10:03:42 mueval-core: Time limit exceeded 10:03:52 > (((==) `on` length) <*> nub) (permutations "sgeo") 10:03:53 True 10:03:55 > (((==) `on` length) <*> nub) (permutations "baby") 10:03:56 False 10:03:58 oh wait no 10:04:01 mesed that one up 10:04:03 confused myself 10:04:12 wait no 10:04:16 did not mess 10:04:21 double confused ;_; 10:04:25 you want the ap to be on length I would think. 10:04:36 ?? 10:04:37 :t on 10:04:38 forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c 10:04:54 oh nevermind 10:05:03 no that's correct. 10:05:51 I want a whole suite of preposition functions. 10:06:14 like what 10:06:15 on, in, around, about, for, with, without 10:06:33 but what would they do 10:06:43 what they say duh. 10:07:00 ok 10:07:25 -!- azaq23 has quit (Ping timeout: 260 seconds). 10:07:27 obviously [] `around` [1,2,3] is [[1,2,3]] 10:07:31 >_> 10:10:54 -!- Wamanuz has quit (Remote host closed the connection). 10:11:23 -!- Wamanuz has joined. 10:11:24 typeclass Match a b where { (===) :: a -> b -> Bool } 10:11:27 *class 10:11:47 now you can have the clusterfuck that is Perl's ~~ (aka "smart match") operator 10:11:57 in the form of like 10 instance declarations. 10:12:44 also can you do things like this in an instance declaration 10:13:03 instance (Eq a) => Match a a where (===) = (==) 10:13:30 with one of those typeclass extensions? 10:14:54 I'd find it more elegant to have an isomorphism (or something more general in a good way not a stupid way) typeclass and define (===) in terms of its operations and (==) 10:14:59 elegant and useful 10:15:26 that is not how Perl's smart matching works. :P 10:15:38 it's DWIS equality. :P 10:15:47 er DWIM 10:16:08 perl the most elegant language 10:16:09 so there's not really a generalization. 10:16:30 nor a haskell implementation 10:16:41 CakeProphet: MultiParamTypeClasses for Match, FlexibleInstances for that instance (because it uses 'a' twice) 10:16:44 I just showed you how it could be done. 10:18:01 I guess yours accounts for cases wherein an isomorphism doesn't exist but you still want thinks to be considered equal, but this is operation is dumb and nobody should want it ever 10:18:24 I mostly use it because it provides a quick way to test list membership in Perl 10:18:34 (1,2,3,4) ~~ 2 is true 10:18:54 ew 10:18:55 so 10:19:05 instance Match [a] a where ... 10:19:12 instance Match a [a] where ... 10:19:35 `elem` sure is a lot of typing 10:19:39 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: elem`: not found 10:19:47 also you'd need an Eq a => in there 10:19:51 monqy: yeah because I totally think this is a viable thing in Haskell 10:19:58 or equivalent 10:20:00 and not just a thought experiment on how I would implement such a thing. 10:20:32 if I were you I'd probably go about implementing it in something along the lines of syb, such as not to have to define instances for every pair of types 10:21:16 also regexes do regex matching stuff 10:21:53 I think list ~~ list is intersection for some reason 10:23:58 so that means it couldn't return Bool 10:24:20 it would need to return some kind of special data type or Either if there's only two kinds of result 10:24:36 or Dynamic. :P 10:25:10 intersection? not set equality? sure isnt doing what id mean...... 10:25:30 -!- Phantom_Hoover has joined. 10:25:49 or you could include the result type as a third typeclass param. 10:25:55 for great fun. 10:26:11 should just name it TripleArgumentFunction instead of Match 10:26:23 where by set equality I mean something like ((==) `on` Data.Set.fromList) or ((==) `on` Data.List.Ordered.nub . sort) or something like that 10:26:23 er TwoArgumentFunction rather 10:26:47 at least I think there's a package that provides Data.List.Ordered 10:27:28 Data.List.Ordered.nub = map head . group 10:28:11 her is the Grand Smart Matching table: http://perldoc.perl.org/perlsyn.html#Smart-matching-in-detail 10:29:49 so list ~~ list is true if all elements ~~ to true with the element of the same index in the other list. 10:30:13 that works too I guess 10:31:05 obviously it's a very straightforward operator. 10:32:25 array ~~ function is like all in Haskell 10:34:41 CakeProphet, ~~ is the terrifying, ill-defined operator in Perl, right? 10:36:20 well, it has a definition, but yes it's somewhat terrifying. 10:36:35 it is defined by a huge table of which pairs of types results in what. 10:36:46 most of it makes some kind of intuitive sense. 10:38:09 it has a definition, but it's not a good one 10:38:11 hence ill-defined 10:38:58 where by good I mean "not just a bunch of stupid special cases" 10:41:44 also none of them are technically special 10:41:46 just... cases. :P 10:42:16 they are all special like snowflakes they are special snowflakes 10:42:44 Ruby's === isn't particularly like ~~, is it? 10:43:11 === is the switch-case operator 10:43:19 similar but I don't think it's identical 10:43:42 well, ~~ is also the switch-case operator in Perl so... 10:43:48 yeah it's derived from that. 10:44:12 but I do not know how it works exactly. 10:45:14 most of what ~~ does is already pretty short code so it's kind of pointless other than it provides a somewhat nice switch-case mechanism. 10:47:37 hash ~~ array intersects the hash keys with the array elements 10:47:51 I guess that's kind of useful. 11:13:18 http://www.garshol.priv.no/download/text/perl.html 11:13:36 a very lengthy article about why Perl is bad, written by someone who obviously has very little experience with Perl. 11:14:41 and then starts talking about why Python is awesome 11:16:12 i like how he uses a paul graham quote in introducing python 11:16:56 I don't think you get to complain about manipulating complex data structures in Perl if you can't even do it properly. 11:17:11 though perhaps that's part of his argument. that stupid people can't figure it out. 11:20:07 -!- monqy has quit (Quit: hello). 11:41:49 -!- azaq23 has joined. 11:46:04 -!- Lymee has quit (Read error: Operation timed out). 11:57:55 Anyone know what the contact legs on chips are made from? 12:05:38 -!- Tritonio has quit (Read error: Connection reset by peer). 12:09:53 all i can find is that the contacts on RAM are gold-plated. possibly aluminum or tin. 12:10:38 something that either doesnt corrode or coated with same 12:12:58 Argh, I went for steel. 12:56:14 -!- Necrosporus has joined. 12:58:26 -!- Necrosporus has quit (Quit: Leaving). 13:02:16 -!- Necrosporus has joined. 13:03:43 http://paste.org.ru/?lu3vtb 13:03:57 Do you like it? What' sthat at your opinion? 13:04:33 -!- loje has joined. 13:10:09 -!- loje has quit (Ping timeout: 240 seconds). 14:20:16 -!- Patashu has quit (Ping timeout: 240 seconds). 14:20:22 :t (.)(.) 14:20:22 forall a b (f :: * -> *) (f1 :: * -> *). (Functor f, Functor f1) => f1 (a -> b) -> f1 (f a -> f b) 14:20:40 :t (.) 14:20:41 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 14:20:51 That... what. 14:20:57 @type (.) 14:20:58 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 14:21:13 That's fmap... 14:21:31 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:23:11 fmap is a generalization of (Prelude..) and Cale decided that lambdabot should have (.) be generalized as well 14:23:35 For this, and other reasons, lambdabot's Haskell dialect is generally known as Caleskell. 14:23:44 ?ty (++) -- Another example 14:23:45 forall m. (Monoid m) => m -> m -> m 14:24:49 fmap is a generalisation of .? 14:25:37 (Prelude..) is fmap but limited to the (a->) functor 14:25:47 Yeah, I was coming to that conclusion. 14:25:54 > fmap (+1) (*2) 3 14:25:55 7 14:26:08 > (Prelude..) (+1) (*2) 3 14:26:09 Not in scope: `Prelude..' 14:26:15 Bah. 14:26:18 ?ty (Prelude..) 14:26:20 forall b c a. (b -> c) -> (a -> b) -> a -> c 14:26:26 > (Prelude.(.)) (+1) (*2) 3 14:26:33 > (Prelude.(.)) (+1) (*2) 3 14:26:33 Not in scope: data constructor `Prelude' 14:26:34 The syntax is (Prelude..) 14:26:58 I guess it's just missing a qualified import of Prelude 14:27:05 Or then it's using a modified Prelude. 14:46:30 -!- copumpkin has joined. 14:58:39 -!- MSleep has changed nick to MDude. 15:33:26 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds). 15:54:23 -!- nooga has quit (Ping timeout: 264 seconds). 16:14:06 -!- pumpkin has joined. 16:14:33 -!- copumpkin has quit (Ping timeout: 240 seconds). 16:22:59 -!- Phantom_Hoover has joined. 16:30:31 -!- pumpkin has changed nick to copumpkin. 17:34:52 -!- Wamanuz has quit (Read error: Operation timed out). 17:35:26 -!- Wamanuz has joined. 17:47:05 -!- elliott has joined. 17:49:29 hi 17:49:29 elliott: You have 11 new messages. '/msg lambdabot @messages' to read them. 17:49:35 help 17:51:11 thank you...everyone... i think ... 17:55:02 elliott, says the one who has, on multiple occasions, left 20+ messages in my lambdabot inbox. 17:55:22 @tell Phantom_Hoover spamo 17:55:23 Consider it noted. 17:55:24 @tell Phantom_Hoover spamo 17:55:24 Consider it noted. 17:55:27 >_> 17:56:33 -!- augur has joined. 17:58:55 -!- pumpkin has joined. 17:58:56 So, who wants to continue my dramatic effort at a tweetable interpreter for a TC language in C? 17:59:01 -!- pumpkin has quit (Changing host). 17:59:01 -!- pumpkin has joined. 17:59:11 I have a tweetable interpreter for a TC-flavored language with restricted addressing >_> 17:59:19 -!- pumpkin has changed nick to copumpkin_. 17:59:20 Nice FSM 17:59:36 Yeah, exactly :P 17:59:44 Here's my FSM in a tweet 17:59:48 main(){return 0;} 18:00:05 char*a,b[9999];main(){gets(a=b);while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];puts(b);} 18:00:06 Gregor: You have 7 new messages. '/msg lambdabot @messages' to read them. 18:00:07 OK, OK, you say, but how do I get it to loop?? 18:00:16 main(){if(getchar())for(;;);return 0;} 18:00:27 Gregor: What 18:00:34 Who spammed Gregor X-D 18:00:43 -!- copumpkin has quit (Disconnected by services). 18:00:46 -!- copumpkin_ has changed nick to copumpkin. 18:00:52 elliott: Phantom_Hoover sez "By the way, two messages does not a spam make." 18:01:01 Of course, replace those " "s with \n/msg lambdabot @tell Gregor 18:02:51 But anyway, my subtract-and-branch-if-zero is pretty sweet, and plenty tweetable at 77 characters, but can only address 256 bytes :P 18:02:58 00:10:38: * Sgeo wants wget to ignore robots.txt >.> 18:03:04 Obviously it is impossible to make wget do this. 18:03:23 Gregor: I would be OK with it if it could address, like, at LEAST a gigabyte :P 18:03:31 And if there was a way to do so, it would be far too secret to include in the man page. 18:03:32 Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them. 18:03:33 elliott: Pffffffffffffff 18:04:02 void main(int c,char **v){((void(*)(void))v[1])();} 18:04:16 kmc: UB 18:04:21 i know 18:04:22 kmc: omg u so klevr 18:04:32 kmc: Come back when you have a C program :P 18:05:06 elliott, I figured out how to do it 18:05:19 void main(){system("gcc /dev/stdin&&./a.out");} 18:05:32 kmc: omg u so klevr 18:06:24 kmc: Implementation-defined behaviour :P 18:07:38 Incidentally, mine has /relative/ addressing of 256 bytes, so it can, in fact, access more, but only a 256 byte area around the pc. 18:08:02 Gregor: Hmm, I wonder if that's TC (modulo C's limited addressing)? 18:08:08 You just have to move around a lot. 18:08:31 elliott: I'm fairly certain it's not, since the area you're moving around in is also where the program is, so you'll very quickly run out of space for both your program logic and your actual data. 18:08:49 (Maybe, that's not a real argument of course) 18:09:15 Gregor: I kind of feel like you could implement a simple TC language by having a really small program that can self-modify quinelike and move around the actual data... 18:09:28 That's the fancy-L problem, though 18:09:34 elliott: But the program and data aren't separate. 18:09:41 (http://esolangs.org/wiki/%E2%84%92) 18:09:44 Gregor: Indeed 18:11:45 * Gregor starts vaguely wondering if a subleqalike can make any sense at all if the program and data are separate. Conclusion: lolno. 18:19:15 I also made input and output a requirement in my original design of this :P 18:20:09 Do you even have a twatter. 18:21:59 Probably? :P 18:28:18 Is EOF equal to a value other than -1 on any system anywhere? >_> 18:28:27 (It's totally lame to assume it's -1, but it would help me SO MUCH) 18:29:07 Is EOF equal to a value other than -1 on any system anywhere? >_> 18:29:12 Yes, C-compliant DS9ks 18:29:15 It's <0, though 18:29:26 Friggin' DS9k! :P 18:29:42 Phantom_Hoover: oh my god DS9's computers run DS9k 18:29:42 That still leaves me with (...)>=0 :( 18:29:49 Which is a lot more characters than +1 18:29:54 Gregor: try using a bit-and? 18:29:59 somehow??? 18:30:00 Has anybody written a C DS9K yet? 18:30:09 Deewiant: They're too busy being real systems 18:30:28 elliott: In less characters than ()>=0? :P 18:30:29 I'll take that as a no 18:30:52 Gregor: Why do you need the () there but not in the +1 18:31:16 Deewiant: I have some plans for such a system but it's too large an undertaking for me to bother 18:31:17 Deewiant: The bit here is while (*++a=getchar()+1) if EOF == -1 18:31:26 Deewiant: a is an int * here 18:31:28 Deewiant: You basically need to keep all the types and the like around to be fully pedantic about it 18:31:31 (I'm trying to give it a bigger range) 18:31:40 And you want pointers' representations as integers to be completely fucked up so that nothing works on them 18:31:55 (Perhaps have a pointer-integer type so you can yell whenever the program tries to arithmetic on them then cast it back) 18:32:01 elliott: Doesn't matter, everything is int *, nothing is ever accessed char-wise. 18:32:05 elliott: Absolutely 18:32:09 Gregor: ? 18:32:12 I'm talking about ds9ks 18:32:15 Oh, sorry, I thought you --- yeah :P 18:32:22 Deewiant: The great thing is, it would actually make a useful debugging system :P 18:32:26 elliott: I figure it'd be... yeah 18:32:29 Because you could provide _really_ helpful error messages at runtime. 18:32:44 Downside: Really slow, but probably not slower than, like, Ruby, so whatever. 18:32:53 elliott: So it can just say things like "Undefined behaviour #1234: casting a function pointer to a pointer" or whatever 18:32:57 Also you couldn't provide any libraries that make incorrect assumptions i.e. most of them. 18:33:00 Preferably it would still work 18:33:11 int*a,b[9<<20];main(){a=b;while(scanf("%d",++a)>0);while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} <-- sexy :P 18:33:12 So that it could just keep going and outputting more errors 18:33:23 Deewiant: If it still works, then it has to use a less rich internal representation, which leads to fewer errors being caught 18:33:28 But it might be that you have to break everything to.. yeah 18:33:40 It could work for some things but probably not for function pointers → pointers 18:33:44 It feels like there should be... yeah 18:33:46 Because function pointers should contain arity and type information 18:33:48 Deewiant: ...yeah 18:33:54 Dammit, stop preëmpting what I say 18:33:58 Deewiant: Although you could have a function-pointer-pointer type that acts like a pointer but still carries that information :-) 18:34:03 Then you need a function-pointer-pointer-integer 18:34:25 Deewiant: What about that project that's doing an abstract interpreter of C 18:34:28 K90 or something? 18:34:31 Klee? 18:34:37 It was something involving K 18:34:53 IIRC they don't have several important valid things 18:34:55 Klee is the symbolic VM for LLVM 18:35:06 http://klee.llvm.org/Tutorial-1.html ;; This is cool, but no. 18:35:32 Deewiant: It was literally translating the abstract semantics of C to something machine-readable, IIRC 18:35:34 Well, for C, but I suppose you can theoretically use it with anything LLVM 18:35:42 Deewiant: And had this massive test suite or something 18:36:20 I can't seem to find it :/ 18:37:23 Deewiant: I have a feeling it's impossible to detect all such bugs, though 18:37:39 -!- Lymee has joined. 18:37:52 elliott: http://www.softlab.ntua.gr/~nickie/Thesis/ related? 18:37:56 Like, either you reject valid programs (does complicated sizeof-related tricks but it turns out that it's provably OK for every valid sizeof) or they slip through the cracks 18:38:12 Deewiant: I don't think so, it was much more recent than that, but maybe I'm wrong 18:38:15 It was something you could actually run 18:39:05 Oh wellz, can't find it either 18:39:23 And yeah, you can't detect all bugs 18:39:30 Halting problem should be enough to prove it :-P 18:39:57 But you can probably reject just about every nontrivial C program and that's enough for me 18:40:54 Deewiant: Hey, I try very hard to stay within semantic limits 18:41:37 Deewiant: When I was working on mcmap's Guile branch I left a long comment when I assumed a SCM could be casted to a (void *), despite the fact that any non-pointer representation would be insane, and that (void *) was incredibly tied into the current Guile implementation 18:41:44 Because, hey, it COULD be an integer index into a heap :-P 18:41:51 That's... bigger than a pointer? 18:42:02 Hell, could be a function pointer 18:42:41 Do you typically take into account that INT_MAX might be 32767 and that increasing an int past that is UB? 18:43:13 Deewiant: BTW, how does mushspace do the caching of the "currently relevant" array? Just stores a global masked x/y and checks the masked x/y of the "lookup cell" function is the same before hashtable lookups? 18:43:26 There's a separate cursor structure 18:43:33 Deewiant: And I'd consider making an increment past 32767 a user error 18:43:34 Which you use if you want to cache where you are 18:43:38 -!- ralc has joined. 18:43:43 (That's one thing you can't catch generically, incidentally) 18:44:06 Deewiant: So much for your minimal API :P 18:44:16 It's a separate thing 18:44:46 It's more like iterating over the structure than doing individual accesses 18:44:49 That is not implementable ideally without using the internal structure details 18:44:58 Unless you expose a way to get an array out? 18:45:06 No, cursor is complicated 18:45:24 Eh? 18:45:46 I'm saying that I couldn't implement my own cursor with the same efficiency using your public API sans cursor, so it is part of the core :P 18:46:03 Yes, agreed 18:46:27 But my point was that it's a (fairly) minimal API for what it does 18:46:33 Deewiant: But that would be resolved if you provided a way to go from (x,y) -> array, I think? 18:46:44 Unless I totally misunderstand how your fungespace works 18:46:56 I don't think that'd suffice 18:47:02 -!- fizzie has joined. 18:47:12 You also need at least the bounds in that array that you're allowed to access 18:47:32 Both (x,y) and (start_idx,end_idx) 18:48:01 And then for multidimensional cases you need the full AABB data, i.e. width/area so you can stride properly between start_idx/end_idx 18:48:21 And then you might run into the hash table 18:48:28 No, it's too complicated :-) 18:48:46 It's the next thing I need to C-ify 18:49:04 Back 18:49:18 -!- boily has quit (Quit: WeeChat 0.3.5). 18:49:28 lololol @ "BUGS" section in malloc(3). 18:49:31 Deewiant: Maybe you should expose an internal AABB API that the public API is based on :P 18:49:35 Somebody doesn't like Linux's overcommit behavior :P 18:49:46 Gregor: Overcommit is utterly stupid 18:49:57 "In case Linux is employed under circumstances where it would be less desirable to suddenly lose some randomly picked processes, ..." 18:50:05 Unfortunately it's the easiest way to achieve a heap with nice properties 18:50:10 So I can't really turn it off 18:50:17 (SBCL uses it f.e.) 18:51:29 elliott: I'd rather make the whole thing as opaque as possible 18:51:31 Isn't there a a /proc/ thing that can turn it off? 18:51:53 Yes, /proc/sys/vm/overcommit_* 18:52:28 Anyway, int*a,b[9<<20];main(){a=b;while(scanf("%d",++a)>0);while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} 18:52:56 Do you think sysadmins remember to do that? 18:53:33 Deewiant: That's why it'd be an internal thing :P 18:53:47 Deewiant: i.e. subject to change whenever the internal representation does 18:53:56 (But more stable than poking members directly) 18:54:15 elliott: I'll add it when somebody needs it :-P 18:54:21 Deewiant: You do, see cursor.c :P 18:54:40 I can poke members directly? 18:55:34 Deewiant: Well, I don't know how cursor.c works, but we've established it isn't implemented with the API 18:55:38 So there is surely some . or -> in it 18:55:49 -!- zzo38 has joined. 18:55:52 Yes, exactly 18:55:54 And I can do that 18:55:59 So I don't need an "AABB API" 18:56:04 Because I can just do aabb->foo 18:56:13 And not worry about breakage 18:56:26 Deewiant: Yes, but you need the AABB API, you're just working around it by doing fragile things 18:56:37 And taking advantage of your enviable maintainer position to ensure it doesn't break 18:56:38 This is the kind of thing that is supposed to be fragile 18:56:45 My character set has a left-facing swatstika but not a right-facing one. 18:56:47 -!- azaq23 has quit (Quit: Leaving.). 18:56:51 *sigh* 18:56:54 If I mess with the internal representation of mush_aabb I really do need to rethink everything :-P 18:57:23 Phantom_Hoover: Heh. 18:57:29 Which one is the one the Nazis used? 18:57:41 The Nazis used the 45-degrees rotated one 18:57:54 thanks 18:58:13 Right-facing. 18:59:48 http://en.wikipedia.org/wiki/Strafgesetzbuch_%C2%A7_86a 18:59:53 Way to free speech, Germany. 18:59:59 Phantom_Hoover: BTW, s/character set/font/ 19:00:06 elliott, erm, yes. 19:00:09 Also, you don't know about that? 19:00:19 I did. 19:00:30 Although I didn't know the precise nature of the law. 19:00:51 "In late 2005 police raided the offices of the punk rock label and mail order store "Nix Gut Records" and confiscated merchandise depicting crossed-out swastikas and fists smashing swastikas." 19:00:52 Pro. 19:01:35 http://en.wikipedia.org/wiki/File:98-animate.gif Surely there are easier ways to accomplish this. 19:02:02 I really want to punch these people, which distresses me because I don't really like people who want to punch people. 19:03:08 I don't think you can blame them for wanting to de-nazificate in the forties, but it's long-obsolete by now of course. 19:03:18 And obviously hasn't stopped neo-Nazis. 19:04:00 Hmm, I don't know if I like zenburn. 19:05:14 Has anyone here used Scion with Emacs? I suppose that's vanishingly unlikely. 19:14:08 Neo-Nazis should use symbolism common German alphabetic in order to show problems with these laws 19:15:14 And the Swastika does not even necessarily have to do with Nazi, even though the Wikipedia article says the law applies to all forms. 19:22:31 I have read that Supero makes a Haskell code as fast as C, but it is still experimental 19:23:37 Some stuff from Supero is now in GHC IIRC 19:23:47 I may be wrong 19:23:48 But similar things 19:24:13 The swastika has been stigmatized by the nazis. But the history of it is probably complicated full of many twists and turns through various cultures. 19:24:45 i was in a discount shop here in germany today 19:24:57 and they had those clothes racks in shape of a swastika 19:25:08 Then again I guess it's not a debate of historical accuracy. 19:26:35 i should just stay out of this one 19:27:00 Maybe there should be a compiler option to tell it to also make small system small executable file omitting a lot of things not required for operation of the program. 19:27:39 I don't know how Supero compares in memory and file size; they only show that the speed is as fast as C. 19:32:26 -!- oerjan has joined. 19:34:50 Deewiant: Re: my circular dependencies, I asked Haskell and apparently the only decent solution is to put everything in Types/Internal.hs; for each type, have Types/Internal/T.hs that imports Types.Internal and just re-exports T(..) with all constructors, and ensure these are the only modules that import Types.Internal; have Types that imports Types.Internal and just re-exports the external API; and have each individual T module import Types.Inte 19:34:50 rnal.T. 19:35:09 A solution almost as elegant as the reciprocal of how many files it produces. 19:35:47 :-D 19:36:22 Having said that, I'd only have two Types.Internal.Foo modules to start with... but it's a slippery slope. 19:37:00 Deewiant: The other solution was to not use a global Types thing, but just turn anything circular into a type parameter, meaning I need newtype wrappers for the actual usage. :-| 19:38:32 Hmm, how does that work? 19:39:05 Deewiant: module A where {import B; data A = A B;}; module B where {import A; data B = B A;} 19:39:07 --> 19:39:37 module A where {data A b = A b;}; module B where {import A; data B = B (A B);} 19:39:56 It's not quite a newtype-wrapper, but eurgh, that's even worse than exposing constructors I shouldn't; it's exposing the structure itself. 19:40:15 But doesn't A need to use the API of B 19:40:43 Put that in the structure? :-) 19:41:16 22:33:09 My dad thought that my eye could get infected like that 19:41:16 22:33:32 (By touching the eyeball if my hands weren't really really really clean) 19:41:17 Deewiant: You could still split them up into Types modules but just have one Types.Internal.X for each type, and then you don't need a Types.Internal, just a Types that re-exports the public interface and I guess defines the instantiations of the type variables 19:41:18 But ugh 19:41:30 oerjan: thank you, I was going to logread but now I won't 19:41:34 I mean, you have something like module A where f :: A -> Int; f (A b) = g b 19:41:53 And now you have f :: A b -> Int; f (A _) = error "derp" 19:41:54 _could_ may be the operative word here. i've done that thousands of times. 19:41:57 Deewiant: I meant put "g" in the structure but that was facetious. 19:42:01 Like I said, 19:42:02 Deewiant: You could still split them up into Types modules but just have one Types.Internal.X for each type, and then you don't need a Types.Internal, just a Types that re-exports the public interface and I guess defines the instantiations of the type variables 19:42:43 Right, but if you do that you might as well go with the earlier solution 19:42:52 although come to think of it, my eye _does_ tend to get irritated if i don't wash my hands first. 19:42:53 Yeah (this one's less files though) 19:43:49 (also if the speck or eyelash is damn hard to get hold of) 19:44:32 also i sometimes pluck nosehairs, which i hear risks me getting an infection in my nose spreading to my brain or something. 19:46:03 Only if you pluck them all or something, I think 19:46:30 Point being that they're there for a purpose but ±1 hair obviously shouldn't make a difference 19:46:41 * elliott systematically starts plucking all his nose hairs. 19:46:46 Pretty much the best way to commit suicide I can think of. 19:48:07 Wikipedia says there's no evidence for it being dangerous, d'oh 19:48:13 elliott: i minimize it somewhat by using my electric razor instead. 19:48:38 also you are far too young to have significant nose hair. 19:49:08 Sorry but your lawn is comfortable. 19:49:18 wat 19:49:23 I am not getting off it, 19:49:39 ok, but then you better start mowing. 19:50:17 I'll use an electric razor 19:51:46 reminds me of my "russ" year, where we had silly assigned tasks, one of which was to cleanse the town square pavillion with a toothbrush. 19:52:44 Deewiant: FWIW, the main interdependency is due to fingerprints 19:53:18 elliott: also why are you not taking my `addquote bait. 19:53:20 Deewiant: IPs have to hold loaded FP instructions (which obviously include Shiro monadic actions), and Shiro is StateT FungeState IO, and FungeState has to contain IPs 19:53:29 oerjan: Which line 19:53:53 at least a couple of them, i think 19:54:16 oerjan: sorry im, not smart 19:54:35 `addquote ALL THE LINES 19:54:38 637) ALL THE LINES 19:54:46 * oerjan whistles innocently 19:54:51 `delquote 637 19:54:52 * elliott cries 19:54:53 ​*poof* 19:54:55 :( 19:55:05 what do you want me to addquote :( 19:55:28 ...if you cannot see it yourself then it probably isn't good enough anyhow. 19:57:00 you think too highly of my opinions, 19:57:10 is it the mowing one... 19:57:15 is it the far too young one...help 19:57:35 neither of those, but if you think they fit... 19:58:03 is it toothbrush anecdote, 19:58:10 the "also i sometimes pluck nosehairs" is the one where i started wondering if someone would addquote it 19:58:12 is it although come to think of it, my eye _does_ tend to get irritated if i don't wash my hands first. 19:58:12 help 19:58:21 oerjan: o 19:58:25 i thought about, that one, 19:58:26 and the toothbrush one too 19:58:31 but i thought it was too much like usual you... 19:58:35 heh :P 19:58:51 -!- Slereah has joined. 19:59:49 -!- GuestIceKovu has quit (Ping timeout: 276 seconds). 20:04:10 is CakeProphet still idle 20:04:28 > let permuts = permutations "baby" in (length . nub $ permuts) == (length permuts) 20:04:55 because i could tell him that is True for a finite list iff it has no duplicate elements 20:05:55 and also that compiling to ghc core may be awkward because there is no easy way to compile _from_ it 20:06:01 that is probably his intention, no? 20:06:12 what is 20:06:15 because i could tell him that is True for a finite list iff it has no duplicate elements 20:06:32 and whatever he's doing, if he's planning on compiling to ghc core: ha ha ha ha ha ha ha 20:06:52 03:41:25: zzo38: because it is really crappy. 20:06:54 hint is not really crappy. 20:07:13 elliott: i have for a few months now since i discovered the reflection package thought that it _really_ needs to be written in core. 20:07:33 with the new ghc plugins, maybe it would even be plausible to achieve 20:07:59 oerjan: hmm, what would it do as core? 20:08:59 ...create a typeclass dictionary _directly_ rather than via ridiculously convoluted whatchamacallit in the type system 20:09:16 CakeProphet: I am 99 percent sure the limiation of hint there is a limitation in _GHC_, not in hint. 20:09:30 (whatchamacallit represents a simple word which my brain refuses to remember) 20:09:33 You could make a symlink to an FD and try and load that. 20:09:48 oerjan: coercion? casting? 20:10:00 no, much worse 20:10:05 oerjan: unsafeness? 20:10:22 oerjan: but I didn't know Core could create typeclass dictionaries. Hey, I wonder if reflection's implementation solves the problem I had with my hack? 20:10:36 those are not _inefficient_ per se. what it does is ridiculously roundabout. 20:10:54 oerjan: (did you see that hack?) 20:11:01 (I'm convinced I could make it work reliably somehow...) 20:11:05 elliott: well i'm _assuming_ core must be able to, since haskell sometimes requires generating them on the fly 20:11:20 e.g. with polymorphic recursion 20:11:23 um it does? surely not report Haskell, iirc with report Haskell typeclasses can be eliminated at runtime entirely 20:11:38 I know they can't with GHC, but I'd be surprised if they needed to be _created_ at runtime 20:11:40 no they cannot, not when there is polymorphic recursion 20:11:41 rather than just passed around 20:11:48 oerjan: can you do polymorphic recursion in report haskell? 20:12:03 yes. you just need an explicit type declaration 20:12:09 ok then 20:12:14 oerjan: (http://hpaste.org/50760 is the hack I am referring to) 20:12:17 the main function works if you do 20:12:20 main = a >> b 20:12:23 where a and b are the two statements there 20:12:49 the idea, if that worked, was to define some TH stuff to define the GADT for an arbitrary specified class, and the functions 20:13:15 oerjan: I think it could also let you create dictionaries at runtime, actually 20:13:26 if a class contains (a :: T) and (b :: S), then you need 20:13:33 erm, and has type parameter t 20:13:35 then you need 20:13:45 newtype Runtime = Runtime { value :: t, _a :: T, _b :: S } 20:14:00 instance Runtime where a = _a; b = _b 20:14:03 hmm with some things to unwrap the value 20:14:13 I guess it might not be doable exactly like that but I think you can achieve it in general 20:14:19 anyway, it's a cool hack :P 20:14:39 elliott: well reflection is stronger since it generates a dictionary containing an actual _value_ in it 20:14:58 stronger than unsafeCoerce? :P 20:15:09 yes. 20:15:17 well, possibly. 20:15:30 oerjan: I think I could achieve the same thing, really, with a combination of that runtime method plus unsafeCastD, but maybe I'm wrong 20:15:38 ShowD a is basically a reification of the show dictionary there, after all 20:16:00 and I believe you can define 20:16:08 ExplicitShow -> ShowD, ShowD -> ExplicitShow 20:16:11 where ExplicitShow is 20:16:22 erm, add type parameters there 20:16:26 data ExplicitShow a = ExplicitShow { explicit_show :: a -> String } 20:16:39 which is all you need to do generate an instance at runtime. 20:16:50 so the only problem is that mine breaks if you don't separate out each relevant statement :D 20:16:53 I think I need to twiddle with the inliner 20:17:04 I wish core wasn't so damn hard to read 20:17:16 huh, it is actually doing some inlining here 20:17:33 litD :: ShowD String 20:17:33 litD = unsafeCastD (ShowD :: ShowD Lit) 20:17:39 does that actually _work_? 20:17:53 oerjan: yes. read the comment: it works in GHCi 20:17:55 and if you change main to 20:17:58 main :: IO () 20:17:59 main = a >> b 20:17:59 a = print "Hello, world!" 20:17:59 b = withInstance litD $ print "Hello, world!" 20:18:00 that works too 20:18:11 (it isn't really a GHCi problem, more a global-vs-subexpression problem, I think) 20:18:22 because the do statement that is main has the incorrect behaviour in ghci too. 20:18:37 oerjan: but yes, it works, proving that ShowD is a bona-fide dictionary at runtime 20:18:54 and ofc newtypes have identical representation, so the Lit instance is "another" Show instance for String 20:20:22 elliott: i vaguely recall implicit parameters supposedly have similar problems in some uses 20:20:30 -!- ralc has quit (Ping timeout: 260 seconds). 20:21:23 oerjan: you mean implementation difficulties or actual runtime bugs? 20:21:26 and they are of course the closest thing ghc has to a _supported_ runtime value-wrapping dictionary 20:21:59 elliott: i think i mean unintuitive differences between expressions that _should_ behave the same 20:22:37 right 20:22:45 I read in the manual about how adding a type signature can change the result 20:22:48 which is gross 20:23:39 elliott: anyway your ShowD still doesn't allow you to wrap a runtime-constructed value into a dictionary, i think. you can replace a dictionary with a different one, but it still must be compile-time defined. 20:24:04 reflection gets around that by essentially defining _all_ necessary dictionaries at compile-time 20:24:32 and using type system calculations to choose the right one 20:24:43 Reflection? 20:24:47 As in Data.Reflection? 20:24:49 oerjan: um no, I _told_ you you can explicitly do it at runtime 20:24:55 Sgeo: a hackage package 20:24:56 and I believe you can define 20:24:56 ExplicitShow -> ShowD, ShowD -> ExplicitShow 20:24:56 where ExplicitShow is 20:24:56 erm, add type parameters there 20:24:56 data ExplicitShow a = ExplicitShow { explicit_show :: a -> String } 20:26:09 oerjan: it probably requires lots of unsafeCoerce to do, but I believe it's perfectly possible 20:26:25 elliott: you figure that out then >:) 20:26:52 maybe one could do a more efficient implementation of reflection that way, then 20:27:20 hmm, it's certainly rather tricky :) but I _think_ it's possible 20:27:28 it might have to be 20:27:34 ExplicitShow a -> ShowD (Wrapper a) 20:27:41 oerjan: would that still lead to an efficient reflection? 20:27:49 -!- sllide has joined. 20:28:15 hm I suppose not, that's a rather obvious instance after all 20:28:16 but maybe 20:28:29 I suppose I should ask what the runtime representation of dictionaries is like? 20:31:03 i suppose it would be obvious from the core, i haven't tried testing it 20:31:29 nothing is obvious from Core :) 20:32:03 also a polymorphic recursion case to show how values or at least subdictionaries are put into them 20:32:11 oerjan see he core. he has the power. 20:32:44 data Tree a = Leaf a | Tree (a,a) deriving Show would be a good example, i think 20:32:51 I found in some foot-shooting list they added how to shoot your foot with Haskell: Make a copy of the entire universe except your foot has a hole. 20:33:34 zzo38: heh 20:34:16 that might be FullBinaryTree, technically 20:35:15 elliott: ^ that should be an example of a Show instance that requires generating new Show instances internally 20:35:28 oerjan: I believe you typo'd 20:35:32 what you have there is not a tree. 20:35:48 elliott: that might be FullBinaryTree, technically 20:36:00 um no, I believe you've made a _big_ mistake. 20:36:04 what you have is Either a (a,a). 20:36:12 ...ah. 20:36:31 *data Tree a = Leaf a | Tree (Tree (a,a)) 20:36:35 that makes more sense :) 20:36:46 I might look at the show instance for that, but anything with constructors is really hideous in core 20:38:06 elliott: maybe the function showLeaf (Leaf a) = show a; showLeaf (Tree t) = showLeaf t might be cleaner? 20:38:21 oerjan: hmm, yes, probably 20:38:29 I'll try that 20:39:42 oerjan: heh, either the dictionary gets inlined somehow, or ghc-core is hiding it from me >_< 20:39:52 ouch 20:40:29 maybe i'm wrong about the construction-on-the-fly then, although how could that be... 20:40:34 oerjan: http://hpaste.org/50901 20:40:51 it's obviously taking in a show instance 20:40:52 ($dShow_aiO) 20:40:58 but it just passes it onto show 20:41:01 it doesn't need to construct anything 20:41:13 it does a worker/wrapper transform by the looks of it so that $dShow_aiO is only passed in once rather than on recursion 20:41:18 lvl_sjs being the worker 20:41:19 -!- monqy has joined. 20:42:56 elliott: no, a_sjx is a constructed Show instance 20:43:16 oh 20:43:24 $fShow(,) is ShowD a -> ShowD b -> ShowD (a,b)? 20:43:27 approximately 20:43:40 probably 20:43:43 oerjan: sounds like I need to define my own tuple type to see what $fShow(,) looks like 20:44:01 hm, right 20:44:41 oerjan: aha 20:45:20 hm? 20:45:45 oerjan: http://hpaste.org/50902 20:45:54 oerjan: I suspect this more be readable without the -O2 I gave it 20:47:06 yeah I have no idea what that is saying. 20:47:19 oerjan: oh hm 20:47:25 oerjan: I should define my own that uses show rather than showsPrec 20:48:07 are these instances of show? 20:48:07 that might be easier to read yeah 20:48:13 CakeProphet: yes 20:48:32 M.$fShowTuple [InlPrag=[ALWAYS] CONLIKE] 20:48:32 :: forall a_abQ b_abR. 20:48:32 (Show a_abQ, Show b_abR) => 20:48:32 Show (M.Tuple a_abQ b_abR) 20:48:32 [GblId[DFunId], 20:48:34 Arity=2, 20:48:35 M. = method? 20:48:36 Unf=DFun(arity=4) D:Show [{M.$fShowTuple_$cshowsPrec}, 20:48:38 {M.$fShowTuple_$cshow}, {M.$fShowTuple_$cshowList}]] 20:48:40 M.$fShowTuple = 20:48:42 \ (@ a_abQ) 20:48:44 CakeProphet: btw this is somewhat vaguely descended from your question about compiling to core 20:48:44 (@ b_abR) 20:48:45 $ = perl? :P 20:48:46 ($dShow_afR :: Show a_abQ) 20:48:48 ($dShow1_afS :: Show b_abR) -> 20:48:50 D:Show 20:48:51 oerjan: ah I see. 20:48:52 @ (M.Tuple a_abQ b_abR) 20:48:54 (M.$fShowTuple_$cshowsPrec @ a_abQ @ b_abR $dShow_afR $dShow1_afS) 20:48:56 -!- elliott has left ("Leaving"). 20:49:00 -!- elliott has joined. 20:49:03 yes I was wondering if I could utilize Haskell bindings if I had a language that compiled to Core. 20:49:04 (M.$fShowTuple_$cshowList @ a_abQ @ b_abR $dShow_afR $dShow1_afS) 20:49:06 flood but w/e 20:49:08 CakeProphet: M is my module obviously 20:49:09 CakeProphet: my comment to which is that ghc makes it very awkward if at all possible to compile _from_ core 20:49:10 oerjan: there you go, that's what they look like in Core 20:49:12 ok let's try that again 20:49:14 CakeProphet: core cannot be compiled 20:49:20 it's not possible 20:49:22 there is no parser 20:49:45 oerjan: http://hpaste.org/raw/50903 20:49:45 none of the other ILs too I imagine? 20:49:54 oerjan: that's what the instance constructor looks like 20:50:04 CakeProphet: Cmm has a parser; in fact part of the RTS is written in Cmm 20:50:22 CakeProphet: Agda compiles to Haskell with a lot of unsafeCoerces 20:50:29 (for "performance") 20:50:32 (it's still slow) 20:50:57 so then I would use Cmm as my target and hope that at that level there's still interfacable bindings. 20:51:17 oerjan: anyway, I suppose this just begs the question of what D:Show looks like 20:51:41 CakeProphet: it won't work well. 20:51:59 Haskell.NET 20:52:46 it would be nice if they redesigned the ILs to support other languages using Haskells awesome libraries for awesome things. 20:52:46 CakeProphet: there is however last (well, the only time) i checked in the ghc API a _very_ rudimentary function for compiling a single module from the _internal_ core representation 20:53:10 but it has a comment to the effect it has only been tested for that case 20:53:20 oh good. 20:53:33 (well had, there's a new ghc version out so things might have improved for all i know) 20:53:39 *may 20:53:39 sounds like a good basis to build a compiler on. 20:56:44 elliott: i suppose D:Show is the constructor for a Show dictionary, which is just passed the methods? also i assume you have the code for M.$fShowTuple_$cshowsPrec etc. in your full output. 20:57:06 essentially any kind of language I build on top of Haskell's environment would be more or less a set of extensions. 20:57:17 but enough to warrant a new language/dialect 20:57:26 oh hey, I could always compile to Haskell. 20:57:45 oerjan: I do have the code but it's boring. Yes, D:Show is the dictionary constructor, which I bet isn't given any real "definition" in Core, but I can define my own class to check. 20:58:38 elliott: why wouldn't it have a definition, i assume Show is a completely ordinary class if you ignore derivations... 20:59:01 it probably is in whatever module defines Show 20:59:27 oerjan: yes, but D: _is_ the class 20:59:39 but OK, I'll define my own class to see 21:00:08 oerjan: yep, at least with ghc-core, D:Aah isn't created 21:00:09 just 21:00:13 M.ooh [InlPrag=[NEVER]] :: forall a_abI. M.Ooh a_abI => a_abI 21:00:13 [GblId[ClassOp], 21:00:13 Arity=1, 21:00:13 Unf=Unf{Src=, TopLvl=True, Arity=1, Value=True, 21:00:13 ConLike=True, Cheap=True, Expandable=True, 21:00:13 Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}, 21:00:15 RULES: Built in rule for M.ooh: "Class op ooh"] 21:00:17 M.ooh = 21:00:19 \ (@ a_abI) (tpl_B1 [Occ=Once!] :: M.Ooh a_abI) -> 21:00:21 case tpl_B1 of _ { M.D:Ooh tpl_B2 [Occ=Once] _ -> tpl_B2 } 21:00:23 and the same for my other method aah 21:00:28 I suspect D:Ooh is "defined" at some other level 21:01:15 a magical land deep below Core 21:01:20 CakeProphet: there is also the new ghc plugin system in the latest version, which i assume does core to core transformations 21:01:30 oerjan: just checked with -ddump-simpl 21:01:36 if D:Ooh is defined in core, it's sure not printed by GHC 21:01:46 oerjan: I suspect, instead, the typeclass info goes into the .hi 21:01:56 ah 21:02:01 and then the actual Cmm or whatever for the class constructor is constructed on the fly 21:02:21 oerjan: otoh, from the way pattern-matching and the like is used in it, I have this _wonderful_ feeling that it might look like a regular data type 21:02:21 i.e. 21:02:28 class Ooh a where { ooh :: a; aah :: a -> () } 21:02:30 might look like 21:02:36 data Ooh a = Ooh { ooh :: a, aah :: a -> () } 21:02:37 at runtime 21:02:54 ...otherwise "case" has special behaviour when you use something prefixed with D: 21:02:55 which is gross 21:03:06 elliott: well afaiu core's System F has no concept of classes and instances, so it should be that way 21:03:10 elliott: ewwwww 21:03:24 CakeProphet: What? 21:03:27 oerjan: indeed 21:03:29 gross. 21:03:31 oerjan: but I mean, it could be unboxed ors omething 21:03:39 CakeProphet: what is? 21:03:52 special cases of case. 21:04:01 elliott: the one thing istr reading is that dictionaries are always unboxed as a whole 21:04:06 CakeProphet: it was just a hypothesis 21:04:31 oerjan: hm well I wish I knew how Core parameter lists worked, because normal parameters seem to be prefixed with @ like (@ a) but the typeclasses aren't 21:04:45 I guess it might mean unboxed 21:05:02 elliott: um @ signifies a _type_ parameter, not a value, iiuc 21:05:06 oh 21:05:11 that makes more sense :) 21:05:16 oerjan: but modulo unboxing, I suspect you can simply define the equivalent (existential) data type for a class and have it be coercable directly to the dictionary type 21:05:27 system F works that way with explicit type arguments 21:05:37 oerjan: ooh, if ShowD looks like (ShowD UnboxedDictionary), then it's boxed 21:05:51 oerjan: and so an explicitly-defined record should have the same runtime representation as ShowD 21:05:53 and be coercable directly 21:06:23 elliott: maybe. but that still leaves the question of getting any runtime value _into_ a dictionary 21:06:24 it is defined by a huge table of which pairs of types results in what. 21:06:29 er what 21:06:36 wrong paste :P 21:06:43 http://hackage.haskell.org/trac/ghc/browser/compiler/supercompile/Supercompile/Core/Syntax.hs?rev=5a142af2955f7cda76c2e63104e7672044cffaa2 21:06:54 is this helpful? I'm guessing it's Core syntax stuff 21:07:02 (which in my understanding is the sticking point which makes all of reflection's hoops necessary) 21:07:05 CakeProphet: not... really 21:07:20 oerjan: I'm still not sure what you _mean_ by that 21:07:21 if you have 21:07:39 data ExplicitShow a = ExplicitShow { show :: a -> String, shows :: blah blah, showsPrec :: blah blah, showList :: blah blah } 21:07:51 and ExplicitShow a -> ShowD a (and assuming ShowD and withInstance work properly) 21:08:05 then how does that not let you put any runtime value in you want? 21:08:07 http://research.microsoft.com/en-us/um/people/simonpj/papers/ext-f/fc-tldi.pdf 21:09:14 doesn't seem to mention the @ so I guess it's not an exact replica of what GHC uses. 21:11:05 elliott: oh you are assuming dictionaries have the exact same representation as an ordinary record. yeah i guess if you could do that... 21:11:24 (you probably want to at least use seq on that record first) 21:11:26 oerjan: well they are eliminated with "case" in core in the _exact same way_ data-types are. 21:12:11 oerjan: so either case changes behaviour based on something totally gross like whether the name is a class dictionary, or it's equivalent to a data-type, modulo strictness and unboxing 21:12:26 elliott: the CONLIKE pragma, does it mean that the function result is always a strict constructor? 21:12:35 strictness can be controlled, and since my ShowD introduces an additional layer, if dictionaries are unboxed than ExplicitShow should have the exact same representation as ShowD 21:12:43 oerjan: no, that's an inlining thing 21:12:50 CONLIKE means it's safe to duplicate a call at very low cost 21:12:53 istr seeing it before but have forgotten 21:12:55 (this is in the manual) 21:12:57 ok 21:12:59 it's useful for rules 21:13:14 @a is apparently a "type argument" 21:13:15 Maybe you meant: activity activity-full admin all-dicts arr ask . ? @ v 21:13:37 CakeProphet: yes, that's what oerjan told me right after I asked :P 21:14:41 >_> 21:14:53 elliott: well since core is supposed to be extremely simple they probably haven't made a distinction unless it's absolutely necessary 21:15:08 oerjan: indeed. so they should, in fact, have the exact same representation 21:15:10 (between data and dictionary) 21:15:14 ?src Show 21:15:15 class Show a where 21:15:15 showsPrec :: Int -> a -> ShowS 21:15:15 show :: a -> String 21:15:15 showList :: [a] -> ShowS 21:15:24 hmm, I hope that ordering is authoritative 21:15:35 seems to be the same in ghci so that's good 21:15:54 why would ordering matter are you doing something icky :( 21:16:08 monqy: yes 21:16:13 :( 21:16:25 elliott: it's the same as in the core you pasted 21:16:30 oerjan: heh, thanks :P 21:16:43 -!- augur has quit (Remote host closed the connection). 21:17:31 monqy: he is going to use unsafeCoerce to convert a record into a class instance :P 21:17:55 oerjan: hm I suspect the fields are _not_ strict 21:17:57 oerjan: you can do 21:18:02 instance Show Blah where show = error "x" 21:18:07 and it works fine until you call show 21:18:11 elliott: indeed 21:18:18 so it's just the record itself that's strict 21:18:48 and the report afair says that undefined methods are treated as, well, undefined 21:19:15 (i think i recently saw that ghc has a specific exception for those though) 21:19:18 oerjan: it works 21:19:21 dear god, it works 21:19:45 *Main> b 21:19:45 *** Exception: help 21:19:49 explicit_lit :: ExplicitShow String 21:19:49 explicit_lit = ExplicitShow 21:19:50 { explicit_showsPrec = error "help" 21:19:50 , explicit_show = \s -> s 21:19:50 , explicit_showList = error "helpList" } 21:19:51 > "*MW" ++ cycle "AH" 21:19:53 "*MWAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA... 21:20:07 er, hm. 21:20:11 but why is it using the showList case? 21:20:26 I guess I should try something that isn't a list type first 21:20:32 you mean showsPrec? 21:20:46 oh 21:20:47 duh :) 21:20:57 ?src show 21:20:57 show x = shows x "" 21:20:58 ?src showList 21:20:59 Source not found. It can only be attributed to human error. 21:21:02 >:| 21:21:36 *Main> b 21:21:36 : internal error: PAP object entered! 21:21:36 (GHC version 7.0.4 for x86_64_unknown_linux) 21:21:36 Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug 21:21:36 Process haskell aborted 21:21:38 oerjan: it could be worse 21:21:42 ok, so function members don't work. 21:21:47 "enter" is unsafeCoerce jargon I know. 21:21:48 ::::D 21:21:55 oerjan: maybe function fields do have to be strict, or something... 21:22:14 indeed, error "x" works but \_ -> error "x" doesn't 21:22:23 clearly this is a question for #haskell-in-depth 21:22:37 elliott: insane idea: you might want to convert a Show dictionary _to_ your type so you can use the usual showsPrec and showList from it 21:23:00 that is indeed insane. 21:23:18 CakeProphet: I'm asking #ghc 21:23:31 see elliott get banned from #ghc for life 21:23:31 probably a better place to ask. 21:23:35 oerjan: that would be useful, yes 21:23:43 and might help me find out what the difference in representation is 21:23:49 * CakeProphet is currently waiting for the banhammer 21:24:01 is the excitement in #ghc now 21:24:06 no 21:24:14 *Main> explicit_show (implicit (ShowD :: ShowD String)) "abc" 21:24:14 " 21:24:14 Process haskell segmentation fault 21:24:15 ah. 21:24:19 #esoteric is always the root of the party. 21:24:30 oerjan: ok I should probably try a class that contains some innocuous value rather than a function. 21:24:31 elliott, idea for elliottcraft: http://www.youtube.com/watch?v=ZXxDnx_UE6I (yogscast) 21:25:39 elliott, watch it! 21:25:41 looks nice 21:25:49 yep 21:25:55 not sure it fits in stylistically 21:26:31 elliott, no, but you could do a game like it that was high def in other places too. I think it could work fairly well, and would also avoid "yet another minecraft clone" feel 21:26:44 I don't want it to look like the real world, at least 21:26:49 that boat sure is hd 21:27:25 go underwater dammit 21:27:46 elliott, he doesn't in the video sadly 21:28:06 elliott, I will probably try out that mod tomorrow 21:28:23 should run fine on my high end gpu 21:28:30 indeed, error "x" works but \_ -> error "x" doesn't <-- so this is the same as that difference between data and function for unsafeCoerce, right? 21:28:35 do the squisd like it 21:28:45 no idea 21:28:53 oerjan: I suspect so; I wonder if unsafeCoerce (error "x" :: Int) :: function type works the same way? 21:28:54 I suspect it might 21:28:57 except the ohter way around 21:29:02 elliott, also I think that mod needs a HD texture pack to not be too jarring 21:29:10 * elliott tries strictifying for the hell of it 21:29:45 elliott, I'd also like to see waterfalls 21:29:47 oerjan: wat, now it uses show instead of showsPrec 21:29:54 oh, I think that's correct 21:29:56 print should invoke show, after all 21:30:02 *Main> explicit_show (implicit (ShowD :: ShowD String)) "abc" 21:30:02 " 21:30:02 Process haskell segmentation fault 21:30:06 haksel :( 21:30:18 oerjan: what, then changing show to 21:30:20 \_ -> error "help show" 21:30:22 causes showList to be called 21:30:26 Process haskell segmentation fault <-- how? 21:30:26 oh duh 21:30:27 elliott: um shouldn't you have an argument for the actual value _printed_? 21:30:29 because 21:30:33 strict fields 21:30:34 duh 21:30:38 Vorpal: it's not hard 21:30:43 *Main> b 21:30:43 : internal error: PAP object entered! 21:30:43 (GHC version 7.0.4 for x86_64_unknown_linux) 21:30:43 Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug 21:30:43 Process haskell aborted 21:30:46 ok that is definitely not better. 21:30:49 elliott, using some language extension? 21:30:55 Vorpal: unsafecoerce 21:30:57 ah 21:31:06 well okay, no wonder it crashes 21:31:06 elliott: it looks to me like your explicit_show has one argument missing 21:31:14 Warning: Ignoring unusable UNPACK pragma on the 21:31:14 third argument of `ExplicitShow' 21:31:21 guess you can't unpack functions 21:31:25 , explicit_show :: {-# UNPACK #-} !(a -> String) 21:31:25 oerjan: no? 21:31:29 the implementation did 21:31:31 but that's before i strictified 21:31:37 oerjan: if you mean i missed out the argument, duh 21:31:38 you can say 21:31:40 show = error "foo" 21:31:41 too 21:31:51 well yes 21:31:52 but hmm 21:32:09 oerjan: ok i suspect the function representation is different, then. 21:32:10 but if it doesn't error, it needs to be a function? 21:32:14 i am not sure _how_. 21:32:47 elliott: what does that M.$fShowTuple_$cshow you didn't paste before look like? 21:33:14 oerjan: um, like you'd expect it to? do you want me to run it again 21:33:46 it's just that it's what's put in the dictionary 21:33:48 M.$w$cshow 21:33:48 :: forall a_abJ b_abK. 21:33:48 (Show a_abJ, Show b_abK) => 21:33:48 a_abJ -> b_abK -> [Char] 21:33:48 [GblId, 21:33:48 Arity=4, 21:33:50 Unf=Unf{Src=, TopLvl=True, Arity=4, Value=True, 21:33:52 ConLike=True, Cheap=True, Expandable=True, 21:33:54 Guidance=IF_ARGS [3 3 0 0] 14 3}] 21:33:56 M.$w$cshow = 21:33:58 \ (@ a_abJ) 21:34:00 (@ b_abK) 21:34:04 (w_sio :: Show a_abJ) 21:34:06 (w1_sip :: Show b_abK) 21:34:08 (ww_sis :: a_abJ) 21:34:10 (ww1_sit :: b_abK) -> 21:34:12 : 21:34:13 how long is this? 21:34:14 @ Char 21:34:16 M.$fShowTuple4 21:34:18 (++ 21:34:20 @ Char 21:34:22 [boring stuff] 21:34:24 that's for 21:34:26 instance (Show a, Show b) => Show (Tuple a b) where 21:34:27 pastebin might have taken less time to paste 21:34:28 show (Tuple a b) = "X" ++ show a ++ "Y" ++ show b ++ "Z" 21:34:30 oh hm 21:34:34 that's not M.$fShowTuple_$cshow 21:34:36 oerjan: http://sprunge.us/fLTc 21:37:13 oerjan: found the discrepancy yet? :-P 21:37:30 erm no 21:37:37 * CakeProphet got into a debate on the difference between setting attributes to None vs. using getattr and setattr to check for undefined attributes in objects that may or may not have a large number of attributes defined. 21:37:42 in #python 21:38:02 my stance was that it made no difference. and there's what that checking for attribute existence is /bad style. 21:38:07 the former is obviously the correct solution. 21:38:11 the other one is horrible. 21:38:13 ... 21:38:22 if you disagree, you are wrong. (this is true independent of language.) 21:38:44 I say it makes no difference and amounts to almost the same code. 21:39:19 yes, you have repeatedly shown a lack of understanding of possible vs. a good idea 21:39:52 no difference. same amount of code. 21:40:17 actually more in the case of None because you have to set all of the attributes to None. 21:40:36 lines of code is not the only way to measure code. 21:40:41 correct you are. 21:40:49 but it _is_ revealing that you are using it that way. 21:41:24 is hasattr(self, "attr") or getattr(self, "attr", default) objectively worse than self.attr is None and self.attr if self.attr is None else default? 21:41:40 or is it just a stylistic preference? 21:41:41 yep 21:41:44 objectively worse 21:41:54 -!- Nisstyre has quit (Quit: Leaving). 21:42:27 elliott: my hunch is that if that error happens when functions and data types are confused, then something _must_ be applied to the wrong number of arguments somewhere 21:42:51 oerjan: I have a feeling that classes contain multiple argument functions 21:42:53 im agre with elliott 21:42:54 same code. in the same place. to the same effect. I don't see the difference other "oh no this one uses strings literals". 21:42:58 oerjan: or something 21:43:01 hmm ,ayme bt not 21:43:03 *other than 21:43:18 CakeProphet: sorry, I doubt I could explain it to you because of your incorrect perspective. 21:43:27 elliott: but a method can be any haskell value can it not 21:43:46 oerjan: doesn't stop ghc treating them specially 21:43:50 ok did you actually look at that core? i fnot i will 21:44:01 say if you put trace on one like trace "mumble" $ \x -> ... wouldn't that trace have to be applied only once 21:44:21 and even if you just seq the method 21:44:24 i don't think there's any guarantees about thta 21:44:29 trace is unsafe 21:44:37 ok not guarantee but most likely 21:44:47 ok did you actually look at that core? i fnot i will 21:44:54 i guess my seq comment is what i really mean 21:45:13 elliott: i don't know what i'm comparing _to_ :P 21:45:21 oerjan: um what i pasted above 21:45:27 is the actual M.$w$cshow implementation 21:45:53 which is put in a record? 21:46:06 um, no, this is the old testcase you asked about. 21:46:17 do you want me to define an equivalent function at top level and show that? 21:46:23 elliott: I agree it makes sense when there's only a small number of attributes to set to None. but the context was for a game in which the object could easily have large numbers of attributes undefined. 21:46:30 yes. but now i don't know what the things in the records look like :P 21:46:33 CakeProphet: sorry, uninterested. 21:46:41 oerjan: gimme a minute 21:47:49 http://sprunge.us/cDPR 21:47:59 ah. 21:50:19 elliott: btw are you making sure to evaluate your record before unsafeCoerce'ing it? 21:50:27 oerjan: with seq, yes. 21:50:48 Is this program the Obfuscated Haskell Contest program? Not quite. 21:50:56 hm might strictness analysis mess that up somehow? 21:51:19 turning off -O removes strictness analysis right? 21:51:42 some tasks require more performance than others. if the data set is large such as hex editing a 1gb file or doing batch processing then performance will matter more and more. or some programs such as "some" video games or emulators will seek to maximize performance. 21:51:48 i mean, if ghc doesn't think that unsafeCoerce can change whether something is strict, that might mess things up 21:52:16 And with multitasking apps will want each other to be polite guests 21:52:41 oerjan: hm 21:52:45 oerjan: what do you mean? 21:52:52 oerjan: oh i think i might need pseq instead of seq to be sure 21:53:03 elliott: ah right that might work 21:54:12 elliott: i mean, it might detect that the seq is redundant in something like x `seq` unsafeCoerce x, but be wrong because x is put into a dictionary on the converted side 21:54:18 er 21:54:48 oerjan: well pseq did not help. 21:54:49 * x `seq` unsafeCoerce (YourStrictRecord x) 21:55:03 explicit :: ExplicitShow a -> ShowD a 21:55:03 explicit a = a `pseq` unsafeCoerce a 21:55:13 no seqing of the fields is done; that's surely incorrect to do 21:55:38 elliott: seq one of the fields you don't use, for good measure :P 21:55:39 Does the program I posted work? 21:55:49 Improve it if you like to do so 21:55:53 in fact if possible _print_ it IO 21:56:06 then ghc cannot possibly get around evaluating it first 21:56:12 *in IO 21:56:15 oerjan: um I have no idea what you are talking about, do you mean for the conversion the other way around? 21:56:31 explicit_lit :: ExplicitShow String 21:56:31 explicit_lit = ExplicitShow 21:56:31 { explicit_showsPrec = \_ -> error "help" -- \_ s t -> s ++ t 21:56:31 , explicit_show = \_ -> error "help show" 21:56:31 , explicit_showList = \_ -> error "help showList" } 21:56:34 how will printing any of these help at all? 21:57:09 elliott: er they are _all_ error? i guess that's not useful to print. you might apply and catch. 21:57:54 elliott: i'm just suggesting making as absolutely sure as you can that ghc doesn't convince itself that it can avoid evaluating the record before converting it 21:58:06 oerjan: I could just look at the core rather than relying on voodoo. 21:58:11 or that :P 21:58:43 elliott: it's just that the one thing i _do_ recall about ghc's class dictionaries is that ghc assumes they are strict 21:59:04 so a value containing them will not have them evaluated before use 21:59:19 oerjan: the fact that I get the errors properly if I do (error "foo") rather than (\_ -> error "foo") seems to prove I'm doing it right. 21:59:22 or it'd just segfault or whatever. 21:59:25 if it was lazy 21:59:28 elliott: ok 21:59:34 main3 = 21:59:34 lazy 21:59:34 @ (ShowD String) 21:59:34 (main4 21:59:34 `cast` (CoUnsafe 21:59:34 (ExplicitShow String) (ShowD String) 21:59:36 :: ExplicitShow String ~ ShowD String)) 21:59:38 i have no idea what's going on :D 21:59:54 WHAT 22:00:10 main3 lazy ShowD is my rapper name. 22:00:11 elliott: hm maybe a class method really _must_ not be a function in that unsafeCoerce sense, then. 22:00:20 CoUnsafe sounds good 22:00:39 oerjan: just a second, something's insane 22:00:53 we all are 22:01:05 _wtf._ 22:01:20 oerjan: it briefly worked (producing "help show") 22:01:23 but on GHCi restart, it doesn't. 22:01:55 oerjan: unfortunately nobody is replying in the ghc chanenl :( 22:02:08 hmm 22:02:34 oerjan: ok i'm going to try the thing i was going to try 22:03:26 -!- Necrosporus has quit (Ping timeout: 245 seconds). 22:03:30 elliott: they've gone into hiding. btw what happens if you have a method whose type is _not_ a function? 22:03:42 i.e. an actual data type 22:03:54 oerjan: I was going to try that next, but I'm going to figure this out first 22:04:03 food -> 22:04:12 M.ooh' = plusInt 22:04:12 M.$fOohInt = 22:04:12 plusInt 22:04:12 `cast` (sym (M.NTCo:T:Ooh Int) 22:04:12 :: (Int -> Int -> Int) 22:04:13 ~ 22:04:15 M.T:Ooh Int) 22:04:24 oerjan: ok so the core definition is identical apart from a cast 22:04:42 and I think casts are just unsafeCoerce casts plus a proof 22:08:37 this looks pretty helpful: http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Coercions 22:09:52 "The nd binding extracts the Num superclass dictionary from the C dictionary; the case expression is called a superclass selector." 22:10:01 hmm 22:10:10 oerjan: Show has no superclasses but maybe it has a free field for them? 22:10:20 huh 22:10:35 hmm 22:11:01 elliott: btw when you had just error ..., the correct error was raised according to which method you were trying to call? 22:11:18 oerjan: yes, except when i wanted to unbox 22:11:26 which just failed horribly 22:12:28 05:28:07: It's not possible to go to an eye doctor to preemptively ask if you just infected your eye, is it? 22:12:32 oerjan: i'm blaming you for my suffering 22:12:44 O KAY 22:12:48 tempted to touch my eye to feel smug but i'd have a hard time making myself do that 22:12:49 :t Some 22:12:49 Not in scope: data constructor `Some' 22:12:53 :t \x -> Some x 22:12:54 Not in scope: data constructor `Some' 22:12:56 * Lymee ? 22:13:00 Lymee: ? 22:13:10 it helps to ask a question in english rather than just babbling invalid haskell 22:13:20 what do you think Some is? 22:13:24 Experiments. >:c 22:13:28 what do you think Some is? 22:13:38 a -> Maybe a? 22:13:39 Isn't Some the ML equiv of Just? 22:13:42 Lymee: Just 22:13:46 Uh opps 22:13:48 Wrong language 22:14:41 I am the right language. 22:14:49 I will guide your communication. 22:15:00 ok 22:15:22 10:16:41: CakeProphet: MultiParamTypeClasses for Match, FlexibleInstances for that instance (because it uses 'a' twice) 22:15:26 Deewiant: Undecidable 22:15:28 instances, that is 22:15:33 Not needed for that alone 22:15:43 um are you sure? maybe Overlapping then? 22:15:44 I know that 22:15:47 instance (C a) => D a 22:15:48 is not ok 22:15:54 i would be surprised if the additional thing made it work 22:15:56 I am sure, I checked it 22:15:58 overlapping sounds like the right qualifier. 22:16:01 MPTCs + Flexible 22:16:01 ok 22:16:27 maybe flexible in overlapping in the case that the instances... overlap 22:16:31 s/in/and/ 22:16:43 overlappinginstances implies flexibleinstances 22:16:52 ah okay 22:17:14 * CakeProphet has never need the .*?instances extensions 22:17:59 I've needed flexible once but other than that I've just read the manual pages 22:18:05 13:02:16: -!- Necrosporus has joined #esoteric. 22:18:05 13:03:43: http://paste.org.ru/?lu3vtb 22:18:06 13:03:57: Do you like it? What' sthat at your opinion? 22:18:06 hi 22:18:19 monqy: I need flexible constantly 22:18:23 but obviously if you want to overlap you probably want to be flexible. 22:18:29 14:21:13: That's fmap... 22:18:36 Phantom_Hoover: it's the _wrong_ generalisation. 22:18:39 (.) should be (Control.Category..) 22:18:45 map should be fmap though. 22:18:52 Control.Category didn't exist at the time IIRC 22:18:56 and (++) being Monoid is right 22:19:05 > (P..) 22:19:06 Overlapping instances for GHC.Show.Show 22:19:07 ((b ->... 22:19:10 Phantom_Hoover: 22:19:12 Prelude is P 22:19:23 Darn 22:19:24 Why 22:19:47 Concision? It's IRC 22:19:48 BRB 22:19:56 Why not both 22:20:39 is there anything ($) could be generalized to? 22:20:59 yes 22:21:06 id 22:21:30 ($) :: (a -> b) -> a -> b; ($) = id 22:21:31 tempted to touch my eye to feel smug but i'd have a hard time making myself do that <-- NORTHUMBRIAN TOUCHES EYE TO FEEL SMUG, EYE FALLS OUT 22:22:43 @hoogle m a b -> a -> b 22:22:44 Control.Monad.Reader runReader :: Reader r a -> r -> a 22:22:44 Control.Monad.State.Lazy evalState :: State s a -> s -> a 22:22:44 Control.Monad.State.Strict evalState :: State s a -> s -> a 22:23:05 what 22:23:20 that is a generalization of )$_ 22:23:21 ($) 22:25:02 -!- Patashu has joined. 22:26:23 class Whatever (~>) where ($) :: (a ~> b) -> a -> b ? 22:26:57 yes. 22:27:19 yes that's the gnera;lization of which iw as thinking too 22:27:31 I would say Applicative but that is already taken. 22:27:48 ?ty app 22:27:49 forall (a :: * -> * -> *) b c. (ArrowApply a) => a (a b c, b) c 22:27:54 I think that's what you guys want 22:28:16 but what if I dislike arrows? 22:28:27 ?src ArrowApply 22:28:27 Source not found. :( 22:28:29 :( 22:28:41 that doesn't look like the correct type. 22:28:42 class Arrow a => ArrowApply a where that function 22:28:43 too many tuples. :P 22:29:05 specifically one too many. 22:29:43 !haskell take 20 $ Unsafe.Coerce.unsafeCoerce [1..] :: [()] 22:29:49 ​[(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()] 22:29:52 that looks a little bit different than ours, anyway 22:30:14 also filter could be generalized. 22:30:14 !haskell take 20 $ Unsafe.Coerce.unsafeCoerce [Left 1, Right 2] :: [()] 22:30:16 :t filter 22:30:17 ​[(),()] 22:30:17 forall a. (a -> Bool) -> [a] -> [a] 22:30:31 (a -> Bool) -> t a -> t a 22:30:42 ?ty app .: (,) 22:30:43 forall b b1. (b -> b1) -> b -> b1 22:31:22 @hoogle filter 22:31:23 Prelude filter :: (a -> Bool) -> [a] -> [a] 22:31:23 Data.ByteString filter :: (Word8 -> Bool) -> ByteString -> ByteString 22:31:23 Data.IntMap filter :: (a -> Bool) -> IntMap a -> IntMap a 22:31:39 :t (.:) 22:31:40 forall a b (f :: * -> *) (g :: * -> *). (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b) 22:31:42 :t Data.Traversable.filter 22:31:43 Not in scope: `Data.Traversable.filter' 22:31:55 hm i guess it cannot remove elements 22:32:10 oerjan: is ByteString a synonym for Something Word8? 22:32:44 it's an unpacked array of Word8, yes 22:32:58 well more or less 22:33:26 *unboxed 22:33:57 @hoogle fromList 22:33:57 Data.HashTable fromList :: Eq key => (key -> Int32) -> [(key, val)] -> IO (HashTable key val) 22:33:58 Data.IntMap fromList :: [(Key, a)] -> IntMap a 22:33:58 Data.IntSet fromList :: [Int] -> IntSet 22:34:20 @hoogle Foldable f => [a] -> f a 22:34:21 Test.QuickCheck elements :: [a] -> Gen a 22:34:21 Data.Maybe listToMaybe :: [a] -> Maybe a 22:34:21 Data.Sequence fromList :: [a] -> Seq a 22:34:28 bah 22:35:20 class FromListable a r where fromList :: [a] -> r 22:35:32 maybe with a fundep 22:35:52 CakeProphet: that's just Monoid really 22:36:02 well, nearly 22:36:41 @hoogle (a -> Bool) -> f a -> f a 22:36:41 Data.IntMap filter :: (a -> Bool) -> IntMap a -> IntMap a 22:36:42 Prelude dropWhile :: (a -> Bool) -> [a] -> [a] 22:36:42 Prelude filter :: (a -> Bool) -> [a] -> [a] 22:37:04 @hoogle NotABloodyList f => (a -> Bool) -> f a -> f a 22:37:05 Warning: Unknown class NotABloodyList 22:37:05 Data.IntMap filter :: (a -> Bool) -> IntMap a -> IntMap a 22:37:05 Prelude dropWhile :: (a -> Bool) -> [a] -> [a] 22:37:51 they could extend the query syntax that way 22:37:57 having constrains placed before a => 22:38:14 i thought they did 22:38:45 it's just always fuzzy when there's no perfect match 22:39:22 @hoogle Monad m => [m a] -> m [a] 22:39:22 Prelude sequence :: Monad m => [m a] -> m [a] 22:39:23 Control.Monad sequence :: Monad m => [m a] -> m [a] 22:39:23 Data.Traversable sequence :: (Traversable t, Monad m) => t (m a) -> m (t a) 22:39:35 @hoogle Applicative m => [m a] -> m [a] 22:39:35 Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a) 22:39:36 Prelude sequence :: Monad m => [m a] -> m [a] 22:39:36 Control.Monad sequence :: Monad m => [m a] -> m [a] 22:39:44 yeah it does 22:40:18 no I mean constrains like "t is not a list" 22:40:28 not class constraints. 22:40:44 back 22:41:05 monqy: ive seen 22:41:16 hi>? 22:41:20 class (Arrow (~>)) =. ArrowApply (~>) where (($) :: (a ~> b) -> a -> b 22:41:23 as opposed to the existing arrowapply 22:41:59 since arrows are lame and nobody likes to use them. 22:42:15 what's the need for the Arrow (~>) context there.... 22:42:31 monqy: because it was in terms of arrow? 22:42:45 why must it?? 22:42:45 anything that can be applied should be an arrow anyhow, whether you like arrows or not 22:42:54 mmh 22:43:01 you should be able to write the arrow functions 22:43:04 whether you like the Arrow class or not 22:43:14 otherwise your application has no laws and is hence useless 22:43:31 >_> 22:43:45 :t \p m = m >>= \x -> if p x then return x else mzero 22:43:46 parse error on input `=' 22:43:48 thankfully I will never use CakeProphet's code. 22:43:48 laws -> practical use. The elliott law. 22:43:52 :t \p m -> m >>= \x -> if p x then return x else mzero 22:43:53 forall (m :: * -> *) a. (MonadPlus m) => (a -> Bool) -> m a -> m a 22:43:58 What does "Irrefutable pattern failed" mean in Haskell? 22:44:00 CakeProphet: sorry, you do not undrestand programming. 22:44:02 understand 22:44:03 is there any good alternative to arows is Category&Applicative useful for that I've also heard of a Generalized Arrows thing but maybe that is not a real thing maybe I should make my own alteratnive to do the things I want to do 22:44:14 zzo38: depends what your code is 22:44:27 > let Left x = Right "like this" in x 22:44:28 *Exception: :3:4-29: Irrefutable pattern failed for pattern Da... 22:44:29 monqy: you cannot use applicative in the arrowapply head because it must be universally quantified. 22:44:30 elliott: if you want me to see it they way you do then you'll have to use words for that. 22:45:02 CakeProphet: i'm not interested in doing so, because I've tried before and it was fruitless; I suspect either time and experience will make you clear up your confusion, or nothing will 22:45:24 oerjan: How does that do? 22:45:24 zzo38: it's for when a failing match is lazy so it is not checked until another expression is evaluated 22:45:52 matches are by default lazy in let and where, but strict in case and function arguments 22:46:21 but you can turn strict matches into lazy with ~ or lazy into strict with ! (the latter is an extension) 22:46:21 But what does let Left x = Right "like this" in x even supposed to do? 22:46:31 zzo38: fail, badly 22:46:39 hth 22:46:47 elliott: though I do find it a bit insulting that I apparently don't _understand_ programming because I do not see it in this way. 22:47:06 as if the way I have been viewing it is totally invalid and does not correspond to actual programming. 22:47:14 What is that syntax supposed to mean? 22:47:26 > let (x, y) = (5, 3) in (y, x) 22:47:26 zzo38: it defines Left x lazily to be the result of the expression Right "like this". if it was Left x = Left "like this", then it would simply make x = "like this" 22:47:26 (3,5) 22:47:27 CakeProphet: I predict that any further responses I make will only offend you more, so I'm not going to 22:47:50 oerjan: ok i'm going to adjust my code for the exciting class: class Ooh a where ooh :: a 22:48:06 ooh 22:48:07 (06:48:02 PM) CDGregorR: int*a,b[9<<20];main(){a=b;while(scanf("%d",++a)>0);while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} 22:48:08 (06:48:30 PM) -: I see a :( in there 22:48:08 (06:48:35 PM) -: That's how I'd feel about it, too 22:48:14 zzo38: it makes more sense if Right "like this" is replaced by an expression which is not known whether it is Left or Right, though 22:48:40 oerjan: or rather one you know to be Left or Right. 22:48:42 elliott: then nothing has been learned by either of us from this conversation. congratulations. 22:48:45 (it is not good practice to assume :P) 22:48:53 * CakeProphet moves on to other things. 22:48:58 CakeProphet: you are the one who was sarcastic and pinged me after I made a statement. 22:49:03 did you _expect_ to get anything from it? 22:49:08 zzo38: and supposedly you should only _use_ such an expression Left x = y if you are sure that y evaluates to a Left value, but if you do a mistake you get that "irrefutable pattern" error 22:49:22 *such a definition 22:49:28 elliott: I would like to. 22:49:37 CakeProphet: then maybe start it in a better way next time 22:49:43 Now it says "No instance for (Show GHC.Prim.Any)" if I type x or Left x or Right x 22:49:44 oerjan: I suspect the source of my unreliability is withInstance, btw 22:50:11 oerjan: it should really be some core that takes the dictionary out of the ShowD and applies k to it 22:50:25 I might be able to coerce that into working if I can figure out how to unbox it properly 22:50:27 zzo38: that's a different error because x defaults to type Any 22:50:43 (when there are no other restrictions on it) 22:51:18 zzo38: however that's a bit weird that there is no Show instance 22:51:20 > [] 22:51:21 [] 22:51:57 oerjan: um of course there is no Show Any instance. 22:52:01 [] only works because of defaulting. 22:52:04 oh wait ghc defaults it to () 22:52:14 elliott: I was basically saying I don't understand how a set of laws corresponds directly to usefulness. 22:52:25 not that I don't understand the importance of laws. 22:52:28 elliott: oh hm. the default to Any is only if there are _no_ type classes involved. 22:52:44 oerjan: incidentally Any won't show up like that in error messages soon 22:52:47 instance Eq (->) where 22:52:48 it was fixed recently iirc 22:52:53 elliott: as I could make something completely useless that also has laws. 22:52:54 @let x = [] 22:52:55 Defined. 22:52:58 > x 22:52:59 Ambiguous occurrence `x' 22:52:59 It could refer to either `L.x', defined at oops 22:53:03 @undefine 22:53:11 now what 22:53:19 > "hm" 22:53:20 "hm" 22:53:32 @list let 22:53:32 eval provides: run let undefine 22:53:35 @undefine 22:53:40 > x 22:53:42 x 22:53:51 huh it gives no message 22:53:57 @let x' = [] 22:53:58 Defined. 22:54:00 > x' 22:54:02 [] 22:54:07 :t x' 22:54:08 forall a. [a] 22:54:11 bah 22:54:17 CakeProphet: (~a -> ~b) =/= (a -> b) 22:54:23 no monomorphism restriction for @let 22:54:33 or wait 22:54:49 > (x' :: String, x' :: [Bool]) 22:54:51 ("",[]) 22:54:55 indeed not 22:54:58 elliott: is ~ laziness in this case? I've never seen ~ used like that. 22:55:04 or is it not? 22:55:22 aka complement. 22:55:42 How is a definition such as Left x = Right "like this" can be used afterward? 22:56:06 CakeProphet: what I said was not code. 22:56:17 *Main> withInstance explicitTestD (ooh :: Int) 22:56:17 99 22:56:20 oerjan: ok so data values work. 22:56:30 elliott: ah, well then it is not very enlightening to me. 22:56:34 *Main> ooh :: Int 22:56:34 9 22:56:37 CakeProphet: maybe so. 22:56:48 oerjan: so there _is_ something different about functions in dictionaries 22:57:17 has #ghc answered yet 22:57:29 monqy: no 22:57:34 :( 22:57:52 elliott: it is not very difficult nor time consuming to explain what you mean. 22:58:10 CakeProphet: that is where you are wrong 22:58:28 elliott: oh wait I understand. :P 22:58:41 logic, not types. 22:59:12 oerjan: I've asked #ghc about how functions are represented in typeclass dictionaries, anyway 22:59:13 oerjan: I suspect the source of my unreliability is withInstance, btw <-- would the higher rank method used in reflection be good enough for you? 22:59:24 oerjan: what type signature? 22:59:29 reify :: a -> (forall s. Reifies s a => Proxy s -> w) -> w 22:59:38 oerjan: that's... close to what i have 22:59:39 withInstance :: OohD a -> ((Ooh a) => r) -> r 22:59:41 I suppose I could do 22:59:44 withInstance :: OohD a -> (forall b. (Ooh b) => r) -> r 22:59:49 but that would rather reduce usefulness, I think 22:59:53 although, hmm 22:59:56 withInstance print "foo" would work 23:00:19 elliott: okay so then practical use -> laws would be the logical equivalent of your statement. 23:00:24 which I still do not see as being true. 23:00:49 CakeProphet: I was replying to your statement with a demonstration of its fallacy. 23:01:07 right, and I just revised it. 23:01:18 meta-conversation is cool though. 23:01:49 I'm afraid you have no idea what I'm talking about. 23:01:51 anyway 23:02:03 oerjan: I guess quantification might fix it by forcing explicit dictionary passing but I'm mostly sceptical of the implementation 23:02:10 zzo38: it cannot, that's an error which i just made to demonstrate how the Irrefutable pattern error message happens. Left x = Left "like this" would be useable, though. 23:03:19 zzo38: if you get an Irrefutable pattern error in your own code, though, it might because you are making something similar to Left x = y where you _think_ y is a Left value but it actually sometimes is a Right value. 23:03:28 *might be because 23:03:48 but it could be with other data type constructors, of course. 23:04:09 elliott: you said, in effect, no laws -> useless. I made the wrong implication from that, you showed that it was incorrect. So I revised to use -> laws, which I still do not agree with. Is that not what we just talked about? 23:05:00 zzo38: because of laziness, it is allowed to define Left x = y even if y is a Right value, as long you don't actually _use_ y in that case. but it may be easy to do a mistake then. 23:05:54 Argh, my TinyTC was wrong :( 23:06:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:06:52 Gregor: I thought I had just realized that your name is Roger G. but whois says otherwise. :( 23:07:09 for some reason I like reverse names. 23:07:16 Ohhhhhhhhhhhhhhhhhhhhhhhhhkidoke. 23:07:23 >_> 23:07:33 CakeProphet, take a guess what Gregor's name is 23:07:40 Gregor. 23:07:46 *clap clap clap* 23:07:50 that's what whois says. 23:08:01 BUT IT COULD EASILY BE ROGER G. 23:08:04 I'm not much of a mystery :P 23:08:08 I exist ... ON THE INTERNET! 23:08:43 assholes. 23:08:51 :'( 23:09:00 I think most people have only one... 23:09:02 All of this is distracting from the tragedy of my TinyTC being wrong. 23:09:12 int*a,b[9<<20];main(){a=b;while(scanf("%d",a++)>0);a=b;while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} // this is corrected, but 117 characters :( 23:09:15 Gregor: perhaps this is not a bad thing perhaps. 23:09:45 Gregor, clearly, you have to change your other name to conform to CakeProphet's specs... in ... weirdly 23:10:41 not at all. 23:10:56 elliott: well you need _some_ way to prevent ghc from lifting print "hello world" entirely out of your carefully constructed context :P 23:11:29 I was merely sharing an amusing and false connection I made. 23:11:39 because Roger G. is a funny name. 23:12:11 that Tehpor Pekac guy has some wild ideas 23:12:12 oerjan: doing it at the top-level seems to make it work for some reason 23:12:19 Gregor: how was it wrong? 23:12:47 elliott: I ++a'd even when it didn't read in an int, so *a was always 0 by the time the loop started. 23:12:54 So, it never went into the loop at all >_> 23:13:04 heh 23:13:08 elliott: yeah but obviously it will be brittle since ghc is by haskell semantics _allowed_ to do that lifting. 23:13:43 oerjan: yeah. I think the quantified type might avoid that? 23:13:56 hmm maybe: 23:13:58 withInstance :: OohD a -> (forall b. (Ooh b, a ~ b) => r) -> r 23:14:01 to get the full power 23:14:04 maybe 23:14:20 Gregor: is it okay if I call you Roger from now on? 23:14:24 (it'd be nice to call random monomorphic methods but fuck up the instances they use, but GHC _definitely_ erases too much for that) 23:14:28 Nope ;P 23:14:38 (and I guess I should avoid allowing you to see that by sticking to the plain universal rank-two type) 23:15:00 * Sgeo decides to ignore Roger's wishes wrt whether Roger wants to be called Roger 23:15:24 I think this is an excelelnt idea Oeg S. 23:15:38 hey no oegs 23:15:47 yeah Sgeo is the reversed name 23:15:56 so he's actually S. Geo 23:16:05 that's intruding on my alphabet territory 23:16:17 my real name is yqno m. 23:16:27 -!- Sgeo has changed nick to Sgelo. 23:16:39 shut up, Monq Y. 23:17:04 and someone is trying _very_ hard to hide that his real name is L. Toilet 23:17:39 * oerjan go too far 23:17:41 * Sgelo fails to get people to infer that he's pretending to be Oleg :( 23:17:51 I caught it.. 23:17:56 me too.......... 23:17:58 substitute oleg 23:18:03 I AM A MASTER OF MYSTERIES 23:18:05 but which oleg are you 23:18:05 I REVERSE ALL NAMES. 23:18:06 which 23:18:07 oleg 23:18:27 I SEE ALL OF THE SECRET CODES. 23:18:43 oerjan: ellio turd, toilet l., i am poop in every way :( 23:18:51 * elliott cries 23:19:04 I keep my window covered by a bedsheet so that the government cannot spy on me with their spy crafts. 23:19:08 your life is so shitty 23:19:31 :'( 23:19:54 -_;; my soul is black like the night. 23:20:08 me too 23:20:39 I do not know how to make a crying emo face. ;_;;? 23:21:18 I also do not know what contractions are help. 23:21:23 Sometimes I like to touch sharp things and feel their sharpness. 23:21:44 * Sgelo #s Phantom_Hoover 23:21:51 I made a Haskell program to know the extensions: http://sprunge.us/CBKY 23:21:54 yesterday i cut myself 23:21:54 Sgelo: gros 23:21:55 s 23:22:00 trying to open a bottle of cranbery juice 23:22:12 * Sgelo belatedly recognized the gross interpretation of that 23:22:12 monqy, ah, you're getting into the spirit. 23:22:25 Sgelo: there's a gross interpretation? 23:22:27 Do you work at Starbucks? 23:23:18 Sgelo: he is too young do not explain it it is too gross. 23:23:51 "I think if we are going to allow ourselves the luxury of semantic breakage, it should at least be worth the cost" --Malcom Wallace on seq 23:24:08 it's not worth the cost? 23:24:41 not as the report specifies it IHO 23:26:08 seq is both luxurious and not worth the cost? Sounds expensive. 23:26:30 I have discussed making a Haskell program that is programmed to tell what extensions it uses, now I have done so. Other ideas are, extend it with the capability to tell if it is Literate Haskell or not, as well as be valid programs in other programming languages such as C, C++, INTERCAL, TeX, Brainfuck, Malbolge, AWK, ... 23:26:30 it's a quibble about the Report, nothing much to do with usage. 23:27:07 zzo38: isBrainfuck = True 23:27:16 zzo38: :D 23:28:11 CakeProphet: I mean that it will do something proper, too. Of course any file with balanced [] is a valid Brainfuck program 23:28:32 "After all the Report doesn't actually say 23:28:32 that monomorphic pattern-bound variables are shared, either." huh 23:28:49 proper? like sipping tea and maintaining upright posture? 23:29:17 I don't know how a computer program can do that, but if you can figure it out then do so 23:29:29 It can also make output. 23:29:34 Attention spammers: Asthma is not a vaginal infection 23:29:47 I have seen a polyglot program that makes output to tell you what programming language it is. 23:30:06 -!- copumpkin has joined. 23:30:13 print "Just another", ((0 and " Ruby ") or ("Pyt" + "hon" or " Perl ")), "hacker.\n", 23:30:15 Sgelo: that would be hysterical 23:30:30 oerjan: annoyingly I can't cast (forall b. (C b) => r) to (CD b -> r), because that's an additional layer of boxing 23:30:49 How does the ("Pyt" + "hon" or " Perl ") part work in Perl? 23:30:54 Deewiant: Yes, something like that 23:31:10 Sgelo: . is concat in perl 23:31:12 + is numeric 23:31:13 Sgelo: Both get coerced to integers 23:31:20 Ah, ok 23:31:23 so it becomes 0 which is false 23:32:44 but 0 is apparently not false in Ruby? 23:33:24 Right, only false and nil are 23:33:24 IIRC 23:33:27 yeah 23:33:34 which is far more correct than the hideous Python/Perl behaviour. 23:33:36 :t (print "Just another", ((0 and " Ruby ") or ("Pyt" + "hon" or " Perl ")), "hacker.\n") 23:33:37 Couldn't match expected type `t -> t1 -> [Char]' 23:33:37 against inferred type `[Char]' 23:33:37 In the second argument of `(+)', namely `"hon" or " Perl "' 23:33:41 -!- itidus20 has quit (Ping timeout: 257 seconds). 23:33:59 SHOCKING 23:35:12 elliott, well, objects in Python can define what happens when they're tested by if 23:35:35 Sgelo: so? 0 is not false 23:35:38 neither is [] 23:36:03 C begs to differ 23:36:22 Deewiant: char a[] = {}; // a isn't false after this, is it? 23:36:27 it's convenient that they are false though. 23:36:27 But anyway, C is wrong about most things. 23:36:33 No, but int a = 0 is 23:36:39 Although the one I have seen, if I remember correctly, includes Plain TeX, C, C++, LaTeX, Perl, and a few more, but not Haskell. 23:36:42 CakeProphet: when have you ever exploited the "==0 being false" behaviour in Python? 23:36:55 I can see the argument for [], but unless your language has no boolean type, 0 being false is pure insanity. 23:37:03 elliott: I have used if list: to test if it is empty 23:37:07 or None 23:37:30 I used LSL's similar behavior.... but I really shouldn't have 23:37:32 that's not an answer to the question I asked you 23:37:33 But there are other TeX formats as well, such as AMS-TeX, and there is primitive TeX which I sometimes find a use for. 23:37:36 None is ~ nil, so Ruby has that too 23:37:57 elliott: I don't really understand the question ==0 is not valid Python. :P 23:38:14 oh nevermind. 23:38:20 Some function returns -1 if it can't find the item in the list.... I did if(llWhatever(...)+1) 23:38:28 CakeProphet: x == 0 is perfectly valid Python. 23:38:34 well, I've used it in a while loop I believe. I'm sure it would be useful as an if. 23:38:58 ok, so "I believe" with no example and "I'm sure". 23:39:01 Note: I recognize now how "clever" (bad) that sort of thing is 23:39:29 uh, I think it's perfectly valid but I'm not going to get involved in yet another one of these debates. 23:39:57 because it is preference and not objective. 23:40:14 that is how you resolve all debates about languages 23:40:16 10:20:18 00:10:38: * Sgeo wants wget to ignore robots.txt >.> 23:40:16 10:20:24 Obviously it is impossible to make wget do this. 23:40:29 well _i_ thought so, but Sgeo managed to. 23:40:38 elliott: over tiny trivial things, yes. 23:40:43 oerjan: whoosh. 23:40:48 CakeProphet: haha 23:40:54 elliott: not really 23:41:16 elliott: i'm pointing out that if you are insulting sgeo for believing that, you are really insulting me :P 23:41:32 I'm sure I could go through VB and find things that are objectively bad. 23:41:37 oerjan: I insult for more than pure factual content 23:42:16 elliott: i _do_ recall i could not manage to find it in the manpage, so they are not exactly advertising how to do it. 23:42:29 (which is somewhat reasonable i guess) 23:42:36 It's a config file option 23:42:41 -e is documented 23:42:50 and the man page points you to GNU info for documentation on .wgetrc/-e 23:42:50 And -e lets you set config file options on the command-line 23:43:03 And googling pretty much gives you the answer 23:44:46 well it's not in the _obvious_ place 23:44:52 * oerjan sulks in the corner 23:45:05 oerjan: /pats 23:49:16 I am a spider. 23:52:14 -!- FireFly has quit (Quit: FireFly). 23:53:41 -!- kmc_ has joined. 23:54:52 elliott: that's where i keep my Porn And Trailers 23:55:42 pugs and togs 23:56:22 -!- kmc has quit (Ping timeout: 245 seconds). 2011-09-03: 00:03:15 oerjan: hmm there is no way to define an unboxed type in haskell, right? 00:03:19 even with ghc extensions 00:03:30 elliott: in what sense? 00:03:44 copumpkin: in the sense of being literally unboxed. (I'm creating typeclass dictionaries at runtime.) 00:03:59 my current implementation is a bit brittle so I want to do some unsafeCoercing to pass the dictionary more explicitly 00:04:00 I mean, what kind of an unboxed type would you want? 00:04:07 copumpkin: typeclass dictionary 00:04:12 data OohD a where 00:04:13 OohD :: (Ooh a) => OohD a 00:04:13 works but is boxeed 00:04:19 dictioanries are unboxed 00:04:33 well, an unlifted tuple of the members of the dictionary 00:04:51 copumpkin: oh, that would work. how many unlifted tuple types are defined? 00:04:54 as in size 00:04:59 arbitrarily many 00:05:24 great 00:05:34 copumpkin: do you know anything about functions in typeclasses internally? 00:05:43 what about them? 00:05:44 when I coerce functions into a dictionary, I get the PAP object entered error 00:05:57 * Phantom_Hoover → sleep 00:05:58 -!- Phantom_Hoover has quit (Quit: Leaving). 00:06:02 so it sounds like functions in dictionaries are different to functions elsewhere 00:06:08 I doubt it 00:06:15 but a dictionary is probably its own closure type or something 00:06:21 so it's not even an unlifted tuple 00:06:28 also, you can't pass unlifted tuples 00:06:30 only return them 00:06:43 OK, well I need to pass them. Is that a restriction on what you can define or will even coercing to that not work? 00:06:54 copumpkin: And, well, I've successfully coerced non-function classes in. 00:06:57 there's not an established way to pass them in 00:07:01 (specifically class Ooh a where ooh :: a) 00:07:13 elliott: since it _does_ work for data types, the surrounding dictionary structure seems unlikely to be the real culprit, no? 00:07:49 oerjan: yep, but copumpkin is saying that it is. (if you mean my questions about unboxed tuples, I'm trying to make withInstance reliable, you know, because of the horrible bug that breaks referential transparency :)) 00:08:00 you probably don't want unboxed tuples 00:08:34 copumpkin: seems not. But I need to do it _somehow_ 00:08:41 and there's no core parser, and I don't think writing this as Cmm would be practical. 00:09:04 oerjan: ah, "OohD a -> (forall b. (Ooh b) => r) -> r" is not even valid 00:09:07 At least one of the forall'd type variables mentioned by the constraint 00:09:07 must be reachable from the type after the '=>' 00:09:11 unfortunately. 00:09:18 right 00:09:24 * elliott tries Data.Tagged out of curiosity 00:09:50 is this just wankery out of curiosity or are you trying to do something real with this? 00:10:13 copumpkin: it started out as the former, but I believe if I can get it to work, you can reimplement the reflection package more efficiently like this. 00:10:25 and it would be a neat Hackage package, too :) 00:10:34 reflection is already pretty awesomely efficient 00:10:37 according to edwardk 00:10:54 oerjan says it goes through the FFI, which would be totally unnecessary with this 00:11:05 {-# OPTIONS_GHC -fno-cse -fno-full-laziness -fno-float-in #-} 00:11:05 those last two flags are scary. 00:11:39 oh, they're just turning off things -O implies 00:12:46 copumpkin: anyway, I will definitely put this on Hackage if I can get it working, so I'd call it something real 00:13:10 turning pointers into strings, then into lists of integers, then into a type to get an instance is efficient? 00:13:39 (and the integer -> type step is binary, i think 00:13:45 ) 00:14:04 -!- zzo38 has quit (Remote host closed the connection). 00:14:05 pointers into _strings_? 00:14:07 ouch 00:14:08 look at the generated code 00:14:11 as in, String string? 00:14:19 ok it may be word8 lists 00:14:24 well that's not really better 00:14:28 the [] is the bad part :P 00:14:58 where 00:14:58 bytes :: [CChar] 00:14:58 bytes = unsafePerformIO $ with a (peekArray (sizeOf a) . castPtr) 00:15:20 oerjan: it might be inlined into reifyIntegrals as a loop 00:15:24 but there's no way the type part isn't horrible 00:15:26 it's unary 00:15:33 or hmm 00:15:35 no it isn't 00:15:40 newtype Zero = Zero Zero deriving (Show) 00:15:40 newtype Twice s = Twice (Twice s) deriving (Show) 00:15:40 newtype Succ s = Succ (Succ s) deriving (Show) 00:15:40 newtype Pred s = Pred (Pred s) deriving (Show) 00:15:40 it's wtf-ary :P 00:15:47 weeeee my Ubuntu stickers arrived . 00:15:47 he's done a lot of stuff with it 00:15:55 and says it's almost negligible performance-wise 00:16:02 which is why he's building the mpfr binding on top of it 00:16:06 meh, my hack is cool for other reasons too 00:16:38 I wish there was an unsafeCoerce that shut GHC up about lack of instances 00:16:54 reallyUnsafeCoerce 00:17:00 lol 00:17:08 Lack of instances? 00:17:11 withInstance :: forall a r. OohD a -> ((Ooh a) => r) -> r 00:17:12 withInstance d k = (unsafeCoerce k :: OohD a -> r) d 00:17:12 --> 00:17:16 /home/elliott/Code/reify-class/reify.hs:25:34: 00:17:17 No instance for (Ooh a) 00:17:45 copumpkin: btw, mine already works enough that you can make (print "hello") print without the quotes in some contexts 00:17:53 elliott: I have a better trick for that 00:17:56 I think it'll work, anyway 00:18:01 you could even ask the user whether you wanted it to print quotes or not and then do so at runtime 00:18:05 (you can specify full instances at runtime) 00:18:07 copumpkin: what's the trick> 00:18:17 mine is a pretty great trick :P 00:18:31 oh, I thought it didn't work 00:19:16 *Main> withInstance explicitTestD (ooh :: Int) 00:19:16 Loading package array-0.3.0.2 ... linking ... done. 00:19:16 Loading package containers-0.4.0.0 ... linking ... done. 00:19:16 Loading package deepseq-1.1.0.2 ... linking ... done. 00:19:16 Loading package parallel-3.1.0.1 ... linking ... done. 00:19:17 -6917529027641081856 00:19:19 *Main> withInstance explicitTestD (ooh :: Int) 00:19:21 5188146770730811392 00:19:23 ok that's not better 00:19:25 copumpkin: It does and it doesn't 00:19:29 main :: IO () 00:19:33 main = a >> b 00:19:35 a = print "Hello, world!" 00:19:37 b = withInstance explicitLitD $ print "Hello, world!" 00:19:39 that works 00:19:41 main = do { print blah; withInstance ... } 00:19:43 doesn't 00:19:49 it's wtf-ary :P <-- wtf are they nested in themselves for... 00:20:00 copumpkin: But yeah, apart from that rather major bug, it works, and I think if I can coerce GHC into generating the right Core, it'll work perfectly 00:20:10 oerjan: to only have one inhabitant 00:20:14 oerjan: that's how you define a 0-element type in standard haskell pre-last year's report 00:20:21 copumpkin: no, 0 00:20:24 well 00:20:26 plus _|_ 00:20:29 oh right 00:20:29 :p 00:20:33 that's the one 00:20:44 I don't consider _|_ a value so much as a disease 00:20:54 then hang out in #agda more 00:21:12 I don't consider Agda a language so much as INFERIOR TO COQ IN EVERY WAY 00:21:17 i think elliott has other reasons to dislike agda :P 00:21:31 basically, elliott has other reasons to dislike X forall X 00:21:39 I'll learn coq first then 00:21:47 I don't have other reasons to dislike oerjan other than that he's oerjan 00:21:58 but still somehow manages to order things 00:22:10 -!- kmc_ has changed nick to kmc. 00:22:59 oerjan: oh dear, my code does not work as well as I thought 00:23:04 adding "aah :: (a,a)" breaks things. 00:23:06 sad story 00:23:16 so, is it multiple elements or the different type? 00:23:17 Is _|_ like null but all.... mathematical? And untestable-for, of course 00:23:28 Sgelo: ... 00:23:39 oerjan: nope, aah :: a breaks too 00:23:48 -!- Vorpal has quit (Ping timeout: 264 seconds). 00:23:51 elliott: is it the explicit type declaration then 00:23:52 (Barring certain cases of it which can be detected in IO or some BS like that) 00:23:55 this is progress! 00:23:59 oerjan: no, it's having more than one member :) 00:24:17 oerjan: I suspect GHC rudely turned my data into a newtype? 00:24:24 huh 00:24:45 can it _do_ that? i suppose if the members are strict... 00:24:54 *member is 00:24:56 I guess not 00:25:05 It wasn't strict 00:25:10 Hmm 00:25:37 hmm is -O on by default? 00:25:39 this might depend too much on ghc's exact memory layouts 00:25:49 seems not 00:25:55 oerjan: um that's exactly what I want to depend on 00:26:02 -!- Vorpal has joined. 00:26:11 yes, but if those are varying for subtle reasons... 00:26:39 !haskell import Unsafe.Coerce;map id unsafeCoerce 0 :: [Int] 00:26:46 oerjan: well the Core doesn't lie. 00:26:55 Lymee: import means module, which requires a main 00:26:56 oerjan: it would have to make the same decisions to the data type, too :) 00:27:11 my windows key has been transformed into an UBUNTU KEY 00:27:21 !haskell import Unsafe.Coerce;main = putStrLn $ show $ map id $ unsafeCoerce 0 :: [Int] 00:27:28 Lymee: you can use !map id Unsafe.Coerce.unsafeCoerce 0 :: [Int] though 00:27:47 @src print 00:27:48 print x = putStrLn (show x) 00:27:51 *cough* 00:27:59 !haskell import Unsafe.Coerce;main = print $ map id $ unsafeCoerce 0 :: [Int] 00:28:00 >:c 00:28:18 !haskell import Unsafe.Coerce;main = print $ map id (unsafeCoerce 0 :: [Int]) 00:28:23 Lymee: oh and you need... right 00:28:23 ​[] 00:28:46 copumpkin has given up on me at least :-P 00:28:54 now to ask oerjan a technical question he can't answer 00:28:57 and finally I shall be alone in the world 00:28:58 yay! 00:28:58 sorry, making some food 00:29:02 UNACCEPTABLE 00:29:30 !haskell import Unsafe.Coerce;main = print $ map id (unsafeCoerce 100 :: [Int]) 00:29:35 ​[] 00:29:37 !haskell import Unsafe.Coerce;main = print $ map id (unsafeCoerce (Just 100) :: [Int]) 00:29:42 ​[100 00:30:04 oerjan: ok i can prove that the elements can't be unpacked 00:30:22 oerjan: typeclasses are polymorphic by definition, types have varying sizes, Q.E.D. 00:30:28 strictness doesn't solve the segfault 00:30:36 maybe I really _do_ have one too many levels of unboxing 00:30:39 !haskell import Unsafe.Coerce;main = print $ map id (unsafeCoerce (Just (Just 100)) :: [Int]) 00:30:41 "Fidelity National Information Services Inc. (FIS) lost $13M to an ATM theft earlier this year:" 00:30:44 ​[-1657324113164070127] 00:30:52 I swear, this has nothing to do with my BancSTAR inquiries! 00:31:04 !haskell import Unsafe.Coerce;main = print $ map id (unsafeCoerce [Just 100,Just 10,Just 5] :: [Int]) 00:31:08 Lymee: EgoBot responds to /msg. 00:31:09 ​[1801440399305314945,6341068823694774913,2449958745646666370] 00:31:12 :< 00:31:57 oerjan: hmm, this is really baffling; one-element classes work, three-element classes of functions work as long as you don't actually _call_ them 00:32:00 but this doesn't? 00:32:06 > import System.IO.Unsane; unsafePerformIO $ putStrLn "Hello world" 00:32:07 : parse error on input `import' 00:32:18 !haskell import System.IO.Unsane; unsafePerformIO $ putStrLn "Hello world" 00:32:23 Unsane 00:32:36 Deewiant: What is 00:32:38 oh 00:32:38 haha 00:32:42 !haskell import System.IO.Unsafe; unsafePerformIO $ putStrLn "Hello world" 00:32:57 "for the congnoscenti, data values can be entered but function closures cannot" 00:33:04 /tmp/input.19017.hs:1:7: 00:33:05 Could not find module `System.IO.Unsane': 00:33:05 Use -v to see a list of the files searched for. 00:33:05 00:33:05 /tmp/input.19389.hs:2:0: 00:33:05 parse error (possibly incorrect indentation) 00:33:06 Sgelo: i am not going to repeat everything i said to Lymee 00:33:07 00:33:07 oerjan: hm. so it was treating the function in the Show class as a data value. 00:33:19 oerjan: I'm starting to suspect copumpkin is right about mumble mumble infotable :-) 00:33:41 ooh 00:33:53 oerjan, when did you say it? Today? 00:33:54 which would be rather difficult to resolve from within Haskell. 00:34:07 Sgelo: like above when Lymee did essentially the same thing 00:34:42 !haskell import Unsafe.Coerce;main = print $ map id (unsafeCoerce ([Just 100,Just 10,Just 5] :: [Any]) :: [Int]) 00:35:18 Is there any point to using unsafePerformIO when I have access to full IO anyway? 00:35:22 * Sgelo stops bothering 00:36:02 Sgelo: er, no. and Lymee is testing unsafeCoerce not unsafePerformIO. 00:36:23 I was testing unsafePerformIO for no good reason I guess 00:36:48 elliott: :( 00:36:59 oerjan: but hmmm. 00:37:02 oerjan: it's so CLOSE to working :D 00:37:07 oerjan: time to 00:37:10 LOOK AT THE COOOOOOOOOOORE 00:37:38 wtf, why isn't it showing the D:blah crap 00:37:46 oh hmm. 00:37:51 M.$fOohInt [InlPrag=[ALWAYS] CONLIKE] :: M.Ooh Int 00:37:51 M.$fOohInt = M.D:Ooh @ Int $cooh_rmM $caah_rmK 00:37:55 that's. 00:37:56 so exciting. 00:38:12 oerjan: I was about to say it might be the type parameter but duh that's erased at runtime 00:38:25 yeah 00:39:12 M.helloWorld = 00:39:12 \ (@ a_apr) ($dOoh_aps :: M.Ooh a_apr) -> 00:39:12 (M.ooh @ a_apr $dOoh_aps, M.aah @ a_apr $dOoh_aps) 00:39:16 I was looking for some "case", ghc-core :P 00:39:20 but OK I'LL LOOK AT THE ACCESSORS 00:39:34 oh, what 00:39:38 no wait nevermind 00:39:42 M.ooh = 00:39:42 \ (@ a_ac6) (tpl_B1 [Occ=Once!] :: M.Ooh a_ac6) -> 00:39:42 case tpl_B1 of _ { M.D:Ooh tpl_B2 [Occ=Once] _ -> tpl_B2 } 00:39:43 M.aah = 00:39:43 \ (@ a_ac6) (tpl_B1 [Occ=Once!] :: M.Ooh a_ac6) -> 00:39:43 case tpl_B1 of _ { M.D:Ooh _ tpl_B3 [Occ=Once] -> tpl_B3 } 00:39:55 looks right to me. although wtf is [Occ=Once] about anyway? 00:40:15 what was once a window-stickered Dell Inspiron has now been transformed into an Ubuntu-and-Windows-stickered COMPUTING MACHINE 00:40:21 that is also a Dell Inspiron still 00:40:29 CakeProphet: how inspiring 00:40:43 oerjan: he;pl 00:41:21 -!- sllide has quit (Ping timeout: 245 seconds). 00:41:51 ooh = object-oriented hat 00:41:52 elliott: maybe it means simply that it only occurs once in its scope 00:42:22 and the appended ! might mean it's strict 00:42:45 aah = aspect assembled hermaphrodite 00:42:59 !wacro 00:43:00 HFMMTYAC 00:43:07 monqy: nope 00:43:16 don't do it. 00:43:16 CakeProphet: miserable 00:43:20 I TOLD YOU 00:43:40 oerjan: hm maybe 00:43:40 look I'm sorry but I can't control pseudo-randomness 00:43:49 highly fonetic morphology-missing totally yarbled acronym case 00:44:18 CakeProphet: can't you markov it up or something 00:44:26 I am still doing pertinent job things. 00:44:30 and school things. 00:44:41 oerjan: hm what is that a_ac6 00:44:44 oh the type parameter duh 00:44:44 and also procrastinating 00:45:10 oerjan: I wish I could get GHC to figure out how I'm using unsafeCoerce so I can see what the unpacking and repacking looks like :-) 00:46:11 Main.explicit_ooh :: forall a_axd. Main.ExplicitOoh a_axd -> a_axd 00:46:11 [GblId[[RecSel]], Arity=1, Caf=NoCafRefs] 00:46:11 Main.explicit_ooh = 00:46:11 \ (@ a_axv) (ds_dyA :: Main.ExplicitOoh a_axv) -> 00:46:11 case ds_dyA of _ { Main.ExplicitOoh ds1_dyB ds2_dyC -> 00:46:12 case {tick (main:Main, 12)}_dyy 00:46:14 @ (a_axv -> GHC.Prim.State# GHC.Prim.RealWorld) ds1_dyB 00:46:16 of _ { __DEFAULT -> 00:46:18 ds1_dyB 00:46:20 } 00:46:22 } 00:46:24 Main.explicit_aah :: forall a_axd. Main.ExplicitOoh a_axd -> a_axd 00:46:26 [GblId[[RecSel]], Arity=1, Caf=NoCafRefs] 00:46:28 Main.explicit_aah = 00:46:30 core is spoukey 00:46:30 \ (@ a_axx) (ds_dyG :: Main.ExplicitOoh a_axx) -> 00:46:34 case ds_dyG of _ { Main.ExplicitOoh ds1_dyH ds2_dyI -> 00:46:36 case {tick (main:Main, 13)}_dyE 00:46:38 @ (a_axx -> GHC.Prim.State# GHC.Prim.RealWorld) ds2_dyI 00:46:40 of _ { __DEFAULT -> 00:46:42 ds2_dyI 00:46:44 } 00:46:46 } 00:46:48 (the ticks are irrelevant, ghc-core just elides these accessors so I need to get the more raw version) 00:46:50 oerjan: ok distinct lack of [Occ=Once]... 00:47:59 I was going to wonder what $ signifies but it'll just mean generated code 00:48:05 and also not exported stuff 00:48:08 well 00:48:09 no 00:48:12 not exported = no module prefix 00:48:13 coredump! 00:48:33 kmc: HOW MUCH DO YOU KNOW ABOUT GHC'S REPRESENTATION OF TYPECLASS DICTIONARIES 00:48:38 not much :/ 00:48:53 that's more than nothing! 00:48:55 i don't see a $ 00:48:57 Tell me EVERYTHING YOU KNOW. 00:49:07 The $s were elsewhere in the Core. 00:52:38 that [GblId[[RecSel]], Arity=1, Caf=NoCafRefs] might contain the kind of information which causes ghc to treat it differently 00:53:46 oerjan: oh dear, 00:53:48 *Main> explicit_ooh (implicit (defaultD :: OohD Int)) 00:53:48 Loading package array-0.3.0.2 ... linking ... done. 00:53:49 Loading package containers-0.4.0.0 ... linking ... done. 00:53:49 Loading package deepseq-1.1.0.2 ... linking ... done. 00:53:49 Loading package parallel-3.1.0.1 ... linking ... done. 00:53:49 35771238760226816 00:53:50 especially the first one looks suspicious to me, Rec might mean record 00:53:51 *Main> explicit_ooh (implicit (defaultD :: OohD Int)) 00:53:53 35771238621435904 00:53:55 *Main> explicit_aah (implicit (defaultD :: OohD Int)) 00:53:57 139731376416641 00:53:59 *Main> [a few seconds passed] 00:54:03 ghc: internal error: evacuate: strange closure type 524 00:54:05 (GHC version 7.0.4 for x86_64_unknown_linux) 00:54:07 Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug 00:54:09 Process haskell aborted 00:54:11 (I guess that was during GC) 00:54:13 ok so there is _something_ wrong with my representation somehow 00:54:15 oerjan: and hm 00:54:27 oerjan: that's just record selector 00:54:29 these _are_ record selectors 00:54:36 I'm interested in how the record is destructed 00:54:39 which is the only reason I looked at them 00:54:40 to see the case 00:55:18 ouch 00:56:00 (the previous try before I restarted without noisy core output segfaulted as soon as I did the explicit_aah) 00:58:20 ...and the new square root of minus garfield meme really gets going. 00:59:59 kmc won't talk. they know what we're doing. they fear us. 01:00:14 oerjan: what's the meme this time? 01:00:28 i don't actually know anything about ghc's representation of typeclass dictionaries 01:00:28 elliott: see the linked original 01:00:41 i just prefer to answer questions with vague relative terms rather than absolutes 01:00:56 oerjan: so it's s/blender/X~blender/? 01:00:58 kmc: me too, me too. 01:01:03 kmc: hm, might you be interested in an #esoteric op position? 01:01:08 :D 01:01:08 * oerjan runs away 01:01:16 kmc: can I pay you to go and force copumpkin to stop making food and start answering my pressing questions instead? 01:01:44 elliott: well this is the first one that actually sounds like bender, really. 01:01:44 omnomnom 01:01:57 I finished my dinner but I really feel like some cereal now 01:02:01 or maybe sorbet 01:02:07 copumpkin: STOP AVOIDING YOUR DUTIES 01:02:10 I ate pissed-off pasta 01:02:19 it was only moderately pissed off though 01:02:22 * elliott punches copumpkin, shoves in back of truck, drives to the Haskell lab 01:02:28 VIVA LA UNSAFECOERCION 01:02:30 noes 01:02:40 clearly i did not punch enough. 01:02:43 copumpkin: it was just copypasta 01:03:05 I wouldn't mind copypasta that pasta 01:03:08 it was quite tasty 01:03:17 unfortunately there is none left 01:03:58 the pasta is in the past 01:04:16 oerjan: hey, ban copumpkin until he learns to forego food. thanks 01:04:21 (my techniques are _beautiful_.) 01:04:24 :( 01:04:40 but i _like_ food. it keeps the horrible pain away. 01:04:52 oerjan: um what we are doing right now is the horrible pain. 01:04:55 oerjan: me too want food 01:05:42 the pain of non-food seems to have temporarily subsided though 01:06:19 hey olsner 01:06:24 what do you know about GHC's representation of typeclass dictionaries 01:06:27 * elliott gets the knife 01:06:38 he knows nothing, he is swedish 01:06:38 elliott: 3, about 3 01:06:45 olsner: good. tell the three. 01:06:51 oerjan: now now, we only have a sample size of one for that. 01:07:08 elliott: can't explain. 3. 01:07:18 olsner: THREE WHATS 01:07:23 * elliott starts mild stabbing. 01:07:25 3 lol 01:07:28 elliott: he seems to be stuck at the wrong type for the answer. 01:07:35 you might have to unsafeCoerce him. 01:07:51 unsafeCoerce olsner 01:07:56 :: InformationAboutTypeClasses 01:08:02 unsafeCoerse to the right type lol 01:08:26 * elliott punches olsner 01:08:28 * elliott begins major stabbing 01:08:31 * elliott goes into kill mode 01:08:33 DIEEEEEEEEEEE 01:08:38 ok now he definitely can't help us. 01:08:44 elliott seems a bit upset. 01:08:52 oerjan: HE;S A MONSTER 01:08:55 oerjan: hey wait i just had an idea. 01:09:01 oerjan: I could use the FFI in a maybe less horrific manner. 01:09:12 oerjan: specifically: just assemble the structure of the instance in-memory 01:09:16 that would just be a few simple pokes 01:09:22 oh hmm 01:09:27 right 01:09:31 then an unsafeCoerce and peek 01:09:32 hmm 01:09:35 anyway, what you actually have at your disposal is burger dressing, some kebab meat and some fries... and maybe me... in that order 01:09:40 it might be hard to get GHC to turn a pointer into a value with the same representation :) 01:09:53 probably not that hard I guess 01:09:57 in other words, good luck with that dressing 01:10:23 afaik it doesn't do haskell nearly as well as me 01:10:37 however good *that* is 01:10:40 olsner: rae you on durgs, 01:10:49 elliott is going to do this so weirdly that it will only work in precisely _one_ ghc version. 01:10:54 I don't ray on the drugs no 01:11:18 oerjan: well I think GHC's runtime representation is pretty stable... 01:11:19 stg and all that 01:11:38 elliott: they did add those tag bits at one point... 01:11:41 castStablePtrToPtr :: StablePtr a -> Ptr ()Source 01:11:41 Coerce a stable pointer to an address. No guarantees are made about the resulting value, except that the original stable pointer can be recovered by castPtrToStablePtr. In particular, the address may not refer to an accessible memory location and any attempt to pass it to the member functions of the class Foreign.Storable.Storable leads to undefined behaviour. 01:11:41 hmm. 01:11:49 that's not very helpful, Foreign.StablePtr. 01:11:52 castPtrToStablePtr :: Ptr () -> StablePtr aSource 01:11:52 The inverse of castStablePtrToPtr, i.e., we have the identity 01:11:52 aha 01:11:55 ok that might work 01:12:00 poke the bits in, cast it 01:12:04 then dereference it 01:12:11 * olsner moves more shredded something into an eating position 01:12:16 i'll wait for copumpkin to prove that we can't possibly do that and then try that :P 01:13:01 can't do what and then try what? 01:13:13 shredded surtrömming 01:13:18 *+s 01:13:36 hredded hred hrerring? 01:13:51 icelandishers are weirder 01:13:57 olsner: can't do it with unsafeCoerce; and write the FFI code 01:14:13 they have surkärring 01:14:29 and not in the "cocktail with cinnamon" sense... 01:14:29 há, karl 01:14:37 youre 01:14:38 confusing 01:14:40 stop talking 01:14:52 hurr durr elliott är nykter 01:14:56 oerjan: ojidfio 01:15:07 baknykter imorrn! :D 01:15:15 IM GOING TO RIP OUT YOUR GUTS 01:15:16 AND REPLAC ETHEM WITH DEATH 01:15:22 and it iwll hurt SO BADLY 01:15:28 baknykter, what a horrible state to be in 01:15:30 death will do that too 01:15:52 i think that may be what english calls "knurd" 01:16:13 only after you start calling it knurd 01:16:26 * oerjan ponders getting some klatchian ice coffee 01:16:52 knurd is a discworld thing??// 01:16:56 elliott: help, this swede is deficient, he doesn't get my discworld references 01:17:01 but of course 01:17:12 oerjan: kill him, 01:17:14 also all swedes 01:17:15 just invade guys 01:17:17 it'll be fine 01:17:20 we'll all thank you 01:17:34 withInstance :: OohD a -> (forall t. (Ooh t) => Tagged t r) -> Tagged t r 01:17:34 withInstance OohD k = k 01:17:39 oerjan: can you _believe_ ghc is too stupid to type this 01:17:44 oh hmm 01:17:45 you know, norway used to be ours entirely 01:17:48 it might be the return type that's broken 01:17:49 OURS 01:17:53 elliott: we cannot do that, they have infiltrated us too much 01:17:54 yeah 01:18:02 olsner: yes and then it became decent 01:18:25 oerjan: can you _believe_ ghc is too stupid to type this <-- huh 01:18:26 elliott: you say that as if it were a good thing 01:18:40 elliott: oh wait duh 01:18:43 *was 01:18:49 your t escapes 01:18:53 TV Tropes no longer does Troper Tales 01:18:54 :( 01:19:05 >>> from selenium.webdriver import * 01:19:05 >>> x = Firefox() 01:19:15 this reminds me somewhat of import antigravity 01:19:18 Sgelo: u sux? 01:19:31 OURS <-- IT WAS A UNION OF EQUALS. 01:19:38 tvtropes was alive and kicking last time I checked anyway 01:19:48 oerjan: hah, as if 01:20:08 withInstance :: OohD a -> (forall t r. Tagged t r -> x) -> (forall t. (Ooh t) => Tagged t r) -> x 01:20:08 withInstance OohD ugh k = ugh k 01:20:08 and this is ~~ambiguous~~ 01:20:44 also all swedes <-- erm i was contrasting him with Vorpal. 01:20:53 yes it could be cave man grunts or a Haskell program 01:20:55 highly ambiguous 01:20:58 -!- Patashu has quit (Ping timeout: 246 seconds). 01:22:26 http://nextround.net/wp-content/uploads/2009/03/luther_burger.jpg 01:24:09 hey copumpkin HOW DO DICTIONARIES WORK 01:24:09 http://tvtropes.org/pmwiki/pmwiki.php/TroperTales/Akinator 01:24:15 beats me 01:24:20 I'll figure it out later 01:24:43 oerjan: i think copumpkin needs some convincing :P 01:24:53 get me a burger like that 01:24:54 copumpkin: u r lazy, stop figuring-out-later 01:25:02 tell us now 01:25:05 i agree 01:25:20 olsner: you cannot use lazy as an insult on a haskeller 01:25:24 *NAO 01:26:10 :O 01:26:28 http://www.reddit.com/r/fifthworldproblems/ good redesign 01:27:04 iirc fifthworldproblems is not a very typical reddit. 01:27:13 *sub- 01:27:19 if it wasn't completely horrible it wouldn't appear here 01:27:32 oerjan: you could click the link :P 01:27:44 " Earlier this year hackers raided the computer networks of RSA (EMC), a marquee security firm that protects other companies computers. They stole some of the most valuable computer code in the world, the algorithms behind RSAs SecureID tokens, a product used by U.S. government agencies, defense contractors, and major banks to prevent hacking. It was like breaking into a heavily guarded locksmith and stealing the master combination tha 01:27:44 t opened every vault in every casino on the Las Vegas Strip." 01:27:46 (you may not quite understand without seeing http://www.reddit.com/r/circlejerk's new design) 01:27:48 http://www.businessweek.com/printer/magazine/cyber-weapons-the-new-arms-race-07212011.html 01:28:01 ok if it is that obvious that i haven't clicked the link, it might be worth doing so 01:28:07 Um, something is really really wrong if the _algorithms_ are the crucial part 01:28:19 oerjan: click the circlejerk one first 01:28:27 or it'll make even less sense than fifthworldproblems does 01:28:34 ehm, Shelo seems to be up to something irrelevant 01:29:09 -!- Sgelo has changed nick to Sgeo. 01:29:15 I am not Shazam. Or Shelo. 01:29:38 that would... explain it 01:29:52 oerjan, you can tell because they're speaking icelandic 01:30:03 kmc: wat 01:30:30 kmc: hurr durr linkur durr gurr 01:30:45 SA did the ironic Ron Paul fanclub already 01:31:04 kmc: so did everyone, last election 01:31:05 ... and kmc stopped? 01:31:22 circlejerk does not aim for unique humour :P 01:31:33 nobody knows how to learn erlang 01:31:44 ok so kmc and olsner make sense to each other 01:31:49 oerjan and olsner sometimes do but only sometimes 01:31:50 i watched Erlang: The Movie three times 01:31:53 and kmc makes no sense to oerjan 01:31:57 and I'm confused 01:31:58 elliott: no I don't 01:32:10 (I hope) 01:33:10 i gather Erlang is the best language to use if you want to talk to a Swedish person from 1987 on the telephone 01:34:11 I think Swedish would be way better 01:34:49 and I also think I will momentarily be way non-caring 01:35:11 sjá hestarnirnarni 01:41:16 :( 01:41:50 iohooklmlm 01:42:42 does anyone know where the details of ghc's datatype memory representation are on the trac 01:43:55 i think i looked at it once... 01:45:19 what ever came of the tweetable interpreter in C idea 01:45:52 Gregor is presumably still working on it 01:47:35 i was wondering if you could do a string rewriting system of some kind 01:48:19 elliott: http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects#DataConstructors 01:48:35 kmc: I thought of that too, but couldn't figure out a way to make it short enough. 01:48:50 oerjan: that could be more helpful... 01:48:56 kmc: == strings in C == long 01:49:04 kmc: My current one is 116 characters and has 32 bit addressing. 01:49:40 size-constrained programming is fun 01:49:48 i enjoyed http://io.smashthestack.org:84/intro/ 01:49:53 elliott: it's also out of date, vectored returns have been abolished (as i discovered last i was browsing around these pages) 01:50:48 oerjan: sigh :( 01:51:23 kmc: http://golf.shinh.org/ ftw (ok the latest challenges have sucked a bit) 01:51:37 also, I still have the code for that boot sector Forth... 01:51:44 IIRC I fixed the stupid bug I have 01:51:45 elliott: there does not seem to be a specific case for instance dictionaries, though 01:52:03 oerjan: well it's just a data type. it's a matter of getting the right info table things 01:52:12 kmc: int*a,b[9<<20];main(){a=b;while(scanf("%d",a++)>0);a=b;while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} 01:52:15 kmc: Thoughts appreciated :P 01:53:15 kmc: do you know anything about the representation of regular data types, then? :-P 01:53:37 yeah, a data value is a (possibly tagged) pointer to a StgClosure or whatever 01:53:48 which has an info pointer and field values 01:53:49 elliott: oh hm the end of this page which i went through might be relevant then http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/DataTypes 01:54:17 Gregor: why do you reset a to b after the first while loop? 01:54:19 ok it doesn't say much 01:54:24 kmc: what do the info pointers look like :P 01:54:26 as in, what they point to 01:54:32 some C struct 01:54:39 REAL HELP :P 01:55:05 grab a ghc tarball and look in include/ and rts/ 01:55:14 Gregor: also I'm guessing the semicolon at the end of the last line of main is required? 01:55:51 CakeProphet: I reset a to b because otherwise *a is false. 01:56:00 CakeProphet: Yes, of course the semicolon is required ... 01:56:27 I ask because this is not required in Perl and I believe a few other languages. 01:56:50 Depends on whether it's a separator or terminator. 01:56:53 In C it's a terminator. 01:57:19 I wonder what PAP actually stands for 01:57:31 post apocalyptic produce 01:58:32 Gregor: I'm trying to think of a macro that would reduce the size, but #define is quite a bit of character cost 01:58:35 elliott, partial application 01:58:54 CakeProphet: Newline is terrible for twitter 01:58:57 kmc: huh. 01:59:34 http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects 02:00:25 yes, oerjan linked that :P 02:00:30 apparently it's outdated though 02:00:34 oh yay it has stuff about info table 02:00:34 s 02:00:44 Gregor: well twitter is terrible for programs so who's at fault here? 02:00:45 maybe it'll tell me what typeclasses' look like 02:00:48 dunno how outdated but it does describe what a PAP is 02:00:53 CakeProphet: ... is it you? 02:01:04 ...no. never. 02:03:32 I'm guessing using for instead of while is equally costly because you can't omit the ;; 02:03:59 int*a,b[9<<20];main(){a=b;while(scanf("%d",a++)>0);while(*--a)a+=(a[*a]-=a[a[1]])?4:a[2];while(a>b)putchar(*--a);} // just saved two characters :) 02:04:11 Or wait, did I ... maybe it's unusable now :P 02:04:23 Ffffu, never mind :P 02:04:26 Don't woyk. 02:05:24 Gregor: show original code again? 02:05:31 int*a,b[9<<20];main(){a=b;while(scanf("%d",a++)>0);a=b;while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} 02:05:33 * elliott is sceptical that 9<<20 will work 02:05:46 And yet ... it does! 02:05:56 It's a compile-time constant *shrugs* 02:06:02 b[9<<20];main(a,z){while(scanf("%d",a++)>0);a=b;while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} 02:06:05 this might work 02:06:16 a is an int, not a pointer. 02:06:20 Clever though. 02:06:53 That is, in your code, a is an int. It should be a pointer. 02:07:25 *a;b[9<<20];main(){a=b;while(scanf("%d",a++)>0);a=b;while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} // apparently this works though lol 02:07:36 Gregor: Yeah, but you can use pointers as int a lot of the time. 02:07:42 Try it gcc set to K and R? 02:07:51 If it can even do K and R code. 02:07:55 It can't :P 02:07:56 Gregor: int is implicit obviously 02:07:57 But it works in C99 02:08:02 Which is crazy. 02:08:02 It does? 02:08:05 Like, my code? 02:08:11 Oh 02:08:14 No, mine 02:08:19 int has always been implicit, so yeah 02:08:22 Gregor: Can't you do 02:08:25 elliott: But your code is wrong, because a is an int, not an int* in yours. 02:08:27 b[9<<20],*a=b; 02:08:28 ? 02:08:32 Hm 02:08:36 Gregor: And yes but you can dereference an int if your compiler is lax enough 02:08:51 lol 02:09:01 elliott: Apparently *a=b worked, at least GCC-wise :P 02:09:05 I'll try this in OpenWatcom some time :P 02:09:09 Gregor: It's obviously valid 02:09:11 111 now :) 02:09:22 "a=b;while(scanf("%d",a++)>0);a=b" 02:09:24 Gregor: Why not 02:09:25 elliott: Yeah, it is, but it's all wtf. 02:09:32 "while(scanf("%d",b++)>0);" 02:09:32 Or hmm 02:09:36 Can you increment an array :P 02:09:38 No :P 02:09:39 I guess not 02:09:40 b[9<<20];*a=b;main(){while(scanf("%d",a++)>0);a=b;while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} 02:10:05 Gregor: a+=(a[*a]-=a[a[1]]) 02:10:09 I refuse to believe that's well-defined. 02:10:13 I knew that int was the default type for everything, what I /didn't/ know is that you can still make pointers and arrays without saying "int" 02:10:18 There is _definitely_ sequencing point junk going on there. 02:10:42 > (length "#define W(x) while(x)\n") - (length "while" * 3 + 3) 02:10:43 4 02:11:02 elliott: Uhh, no? a doesn't change on the RHS, so there's only one order that can be implemented in. Now, that may very well still be undefined by spec, even though it's only implementable one way ... 02:11:05 L( 02:11:09 *:( 02:11:20 or wait 02:11:27 Gregor: Hmmmmmmmmmmmmmmmmmmmmmm 02:11:32 > (length "#define W while\n") - (length "while" * 3 + 3) 02:11:33 -2 02:11:34 fizzie: Deewiant: Language lawyer ping 02:11:35 :) 02:11:44 CakeProphet: Requires \n. 02:11:55 yeah I'm juts golfing. twitter is lame. :P 02:11:59 Gregor: Oh hmm, the ?: might count as a sequencing point 02:12:10 elliott: That'd be convenient, but I doubt it :P 02:12:19 Gregor: OK so scanf is lame, surely you can input it in a nicer way. 02:12:36 elliott: using e.g. getchar is one character more. 02:13:02 Gregor: Arglist? 02:13:16 Hope that the pointers to the arguments work out right :P 02:13:24 Hmm, I wonder if POSIX lets you send arbitrary pointers over exec 02:13:26 > (length "#define W while\n") - (length "while" * 3 - 3) 02:13:27 4 02:13:29 Well 02:13:31 Arbitrary integers as pointers 02:13:53 I think that is the correct calculation. you are only losing 12 characters from shortening the whiles. 02:13:59 Uhh, no? That ... makes no sense. Your memory layout is unrelated on the other side. 02:14:14 UNLESS 02:14:25 > (length "#define W while(\n") - (length "while(" * 3 - 3) 02:14:26 2 02:14:33 Gregor: Why can't I just execv(...,(ptr)99,(ptr)909090) X-D 02:14:40 Yeah OK it wouldn't work 02:15:03 elliott: Idonno about POSIX, but the ELF ABI definitely don't work that way :P 02:15:14 It copies the args into the top of the stack when you call. 02:15:19 So they have to be ... y'know ... strings. 02:15:56 _You're_ a string. 02:16:24 while(a>b)putchar(*--a); 02:16:26 Gregor: How about: 02:16:28 putchar(b); 02:16:31 Just null-terminate your output 02:16:32 > (length "#define W ;while(\n") - (length ";while(" * 3 - 4) 02:16:33 1 02:16:39 bah 02:16:40 elliott: ITYM puts 02:16:46 Yeah yeah 02:16:52 Gregor: *a=0;puts(b); 02:16:52 elliott: b is an int * 02:16:59 elliott: So that's platform-specific behavior. 02:17:03 Gregor: So? It's not UB 02:17:09 I don't think 02:17:17 You might need to cast via void-pointer to be pedantically correct 02:17:19 Or union 02:17:20 Hello? Endianness. 02:17:26 yes, it's platform 02:17:33 but so what, just mangle it afterwards 02:17:38 As it stands, this is platform-neutral. 02:17:44 I wurve that :P 02:17:46 Your mom is platform neutral 02:17:52 Anyway no it isn't because int is platform-specific 02:17:56 You are living a lie 02:18:39 Mmmmmmmm ... you can write code that supports ints of any size >= something. So, although it exposes platform differences, you don't need to adapt to them to write code. 02:18:59 Living 02:19:00 a 02:19:00 lie 02:19:02 (Because people will totally write code in this :P ) 02:19:27 if the first while had a ; in front of it then my macro would be exactly equivalent to the current code in byte length. :P 02:19:33 b[9<<20],*a=b;main(){while(scanf("%d",a++)>0);a=b;while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];for(;a>b;putchar(*--a));} 02:19:35 Darn, same length 02:20:59 Gregor: Your current output is limited in length 02:21:05 So I propose return*a; 02:21:08 Which is also limited but oh well 02:21:14 Oh come on :P 02:21:39 I know I didn't set strict requirements, but I also don't want to make it so you can't write 99 bottles of beer :P 02:22:36 I don't like your practice-oriented thinking 02:22:46 I'm walkin' a line here X-P 02:22:54 Gregor: b[9<<20],*a=b;main(){while(scanf("%d",a++)>0);for(a=b;*a;)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} 02:22:57 One fewer byte 02:23:13 Oh, clever 02:23:19 Gregor: b[9<<20],*a=b;main(){for(scanf("%d",a++)>0,a=b;*a;)a+=(a[*a]-=a[a[1]])?3:a[2];while(a>b)putchar(*--a);} 02:23:21 Many fewer 02:23:38 One hundred and three bytes :) 02:23:40 oh so you can omit the ;'s 02:23:53 er wait 02:23:54 nevermind 02:23:55 CakeProphet: ... no. 02:23:58 Whoah, wtf just happened though. 02:24:01 * CakeProphet read the code. 02:24:03 I have to re-understand this code X-D 02:24:21 elliott: Wait ... I'm not confident that your resultant code ... does anything vaguely sensible. 02:24:45 Gregor: Why not? 02:24:53 Gregor: , sequences. 02:25:00 before scanf was in a loop though. 02:25:04 now it is the initializer 02:25:04 it seems to me like it reads only one int 02:25:06 for(a;b;c)d; is like a;while(b){d;c;} 02:25:18 And a,b;c 02:25:20 is like a;b;c roughly 02:25:21 Yeah, with scanf as an initializer this is nonsense. 02:25:24 Gregor: So my transformation is perfectly valid. 02:25:26 Uhh, why? 02:25:30 Oh 02:25:30 Duh 02:25:31 Because it was in a loop ... 02:25:35 Yeah, right >_> 02:25:36 Hmm 02:25:46 Your program can be no more than one int :P 02:25:59 -!- sebbu2 has joined. 02:26:23 Gregor: Well, as long as int is big enough 02:26:29 elliott: It ... is not :P 02:26:47 elliott: Every program will immediately terminate. 02:27:09 That's such goal-oriented thinking. 02:27:17 Mine is size-oriented, which is your original goal. 02:27:29 I have many goals! 02:27:34 Size is just the packaging of those goals :P 02:27:51 more #define less twitter plz 02:28:01 CakeProphet: #define iz sukk 02:28:11 Gregor: So are we golfing the Kolgomorov complexity of an FSM 02:28:14 But #esoteric ... #esoteric is awesome 8-D 02:28:24 Can we do it in a language that isn't C so that we can actually acheive TCness :P 02:28:45 elliott: Suggestion? sed maybe? 02:28:45 > (length "#define W(x);for(;x;);\n") - (length ";while();" * 3 - 4) 02:28:46 0 02:28:50 -!- zzo38 has joined. 02:28:52 -!- sebbu has quit (Ping timeout: 245 seconds). 02:28:52 It has to be terrible :P 02:29:04 Gregor: HaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskellHaskell 02:29:04 oh that macro won't even help 02:29:11 Or J 02:29:15 J has a really tiny Factran interpreter 02:29:17 Like forty bytes 02:29:21 Gregor: perl for great win 02:29:22 elliott: Can you write one-line Haskell programs DURPADURP LOLOLOL I DONT GET SYNTAXES 02:29:36 Yes 02:29:40 ({~1i.~(=<.))@:* 02:29:44 TC interp in J 02:29:54 What's J though :P 02:30:08 Gregor: ...dude, really? 02:30:14 Please tell me you know of J :P 02:30:31 Gregor: It's the really concise ASCII APL derivative? Array language? 02:30:32 Ahhhhhhnope 02:30:35 Come on, it's been talked about tons in here. 02:30:43 I haven't listened :P 02:30:45 a FRACTRAN interpreter in Haskell could be pretty short 02:30:51 Gregor: while elliott seems to be a Haskell fanboy, he actually secretly worships J. 02:30:58 and only talks about it occasionally to keep it a secret. 02:31:05 J is pretty close to a perfect language, apart from its IO facilities which suck and its lack of bignums 02:31:13 But it's pretty much perfect in its niche 02:32:49 oerjan: ooh, someoen wrote a fractran self-interp 02:32:59 whee 02:33:02 http://www.math.uiuc.edu/~beder/interpreter.fr 02:33:13 details at http://stackoverflow.com/questions/1749905/code-golf-fractran/1773868#1773868 02:33:30 http://www.math.uiuc.edu/~beder/interpreter.frp 02:33:36 Perl is the best choice for all golfs. 02:34:58 oerjan: oh wow, someone made a tiny one 02:35:02 http://stackoverflow.com/questions/1749905/code-golf-fractran/1802570#1802570 02:35:13 only 84 fractions 02:35:22 and fast, too 02:37:10 Gregor: with Perl your golfs will be butiful and eliphant 02:37:18 Pffff 02:37:24 You guys 02:37:27 And your not-C languages. 02:38:12 though J looks like an excellent choice from what I can tell. 02:38:14 better than Perl. 02:38:17 for golfing 02:38:30 So does anyone know OpenCL 02:38:31 At all 02:38:31 Ever 02:38:35 I'm going to kill someone 02:38:50 nm: /usr/lib/nvidia-current/libOpenCL.so: no symbols 02:38:54 REVEAL YOUR SECRETS 02:39:13 elliott: I know I click a little black box with a > and _ in it on my top panel to open command line 02:39:16 is that the same thing? :3 02:39:27 I am glad to help. 02:39:37 why did you type that and hit enter 02:39:46 NO I DONT WANT TO WATCH A VIDEO TUTORIAL YOU SHITFACKS 02:40:26 http://developer.amd.com/sdks/AMDAPPSDK/assets/AMD_APP_SDK_Getting_Started_Guide_v2.4.pdf 02:40:27 omg 02:40:28 you shits 02:40:29 die 02:40:30 in a fucking 02:40:30 fire 02:40:52 OK MAYBE THER EIS A CUDA TUTORIAL MAYBE I WONT KILL EVERYONE 02:41:25 elliott - future serial killer 02:42:58 http://www.malevole.com/mv/misc/killerquiz/ ? 02:43:45 I should make a language that consists entirely of Unicode character commands and nothing else 02:43:59 CakeProphet: way ahead of you, years ago 02:44:09 FUCK YOUUUU 02:44:58 > let f l=unfoldr(fmap(join(,)).find((<2).denominator).map(*)l)in f[3%2]72 02:44:59 Couldn't match expected type `GHC.Real.Ratio a 02:44:59 ... 02:45:07 grmbl 02:45:15 http://www.codeproject.com/KB/GPU-Programming/IntroToOpenCL.aspx ;; so I finally find a non-video tutorial about OpenCL and it's using fucking C++ bindings. 02:45:48 "See the OpenCL™ 1.0 specification for the corresponding C API." 02:45:54 god i hope itsfreely available 02:46:02 YES IT IS YES YES YES 02:46:06 YESSSSSSSSSSS 02:46:07 http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/ 02:46:10 YESSSSSSSSSSSSS 02:47:04 > let f l=unfoldr(fmap(join(,)).find((<2).denominator).mapM(*)l)in f[3%2]72 02:47:06 [108 % 1,162 % 1,243 % 1] 02:47:22 -!- GreaseMonkey has joined. 02:47:22 -!- GreaseMonkey has quit (Changing host). 02:47:22 -!- GreaseMonkey has joined. 02:49:04 oh my god 02:49:07 http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf 02:49:08 look at 02:49:10 the bullet points it uses 02:49:19 I'm pretty sure that's one of the Word defaults 02:49:20 and it is so 02:49:21 terrible 02:49:22 ???? 02:49:59 * Sgeo ponders the Reia language 02:52:13 #esoteric-minecraft IS A POLICE STATE BAAAAAWWW 02:53:14 I'll unban me if you find a decent chunk of public domain OpenCL sample code because this reference is terrible 02:53:17 By me I mean you 02:54:02 Hi, I'm Kafka the Cat, and I'm here to take you on a quick tour of the Reia programming language. 02:54:05 http://reia-lang.org/images/kafka.jpg 02:54:15 hi kafka 02:54:19 its staring into my soul 02:54:47 I think that's what Kafka's meant to do 02:58:29 so I'm trying to find what's interesting about reia 02:58:38 sgeo do you know 02:59:10 elliott: http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=opencl+sample 02:59:13 unban? 02:59:34 I guess some of those might work, I'll look at them in a minute 03:00:09 * CakeProphet has mad skills 03:00:31 reia commit message: Get rid of the weird ass "Main" module which made no sense, factoring it into 03:00:32 It's not my fault you googled with samples and me with examples 03:00:34 the System module. Oh, and "string".puts() is now officially the way you should be printing strings in Reia. If someone asks you for a Reia hello world and you tell them System.puts("Hello, World!") you're DOING IT WRONG 03:00:56 elliott: lulz I'm just mad at google knowledge dawg 03:01:05 bitches be all like "yo how u get so god?" 03:02:35 I be like "whatev iz jus how i roll" 03:05:03 Hight Dynamic Range Rendering with God Rays Effect Sample 03:05:05 ITS TOO COMPLIC;ATED 03:05:11 and google is mad at understanding CakeProphet spelling 03:06:06 none of the reia examples on the reia github are interesting they're all boring 03:06:50 googling "lol y cats land on feet yo" gives some good hits 03:06:56 monqy, a not terrible language on the Erlang VM? 03:07:09 !wacro 03:07:10 ETOGRHS 03:07:10 how is it not terrible 03:07:18 and how are other languages on the erlang vm not not terrible 03:07:33 monqy, is Erlang considered a decent language? 03:07:43 Or are there other languages on the Erlang VM that I don't know about? 03:07:48 "the amazing power of blocks" 03:07:49 Erlang is decent, yes. 03:07:53 I forget nearly everything I ever knew about Erlang 03:08:22 learned the basics one day, never bothered to use it, forgot it 03:08:49 the story of monqy and erlang 03:09:07 it has a very dependable standalone platform, good concurrency support, and allows hot swapping of code. The language itself is somewhat mediocre I guess but the platform is pretty solid. 03:09:11 evil scientist project #663: breed cats to land on head 03:09:21 what does very dependable standalone platform even mean 03:09:26 "the interpreter doesn't segfault much"? 03:09:29 yes. 03:09:38 standalone as in standalone 03:09:44 dependendable as in dependable. 03:09:44 well I certainly want a segfaulty interpreter 03:09:46 er 03:09:47 platform as in platform. 03:09:49 I don't want that 03:09:50 it's all very simple. 03:09:54 but I guess saying I want it works too 03:10:28 though if I was constructing it in that manner I would have started with "yes" and left out the "certainly" 03:10:48 are there people who actually understand Haskell's type system, but still prefer dynamic types in general? 03:10:56 i don't know many such people, but i spend all day talking to fellow Haskell zealots 03:11:18 kmc: the only examples I know involve people whose self-asserted understanding of types I doubt 03:11:19 kmc: I have a good grasp of Haskell's type system but also find dynamic typing to be a good approach as well. 03:11:19 I remember disliking erlang's syntax and type system 03:11:22 What would Bracha count as? 03:11:23 most of the arguments against i hear are "Java is so verbose!" and "dynamic types give me a single ad-hoc variant type!" 03:11:23 there's one of them 03:11:28 kmc: I am a language agnostic. :P 03:11:38 CakeProphet: tell me about how much you love PHP then? 03:11:43 >_> 03:11:51 PHP is like perl if perl were not a good language. 03:11:54 elliott, one of my classes will involve PHP 03:11:54 and not perl. 03:11:56 :( 03:11:57 i use dynamic types in Haskell sometimes 03:12:05 lets laugh at sgeos class 03:12:07 Sgeo: i don't care, we've told you to transfer about nine billion times 03:12:09 ha h aha :''( 03:12:15 you've got one person to blame (the person is you) 03:12:20 it seems clear that checking should be the default, and checks disabled when necessary, rather than the opposite 03:12:29 elliott: come on can't I be neutral and also have strong opinions of bad languages, as long as my preferred languages go across the spectrum? 03:12:41 it still makes me neutral about categories of languages. 03:12:47 kmc: haskell programs still do dynmic type checking, mind you. like input validation. 03:12:51 categories of languages? 03:12:55 classifications 03:12:58 whatever term you want 03:13:12 sure 03:13:13 dynamic typing, static typing, lazy, strict, functional, OO, procedural, etc 03:13:20 you know, categories. of. languages. 03:13:41 mostly the categories are bullshit 03:13:52 which is why I asked 03:13:52 at least if you want them to form some kind of taxonomy 03:14:00 there's a many-dimensional space of language attributes 03:14:10 which combine and co-exist and interact in all kinds of interesting ways 03:14:19 I want them to form words that can describe what I am talking about. is that like a taxonomy? 03:14:52 i feel the main reason to rigidly divide the world into functional and OOP languages is to justify ignoring "functional languages", or to justify hating on OOP languages without understanding them 03:14:52 no I don't think that they're discrete categories. 03:16:04 * oerjan considers static type checking of input by quantum suicide 03:16:04 honestly what's wrong with having a word to describe an observed characteristic shared by multiple languages? 03:16:15 is it bullshit? 03:16:45 every universe in which someone tries sql injection to your service is destroyed. 03:17:41 oerjan: sounds like a risky security mechanism. 03:17:52 unless we're the alpha timeline of course. 03:17:55 then everything is fine. 03:18:35 if there's quantum immortality, we're fine. 03:19:17 OpenCL is fucking weir 03:19:18 d 03:19:26 I should write a Haskell DSL that compiles to it and then never use it again 03:19:27 elliott: Well, sort of. Quantum immortality, means, even if you are dead, you are still live in other timeline, therefore you can still observation and doing everything like before. 03:19:31 Just not in the other timeline. 03:20:11 I think Haskell's type system is mathematically good type system. You can use classes in some cases too. 03:20:17 HOLY SHIT THESE EXAMPLES ARE TERRIBLY-WRITTEN >_< 03:20:20 ciErrNum = clEnqueueWriteBuffer(cqCommandQueue, cmDevSrcA, CL_FALSE, 0, sizeof(cl_float) * szGlobalWorkSize * 4, srcA, 0, NULL, NULL); 03:20:21 ciErrNum |= clEnqueueWriteBuffer(cqCommandQueue, cmDevSrcB, CL_FALSE, 0, sizeof(cl_float) * szGlobalWorkSize * 4, srcB, 0, NULL, NULL); 03:20:23 Or rather the API is terrible 03:20:25 But jesus 03:21:43 "oclCheckErrorEX" I see Microsoft had their way with this API >_< 03:23:02 what of the alternatives to opencl, assuming they're good and exist?? 03:24:39 as duration of computer use t increases, number of idling terminals n increases 03:24:42 CakeProphet's law. 03:28:34 monqy: CUDA, nvidia-only and basically deprecated and probably no nicer 03:28:48 ok I don't have OpenCL.h. I guess I need to download the "SDK" 03:29:03 so much for an open fucking standard, the .hs are available online but I doubt that'll do me much good 03:29:33 On the same day Khronos Group announced the new OpenCL v1.1 specification update (June 14th, 2010), NVIDIA released OpenCL v1.1 pre-release drivers and SDK code samples to all GPU Computing registered developers. Log in or apply for an account to download latest NVIDIA Drivers and Toolkits. 03:29:36 I'm going to kill you. 03:29:39 I'm going to eat your brains. 03:29:51 I am not telling you where I fucking live you pieces of crap aaargh give me the fucking header files 03:33:06 uhh elliott 03:33:10 http://www.khronos.org/registry/cl/ ????? 03:33:17 http://www.khronos.org/registry/cl/api/1.1/opencl.h ????? 03:33:25 monqy: Yeah I found those 03:33:28 or is that not the right file 03:33:28 oh 03:33:39 elliott: unban plz 03:33:46 <3 <3 <3 <3 <3 <# <# 03:34:06 CakeProphet: The links you found didn't really help me, but fine 03:34:10 No more insulting greatness, though 03:34:49 elliott is the worst op of all. 03:35:02 CakeProphet: noted. 03:35:09 his greatness is, well, not great. 03:35:15 * oerjan cackles evilly 03:35:16 oerjan: excuse me, I banned him for insulting the greatest musical work of our century. 03:35:23 It would be crime to let him stay. 03:35:25 oh? 03:35:39 -!- mauke has quit (Disconnected by services). 03:35:42 -!- mauke_ has joined. 03:35:43 oerjan: yes (Insane Clown Posse collaborating with Jack White to cover Mozart's Lich Mich im Arsch, obviously) 03:36:34 I ... SEE 03:37:15 -!- MDude has changed nick to MSleep. 03:37:17 * CakeProphet is by defintion, unbannable for any legitimate reasons 03:38:10 -!- mauke_ has changed nick to mauke. 03:39:32 CakeProphet: Hey, I'm going to reban you again, because the nvidia code you linked me to uses fucktons of helpers that I can't find the definitions of 03:40:13 ban google lulz 03:41:02 I thought I did was good??? 03:42:50 no never 03:53:15 OpenCL error on line 37: CL_OUT_OF_HOST_MEMORY 03:53:15 I.. 03:54:27 Oh, hmm. 03:55:57 monqy: i am just going to write this one program and then write a haskell library that symbolically compiles code to OpenCL so that I never have to do this again...... 03:57:43 a good idea 04:02:24 -!- ive has joined. 04:04:21 aren't there a couple of those already? 04:04:54 kmc: Are you thinking of GPipe? 04:04:57 That just does OpenGL. 04:05:08 OpenCLRaw library: The OpenCL Standard for heterogenous data-parallel computing 04:05:11 is the only grep on hackage for opencl 04:05:30 There's a CUDA binding too but it's low-level. 04:05:37 I imagine you _are_ thinking of GPipe since it was publicised a while back. 04:05:37 there's Nikola 04:05:40 which might be CUDA too 04:05:58 Hmm, no Nikola on Hackage but I think I've heard of it before. 04:06:12 Still, it will inevitably be inferior to what I write. 04:06:28 "We describe Nikola, a first-order language of array computations embedded in Haskell that compiles to GPUs via CUDA" 04:06:30 kmc: Yeah, CUDA. 04:07:03 there's also vague mutterings about a GPU backend to Double Penetration Haskell 04:07:11 sorry Data Parallel Haskell 04:07:25 MEH 04:07:30 That requires, like, hacking GHC and stuff. 04:07:51 weren't you begging me for details of the StgClosure struct layout earlier? 04:08:18 kmc: Yeah, but I was doing it all from within the cosy confines of a Haskell file. 04:11:34 kmc: Oh, I forgot that's why I disliked DPH 04:11:36 (No typeclasses) 04:17:07 kmc: Thanks for the pointer to Nikola, I think I can steal a lot of things from this paper 04:18:25 cool 04:24:41 elliott: you not asleep yet? 04:25:30 copumpkin: You not asleep yet? 04:25:34 And furthermore: What _is_ sleep? 04:25:38 ah 04:25:42 one of those 04:26:05 -!- derrik has joined. 04:28:38 -!- augur has joined. 04:33:21 HOW DOES OPENCL EVEN WORK 04:33:24 WHAT IS LIFE 04:35:01 HOW CAN YOU BE OUT OF HOST MEMORY 04:35:02 HOW 04:35:32 it was leaked for the use of skynet 04:42:47 Hey oerjan 04:42:52 YOU GET TO HELP ME WITH MY OPENCL COED 04:43:04 Why is Opeth so good? 04:43:16 is it because they are swedes? 04:43:19 make my code work 04:43:20 or die 04:43:24 You have free will. 04:43:35 but I believe in determinism 04:43:38 therefore I don't 04:52:25 hey oerjan how does opencl........ 04:52:27 work 04:54:09 oerjan: Are you going to HacBeans? 04:54:15 elliott: Are you going to HacBeans? 04:54:22 no. 04:54:37 shachaf: Maybe if you can tell me what typeclass dictionaries look like in memory I will :-P 04:54:57 elliott: Just like any other kind of dictionary? 04:55:01 elliott: also, i know almost nothing about opencl. 04:55:29 oerjan: Neither do I! 04:55:34 shachaf: Woo 04:55:41 what a coincidence! 04:58:27 How can you run out of memory good GOD 04:58:32 I'm going to try PyOpenCL 04:58:40 pyopencl... 04:58:53 how are you running out of memory 04:58:53 how 04:58:57 how does that happen 04:59:01 or work 05:00:12 elliott: just out of curiosity, why are you doing all that unsafe stuff to pass custom dictionaries, rather than just constructing a custom instance? 05:00:38 copumpkin: You can't do that at runtime 05:00:57 data OrdInstance a = OrdInstance (a -> a -> Bool) 05:01:00 you can, effectively 05:01:00 data OrdInstance a = OrdInstance (a -> a -> Bool) a 05:01:12 instance Ord (OrdInstance a) where 05:01:14 That doesn't really work 05:01:17 :P 05:01:22 you can't guarantee they're the same? 05:01:26 class Foo a where bar :: (forall f. f a -> g a) -> g () 05:01:43 I mean you can do it for each individual class 05:01:53 But I'm not sure you can really do it in general 05:01:57 I might be wrong 05:02:01 But anyway bundling it with values like that is gross 05:02:14 copumpkin: Anyway, this started out as something which let you define an instance for a newtype and then use that as the instance for the main type in context 05:02:29 ah 05:02:32 i.e. define a crazy show instance for a newtype over Ints and then use it as an instance for Ints in a certain context 05:02:49 I'm just trying to generalise that by coercing the obvious record translation of a class into my existential dictionary type 05:03:17 Which lets you construct, at runtime, an arbitrary instance record for a type, and then use it as an instance for that type for some code 05:03:50 The problems are twofold: one, GHC likes to make a bunch of correct assumptions about instances that my crazy code violates; two, I can't get record → dictionary coercion to work quite right, although I've had some very promising failures. 05:04:07 I'm focusing on the latter because I have this sneaking suspicion the former might not be entirely resolvable. 05:05:09 >>> ctx = cl.create_some_context() 05:05:09 Traceback (most recent call last): 05:05:09 File "", line 1, in 05:05:09 File "/usr/lib/pymodules/python2.6/pyopencl/__init__.py", line 346, in create_some_context 05:05:09 return Context(devices) 05:05:10 pyopencl.RuntimeError: Context failed: out of host memory 05:05:14 Oh good, at least it fails with the bindings too. 05:06:53 yes consistency of failure is a good thing . 05:07:28 hmm 05:08:15 copumpkin: Hmm? 05:08:57 Maybe my GPU just has no memory :| 05:10:20 I'll rent you my extensive GPU collection if you want 05:10:28 -!- derrik has quit (Read error: Connection reset by peer). 05:11:03 copumpkin: I'll take you up on that, if a restart doesn't fix things 05:11:06 -!- derrik has joined. 05:11:16 -!- derrik has left. 05:11:16 actually, my machine is offline right now 05:11:21 due to annoying linux issues 05:11:27 otherwise I'd probably just let you use it for free 05:11:28 The "dviout" program seems to have some mistakes in it, such as lack of all commands available in menus and keyboard configuration, and some things don't work. But in general the program works OK, and in fact it is the only one that can print. 05:11:32 assuming you don't peg my GPUs for days on end 05:12:57 -!- elliott has quit (Read error: Connection reset by peer). 05:13:08 -!- elliott has joined. 05:13:12 I want to use "CMYKX" color specials, where the "X" parameter is like "K" but is used only on printers that do not print in colors (or if color printing is turned off). 05:13:16 Now it's happy... I guess I really was out of ram :-| 05:13:17 copumpkin: no worries, I don't think any of us are into that stuff. 05:13:53 (Each parameter is one byte in range 0-255) 05:15:35 time to learn IMAP I guess. 05:16:53 * CakeProphet skims through dozens of RFCs 05:19:47 also nevermind just one actually. 05:24:35 OpenCL error on line 62: CL_BUILD_PROGRAM_FAILURE 05:24:36 NOT HELPFUL 05:25:03 hey at least it gave you a line number. 05:26:27 have now watched Erlang: The Movie four times and I still don't know Erlang 05:26:47 maybe i should read some documentation instead of just watching swedish people make telephone calls 05:27:29 nothing gets me quite as excited as writing IMAP code. 05:28:09 kmc: it's a fairly simple language. 05:28:29 there's a standard practice something-or-other that is highly confusing to me though. 05:28:51 Compilation error: :1:34: error: invalid address space for argument to __kernel function 05:28:52 __kernel void crack(__global int a) 05:28:52 I do not remember what it is called. 05:28:55 Well ooh la la. 05:29:05 elliott: what are you doing exactly? 05:29:27 OpenCL. 05:29:34 I'm cracking crypt() because why not. 05:29:35 ...right 05:29:37 oh. 05:29:50 that's interesting. I would not know how to do that. 05:31:23 What is the algorithm for using minimum storage space writing a series of natural numbers to a file, each one having a maximum, but that the maximums are not known ahead of time? 05:32:11 wow imaplib is pretty low-level. 05:32:23 pretty much just the protocol... 05:32:24 each natural number has a maximum? well, look at that 05:33:37 For example, the first item is a number ranging from zero to eight. If it is five, then the next number ranges from zero to forty-two; but if the first number is two, then the nxt number instead ranges from zero to sixteen. 05:33:48 I found imaplib easy and high-level when I needed to wrangle IMAP from Python. 05:35:59 Is there any such algorithm? 05:36:21 YAY, AN ERROR 05:36:26 I mean 05:36:26 a segfault 05:36:37 elliott: it's certainly not difficult. 05:36:57 but all of the methods are pretty much the protocol verbatim, with some exceptions. 05:37:06 raises Exceptions instead of returning the bad responses. 05:37:52 Is there anything better than just using bignums for this purpose? 05:40:06 maybe i should read some documentation instead of just watching swedish people make telephone calls <-- clearly the problem is that you don't know swedish. 05:42:08 general electric 120V soft white. 05:42:23 -!- lifthrasiir has quit (Read error: Connection reset by peer). 05:42:55 -!- lifthrasiir has joined. 05:50:23 -!- oerjan has quit (Quit: Good night). 05:50:32 -!- lifthras1ir has joined. 05:56:57 ORing a lot of search criteria in IMAP looks somewhat painful 05:58:34 elliott: the documentation is kind of poor as well. It doesn't describe how the data is returned from search, nor does it describe whether or not an exception is raised on NO or BAD responses 06:00:17 clEnqueueNDRangeKernel 06:00:19 what a function name 06:00:52 find_element_by_id_name_or_class is a good one 06:02:33 oecan i have the numbers one to eight thnaks 06:04:17 oh oerjan is gone 06:04:20 how about you monqy 06:04:25 hi 06:04:30 numbers,,, 06:04:33 numbers 06:05:17 elliott: can IMAP search keys have parens? I'm wondering how or works. 06:05:25 dunno 06:05:26 OR key1 OR key2 key3 06:05:28 or 06:05:35 OR key1 (OR key2 key3) 06:08:09 ah yes you use parens 06:08:45 parentheses with fixed prefix notation 06:08:46 smart 06:10:20 -!- itidus20 has joined. 06:12:44 this code is so bad. 06:13:16 there are lists that are initialized 06:13:18 and then never used again. 06:13:21 empty lists. 06:13:23 just sitting there. 06:13:49 they just chill out and wait to be garbage collected. 06:14:00 Typos? 06:14:09 no. possibly unfinished code. 06:14:11 or forgotten code. 06:14:17 they may have forgotten to delete them or something. 06:16:03 monqy: numbers 06:16:04 one to ten 06:16:04 thanks 06:16:06 Sgeo: you too 06:16:08 or well 06:16:09 just one to eight 06:16:10 will be fine 06:16:11 1 2 3 4 5 6 7 8 9 06:16:12 0 06:16:22 thank you friend 06:17:11 Why didn't you need 9? 06:17:46 ^nr 06:17:51 !nr 06:18:14 omg it works :DDDDD 06:18:19 monqy: -9 -99 -99 -999 -9999 -99999 -999999 -9 -9 06:18:27 is that it working 06:18:28 ok now. NOW to try it with a HUGE array. 06:18:33 is that what it's supposed to do 06:19:17 -!- itidus20 has quit (Ping timeout: 276 seconds). 06:20:23 yes 06:26:02 omg monqy it works im 06:26:05 gpuising 06:26:56 monqy: its so fast ;___; 06:27:14 // CLEANUP Recursion and stuff 06:28:11 ;___; 06:28:12 string[] data = expression.Split("==".ToCharArray()); 06:28:18 yep, that's how you evaluate infix operators. 06:28:21 just split the string 06:28:31 I thought you were under an NDA. 06:28:39 of course not. 06:28:48 okay. 06:30:02 that was for something else. 06:39:11 -!- GreaseMonkey has quit (Quit: The Other Game). 06:45:52 -!- augur has quit (Remote host closed the connection). 06:55:51 Why does Haskell say a name is ambiguous even if only one of the choices is of the correct type? 06:56:39 because Haskell doesn't care about the type 06:57:20 What do you mean by that? 06:59:15 For example, you have function with the same name but imported from different modules, it says ambiguous, both functions of same name they require different type of parameter, and you have specified the parameter which is one of those correct types. 06:59:40 I guess the idea is that it doesn't do that because that would assume one is the correct type. 06:59:45 the programmer could always be wrong. 07:00:46 so it would be more helpful to make sure the name is not ambiguous so it does not accidentally use the wrong function. 07:01:04 thus making debugging not quite so mysterious. 07:01:25 Is there an extension to make it not error for that? 07:01:29 no. 07:01:45 there is actually not a GHC extension for everything. This is surprising I know. 07:03:48 I suppose in some cases you can do it by making a class 07:03:57 zzo38: you can however, always just disambiguate your function names, either by qualifying the Module or defining two different names in your module. 07:04:09 CakeProphet: I know you can do that too. 07:06:38 practically speaking, the compiler should a) try to compile your program accurately and have it run as fast as possible, b) aid the programmer in debugging their programming. 07:07:16 so I guess requiring qualified names when names overlap is helping with part b. 07:09:03 It should be able to turn off part (b) in cases where it is unable to do part (b) 07:09:29 Actually the same should apply to part (a) in some cases, maybe. 07:09:51 it is doing part (b), you're just not listening 07:09:55 ghc -fignore-errors -fcompile-approximately 07:10:12 and asking us how to shut it up 07:10:27 your program is wrong, fix it 07:11:01 elliott: uh, imap.uid("FETCH", uid, "BODY") should just give me the body text of the email right? 07:11:12 I am having a hard time understanding the RFC :P 07:11:15 it is a dense text. 07:11:21 It should only turn on part (a) and (b) if such things are possible to do, and turn them off otherwise (possibly displaying warnings if necessary, or errors if it is unable to do what you typed at all) 07:11:48 oh dear, I've defined a convention for this discussion. 07:12:04 (Or, unable to do it properly, at least.) 07:12:13 there is officially a part a and part b now. What have I done. 07:12:50 zzo38: I think you misunderstand me 07:13:21 requiring overlapping names to be qualifies is aiding you in debugging, because even if only one of the names matches the types in that context 07:13:25 it may be the WRONG function 07:13:38 so it is in effect completely negating the point of having static typing. 07:14:34 If it is still the wrong function then it should be error. Or, if the name "a" is ambiguous and you type "b = a" without a type signature, then that is also ambiguous and is error. 07:14:56 whether or not it's the wrong function is not something the compiler knows. 07:15:02 * Sgeo proceeds to add psychic abilities to Haskell 07:15:09 the function could have the right type and still be the wrong function, because the context is wrong. 07:15:16 thus you won't receive any indication that there is an error in your program 07:15:21 and will get a logic error in that situation. 07:15:23 Next step: Making it so the programmer only has to type one line: 07:15:24 way to go compiler. 07:15:25 DWIM 07:15:25 CakeProphet: Why? It should know, if there is only one function of the correct type and only one possible type in that context. 07:15:51 Do The Opposite Of What I Mean 07:15:59 the context may be the wrong one and match the wrong function. 07:16:00 * Sgeo watches the compiler explode 07:16:05 ergo, logic error. 07:16:11 but everything types because you have ambiguous names. 07:16:20 whereas in the non-ambiguous situation you would get a type error. 07:17:13 zzo38: GHC is trying to help you make your program accurate. you should be glad. 07:17:37 I mean, for example, if "a" is ambiguous because one module it is Int, one module it is String, then you have "b = a; c :: Int; c = a; d :: Int; d = a;" and you have no other module with "a" then definition of "b" is error but "c" and "d" should not be ambiguous because there is only one possible match. 07:17:47 yes I understand completely what you are saying 07:17:50 you do not need to explain again. 07:17:59 I understand the premise and understand that it is possible. 07:18:10 What if the one possible match is the wrong match from what the programmer means? 07:18:20 exactly. 07:18:44 the compiler cannot determine the "right" function from an ambiguous set of functions because that is assuming that your code is already correct. 07:18:59 not "right" as in "types correctly" 07:19:10 "right as in "this is what I wanted the program to do at runtime" 07:19:15 *"right" 07:19:23 Sgeo: Then the programmer made a mistake by specifying the wrong type. 07:19:45 zzo38: and won't know until he runs the program. might as well use Python or Perl. 07:20:00 And CakeProphet is saying that the entire point of type checking is to help prevent the programmer from making mistakes as much as possible. 07:20:28 I always specify the type when defining a function. 07:22:02 that's not really the problem though. 07:22:17 the problem is that your context has a mistake, a bug if you will 07:22:26 and then GHC matches the wrong function 07:23:16 the functions, whether explicitly typed or not, are in the wrong place, but GHC just goes ahead and matches a function from a list of ambiguous functions and everything types correctly 07:23:30 even though the program is wrong and the situation can be avoided if the names were non-ambiguous 07:23:58 you may not have just two ambiguous choices. 07:24:02 @hoogle fromList 07:24:02 Data.HashTable fromList :: Eq key => (key -> Int32) -> [(key, val)] -> IO (HashTable key val) 07:24:02 Data.IntMap fromList :: [(Key, a)] -> IntMap a 07:24:02 Data.IntSet fromList :: [Int] -> IntSet 07:24:06 why are you guys beating your heads against a brick wall 07:24:08 out of curiosity 07:24:09 you could have 3, 4, 5, ... etc 07:24:12 ? 07:24:19 elliott: masochism 07:25:07 programmers who enjoy programming obviously also enjoy pain. 07:26:27 good thing i hate programming 8) 07:26:38 If there is more than one choice of the correct type then it should still be error, though. 07:26:45 yes obviously. 07:26:59 "The programming language used to write computation kernels is based on C99 with some limitations and additions. It omits the use of function pointers, recursion, bit fields, variable-length arrays, and standard C99 header files." 07:27:25 -!- Nisstyre has joined. 07:28:15 zzo38: even though the scenario I described isn't necessarily going to happen or even be likely to happen, it can still happen and really you are just better off avoiding it. 07:28:25 so add a M. to the front of your names and be happy. 07:28:46 or write your extension and be happy 07:28:47 doesn't matter. 07:29:05 Or, in some cases, I can write a class. 07:31:31 A class might not work in all cases, but it should work in many cases where such things is useful to have. 07:31:48 add enough parameters and it will work most likely. 07:35:18 class FromListable t a | t -> a where fromList :: [a] -> t 07:35:54 not sure if the fundep is necessary. I don't really understand when fundeps are needed. 07:35:56 -!- ive has quit (Quit: leaving). 07:36:50 when things would be ambiguous otherwise 07:40:44 RFCs are kind of fun to read actually. 07:41:50 I remember when I first started reading about telnet when I started working on my first MUD. 07:42:05 I think that's when I first understood the idea of an interface in programming. 07:42:33 haha 07:43:48 telnet is neat because it's basically an interface interface. 07:44:12 "Please support this feature" "Okay I will support this feature" 07:44:42 telnet is horrific. 07:44:52 yes, also that. 07:45:03 does anyone know how DES works 07:45:11 BUT IT IS MY FIRST PROTOCOL. MY FIRST PROTOCOL-LOVE. 07:46:16 hmm, I think I'll wait for ais 07:48:46 I think telnet is not too bad. It is good. Almost everything is optional, anyways. If you do not need telnet commands, you can use raw terminal connection; but usually you would use telnet commands to ensure terminal compatibility. 07:49:43 okay so are attachments part of the DATA message in SMTP? 07:49:45 * CakeProphet is so confused. 07:49:56 -!- itidus20 has joined. 07:50:16 CakeProphet: Yes; the entire message and everything with it (attachment, etc) are all sent using DATA. The only thing isn't is recipient and sender address. 07:50:49 okay so if I only want the text what is that? 07:51:38 oh wait, found it. BODY[TEXT] 07:51:46 LOL SO EASY 07:52:59 at least I am learning things from all of this. 07:53:32 does anyone here have experience with OpenCL? :P 07:53:55 I don't think it's happening, elliott. 07:54:02 ;____; 07:54:04 CUDA? 07:54:12 elliott: there is totally an #opencl though 07:54:17 scary 07:54:45 IRC is a crucial tool for programming 07:54:51 it is your second option when Google fails you. 08:00:32 * elliott notes http://vandreev.wordpress.com/2007/06/18/feistel-ciphers-and-des-in-haskell/ to self 08:02:37 does anyone here have experience with OpenCL? :P <-- a tiny bit. I installed the SDK for using it with AMD cards. And I read the docs. 08:02:54 but I haven't got around to using it yet 08:02:57 Vorpal: good. aid me. aid me. 08:03:01 which docs btw 08:03:03 my experience is 08:03:04 because I couldn't think of a useful project 08:03:09 elliott, the spec iirc 08:03:14 - the khronos reference is really deep hierarchy-wise and basically unordered so is useless 08:03:24 - the spec is way too detailed and low-level and asdflghj' 08:03:37 but some of the nvidia SDK examples are useful 08:03:39 EXCEPT 08:03:48 they all use non-free-licensed helper functions that you get to replace 08:03:52 elliott, whatever it was, it was a bit like the C99 spec in how it was written 08:03:55 useful reference docs 08:04:02 not a tutorial by any measure 08:04:25 i have the basics down and it's about two hundred lines of C 08:04:39 so I basically only have one real question left, an architectural one :/ 08:04:53 elliott, oh? 08:05:25 elliott, anyway this might be useful: http://developer.amd.com/zones/openclzone/pages/default.aspx (perhaps) 08:06:40 Vorpal: what I'm writing is a DES cracker, for the hell of it. so, I know each thread is basically going to repeatedly DES on "the next input", check if it's right, and if it's not, continue. but if it _is_ right, I want to know how I should handle the output. (the way I'm cracking means that there can be _multiple_ successful crackings.) I could simply have a fixed-size output buffer and then stop when it's full or the iterations grow too many, 08:06:40 and then collect it all on the CPU thread, output the successful crackings, and repeat 08:06:42 but ... ehhh 08:06:57 it feels like I want an instruction "STOP WHAT YOU'RE DOING, WAKE UP THE CPU THREAD, AND GIVE IT THIS DATA" :P 08:07:49 elliott, hm, sorry, I don't know best way to notify the CPU-run program from a GPU thread 08:08:01 surely there must be a way though 08:08:27 I suspect you can't, without massive overhead; the poclbm bitcoin cracker -- which yes, ha ha, libertarians, but it's a program of a very similar structure, so -- seems to take that output buffer solution 08:08:39 but, eurgh. :/ 08:09:41 anyway, I ought to figure out how to actually implement DES. especially on an architecture this unconventional. 08:09:44 elliott, it was made by engineers, did you expect a beautiful solution? XD 08:10:09 I expect something focused on performance at all costs; this doesn't seem performant, but then I have no intuition as to how GPUs work 08:10:09 -!- ais523 has joined. 08:10:17 elliott, hm 08:10:28 But I'm really likely to just write a high-level Haskell API using OpenCL after this and then never write an OpenCL C program again 08:10:34 And speak of the devil, here's ais523 08:10:46 would he know about GPU programming? 08:11:08 Vorpal: http://esolangs.org/wiki/Checkout 08:11:14 At least fifty tl;drs worth about it. 08:12:04 heh, interesting language 08:12:23 elliott: were you speaking of me? 08:12:39 ais523: Yep, saying I'd wait for you before I continued writing my GPGPU program 08:12:43 To ask a question 08:13:52 Vorpal: what I'm writing is a DES cracker, for the hell of it. so, I know each thread is basically going to repeatedly DES on "the next input", check if it's right, and if it's not, continue. but if it _is_ right, I want to know how I should handle the output. (the way I'm cracking means that there can be _multiple_ successful crackings.) I could simply have a fixed-size output buffer and then stop when it's full or the iterations grow 08:13:52 too many, 08:13:53 and then collect it all on the CPU thread, output the successful crackings, and repeat 08:13:53 but ... ehhh 08:13:54 it feels like I want an instruction "STOP WHAT YOU'RE DOING, WAKE UP THE CPU THREAD, AND GIVE IT THIS DATA" :P 08:13:57 ais523: And there it is 08:14:00 elliott, you could do GPGPU calculations with shaders too. I think GPU support of hugin's panorama stitcher nona is done by shaders rather than OpenCL. Not sure why. 08:14:13 Because OpenCL/CUDA are much newer than shaders. 08:14:16 ah 08:14:23 elliott: each thread should have a block of memory it writes to 08:14:44 then periodically, you stop all the threads temporarily to do an en-masse transfer of that memory to somewhere the CPU can read 08:14:56 Right, so what I said then 08:15:04 actually, you need a really really recent graphics card (as in, last few months) to be able to read the memory before the computation's finished altogether 08:15:09 That's gross in tons of ways though :/ 08:15:10 ais523, why no way to send a signal back to the CPU? 08:15:14 so you might want to just repeatedly invoke the computation 08:15:23 on a subset of the search space 08:15:25 ais523: Yeah, that's what I said 08:15:32 ais523: It makes some things a lot less fun though 08:15:40 I can't offer a semi-realtime count of cracking speed for instance :P 08:15:46 Vorpal: because of massive threading, basically 08:15:50 hm 08:16:48 ais523: So here's another question: I was thinking each thread would basically get its own chunk of the keyspace, and then try repeatedly to fill out its output buffer, trying new keys each time. But looking at several SDK examples, I have a feeling that it'd be better to make it be one thread : one attempted key, and just have millions of them, letting the GPU scheduler do the equivalent of my loop. 08:16:55 Is this a good way to go about things? 08:17:25 elliott: the number of threads you can have the GPU scheduler deal with is relatively large, but finite 08:17:43 ais523: Yep, but my computational workload is also finite, because of the above architecture 08:17:44 getting the scheduler to do as much scheduling as possible is generally more efficient because it can do tricks like pipeline memory accesses 08:17:53 it's finite as in about a million or so, maybe a bit less 08:17:57 and I have a feeling that might be too small 08:18:04 Right; so ten times the threads > a loop... 08:18:07 ais523: More than a million 08:18:18 This SDK example uses 1277944 08:18:28 Well 08:18:37 Nearest multiple of two hundred and fifty-six to that 08:18:38 But whatever 08:19:02 ais523: I guess I should just max out the number of threads the GPU can deal with, and then have them repeat their workload until my desired computation workload is filled? 08:19:07 As in, no advantage to having _less_ threads 08:21:10 ais523: And there's no way to tell the GPU "kill every thread", right, just "kill this thread" (return)? 08:21:32 you don't kill a thread at all, threads exit when they reach the end of the code they have 08:21:41 ais523: "return" in a __kernel kills a thread :) 08:21:51 effectively, yes 08:22:02 -!- Patashu has joined. 08:22:04 GPUs are so strange. 08:22:16 I'm basically just grounding my entire thinking in terms of array languages like J. 08:22:38 Plus the sort of nice Haskell array-handling pipelines that end up being fused away because they're just compositions. 08:22:45 I ground my thinking in GPUs 08:22:58 they're a paradigm of their own, but not one that's impossible to learn 08:23:06 ais523: That's the best way to do it, but unfortunately I don't know how GPUs work, other than being vector CPUs with shitloads of cores 08:23:14 So I have to work with bad metaphors until it clicks 08:24:12 OK, so TODO: Learn how to actually code DES, figure out how to divide the keyspace nicely, find a nice compute workload for a single "run" 08:25:09 ais523: I take it GPUs are lousy at matching regular expressions? 08:25:31 it depends on how you interpret them 08:25:49 a DFA that was small enough to fit into block memory might work well 08:25:57 Well, the input string is exactly ten characters 08:26:12 (i.e. no pipeline stalls in doing a jump-table-equivalent) 08:26:20 So hell, I could compile it down to 2560 bytes of lookup table 08:26:28 That's too big to be local data though, right? 08:27:28 Oh wait, no, of course a lookup table doesn't work 08:27:31 I'm a complete idiot 08:27:51 Although, hmm; I could do that simple "none of the ten characters are _definitely_ invalid" check, add it to the output, and have the CPU filter those out 08:28:10 ais523: But it might be better just to do it all on the GPU 08:28:25 I guess most regexps trying to match only ten characters will fit into block memory :) 08:28:34 And if that's not good enough you can always grep the rest 08:28:44 Is there any way to find out exactly how much block memory my GPU does, btw? 08:28:48 I'd suggest only doing simple checks on the GPU 08:28:54 and there should be some API function to query that 08:29:08 I know CUDA has one, although I've forgotten what it's called 08:29:18 ais523: Well, a simple regexp is pretty simple, but I don't know what counts as simple for GPUs. 08:29:29 (the amount of block memory /per block/ is obviously what you're interested in; it's also called shared memory sometimes) 08:29:39 you normally get a few kilobytes of it per block 08:29:54 2560 plus a bit, maybe? 08:30:11 My GPU is not all that good; it's integrated, after all. 08:30:28 Hmm, if 2560 isn't good enough, I could always do a kind of bloom filter thing 08:30:30 Or even just modulo 08:30:40 ais523: BTW, is CUDA's C API this insanely verbose??? 08:30:48 It's unbelievable! 08:31:07 elliott: I'm used to Java, so it didn't look /that/ out of place 08:31:12 Also my program keeps failing just because I only have like a gig of memory free. :/ 08:31:20 haha 08:31:27 you might want to make it a bit more memory-efficient 08:31:27 Even though it only deals with about a hundred megs of data on both CPU and GPU side??? 08:31:36 GPUs definitely don't have a gig of memory to spare 08:31:38 It's perfectly memory-efficient, it's just a trivial test program I wrote 08:31:49 ais523: Well yeah, but it complained about lack of host memory before 08:31:57 I guess my GPU is probably just using more than half its RAM though :) 08:32:03 I only have two hundred and fifty megabytes of it, which is ugh 08:32:12 Thankfully DES cracking is a rather constant space thing 08:32:16 That doesn't count towards GPU ram, does it? 08:32:19 Because they're like registers 08:32:44 you have thread memory, block memory, and global memory, they're all separate memory spaces 08:32:51 global memory is the only sort of memory you can have pointers into 08:32:58 although you can still index arrays in thread or block memory 08:33:07 and so you can fake pointers like that if you really want to 08:33:11 What's the two-five-six figure; combined, or global? 08:34:18 that sounds plausible for the amount of block memory in a block 08:34:31 the names the API uses are often confusing, you often have to figure out what they are just from their sizes 08:34:51 oh, I'm not quoting the API, I'm quoting what my GPU claims to the rest of the computer 08:35:23 That's two-five-six megabytes, btw 08:35:47 oh, /megabytes/? probably global memory, then 08:35:57 Right. 08:35:58 nothing else would be that big 08:36:03 I assumed as much 08:36:27 ais523: But, umm, you said I had a few kilobytes per thread 08:36:38 global memory has nothing to do with shared memory 08:36:43 Is that swapped out into global memory or something? Because I don't have two gigs of RAM on my GPU 08:36:47 shared memory is shared by a block of threads, they all read/write into it 08:36:50 (Going by a million threads) 08:36:52 and no, but only finitely many threads run at once 08:37:03 Yeah, so where does it go when they're not running :P 08:37:20 normally, it'll switch between around 100 threads until they're all finished, then do another block of 100 or so, etc 08:37:27 so it doesn't go anywhere because the threads have already exited 08:37:28 Ah 08:37:41 you can't assume all the threads as a whole are immune to starvation, they almost certainly won't be 08:37:48 Starvation? 08:37:51 threads /within a block/, you can assume are immune to starvation and all that 08:37:58 Do I actually have to account for threads just losing their ram 08:37:59 elliott: the chance that a thread won't run at all until it's the last thread remaining 08:38:07 Oh 08:38:12 Why would that matter, this is embarrassingly parallel 08:38:17 They don't need to talk at all :P 08:38:18 it doesn't, in this case 08:38:25 but it explains where the RAM Goes 08:38:27 *goes 08:38:35 BTW, with my output array, I want one index per thread, right? Because otherwise they might just step on each other's toes 08:38:46 it runs a group of threads until they've all finished and so don't need any more RAM, then the next group, then the next, etc 08:38:51 And it's easier to have to allocate like two hundred megs on the host than to communicate between threads to resolve that 08:38:59 yep, one index per thread is an incredibly common trick on a GPU 08:39:12 elliott, 256 MB GDDR? 08:39:15 not a lot 08:39:32 Vorpal: GPU memory 08:39:34 ais523: hmm, that might not quite work, since the successful output is like a short string 08:39:35 yeah 08:39:42 256MB is a little low even for that, but that memory doesn't really matter 08:39:46 ais523, which is different from video ram iirc? 08:39:48 eight (seven-bit) characters 08:40:02 so that's eight times a million threads, say 08:40:03 Vorpal: it has nothing to do with video RAM 08:40:05 oh, that's just eight megabytes 08:40:13 why don't I have an intuition for this kind of thing? 08:40:20 ais523, what is video ram then? 08:40:25 in graphics programming, a hardware buffer is in GPU memory, a software buffer is in video RAM 08:40:34 err, maybe not, actually 08:40:37 hm 08:40:38 that sounds wrong 08:40:39 a hardware buffer might be in GPU memory or video RAM 08:40:45 heh 08:40:46 and a software buffer is just in general-purpose RAM 08:41:02 ais523: I don't suppose there's like a common source of cryptographic algorithms for GPUs 08:41:07 my GPU has 1 GB RAM of whatever is on the PCIE-card 08:41:08 DES instructions in the hardware? No? 08:41:11 -!- FireFly has joined. 08:41:14 I might actually have to learn something. 08:41:14 GDDR5 iirc 08:41:22 it wouldn't surprise me if video RAM was memory-mapped into GPU global memory, actually; I don't know how the CPU and GPU actually communicate 08:42:07 ais523, I suspect /proc/mtrr could tell you something about that. If you just knew which section was video ram 08:42:17 but yeah I think at least some of it is mapped into CPU address space 08:42:25 pretty sure I read that somewhere 08:42:34 all devices should communicate via telnet protocol 08:42:49 $ cat /proc/mtrr 08:42:49 reg00: base=0x000000000 ( 0MB), size=16384MB, count=1: write-back 08:42:49 reg01: base=0x400000000 (16384MB), size= 1024MB, count=1: write-back 08:42:49 reg03: base=0x0e0000000 ( 3584MB), size= 512MB, count=1: uncachable 08:42:49 reg04: base=0x42f800000 (17144MB), size= 8MB, count=1: uncachable 08:42:50 reg05: base=0x430000000 (17152MB), size= 256MB, count=1: uncachable 08:42:56 can't really make any sense of that 08:44:42 I don't know what /proc/mtrr is for 08:46:08 Vorpal: You might want to fix that, I had terrible random performance problems when my MTRR setup was messed up 08:46:17 How's that broken 08:47:33 It says some things are both uncachable and write-back 08:48:31 No it doesn't 08:48:46 Unless I'm seriously misinterpreting that 08:49:55 [3584,4096] specifically 08:50:32 Oh, and the other uncachable areas too, actually 08:50:47 How are they write-back 08:50:57 reg00: base=0x000000000 ( 0MB), size=16384MB, count=1: write-back 08:51:08 That's not uncachable, the line uncachable isn't there 08:51:23 Oh hm 08:51:24 I see 08:51:26 The bases 08:52:21 Maybe it's supposed to work like that, dunno 08:52:32 All I know is I had major issues while I had overlap 08:53:56 Wikipedia at least says that overlap is fine so I guess that's fine 08:57:36 -!- azaq23 has joined. 08:57:40 Deewiant, I think there is an order of precedence. 08:57:49 at least from what I remember 08:58:14 Deewiant, oh and performance is fine. So are you suggesting I could get even better performance by messing with them? 08:58:23 No, I'm not 08:58:26 Does anyone know a public domain reference implementation of DES; I am way too tired for this reading shit right now 08:58:47 I just thought it might be a problem since it was a really bad problem for me 08:59:01 But it appears it shouldn't be a problem in general 09:01:30 "can anyone give me a working c program for DES algorithm(64/56 bit key).... 09:01:30 I want to write the program but cant. 09:01:30 I got many programs from google but no one is running. 09:01:31 Please send me the program............." 09:01:34 Then: "dont u guys have any interest in DES..........." 09:01:43 Afraid not, dear friend; none of this cruel internet has any interest in DES 09:02:10 ais523: function calls are inlined on a GPU, right? 09:02:31 elliott: yes, they don't have much of a call stack to speak of 09:02:50 Right; just checking that I'm not losing anything by using functions instead of macros here 09:03:14 it's reasonably common to unroll loops, too (GPU programming languages tend to have pragmas for that nowadays; hand-unrolling nearly always beats compiler-unrolling because the compilers are bad at guessing how many iterations to unroll) 09:04:51 DES is gross, why can't these encryption algorithms be pretty 09:12:26 AES is reasonably pretty 09:12:31 I suppose I shouldn't be helping you make a password cracker 09:12:37 even if it is for practice 09:12:57 What even uses DES anymore 09:12:59 those things are probably illegal nowadays 09:13:00 (I'd be surprised I bet) 09:13:02 or at least, a pending law 09:15:06 ais523: I'm not cracking passwords 09:15:08 So that's alright 09:15:35 even so, IIRC there's a new law outlawing programs which have an obvious illegal purpose 09:15:40 and I think that includes password crackers 09:15:45 (it's quite a stupid one, really...) 09:15:45 It's not a password cracker 09:15:56 well, it's reversing crypt(3), right? 09:16:11 Not quite. 09:16:22 what is it doing, then? 09:16:25 It's processing crypt() output and checking it for certain conditions. 09:16:33 Certain conditions that would be useless for cracking a pre-given hash. 09:16:35 The only thing you could use to crack DES passwords using this program would be to rip out the crypt() implementation and write your own cracker. 09:16:42 Other things that include a crypt implementation: libc. 09:16:47 ah, hmm 09:16:58 so what is the intended purpose? or is that secret? 09:17:05 (as in, what do you plan to use it for?) 09:17:27 I don't plan to use it at all once it works, but that would be telling. :p It's not any big secret or anything, it's just a silly little program. 09:17:36 also, I just did sudo cat /etc/shadow, it seems that the only loginnable account on this computer (mine) is using a salt starting $6$, so definitely not DES-based 09:17:44 I don't recognise that particular algo at all, in fact 09:17:58 But yeah, the only way you could use this to track passwords would be... to enlarge a bunch of the arrays, fill out the GPU-check tables in a really weird manner, remove the CPU checks... yeah, it'd basically be equivalent to rewriting everything but crypt(). 09:18:21 hmm, I've never heard of $six$ 09:18:51 ais523: SHA2 09:19:25 So you should be happy about that 09:20:51 does SHA2 describe a particular hash algo? I thought it was a family 09:21:24 ais523: Well, it's one of the SHA2s, but all of them are pretty good :P 09:22:15 indeed 09:26:41 `addquote help me i am so alone :( new computer good enough to simulate real parents 09:26:46 637) help me i am so alone :( new computer good enough to simulate real parents 09:27:06 elliott: what do you think about the Wikileaks/Guardian situation? 09:27:23 ais523: I forgot to pay attention; brief summary? 09:27:32 summary: Wikileaks send an unredacted version of the diplomatic cables to a Guardian journalist via encrypted archive 09:27:48 telling them the password in a relatively secure manner (at least, it wasn't intercepted) 09:27:54 (The only thing I remembered reading was a funny quote about someone failing to use GPG and Assange helping them) 09:27:58 the encrypted archive itself leaks when it's accidentally mirrored 09:28:10 and the password leaks when the journalist uses it as a title for a book chapter 09:28:14 so the entire information is out there now 09:28:16 :-D 09:28:19 Wow! 09:28:22 elliott: it's the same person, as it happens 09:28:23 Fucking journalists 09:28:37 ais523: haha, that _can't_ have been unintentional 09:28:54 Wikileaks has since deliberately published an unencrypted version of the same archive on the basis that the information's out there, and Australia responded with an arrest warrant 09:29:05 BTW, were the details of that "insurance" file Wikileaks released ages ago ever revealed? 09:29:17 It was with another big leak, just an encrypted blob that people torrented about on the assumption that it /must/ be something important 09:29:18 elliott: it seems that the journalist wasn't too tech-savvy and thought that the password had expired 09:29:34 and the insurance file still hasn't been decrypted; it doesn't have the same password, people have checked that 09:29:53 ais523: on the one hand, I can believe the incompetence part; on the other hand, how stupid do you have to be to take a "risk" like that? 09:30:15 even I can excuse a journalist for not realising that encrypted archives don't have expiring passwords 09:30:22 because it's only obvious if you understand the tech 09:30:33 yep, but I'd call naming a chapter after an expired password pretty irresponsible, too 09:30:36 but Wikileaks should possibly have noticed that, and used some other method of communication, or at least a warning 09:31:05 it's the sort of thing I'd expect a journalist to do, it's "good journalism" in the sense that it draws attention and makes for a good story 09:31:18 anyway, I'm not sure what my opinions on it are, other than that it's amusing 09:31:53 I doubt the availability of the unredacted files will cause much harm; there was an awful lot of hyperbole about it when the cables were first released, but I don't recall anything ever actually happening so it sounds like FUD To me 09:31:56 s/To/to/ 09:33:04 the best advice I've seen on slashdot is to make passwords long, random, and boring, so that they don't make for interesting book titles 09:33:12 hahahahahaha 09:33:40 hahaa 09:33:55 the new book from a Wikileaks insider and Guardian journalist: 95UaipciJ6gIBpJvNYuSu 09:34:03 (I actually got that from /dev/urandom for authenticity) 09:34:19 Is that base 58 or base 64 09:34:45 neither 09:34:48 who uses base 58? 09:34:49 I find it amusing that the original unix crypt was based on the enigma machine 09:34:52 Like, wow, it was that old 09:34:58 ais: youtube I think uses it 09:34:59 That's not the crypt function 09:35:01 that's the crypt tool 09:35:01 wouldn't 62 make more sense? 09:35:04 that has never existed ever 09:35:06 wow IMAP sequence points are a terrible idea. 09:35:11 you should pretty much always use UID 09:35:13 elliott: I've used perl for it on occasion 09:35:32 it's 58 because you take out o O 0 i I l 09:35:32 it's a one-liner there, it has crypt(3) as a builtin function for reasons I don't fully understand 09:35:38 because they look like each other depending on the typography 09:35:41 ais523: no 09:35:44 ais523: the crypt tool is unrelated. 09:35:52 ah, OK 09:36:08 it's a ridiculously insecure text encryption that was replaced with a caesar cypher in many unixes because of export laws 09:36:17 so basically linux has never had it ever because it's bloody useless 09:36:21 LOL caesar cypher 09:36:23 and broken in the forties, by definition 09:36:28 or earlier, if a caesar cypher 09:36:33 :cryptography export laws: 09:36:41 good emoticon 09:36:43 caesar cyphers were broken around the time of jesus 09:36:44 what does it look like 09:36:50 a pile of flaming shit 09:36:51 wouldn't it be really cool to be alive in the times when the caesar cypher was actually being used to send war-critical messages 09:36:55 like 09:36:58 OH SHIT GUYS 09:37:04 TURNS OUT I BROKE THE INTERCEPTED MESSAGE IN FIVE MINUTES 09:37:16 [rolls in money, accolades] 09:37:34 heh 09:37:44 back then, it wasn't common knowledge that codes were crackable at all 09:37:44 They should have used a one time pad 09:37:49 so you'd first have to have thought of it 09:38:05 Patashu: for a hundreds-of-megabytes document? pretty much the only way to do that would be to allow it to be downloaded somehow 09:38:05 ais523: well, when everyone is /that/ stupid... 09:38:09 If you know (or can figure out) that it is a caesar cipher, it would be very easy to decode by trying a few keys, there is not much to try and you do not have to decode the entire message to know that it is wrong 09:38:12 (yeah, yeah, I know, product of our society) 09:38:13 and then it's too likely that both the OTP and the original will be intercepted 09:38:28 ais523: hundreds of megabytes in caesar's time :ok: 09:38:32 :youmissedthecontext: 09:38:38 :ais523madeaconversationalerror: 09:38:43 elliott: I interpreted a different context to the one you did 09:38:43 :noncesmilies: 09:38:53 He's right to miss the context, it was ambiguous 09:38:54 I assumed Patashu was talking about the Guardian/Wikileaks situation not the military situation 09:38:58 :hi: 09:39:01 :smileydepictingrespondingtoallmessagesintermsofsmilies: 09:39:04 and in fact, still think that was the context, unless told otherwise 09:39:06 :thatexceptcubist: 09:39:17 :caesarmakingathumbsup: 09:39:25 :#esoteric: 09:39:29 i cant think of anyway to use :help: :help: 09:39:37 now you can 09:39:40 thats the joke 09:39:44 :backtowork 09:39:48 : 09:39:49 i mean 09:39:52 :thats the joke: 09:40:00 :how could i make such a stupid mistake: 09:40:11 :ever: 09:40:25 ...why are we using posix-style named character classes? 09:40:32 :also, when i said "i mean" i meant :i mean:: 09:40:40 surely the smiley should be :hlep:? 09:40:41 :im going to have to draw all of these: 09:40:46 ::hlep 09:40:47 okay I'm pretty sure that's not posix compliant. 09:41:00 * ais523 notices how difficult it is to make an intentional typo once your fingers are used to typing words at a time rather than letters at a time 09:41:10 :smiley depicting infinite tower of smilies; inside, the image of death itself: 09:41:23 story of my life, ais523 09:41:42 help what is the : 09:41:47 :context: 09:41:49 :haha: 09:41:51 :you shall never know: 09:41:58 CakeProphet: normally used to delimit smileys on webforums 09:41:59 read context still doesn't make sense. 09:42:01 :iiam: oh wait that one's real 09:42:05 oh rite 09:42:08 e.g. BlogNomic which uses :FOR: for a FOR-vote smiley 09:42:16 (it's iiam right?) 09:42:19 those things tend to accumulate stupidly large amounts of smileys 09:42:22 are nomics interesting to play? 09:42:28 elliott: no idea, I don't know of that one 09:42:35 ais523: "it is a mystery" ghost 09:42:35 Patashu: they can be; normally they are sometimes and aren't sometimes 09:42:39 http://www.itisamystery.com/itisamystery.gif 09:42:55 wait, does that website exist just to serve one image? 09:42:57 Patashu: not right now, they aren't 09:43:12 http://www.skype-emoticons.com/images/emoticon-00169-dance.gif http://www.skype-emoticons.com/images/emoticon-00119-puke.gif 09:43:12 ais523: why not :) 09:43:56 "Photo books on your Mac. Just add summer." good god apple, I would unsubscribe from your emails if they weren't so hilarious 09:44:10 who the hell makes an actual printed book with maps of their travels abroad 09:44:12 in unrelated news, there are allegations going around of Apple impersonating police 09:44:15 how rich is the average apple customer 09:44:18 how rich does apple think the average apple customer is 09:44:24 although there are a huge number of fishy things about the story 09:44:36 so most people involved are smelling a rat even if they're not sure what color the rat is 09:44:51 whatever colour the rat is i will love and care for it all the same 09:45:02 do you normally use "color"? 09:45:56 I'm about 50/50 on that word 09:46:10 and strangely, it doesn't seem to have much correlation with whether I'm programming 09:46:22 although it goes up to 100% for "color" when programming if I actually think about the spelling 09:46:24 i hate using apis that use different spelling conventions to m 09:46:24 e 09:46:25 and likewise, "colour" when not 09:46:28 because 09:46:30 help 09:46:33 i was going to name my variable 09:46:35 fooColour 09:46:35 elliott: use MySql, then, it has both ANALYSE and ANALYZE! 09:46:37 but the type is 09:46:37 Color 09:46:38 :( 09:46:39 i am 09:46:40 crying 09:46:57 ais523: hmm, there's that language whose name escapes me where foo_bar, foobar and fooBar are all the same identifier 09:46:57 type Colour = Color -- witty comment here 09:47:00 clearly it just needs generalising... 09:47:12 in fact, how about we put a whole thesaurus in there? 09:47:14 yesssssssssssss 09:47:38 elliott: eso or non-eso? 09:47:46 it'd be more interesting if foobar was different from the other two 09:47:54 ais523: non-eso 09:47:58 arguably. 09:48:04 as in, the language conceptually had multiword identifiers, and various ways to notate them in ASCII 09:48:34 in Algol 68, foo_bar is the same as foo bar (the underscore is an unkeywordiser, and neither foo nor bar are keywords) 09:48:37 well, it was case insensitive :P 09:48:49 and is a variable not a keyword 09:49:08 (.foo.bar would be a two-word keyword, which would then cause a syntax error as foo bar isn't a keyword) 09:49:50 ok, so the keyspace is fifty-six bits. 09:49:55 now to divide that up reasonably. 09:50:19 elliott: hmm, are you doing some iterated-DES sort of HashCash? 09:50:41 What is hashcash 09:50:42 Is it like bitcoin 09:50:44 nope; that would be some hashcash 09:50:53 Patashu: no, hashcash is something that just about everyone agrees is a pretty good idea 09:50:57 at least to my knowledg 09:50:57 e 09:51:02 but what is it 09:51:02 it's similar in implementation, though 09:51:03 http://en.wikipedia.org/wiki/Hashcash 09:51:14 Patashu: not really; it's an anti-spam scheme that works by forcing an email sender to do some provable pointless calculations before sending 09:51:21 Oh, cool 09:51:27 hmm, so DES actually works on seven characters 09:51:28 but I mean 09:51:33 the idea being that if you send one email, it's only going to tie up your CPU for two seconds or so and you won't care 09:51:36 I should probably make it work on eight characters with the ignored bit still there 09:51:42 because char8 is a type that exists 09:51:43 but if you send a million, you're going to need a giant server farm which is very expensive 09:51:51 and because the implementations probably assume that 09:52:06 It seems unfair against embedded systems 09:52:23 embedded systems don't send email 09:52:35 they don't??? 09:52:48 hmm, and the salt is one hundred and twenty eight bits. 09:52:53 my microwave emails me when it's done 09:52:56 crypt() literally takes a salt larger than the password. 09:53:08 Patashu: I suspect it has a pretty decent processor, then 09:53:20 (it doesn't really but it should) 09:53:24 pity 09:53:32 Microwaving over Ethernet 09:53:36 WIll be the next big innovation 09:53:37 Just you wait 09:54:08 email is a rather bad protocol for that 09:54:11 XMPP or something would be better 09:55:07 -!- elliott has quit (Remote host closed the connection). 09:55:08 Use the Message Send Protocol. 09:55:23 Anyway, hashcash is like bitcoin 09:55:29 except everyone who wants to use it has to hash instead of just miners 09:55:31 -!- elliott has joined. 09:55:44 ais523: btw, the nice thing about OpenCL (imo) is that you don't need any sort of SDK to use it 09:56:02 you have to compile it somehow 09:56:12 ais523: the header files are portable, few in number, and available from Khronos; and the only other thing you need is /usr/lib/libOpenCL.so, which ships with my graphics card drivers and I'm sure yours too 09:56:15 so no, you don't :) 09:56:28 oh, is it embedded into C in some sort of crazy fashion? 09:56:38 oh, you compile the actual code at runtime 09:56:43 or is libOpenCL.so the compiler? 09:56:43 with OpenCL API calls 09:56:48 compiler and interface 09:56:51 ah, OK 09:56:56 but the compiler's API is standardised, so 09:57:05 I think there's something to precompile, but that probably involves writing your own API-using program to do it 09:57:18 Maybe there's tools for it in the SDKs, I don't know, I'm fine with this portable stuff 09:58:24 something I'm wondering about: suppose you use a POSIX-extended printf call to print just the second variable argument to printf 09:58:43 as in printf("%2$d\n", 4, 5); 09:59:04 does that actually work? I'm having trouble figuring out how it would figure out where the second arg was on the stack without knowing the type of the first 09:59:33 !c printf("%2$d\n", 4, 5); 09:59:38 o 09:59:38 5 09:59:42 wow 09:59:57 !c printf("%2$d\n", 4.0, 5); 09:59:57 !c printf("%2$d\n", (long double)4.2, 5); 09:59:58 !c printf("%2$d\n", 'c', 5); 09:59:59 2040730480 10:00:00 5 10:00:07 Deewiant: heh, I had the same idea as you 10:00:10 !c printf("%2$d\n", (long double)4.2, 5); 10:00:12 16385 10:00:15 !c printf("%2$d\n", (long double)4.2, 5); 10:00:16 16385 10:00:20 elliott: chars are widened to ints in a ... argument 10:00:21 Shit's reliable, yo 10:00:27 ais523: i realised that right a i sent it 10:00:27 as 10:01:00 There may be no gaps in the numbers of arguments specified using '$'; for example, if arguments 1 and 3 are specified, argument 2 must also be specified somewhere in the format string. 10:01:06 "A 12-bit salt is used to perturb the encryption algorithm, so standard DES implementations can't be used to implement crypt()." 10:01:06 lol 10:01:24 wait, the salt alters the /encryption algorithm/, rather than the /input/? 10:01:39 whoever invented crypt probably doesn't understand hashing 10:01:46 hmm, DES' block size is 64 bits 10:01:53 does that mean that a DES output is 64 bits, if you only have one block? 10:01:56 I guess so 10:02:24 either that or they understand it well enough to know how to perturb DES without making it less secure 10:03:45 ais523: hmm, (assume CUDA since I guess it's comparable) how would I pass in, say, two kilobytes of data to a kernel function? 10:03:58 note: the data is constant for all threads but should be quick to access 10:04:39 two possibilities; one is to place it in global memory and get each block of threads to copy it into shared memory as the first thing they do, and read it from there 10:04:49 and the other is to place it in texture memory and hope it ends up in the texture cache 10:05:03 the first's more suitable for small amounts of data, the second for large amounts 10:05:04 Couldn't I just pass a really large number of function arguments? :-) 10:05:08 and 2K is somewhere in between 10:05:21 It's literally just ten tables of two-five-six bytes each. 10:05:25 Well, booleans raelly. 10:05:27 I'm not entirely sure how function arguments are passed 10:05:30 But I figure bytes are quicker to index. 10:05:48 Hmm, I guess I have to base64 in the kernels too 10:05:48 :/ 10:05:52 Oh, wait, hmm 10:05:54 note that copying blocks of global to shared memory is a reasonably fast operation; it accesses global memory more efficiently than any other way of accessing it 10:06:10 No, I could just divide it into eight bytes and do it based on that 10:06:14 Hmm, that'd be really false-positivey 10:06:20 typically you get the threads to cooperate on the copy 10:06:30 ais523: cooperation sonuds like communicatino :( 10:06:37 there's an operation for that in Checkout 10:06:40 elliott: it's actually the opposite 10:06:51 each thread does a fraction of the copy, in such a way that between them they do all the copy 10:06:59 heh 10:07:03 that sounds scary 10:07:12 it is, but it's also standard 10:07:12 -!- lifthrasiir has quit (Quit: leaving). 10:07:18 you get used to that sort of thing after a while 10:07:37 ais523: I don't _want_ to get used to it :-\ 10:07:38 you won't really get a good feel for GPU programming unless you work on something a bit less embarrassingly parallel than your current problem 10:07:57 indeed 10:08:00 as GPUs are designed for tasks that parallelize well but not perfectly (as that's what graphics programming is like) 10:08:01 but that may be a good thing :P 10:08:27 Too bad there are no (Free-software) Checkout implementations. 10:08:29 -!- lifthras1ir has changed nick to lifthrasiir. 10:08:39 there are non-Free-software implementations? 10:08:40 zzo38: there are no Checkout implementations at all 10:08:45 I know 10:08:57 Too bad there are no Checkout implementations targeting badgers. 10:09:01 Written by horses. 10:09:21 if it's general enough to run even on badgers, I'm not sure if I've done something right or wrong 10:09:25 ais523: I have half a mind to write a little library that compiles special Haskell code symbolically to OpenCL and executing that 10:09:27 what license do horses typically use, btw? 10:09:40 At least, I /think/ you could reduce typical zip/map/associative fold code to something pretty direct 10:10:00 associative fold is very standard 10:10:07 and map is so parallel it doesn't even count as a building block 10:10:11 That kind of code tends to be idiomatic in Haskell anyway (i.e. a "pipeline" composition chain of functions with no conditionals), so I'm pretty sure it could produce good OpenCL code for good Haskell code 10:10:16 ais523: It does in Haskell 10:10:29 haskell can't already compile to opencl? 10:10:37 Also, I really want to see Checkout running on a badger now, even though that sounds terrible and illegal 10:10:41 Patashu: that would be insane 10:10:50 there's a slideshow by NVidia somewhere where they did lots and lots of optimisations on an associative fold and watched it get faster and faster 10:10:51 I'm talking about what amounts to a symbolic EDSL 10:10:55 ais523: haha 10:11:08 an EDSL for running on badgers? 10:11:13 olsner: Yes. 10:11:24 ais523: I wonder what programming would be like if the (GP)GPU was invented before the CPU? 10:11:41 I see no reason why it couldn't be the "main" processor, it'd just be bizarro-world from ours 10:11:52 elliott: it probably wouldn't have operating systems 10:11:58 not software operating systems, at least 10:12:01 why not? CPUs didn't at first, either 10:12:04 instead, they'd be built into the hardware 10:12:15 but then they grew the hardware support for OSes to be written 10:12:34 ais523: hmm, do I really have to iterate through a megabyte just to see if any of my kernels managed to produce a hit :-| 10:12:39 (an array of bools, one per kernel) 10:12:43 on the CPU, that is 10:12:46 I think the inclination would be "make the GPU better at scheduling" rather than "allow the GPU to have customizable scheduling" 10:13:00 perhaps the CPU would be invented so that it could do OSy tasks 10:13:13 btw, GPUs tend to be very bad at integers, and especially bitwise operations 10:13:19 they're designed for floating-point 10:13:28 hmm, well this definitely isn't an fp operation 10:13:30 I can avoid bitwise, though 10:13:58 can you (easily) use doubles that always have integer values? 10:14:11 I think they can represent the entire 32-bit range exactly 10:14:28 ais523: sure; would that really be faster? I mean, DES is pretty much bitwise twiddling all the way 10:14:30 (the whole float bad, int good mentality of CPU programming is sort-of upside-down on GPUs) 10:14:33 the entire 32 bit range? no way 10:14:37 Patashu: yes way 10:14:38 maybe the entire 16 bit range 10:14:44 uhh? 10:14:46 Patashu: double = 64 bits, isn't it? 10:14:48 32 bits = float 10:14:51 yeah 10:15:13 JS uses doubles for all integers so I would be astonished if they only managed sixteen bits. 10:15:15 and it doesn't surprise me at all that in the 64 bits' worth of doubles, there's the entire 32-bit integer range 10:15:18 "An IEEE754 8-byte double can represent any 4-byte integer, simply because it has 53-odd bits available for precision (and the 4-byte integer only needs 32). 10:15:19 " 10:15:22 and shouldn't surprise you either 10:15:23 tl;dr Patashu is wrong. 10:15:48 Fair enough 10:15:51 ais523: Anyway, I realise I'm not exactly exploiting the GPU's huge strengths, but it has many more cores than my CPU, so it'll still thrash it massively 10:16:08 I think it can probably do up to 54-bit signed ints; the sign bit is separate, and for any int value, there'll be some exponent value that makes that mantissa value multiply by 1 10:16:13 elliott: indeed 10:17:00 btw, I've been told that the term GPGPU technically only applies to general-purpose programming done with graphics primitives, like pixel shaders 10:17:14 and doing it with primitives more suitable for the task is called something else, which I can't remember 10:17:29 but I don't really care 10:18:51 hmm, oh, a gap in my rudimentary opencl knowledge 10:19:00 How would you implement the NES PPU + NES APU on the GPU? 10:19:14 ais523: how do I vary an argument to each kernel in CUDA? :-P 10:19:29 (yeah, I'm using OpenCL, but similar enough, right?) 10:19:37 as in, all I've been doing is setting constant arguments and then running a bunch of threads that use their global ID 10:19:39 mantissa values multiplying by 1? base-1 system? 10:19:41 oh wait 10:19:41 elliott: the call looks something like kernel_name(args)<<>> 10:19:43 they're constant here 10:19:55 first_key needs offsetting by the global id 10:20:18 cheater: no, mantissa is scaled by 2^n, you just change the value of n to undo the first scaling of the mantissa to lie in the range 1..2 10:20:35 I might have that threads/blocks backwards 10:21:00 ais523: I take it GPU buffers generally aren't 0-initialised... 10:21:01 are there cryptographic functions which allow to decrypt parts of the data depending what key is supplied? 10:21:14 cheater: encrypt them separately, concatenate? 10:21:19 different parts which are not mutually exclusive 10:21:29 elliott: no, but you can 0-initialize them manually easily enough 10:21:31 i realize you can do this but it is not efficient 10:21:43 someone actually found a security hole in WebGL based on that 10:21:44 ais523: indeed 10:21:57 that you could grab parts of people's video memory, and thus what they were viewing on the screen, by exploiting that sort of thing 10:22:03 and send it back to the website you were viewing 10:22:10 ais523: I want to reuse my allocated buffers throughout each kernel call if I can, right? 10:22:25 you're allocating in global GPU memory, right? yes, reuse it 10:22:34 mostly just because it'll save the memory allocator a bit of work 10:22:58 oh, and /make sure/ you free, the OS won't necessarily be able to clean up after you if you don't, because GPUs don't have an OS 10:23:12 I've seen computers wedged due to GPU memory leaks before now 10:24:07 (a little surprising, because in theory the API to the GPU should be able to track all the memory being allocated as it's allocated, and deallocate in an atexit or something) 10:24:40 o 10:25:23 ais523, the original question is: if an SaaS is storing my data, how to make sure the SaaS can only extract the data i need it to extract for the purpose of reducing a large (~GB) data set to something that i would like to download over the internet (~500 KB) 10:25:54 i.e. search through files without knowing their full contents. 10:26:14 more generally, how to wite progrems that process data without knowing most of it. 10:26:34 cheater: there's been some research into that recently, but IIRC it's still in early stages 10:26:45 where have you seen that? 10:26:53 I haven't seen it, just seen occasional talk about it 10:27:03 by whom? 10:27:13 i am thinking of a bloom filter style encryption 10:27:15 technologically-inclined news sites, I think, but I'm not sure 10:27:21 ok 10:28:10 encrypt it in blocks, and give the keys to blocks you want it to read? 10:28:35 yes, that would be the kind of approach i mean as "bloom filter" approach 10:28:49 bloom filter's a completely different thing I thought 10:29:46 well, what i mean is you give the SaaS part of the meta data (in your blocks) and it either includes or precludes other blocks from being selected for being sent to you 10:30:34 then you process these blocks (say they contain some extended metadata) and based on that you query more blocks. 10:30:43 and so on, and so forth. 10:32:44 but search and filtering is just one of the things performed on remote data sets 10:32:54 what about some forms of (simple) compilation 10:34:14 Is there any Haskell function like: f x y z = if z then x else y 10:34:51 can you write a compiler which either 1. is distributed and therefore no node sees the whole source code or 2. works on only parts of the source with the other parts not being necessary to see, just a simple copy and paste recipe is given to the user 10:35:42 a compiler to machine code or bytecode? 10:36:36 doesn't matter 10:36:42 let's say a compiler to C-- 10:36:44 or LLVM 10:38:28 -!- sebbu2 has changed nick to sebbu. 10:38:54 or a compiler from some language to python 10:38:57 for exampl 10:38:58 e 10:39:15 seems easy enough then - libraries exist for example 10:39:21 unless you're fragmenting it further than the subroutine level? 10:40:00 Why isn't condition in Haskell implemented using a function like I said, instead of how it is? 10:41:43 who knows 10:41:51 zzo38: because having special syntax is convenient 10:41:57 except when it isn't at all 10:42:08 it's hurt me more than helped me, at least 10:42:40 I don't think the special syntax is convenient. I think a function like that I described would make more sense and have a lot more uses. 10:43:23 there's a function like that in lisp I believe 10:44:33 Notice, I put the condition last on purpose. 10:45:38 -!- azaq23 has quit (Ping timeout: 258 seconds). 10:45:38 it'd also be great to have a multi-clause lambda but nope 10:48:57 I wrote an implementation of Huffman trees in Haskell. 11:00:11 I wrote an implementation of Huffman trees in Haskell: http://sprunge.us/ARVR 11:02:59 -!- azaq23 has joined. 11:07:07 It can use a tree for decoding, but for encoding the tree is flipped. 11:09:36 -!- azaq231 has joined. 11:10:06 -!- azaq23 has quit (Ping timeout: 260 seconds). 11:10:08 oh, and /make sure/ you free, the OS won't necessarily be able to clean up after you if you don't, because GPUs don't have an OS 11:10:12 ais523: wow, you really need to free every time? 11:10:18 at the moment, yes 11:10:54 olsner: haskell's if syntax is not convenient 11:10:57 ever 11:11:00 it's awful 11:11:23 is there a better way than what I'm doing to get something like J's forks into haskell 11:11:29 bool t _ True = t; bool _ f False = f; if b t f = bool t f b 11:11:44 monqy: fork f g h x = f x `g` h x 11:11:52 ?pl \f g h x -> f x `g` h x 11:11:52 (ap .) . flip (.) 11:11:56 yeah but I wanted something syntactically convenient 11:12:14 right now I defined (<|) and (|>) to be (flip (.)) and (<*>), respectively 11:12:16 fork (+) (/) length seems pretty convenient :P 11:12:19 elliott: Yes that way "bool" is better. 11:12:42 but your fork might be better 11:13:20 -!- zid has joined. 11:13:27 oh and the usage of <| and |> is like (f <|g|> h) 11:13:28 hi zid 11:13:37 someone just linked me to the bfjoust wiki page 11:13:59 do they all play off against each other, or do you just play individual matches 11:14:07 there's a hill 11:14:08 you play against the hill 11:14:15 they play individual matches against every other program on the hill 11:14:17 so the top n programs from the past, you play against 11:14:22 ais523: yay 11:14:24 That's fun 11:14:25 if you beat any of them in average, you get on the hill yourself 11:14:35 koth has loop problems, invidiaul has sniping problems 11:14:44 http://codu.org/eso/bfjoust/report.txt is the current report 11:14:50 program sources at http://codu.org/eso/bfjoust/in_egobot/ 11:14:50 I should try to remember bf 11:14:58 the relevant parts are in the article 11:15:05 ais523: unfortunately it's the new unreadable article 11:15:06 remember the abbreviations exist, too, they'll save you lots of typing 11:15:10 elliott: ah right 11:15:18 At least, I think that way "bool" is more sensible way to make the condition commands in Haskell, rather than if...then...else, due to functional programming and currying and so on. 11:15:20 I thought someone fixed that, or at least toned it down 11:15:24 or weren't you going to sort it out? 11:15:26 zid: bfjoust programming is quite unlike bf programming; the abbreviations are key, and obvious algorithms don't work because of speed/unreliability 11:15:31 zid: there was an edit war over the formatting of that article 11:15:34 ais523: I was too lazy in the end 11:15:38 It's still bad :P 11:15:41 no war, I just told quintopia it was stupid :P 11:15:46 zid: http://esolangs.org/w/index.php?title=BF_Joust&oldid=21108 this page might be more readable for you 11:15:55 I think I removed all the gratuitous italics 11:16:05 zid: http://esolangs.org/wiki/BF_Joust_strategies is also invaluable, and includes lots of in-depth explanations of winning programs 11:16:14 mostly ais523's, since he never stops typing 11:16:27 I only started dominating the hill towards the end 11:16:34 I want top 100 11:16:36 by submitting a few ludicrously complex programs, then a much simpler one 11:16:37 ais523: I meant the in-depth things 11:16:40 zid: on what? 11:16:41 ah 11:16:46 the hill only goes to 40-something 11:16:47 the current hill is already pretty huge 11:16:59 including 100 is probably not viable with the current state of BF Joust warriors 11:17:03 I mean, the programs at the bottom are already pretty bad 11:17:14 My programs will be pretty bad too :P 11:17:28 oh, I forgot 11:17:41 zid: http://codu.org/eso/bfjoust/egojsout/ is very useful for writing bots 11:17:44 * zid ponders befunge wars 11:17:54 it lets you pit a program against anything on the current hill or anything you paste in, with full trace and animation 11:18:04 befunge wars predates bf joust :) 11:18:05 handy 11:18:09 oh cool 11:18:10 (fukyorbrane; but it's fatally broken, alas) 11:18:16 I like befunge a lot 11:18:19 er hm 11:18:20 no 11:18:21 I wrote an interpreter for it 11:18:22 fukyourbrane was brainfuck 11:18:28 has nobody actually done befunge yet? 11:18:30 that would surprise me 11:18:32 !bfjoust simple_attack_with_decoys >>>>(-)*5<(+)*12<(-)*33<(+)*64(>)*7(>(+)*5[-])*19 11:18:39 I made the Huffman encode function is simple due to flipped trees: encode x = (>>= flip (findWithDefault []) (flipTree x)); 11:18:39 zid: which Funge? 11:18:40 ​Score for ais523_simple_attack_with_decoys: 19.8 11:18:43 elliott: BeYourFunge was yours, wasn't it? but you never got very far with it 11:18:43 93 or 98? 11:18:44 elliott: I made my own 11:18:47 ais523: indeed 11:18:48 I don't like 93 or 98 11:18:54 zid: so it's not befunge, then 11:18:56 it read 93 I think 11:19:01 but also supported my funge 11:19:12 OK, a simple attack program that just follows all the rules of making a simple rush program did in fact get on the hill 11:19:14 I had graphics support :D 11:19:17 and I'd expect it to not have managed that 11:19:20 there's been a lot of progress on funge-98 in the past few years 11:19:29 (with the release of the first even vaguely-compliant implementation four years ago) 11:19:30 pity fungot isn't here to show off 11:19:30 push x,y,c on stack then there was a put pixel operation that popped them off 11:19:40 oh, fungot is missing? 11:19:53 zid: (fungot is our bot written in befunge-98, it does a bunch of language interpretation and markov babbling) 11:19:54 elliott: incidentally, all this stemmed from a discussion on #nethack about how C++ was unreadable 11:19:57 I never did get around to writing funge using cardinally linked lists 11:20:06 probably the only useful funge program anyone's ever witten 11:20:15 then someone mentioned brainfuck, and it spiralled from there 11:20:19 ais523: heh 11:20:29 I made a quip ! 11:20:30 * zid preens 11:20:32 ais523: btw, everything gets on the hill 11:20:38 it just usually gets shoved off next time 11:20:46 elliott: I know, I mean it's not in last place 11:20:46 I still need to figure out how this joust thing works 11:20:52 also, /me stern glares at submitting programs in private 11:20:56 !bfjoust clever < 11:20:59 ​Score for elliott_clever: 0.0 11:21:02 woot 11:21:07 asking questions in here can be a good idea 11:21:09 !bfjoust righty > 11:21:10 `quote Score for 11:21:11 ​Score for zid_righty: 4.3 11:21:13 elliott: < always scores 0 11:21:14 AHAHAHA 11:21:14 294) !bfjoust test (-)*10000 Score for Vorpal_test: 12.9 yay \ 295) !bfjoust test (++-)*1000000 probably will suck Score for Vorpal_test: 30.4 what \ 305) !bfjoust sm3 < Score for Deewiant_sm3: 43.4 11:21:17 I win :D 11:21:17 help I added a #coding line to my python file but it still complains about unicode 11:21:21 ais523: nope 11:21:22 ais523: !bfjoust sm3 < Score for Deewiant_sm3: 43.4 11:21:24 unless someone puts something on the hill that also suicides turn 1 11:21:25 or at least it didn't used to :) 11:21:33 elliott: the hill is no longer upside-down 11:21:36 that might have been during the randomisation days, though 11:21:41 I scored 4.3 that means I'm better? 11:21:42 ais523: upside-down? 11:21:48 zid: well, out of a hundred 11:21:53 zid: > basically moves to the second cell, then waits there forever 11:21:57 so it only wins if the opponent suicides 11:22:11 and < moves off the tape and suicides instantly, so it's worse 11:22:16 you typically replace a program with < to delete it 11:22:20 !bfjoust zid1 [>] 11:22:23 ​Score for zid_zid1: 4.3 11:22:35 elliott: in the early days of the hill, losing programs got better scores 11:22:49 ais523: err, really? 11:22:49 zid: the hill's padded with zeroes, so that moves to the second cell then exits 11:22:50 elliott, that 43.4 score was a bug iirc that got fixed. 11:22:52 *the tape 11:22:52 I think this was after that 11:22:57 but okay 11:22:57 !bfjoust zid1 [>+] 11:23:00 ​Score for zid_zid1: 0.0 11:23:08 I suspect that runs off the /right/ end against most programs 11:23:11 zid: that'll just run off the end, yeah 11:23:13 you can run it in egojsout or somewhere to check 11:23:38 Can I detect the 128 nonses without doing 128 test-subtracts? :P 11:23:40 SyntaxError: UTF-16 stream does not start with BOM 11:23:45 halp that's Windows stuff 11:23:53 zid: no, that's the main issue of the game 11:24:04 cool 11:24:07 !bfjoust the_inevitable_next_thing_to_try [>(-)*128] 11:24:09 ​Score for ais523_the_inevitable_next_thing_to_try: 4.7 11:24:12 it's 128 to be large enough that you spend forever trying to detect it? 11:24:15 well, it's marginally better... 11:24:21 zid: it's 128 for symmetry 11:24:30 symmetry? 11:24:37 zid: programs are run with +- swapped in one situation; it's not important to understand right now but it helps balance 11:24:37 zid: yep, so most programs try to figure out that a cell isn't a decoy before trying to clear it 11:24:48 zid: basically, so that you can clear them with 128 +s or 128 -s 11:24:55 because it wraps 11:25:07 128 + 128 = 256 = 0 in 8-bit arithmetic 11:25:22 I should read this wiki page first 11:25:37 the strategies page, in particular, will help explain the basics 11:25:47 I still don't understand the rules yet 11:26:02 this channel is just me, ais523 and bots, btw 11:26:08 i don't want to read strategies but i want to try my stupid hand at some bfjoust, so I'll do that 11:26:11 hi 11:26:15 im a bot 11:26:18 nice to meet you 11:26:25 monqy is the stupidest of all our bots. 11:26:35 I lose if I have a 0 to the left of my program counter? 11:26:39 actually, statistically speaking, everyone but elliott is insignificant 11:26:40 err tape pointer 11:26:46 ais523: I, er, don't think OpenCL has anything to free buffers 11:26:50 zid: no, you lose if the tape cell the pointer started on is 0 for two cycles in a row 11:26:59 elliott: perhaps it's automatic in OpenCL, then; check the docs 11:27:16 ais523: unfortunately, I don't know where the docs /are/; the spec is not really light reading 11:27:27 zid: that's called your "flag"; generally, the goal of the game is to locate the enemy flag and zero it before they do the same to yours, without falling off the end of the tape 11:27:31 which is just past the flag 11:27:43 therefore, paranoid programs have to zero every single cell from the tenth onwards before moving on 11:27:58 ais523: btw, what does GPU assembly actually look like? I mean, in the abstract 11:27:59 why tenth onwards? 11:28:03 elliott: I don't actually know 11:28:08 zid: tape is ten to thirty elements 11:28:10 zid: because the tape's always at least 10 cells long 11:28:15 I don't know either, the driver translates to it doesn't it? 11:28:21 so you can go to the tenth safely without a risk of falling off, but not beyond 11:28:24 that's how DX worked 11:28:43 ais523: Why is zeroing what's ahead important? 11:28:55 zid: because that's the goal of the game? 11:28:57 well, if you move past the opponent's flag, you lose (that's one of the rules of the game) 11:28:57 to zero the enemy flag 11:29:13 if you zero the cell before moving off it, and hold it at 0 for two cycles, then you know it's safe to move on 11:29:23 because if you were already at the flag, doing that makes you win 11:29:30 so if you haven't won yet, it must be because you aren't at the flag 11:29:43 is it not that it makes me lose, but it makes me not win? 11:30:22 you lose instantly if you fall off the tape (rule of the game), just as you lose if your flag's zero for two cycles (also a rule of the game) 11:30:28 those are the only two ways to lose, IIRC 11:30:42 two cycles? 11:30:54 yep, two cycles 11:30:57 it says you don't lose if you fall off 11:30:59 you just don't win 11:31:04 unless the other bot suicides 11:31:06 zid: you don't lose if you fall off the end of the program 11:31:07 it lies 11:31:09 oh 11:31:10 i see 11:31:11 you do lose if you fall off the end of the tape 11:31:16 and that probably needs fixing in the wiki if it's unclear 11:31:18 ais523: hmm, a few separate read requests from the same buffer are faster than copying the whole sixteen megabyte thing, right? 11:31:18 then fix the page? :/ 11:31:29 zid: the page needs a total rewrite, but nobody cba enough to do so 11:31:37 you can just explain it to me then :P 11:31:38 http://codu.org/eso/bfjoust/egojsout/?ap&l=04363d6a559fdb8a002cd6a7b0f284f741f791a0&r=simple&t=25 11:31:44 explain that pretty animation too while you're at it 11:31:47 "Note that reaching the end of the program (as opposed to the tape) is not a loss; rather, a program that does that takes no action on any future cycle, and thus loses, wins, or draws according to whether the opponent manages to zero its flag, commit suicide, or do neither." 11:31:51 seems reasonably clear 11:31:57 zid: warriors are the things in the middle line, position is them moving 11:32:01 oh, it's the gamefield left to right, with a heightmap? 11:32:03 the bars are the tape values, treated as signed 11:32:05 yeah 11:32:08 yep 11:32:24 and the flags are at the end, initialized to 128 11:32:32 -!- CakeProphet has quit (Quit: leaving). 11:32:38 in this case, the red bot wins by a very small margin 11:32:48 This is SO much clearer 11:32:50 than ANY of the wiki 11:32:52 because it zeroes the blue flag just before the blue bot zeroes the red flag 11:32:59 yep, I think looking at the trace is probably the way to go 11:33:21 ais523: hmm, a few separate read requests from the same buffer are faster than copying the whole sixteen megabyte thing, right? 11:33:33 I suspect only a handful, if that, of workers will actually succeed 11:33:34 are you trying to read from gpu memory? 11:33:39 DIRTY! 11:33:58 zid: I'm doing GPU programming, how else am I meant to get my results out? 11:34:05 stop trying to do useful work 11:34:05 I'm going through the defined APIs. :p 11:34:06 elliott: basically, you have to do a complicated and slow memory transfer thing to read from global GPU memory (the details are abstracted for you with most good libraries) 11:34:08 and use the result as a texture 11:34:18 They're not textures, this is OpenCL 11:34:21 -!- CakeProphet has joined. 11:34:25 I know, but you can do. 11:34:31 a GPU->CPU transfer isn't that bad, and the length of time is probably going to be proportional to the size of the read plus a constant 11:34:35 Stop trying to do useful work, just calculate textures 11:34:38 it's similar in speed to a CPU->CPU transfer 11:34:50 uh.... any idea why Python would give me an attributeerror when trying to access a method 11:34:53 yet when I print out dir 11:35:01 ais523: right, but copying sixteen bytes dotted around a buffer is faster than copying sixteen megabytes all at once, surely? 11:35:02 (obj) I get the name 11:35:05 does that make any sense? 11:35:06 ais523: Why doesn't the 0 rule apply to red in this trace? 11:35:08 it doesn't to me 11:35:09 elliott: I think so 11:35:28 zid: because red 0s blue's flag just before blue 0s red's flag 11:35:42 wait, I think I completely misread something 11:35:42 you'll see that red's flag still has a few pixels left when blue's is zeroed 11:35:48 and when you win, you've won, game over 11:35:53 Yes, I did 11:36:02 I put an extra 'pointer' in there in my mind 11:36:15 know offhand an averagely strong bot I can try snipe? 11:36:23 program 11:36:46 slowpoke. (Note: advice not advisable.) 11:36:54 "simple" in egojsout is designed to be beaten by programs people are testing 11:37:11 "-cl-mad-enable 11:37:11 Allow a * b + c to be replaced by a mad. The mad computes a * b + c with reduced accuracy. For example, some OpenCL devices implement mad as truncate the result of a * b before adding it to c." 11:37:11 what a mad optimisation 11:37:20 haha, these flags are insane 11:37:27 you can basically pass -cl-break-the-entire-IEEE-floating-point-spec 11:37:33 I want a pretty picture 11:37:36 -cl-fortran (-cl-strict-aliasing) 11:37:44 don't test against slowpoke, a) it's really really good, b) it'll probably crash your browser (but waterfall variants are even better at doing that) 11:38:01 if you want a good program that's short to test against, try allegro 11:38:04 Right wins apparently 11:38:04 (it's in the dropdown) 11:38:09 Can I get a red/blue graph of this somehow 11:38:15 !bfjoust winner [[-]-] 11:38:19 ​Score for monqy_winner: 14.2 11:38:21 wooo 11:38:32 zid: click on one of the < or > marks 11:38:35 !bfjoust winner [[-]>What is this I don't even] 11:38:38 and it'll show you the graph for one tape length 11:38:38 ​Score for zid_winner: 13.7 11:38:57 monqy: wait, how does [[-]-] not simply suicide at the start of the game? 11:39:12 I am always perceived to be on the left hand side? 11:39:27 the first program entered will be the "left program", the red one attacking from the left 11:39:28 ais523: how does scoring work? 11:39:30 i.e. the one in the top text box 11:39:42 oh there it is 11:39:43 monqy: http://codu.org/eso/bfjoust/SCORES explains it 11:40:23 My browser is dying a death :P 11:40:44 is ( the same as [ 11:40:56 no, ()* is an abbreviation for allowing you to abbreviate long programs 11:41:03 instead of writing ++++++++++ you can just write (+)*10 11:41:10 Oh I see 11:41:17 (>)*9 makes sense now 11:41:25 it's just syntactic sugar, but it helps a lot, particularly with high repeat counts 11:41:30 anyway [[-]-] was my stalemating bot 11:41:47 monqy: after the 128th - it runs ], checks that the square's 0, and now it's been 0 two cycles in a row 11:41:51 one setting it to 0, one checking it's 0 11:41:54 so it's actually a suiciding bot 11:41:58 hm 11:42:08 hopefully the enemy would have tampered with it by then 11:42:10 a trivial stalemate on the flag is intentionally very hard to do 11:42:23 monqy: that's where your only wins were coming from 11:42:26 -!- zzo38 has quit (Quit: Quitting are not permitted!!!). 11:42:32 wtf, "const size_t foo = bar;" where bar is "const size_t bar = 999;" doesn't work because foo's initialiser is not constant? 11:42:37 -!- jix has quit (Read error: Connection reset by peer). 11:42:51 right 11:42:53 while writing I forgot [ and ] were actually instructions 11:43:03 as noted previously, I am the stupidest bot 11:43:05 [ and ] actually feature quite rarely in the top programs 11:43:09 they're slow :) 11:43:18 they're necessary, though 11:43:23 actually, anticipation is mostly square brackets, IIRC 11:43:32 and it's 11th 11:43:42 they're not really that necessary 11:43:50 I mean, most of their uses can be totally inlined at the expense of insane explosion 11:43:52 I beat simple 11:43:53 and the only program that beats slowpoke without being specifically designed to beat it 11:43:58 zid: well done! 11:44:05 why not post the program in-channel to see if it gets on the hill 11:44:11 !bfjoust simple_sniper >(+)*9(>)*8([-]>)*400 11:44:14 ​Score for zid_simple_sniper: 20.8 11:44:19 zid: want to feel daunted? 11:44:20 http://codu.org/eso/bfjoust/in_egobot/quintopia_space_elevator.bfjoust 11:44:21 http://codu.org/eso/bfjoust/in_egobot/ais523_waterfall3.bfjoust 11:44:29 you might be interested in http://codu.org/eso/bfjoust/breakdown.txt 11:44:30 (programs partially machine-generated) 11:44:36 which shows you which programs your program beat, and which it lost to 11:44:43 doing me vs waterfall 3 atm 11:44:45 elliott: I actually understand space_elevator, or did once 11:44:50 Right wins, 12 11:44:51 I don't :) 11:45:07 zid: the various traces it links to are the different tape lengths and polarities 11:45:10 I was studying my opposition in great detail 11:45:11 Oh, You can dump -1's in to delay them, I guess 11:45:17 I should do that 11:45:21 zid: yep, the concept of decoys 11:45:28 basically, the polarities are: in "sieve" polarity, the left and right programs have +- as normal; but with "kettle" polarity, +- is swapped for one of the programs 11:45:29 !bfjoust simpler >(-)*9(>)*8([-]>)*400 11:45:32 ​Score for zid_simpler: 19.2 11:45:34 (it doesn't matter which, as far as the winner goes) 11:45:40 most programs will more or less effortlessly clear past smallish decoys, though 11:45:45 !bfjoust simpler (>-)*9([-]>)*400 11:45:49 ​Score for zid_simpler: 6.3 11:45:52 hrmph 11:45:55 zid: this is because in the early days, people submitted programs that were just +- swaps of others, and did unreasonably well 11:45:58 so your decoy of size 9 worked better than a decoy of size 1 11:46:16 and the reason is that most programs know that decoys of size 1 are easy to make 11:46:20 how do you figure out if a decoy is a decoy? 11:46:28 increment once? 11:46:31 you normally try making small changes to it to see if it becomes zero 11:46:43 so I could make an anti-decoy with a +? :) 11:46:47 the "offset clear" revolutionized BF Joust, I think 11:46:57 it's explained in the strategy article 11:47:02 but basically, you clear with, say, ++[-] 11:47:13 so that any decoy value from -2 to +2 will be cleared almost instantly 11:47:14 Compilation error: :9:24: error: can't convert between vector values of different size ('key_t' and 'int') 11:47:14 oops 11:47:24 guess I should learn how opencl vectors work 11:47:33 !bfjoust winner_ii [[+-](+)*64] 11:47:37 ​Score for monqy_winner_ii: 8.1 11:47:40 :( 11:47:46 !bfjoust simpler (>-)*9([+]>)*400 11:47:48 ​Score for zid_simpler: 15.0 11:47:52 !bfjoust simpler (>---)*9([+]>)*400 11:47:55 ​Score for zid_simpler: 11.0 11:47:57 !bfjoust simpler (>---)*3([+]>)*400 11:48:00 ​Score for zid_simpler: 14.3 11:48:10 !bfjoust simpler (>)*9([+]>)*400 11:48:13 ​Score for zid_simpler: 16.1 11:48:23 Still can't beat my 20.8 :P 11:48:25 fluke 11:48:25 !bfjoust winner_ii [[-](-)*64] 11:48:29 ​Score for monqy_winner_ii: 15.5 11:48:32 zid: one marginal improvement: there's never any point in doing > more than 29 times without a < in between, so you can do, say, *9 then *20 and get a slight improvement for free 11:48:42 woohoo I beat winner 11:48:52 I beat waterfall 3 11:48:52 I'm not sure if there are any vibration programs on the hill that it would help against, though 11:48:58 heh 11:49:12 waterfall3 is a little fragile in one of its detection loops 11:49:26 Compilation error: :12:2: error: statement requires expression of scalar type ('char __attribute__((ext_vector_type(8,8)))' invalid) 11:49:26 while (key < first_key + (key_t)KEY_WORKLOAD); 11:49:27 ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11:49:27 I don't even know any more... 11:49:29 I used a GA to tweak the constants in it so that it wouldn't lose against any of the programs on the hill at the time 11:49:34 Either I beat it, or it beat me :P 11:49:35 !bfjoust winner_iii [[(-)*64](-)*64] 11:49:38 wait 11:49:38 ​Score for monqy_winner_iii: 8.4 11:49:45 EgoBot: are you trying to compare vectors with ais523: (vec winner iii how could you 11:49:56 elliott: I think it's just an error 11:50:07 Yea, I beat waterfall 3 11:50:11 ais523: evidently not, since it's turned into a vector and while is complaining that it's not a scalar 11:50:12 what does the number mean after wins 11:50:16 (-2) or (10) or whatever 11:50:18 how much it won by 11:50:18 zid: I told you 11:50:22 did you? 11:50:23 sorry 11:50:25 zid: the various traces it links to are the different tape lengths and polarities 11:50:28 basically, the polarities are: in "sieve" polarity, the left and right programs have +- as normal; but with "kettle" polarity, +- is swapped for one of the programs 11:50:33 it's just showing by how many of those you won 11:50:38 so 10, for instance, means left beats right on 10 more possibilities than right beats left (or is it the other way round?) 11:50:38 well ok i didn't say it explicitly :P 11:50:45 oh I see 11:50:49 it's always going to be an even number unless there are draws 11:50:57 and often even then 11:51:02 http://codu.org/eso/bfjoust/egojsout/?l=15396a05bd5bf1a9cf46c801df0d4408d6a43277&r=721bcf3b62a9de45dd13d789ddc874fce091e147&t=10 11:51:19 untouched! 11:51:19 wait, does that URL link to waterfall3 in any way? 11:51:23 if so, it'll crash my computer 11:51:25 so I'd better avoid it 11:51:25 yes 11:51:27 fine by me 11:51:35 works in Chrome just fine :P 11:51:41 ais523: hmm, can you coerce an integer of an appropriate size into a vector? 11:51:42 firefox is only using 460MB of ram 11:51:45 crashes Chromium too for me 11:51:51 I think I just have a weak computer 11:51:51 -!- MSleep has changed nick to MDude. 11:51:54 elliott: I don't know 11:51:55 I'm using firefox 9.0a1 11:51:57 if so, I think I should keep the key counter as an integer, and just cast it in the loop body 11:51:58 ais523: bah :P 11:52:04 or whatever the fuck minefield is called these days 11:52:22 firefox G(A64) 11:52:40 9.0a1 (2011-09-01) 11:53:02 ais523: Do I get a prize for sniping waterfall 3? 11:53:16 zid: I'm looking at it atm 11:53:24 it seems to be very close, and vary a lot at different tape lengths 11:53:35 (I'm looking in my own BF Joust program "juiced") 11:53:46 zid: it's easy to counter a single program; significantly harder to counter more than one strategy :) 11:53:48 I want a single step debugger 11:54:00 elliott: shh, that was my 2nd attempt at a program 11:54:06 It just happened to randomly beat waterfall 3 :P 11:54:09 although http://codu.org/eso/bfjoust/in_egobot/elliott_interior_crocodile_alligator.bfjoust did surprisingly well just by countering one program 11:54:14 mostly because it produced something utterly mad 11:54:19 awesome name 11:54:20 I don't even understand how it works myself 11:54:32 -!- sllide has joined. 11:54:46 aha, it beats waterfall3 by being a very fast rush that isn't triplockable 11:54:56 triplock? :) 11:55:02 on the basis that fast rushes coded that naively tend not to stay on the hill long 11:55:09 ahh 11:55:15 zid: basically, it's a method of attacking ]]] in a program's control flow 11:55:16 zid: http://esolangs.org/wiki/BF_Joust_strategies#Triplock 11:55:30 by detecting the first ] falling through and making sure the cell isn't zero for the third 11:55:36 so that the opposing program gets stuck in a loop 11:55:49 it was trying to triplock your program, which of course has no ]]] anywhere 11:56:04 I see 11:56:04 and its reverse tripwires don't work to detect it because it rushes past them before they can be set up 11:56:17 so it's using the triplock as a last resort, and failing 11:56:26 I had fun making waterfall3, but it's way too complex for its own good 11:56:42 I like vibrator 11:57:13 it beats waterfall2 the same way, incidentally 11:57:23 in fact, that one's much more decisive 11:57:26 i'm not quite sure how to come up with a strategy for this 11:57:33 I'm currently 6 pooling 11:57:38 neither is anyone else, that's part of the fun in the game 11:57:44 Maybe I can work my way up to a 4 gate 11:57:55 waterfall3 is like a 1 gate fast expand :P 11:58:02 * zid starcraft 2 references galore 11:58:50 heh, I know a starcraft 2 player, so I get the references even though I don't play it myself 11:59:10 * CakeProphet loves SC2 11:59:19 hmm, defend9.75 is still up there too 11:59:26 perhaps there'll be a renaissance of fast rush programs 11:59:39 um, hmm 11:59:47 ais523: what endianness are GPUs this decade? 11:59:52 the issue is, they seem far too easy to decoy against, and tripwire-avoidance is a) the only known fastrush counterstrategy, and b) it doesn't work 11:59:57 zid: it is time to write a lingrush.bfjoust 12:00:01 elliott: I, um, don't know, I've never written code where it's relevant 12:00:01 :) 12:00:06 right wins (24) 12:00:07 oops 12:00:24 ais523: neither have I, but I suspect casting a ulong to a uchar8 vector makes it relevant 12:00:38 !bfjoust winner_iii >[[+]+]<[[+]+] 12:00:39 Oh god, 26 12:00:42 ​Score for monqy_winner_iii: 14.3 12:00:43 ok I'm done with winners for now 12:00:44 elliott: write a test program and find out? 12:01:00 14.3 seems standard for programs that slowly suicide 12:01:04 monqy is so good at bfjoust 12:01:05 it probably beats turtles, or something 12:01:05 ais523: already have, just wondering whether it mightn't be broken 12:01:08 ais523: gpls need a repl 12:01:13 CakeProphet: I'm not even trying 12:01:15 erm 12:01:16 gpus 12:01:29 elliott: it's probably float-endian or something insane like that 12:01:37 how about a quick suicide 12:01:47 well, < always gets 0 12:02:04 !bfjoust whats_bfjoust_help [-] 12:02:05 !bfjoust how_many_turtles (+)*88 12:02:09 ​Score for monqy_whats_bfjoust_help: 13.2 12:02:09 ​Score for ais523_how_many_turtles: 14.1 12:02:13 !bfjoust meow >->+>->>-------------+>>>-([+]>)*400 12:02:16 ​Score for zid_meow: 12.4 12:02:17 :( 12:02:40 It beats waterfall3 on tape size 10! 12:02:43 hmm, now I'm wondering if part of the winner score is a result of accidentally locking reverse offset clears 12:02:47 And only loses by 16 overall 12:02:48 zid: waterfalls do better on long tapes 12:03:03 why is it named waterfall? 12:03:06 anything that sets up that many tripwires and locks will 12:03:15 basically, it's a pun on lock as in canal lock 12:03:25 if you string lots of those together, you basically get a (slow) waterfall 12:03:54 !bfjoust winner_iv [[(-)*128](+)*128] 12:03:57 ​Score for monqy_winner_iv: 8.2 12:04:03 true victory 12:04:20 !bfjoust i_love_vibrations ((+)*128(-)*128)*1000 12:04:25 ​Score for ais523_i_love_vibrations: 11.9 12:04:28 !bfjoust the_best (>)*7+++>--->(++[-]>)*50 12:04:31 ​Score for CakeProphet_the_best: 10.4 12:04:41 good warriors today A+ 12:04:43 i_love_vibrations did far too well, go add more antishudders, people! 12:04:56 someone should snipe winner 12:04:57 elliott: well, making a defend9.75 or a waterfall3 takes time 12:04:58 what does { do 12:05:03 expansion again? 12:05:13 yep, but for nested brackets 12:05:24 * zid needs to figure out how to write what he wants to write 12:05:27 (a{b}c)*5 = (a)*5b(c)*5 = aaaaabccccc 12:05:43 and it only exists because brackets have to match, you can't write ([)*5 12:05:53 umm, (a{b}c)%5, I mean 12:06:07 I suck at control flow in brainfuck 12:06:20 so if you need to abbreviate lots of nested loops, you do it like that 12:06:23 I want to increment by 1, check for 0, otherwise decrement by 2, else increment until 0 12:06:33 +[--[+]] 12:07:00 is there an 'ad infinitum' structure I can use 12:07:02 in that case, it's possible to almost directly convert the words into symbols and have it work 12:07:08 ()*100000 works 12:07:13 because 100000 is the cycle limit 12:07:39 I think many interps accept *-1 as a shorthand for that; I'm not sure if the one egobot's using does (iirc chainlance or cranklance, I forget which) 12:07:44 )*-1, please 12:07:44 !bfjoust wiggly (>)*9+([--[+]]>)*1000000 12:07:47 ​Score for zid_wiggly: 14.3 12:07:55 !bfjoust winner_v [](+)*100000 12:07:57 ​Score for monqy_winner_v: 4.4 12:07:59 it's the agreed-upon abbreviation >:D 12:08:02 !bfjoust wiggly (>)*9+([++[-]]>)*-1 12:08:05 ​Score for zid_wiggly: 14.0 12:08:14 elliott: just like "sieve" and "kettle" are agreed-upon? 12:08:28 ais523: yes, except that more than just me supports -1 12:08:29 half of BF Joust terminology seems to have been you imposing your views on things 12:08:31 !bfjoust the_best (>)*9([-]>)*5(++[-.])*100 12:08:34 ​Score for CakeProphet_the_best: 3.3 12:08:36 lol 12:08:36 now I wonder if juiced does 12:08:38 !bfjoust wiggly (++>-->)*9+([--[+]]>)*-1 12:08:39 I guess it does, but am not sure 12:08:41 ​Score for zid_wiggly: 5.2 12:08:49 fail 12:09:03 oh, seems I rewrite it to 1000000 during parsing 12:09:09 zid: you start with 18 >s 12:09:13 that's going to run off the tape quite a lot 12:09:31 (you have two >s in the *9 abbreviation) 12:09:43 oops it misdirects the flag 12:09:49 detects 12:09:54 !bfjoust wiggly (++>-->)*4+([--[+]]>)*-1 12:09:56 ​Score for zid_wiggly: 21.5 12:10:00 highscore! 12:10:02 wow, best so far 12:10:05 !bfjoust stupid_rush (>)*9([+]>)*5([-])*100 12:10:07 ​Score for CakeProphet_stupid_rush: 5.8 12:10:24 and it's made it onto the hill, in position 39 12:10:25 lol wtf did it do there.. 12:10:38 oh, your bot fucking reset it 12:10:45 the bot only shows the last run 12:10:51 you can just resubmit, or run locally 12:10:58 waterfall 3 zipped across the screen and flipped it from 0 to 1 12:11:02 so I started incrementing it again 12:11:09 it does that 12:11:18 it's a defensive program 12:11:21 Could I carpet bomb 10-35 with 1s every now and then? 12:11:25 +1s 12:11:35 you could but not effectively. 12:11:35 you can't go past the opponent's flag, if you do, instant loss 12:11:39 oh right.. 12:11:47 you can carpet bomb 2->current safe known location, if you like 12:11:59 can I pick a length of tape 12:12:01 although the program for that would likely be machine-generated as it doesn't code trivially into BF 12:12:21 in the simulators, yes, that's what the links in egojsout are for (various tape lengths) 12:12:27 oh I see 12:12:30 in the actual game, no, as it'd make it obvious where the flag was 12:12:33 I lose length 13 12:12:42 I get caught in a trap 12:12:47 twice 12:12:59 that's a good summary of waterfall3 :D 12:13:04 three times.. 12:13:07 it's stunlocked me :( 12:13:14 four times :D 12:13:19 five haha 12:13:34 up to 8 so far 12:13:51 I'm stuck on the square before your flag, perpetually decrementing a square 12:13:55 ais523: what will happen if I for (;;); on a GPU? 12:14:06 elliott: bad things, I'm not sure exactly how bad 12:14:20 ais523: hmm, I'll find out 12:14:21 -!- olsner has quit (Ping timeout: 240 seconds). 12:14:24 -!- Phantom_Hoover has joined. 12:14:26 zid: that's known as a lock; it's what waterfall3 attempts to achieve, as a lock-based defense program 12:14:31 it'll win eventually, but it may take it a while 12:14:40 as it's going to clear every other square on the tape really thoroughly, in order 12:14:41 ais523: oh wow, I actually trapped waterfall 3 12:14:42 ais523: absolutely nothing happened -- mostly because I hvae this sneaking feeling my kernel isn't executing 12:14:46 I shorted its logic out, it's completely stuck 12:14:58 zid: on which tape length? 12:14:59 I'd link you it but you won't click it 12:15:04 14 12:15:04 I can run it local 12:15:08 (++>-->)*4+([--[+]]>)*-1 12:15:09 vs that 12:15:40 zid: yep, what's happening is that the decoys collided with each other 12:15:58 defense programs get more-or-less random results on short tapes as a result of the details of how decoy setups mix 12:16:46 ais523: hmm, is there any good way to crash a GPU? I'm fairly sure my kernel isn't actually running :P 12:17:02 I did some opencl very very briefly 12:17:07 elliott: I'm not sure, but crashing a GPU typically requires a hard reboot of your computer 12:17:12 so it's probably not what you want to do 12:17:14 ais523: that's OK, I'm desperate 12:17:17 I lost the source though it was on some guy's machine with 4 expensive radeons for bitcoin mining 12:17:17 if you're lucky, the driver will notice 12:17:22 for(;;); is executing in 0 time, s 12:17:23 o 12:17:26 and get things back to a roughly sane state 12:17:39 try doing an infinite loop that can't be obviously optimized out 12:17:43 * ais523 waits for elliott to ping out 12:17:43 -!- jix has joined. 12:17:46 hi 12:17:59 zid: I'm starting to worry that the entire userbase and market of OpenCL might be built around libertarians 12:18:05 also, of GPUs probably :P 12:18:11 the replays get horrendously slow on tape length 30 12:18:17 (I wonder how many dollars have been spent on bitcoin mining hardware so far?) 12:18:34 zid: waterfall3 actually rushes the last few tape cells in some situations, to avoid hitting the cycle limit 12:18:39 that's how slow it is 12:18:48 no, I mean computationally 12:18:50 I'm getting 1fps 12:18:55 tape 10 I get about 100fps 12:18:56 zid: chrome 12:19:00 that's because it's still computing the end of the run 12:19:03 seriously, it's faster :P 12:19:09 or maybe your cpu is just slow :| 12:19:13 I'm not installing a browse for 1 website 12:19:19 at 100fps, it's playing back a recording 12:19:19 elliott: 2.4GHz core2 quad 12:19:28 at 1fps, it's trying to play back a recording while computing the end of that recording 12:19:38 even though it said 'right wins' ? 12:19:44 or is it shipping it off to some cgi to do 12:19:49 but if I watch the recording, js fights 12:19:55 it has to actually compute the recording as well as just run the program 12:20:00 and you can watch the start while the end's being generated 12:20:12 scroll to the end of the page to see how far it's got generating the runthrough 12:20:24 ais523: is your decoy setup the same each run? 12:20:39 there's no way to randomize it, so yes 12:20:43 for a given program 12:20:49 different programs of mine use different decoy setups, unsurprisingly 12:20:53 could I just do the complete inverse of what waterfall3 does for any tape length wide enough to contain all of your decoys, I guess I'm asking 12:21:25 I think for tape length >20 there's basically two parts, the 'head' end which tries to navigate the decoys, and the 'tail' end that sets them up 12:21:36 and then a bunch of coinflip wins/losses for short tapes :P 12:21:44 zid: it's possible, for any BF Joust program, to generate a program that beats it on all configurations 12:21:55 this hasn't ever been actually proven but is pretty obvious 12:21:58 elliott: was that ever proved? I strongly suspect it's true, but don't actually /know/ 12:21:58 elliott: seems likely, but have you proven it 12:22:01 I mean, it could be false, but I'd rather not believe it's false 12:22:10 Anyway, point is, it's possible in practice even if not in theory :P 12:22:11 my gut says it's true 12:22:23 zid: tl;dr Yes, you can, but it'll probably make no sense at all and do terribly against other programs 12:22:34 elliott: well, depends 12:22:42 I think it could work just fine 12:22:48 elliott: I'm actually wondering if whether given any set of programs, there's always some program that beats them all on all configs 12:22:56 say a bot leaves a +4, -5, +2, 128 12:23:03 ais523: That's a rather stronger hypothesis, but one that breaks the game quite thoroughly 12:23:08 ais523: Finite set, I presume 12:23:09 at one point, I was considering proving that, then programatically generating that program and submitting it to the hill 12:23:10 I just do - until 0, + until 0, - until 0, + until zero 12:23:12 err, yes 12:23:20 and that bot will never *fail* to kill the flag 12:23:24 it just won't be optimal against a lot of stuff 12:23:26 ais523: if you're evil, generate it, submit it, and then iterate 12:23:28 zid: no, you recognise the decoy on tape length 10, then go straight to the flag and zero it 12:23:51 ais523: i wasn't going to do that. I wanted less specific 12:23:56 just a soft-counter 12:23:56 elliott: I remember when you submitted a copy of then-beating-everything waterfall3 and I tweaked a constant slightly to make it beat even the original waterfall3 12:24:01 not a hard counter 12:24:06 fair enough 12:24:33 yea, this is eating my browser 12:24:46 1.2GB of memory in use and 25% cpu :D 12:24:57 I use a C program to test programs against each other, it's rather faster than egojsout 12:25:17 although the animations aren't as pretty 12:25:22 gief? 12:25:33 i'd be fine with ncurses tbh 12:25:43 %02X * 30 with ansi codes to colour red/blue or purple 12:25:50 * tape size rather 12:25:51 it's X11, and just uses numbers to show values rather than a histogram 12:26:02 I should make an ncurses version 12:26:08 raw X11 protocol over sockets? impressive 12:26:15 I use xcb 12:26:16 also, wait for lance, everyone, chainlance and egojoust are both really terrible :P 12:26:18 rather than X11 12:26:25 zid: rather than Xlib, you mean 12:26:32 well, rather than either 12:26:34 here we go: http://sprunge.us/fALT 12:26:43 xcb is gross because it's asynchronous and asynchronous shit is gross because C is gross and lacks continuations 12:26:54 that's very.. good.. ais 12:26:58 (christ look at that mess) 12:27:05 I see no mess 12:27:10 give it filename to both programs as first and second args, tape length as third arg to limit to one tape length, anything as fourth arg to get an "animation" 12:27:12 It has 20 levels of nesting! 12:27:18 No, it doesn't 12:27:24 -!- olsner has joined. 12:27:35 it's an imperative C program, you'd expect many layers of nesting 12:27:47 it's not an OO program that uses lots of helper functions to keep cyclomatic complexity down 12:27:47 ais523 how does it know to sabotage me? 12:27:56 It doesn't have to be OO 12:27:57 what do you mean by that? 12:28:01 you just have to be function names :P 12:28:07 it's backtracking exactly to where i am 12:28:14 and fuzzing the cell I'm [-]ing 12:28:18 oh, because it locked you there in the first place 12:28:28 oh, it's using prior knowledge? 12:28:35 it's not a case of it guessing where you are; rather, it decided where it wanted you to be, and made sure you went there 12:28:45 this shit is retardedly clever :P 12:28:53 "retardedly clever" --zid, genius. 12:29:18 About 184 results (0.12 seconds) 12:29:22 I AM NOT A UNIQUE SNOWFLAKE :( 12:30:50 I think ais is too clever for me by like several orders of metric 12:31:03 zid: I've had a few years' head start when it's come to jousting 12:31:54 I wonder if I could win by never leaving cells 0-3 12:32:01 vs any amount of things 12:32:26 that would be a defence program 12:32:43 it will just sit there if the other program is defence, unless you give up after a while and go attack (hybrid) 12:32:46 I am being highly unoriginal here aren't I 12:32:52 hybrid strategies are difficult to write, but have large payoff 12:33:00 zid: no, it's very hard to think of a new strategy nowadays 12:33:01 zid: being original is probably quite difficult to do 12:33:06 deep poke was the last one 12:33:10 and lead to ais523 almost declaring the game beaten 12:33:20 elliott: no, that's not what made me declare the game beaten 12:33:21 but then he thought of a counterstrategy that might beat the game instead : 12:33:22 :P 12:33:22 I read a post about that 12:33:29 need a new game now 12:33:31 really? where? 12:33:34 that was timer clear, which destroys all defense programs, as far as I can tell 12:33:42 Games you play are fun while everybody is bad, but eventually get less fun as you get better, because the limits of the game are exposed 12:33:45 I even figured out how to get it to beat anticipation, which I thought was a counterstrategy 12:33:51 I can't remember the example game now, it was something about asking questions 12:33:53 oh, I saw that 12:34:01 it seemed a bit shallow 12:34:07 it doesn't necessarily beat all rush programs, just all defense 12:34:12 It was a bit of a.. erm.. deepity 12:34:14 ais523: I thought you thought that a revised slowpoke might beat the game 12:34:18 but then realised it was beatable 12:34:22 but then thought of another strategy 12:34:25 that might beat the game instead 12:34:34 elliott: I thought that it might completely destroy defense, not the game in general 12:34:44 anticipation was what I thought the counterexample was (you'll notice it beats slowpoke) 12:34:50 well, defence is three/fourths of the game nowadays 12:34:51 but then I came up with a way for slowpoke to beat that too 12:35:03 luckily, I've forgotten what it was 12:35:11 but unfortunately, I imagine I'll work it out again with some thought 12:35:12 nice writeup of waterfall 3 12:35:15 heh 12:35:30 s/writeup/thesis/ 12:35:32 elliott: I think defense isn't that high a proportion; it's mostly me who submits complex defense programs, and only because I enjoy writing them 12:35:34 "figure out the fuck the other guy must be doing to have cleared certain cells, and plant stuff that would kill it" is pretty much it? 12:35:50 zid: yep 12:36:08 presumably a more chaotic program would be harder to beat for waterfall3 12:36:10 although it's more measuring how long it takes to clear cells, than which cells are cleared 12:36:15 and indeed, yes 12:36:31 alternating between more than two strategies for clearing beats it, for instance 12:36:33 I guess longer programs have an advantage 12:36:41 ICA is basically the typical chaotic program -- wow 12:36:43 ais523: ICA 12:36:48 (there are some sneaky tricks in there for beating progams that just alternate between two things) 12:36:55 elliott: it can't be /that/ rare an acronym 12:37:02 am I at least thinking about strategy well? :/ 12:37:02 :( 12:37:03 also, make an inferior_crocodile_alligator that's not quite as good 12:37:06 zid: yes 12:37:06 zid: yes 12:37:23 I declare myself a fast learning, if not skillful, then :P 12:37:27 most people just spend a few days submitting nonsense programs that happen to get high results on the current hill before giving up and copying others 12:37:28 ICA only wins because it behaves so stupidly that defense programs have no idea what it's going to do next 12:37:47 ais523: sorry, but the only continuation of the ICA naming scheme is the inevitable chevrolet_movie_theatre 12:37:54 which I suppose I'll use if I come up with a program that does massively well 12:38:05 elliott: I'm amused that Gregor and I came to more or less the same program strategy via indepedent reasoning 12:38:12 sufficiently so, that Gregor accused me of copying him 12:38:26 although slowpoke does much better than the furry girls, because it doesn't try to be too complicated 12:38:26 Is there one called I_drive_a 12:38:30 to fill that gap 12:38:35 I don't think so 12:39:04 !bfjoust i_drive_a [>] 12:39:06 now there is 12:39:07 also, about long programs: allegro is third, and it's a oneliner 12:39:13 ​Score for elliott_i_drive_a: 4.5 12:39:19 yessssssssssss 12:39:25 that's slightly more than 4.3! 12:39:28 define oneliner? :P 12:39:33 fits into one line of IRC 12:39:37 heh 12:39:42 here's allegro: ->++>-->>+>>->+>+(>[(+)*9[-].[.+]])*2(+<)*4(+)*23<(-)*23<(-)*30<(+)*30<(-)*30<(+)*29(>)*9++(>[(+)*16[-].[.+]][-[+]])*19 12:39:44 where is the link to the hill again? 12:39:49 http://codu.org/eso/bfjoust/report.txt 12:39:57 (you can submit long programs via giving URLs to EgoBot) 12:40:07 ais523: is there a way t 12:40:11 o reset my GPU memory? 12:40:11 shouldn't I be on there? 12:40:12 restarting X? 12:40:17 (my program is leaky and I want to play DF) 12:40:22 for a time, people were submitting arbitrary pages to EgoBot as a joke, like the report, and Google 12:40:27 elliott: not in general, no 12:40:30 restarting X might work 12:40:43 but I wouldn't count on it 12:40:43 hard reboot will work 12:40:50 i'll hard reboot then 12:40:54 by literally holding the power button 12:40:58 live fast, die young 12:40:58 * zid is pretty sure he scored >20 twice 12:40:59 zid: you are on there 12:41:09 ctrl-f zid 404 12:41:10 wiggly and simple_sniper are both on the list 12:41:18 oh, cache is wrong 12:41:22 39 47 21.13 -7.79 zid_wiggly.bfjoust 12:41:31 firefox seems to be ignoring it 12:41:37 the no-cache header 12:41:51 pressing F5 works 12:41:53 how come there's a 4.47? 12:42:06 that's the most recently submitted program 12:42:11 it always gets 48th? 12:42:15 it's not on the hill, but it's shown in comparison to the others 12:42:18 so that people know how well it did 12:42:26 -!- elliott_ has joined. 12:42:47 39th will do, I said I wanted a hill position and I got one :P 12:43:02 the most recently eliminated program (which is often but not always the most recently submitted) is shown on the list at the top too 12:43:28 hmm, space_elevator is still #5 12:43:49 I should try to remember how it works 12:43:51 i've been thinking about improving it 12:43:53 -!- elliott has quit (Read error: Connection reset by peer). 12:44:01 quintopia: does anyone but you and me understand it at all? 12:44:07 I should think about a funge war would work 12:44:16 bf is cool because it has the idea of a tape already in it 12:44:29 you don't really need to add anything but machine architecture 12:44:46 even so, Kerim coming up with sharing the tapes was a pretty nifty idea that got it all started 12:44:47 ais523: you understood it once. i am too lazy to write it out, but it is actually less complicated than slow poke 12:45:03 ais523: We should write quad core bf apps, obviously 12:45:04 yep, seems about right, it just has stupidly many cases 12:45:07 which makes it look confusing 12:45:23 (most of which are the same basic concept but differ in the details) 12:45:33 and slowpoke is relatively simple too 12:45:40 * zid ponders about competitive spacechem 12:45:40 at least compared to waterfall3 12:45:48 zid: i had a plan for a funge game. shared fungespace with code that is unwritable by the other guy, since the goal is to overwrite a certain shared area 12:45:49 red vs blue waldo 12:45:59 quintopia: Hmm, nice idea 12:46:25 What about befunge where both players appear to be 'above' the other's grid, and there's an instruction that drops a bomb 12:46:28 and destroys a symbol 12:46:33 and you win by making the other guy hit an edge 12:46:54 Befunge doesn't really have edges, but I suppose you could surround the area with landmines or something 12:46:55 obviously most programs would be perfect grids of > on the left edge, < on the right edge, etc 12:47:03 but it might work 12:47:10 it wouldn't be interesting unless you could read the enemy fungespace 12:47:15 See, I'm already coming up with strategy :P 12:47:19 so as to get an idea about what the opponent was doing 12:47:31 ais523: but of course, you're limited by your own processing space 12:47:32 zid: well, even something as basic as the rule of 9 took a while to come up with in BF Joust 12:47:38 and the offset clear was revolutionary 12:47:39 does the read instuction take an x,y pair 12:47:43 or does it read under your 'reader' 12:47:47 x,y pair 12:47:54 brb, lunch 12:48:07 zid: you want viewing distance 12:48:08 elliott_: You have 1 new message. '/msg lambdabot @messages' to read it. 12:48:08 I just don't think funge is well-fitting enough, which is a shame 12:48:27 You could shoe-horn a billion games into funge wars 12:48:33 but bf joust really fits in nicely to BF 12:48:42 you're just adding machine architecture around the existing cpu 12:49:37 wow, I just had an idea like.. battle stations for bf joust, you put your program on a flash stick 12:49:43 and plug it into a machine with 2 usb ports 12:49:48 and it battles them and says who wins 12:49:57 that's called a really limited computer :P 12:50:00 and you win some ELO 12:50:16 It'd be like pokemans in real life, but with brainfuck :P 12:50:32 i feel like the us needs an esolang event o.o 12:50:47 -!- ralc has joined. 12:50:50 I feel like the US needs carpet bombing, what a strange difference in views 12:51:25 zid, oh shut up. 12:51:29 * zid grins 12:52:16 I, too, think that the correct solution to a difference in political opinion or culture or whatever is mass murder. 12:52:16 my guess is that zid lives in the us 12:52:33 you have to live here to hate it that much 12:52:51 Thankfully, no 12:52:58 I live in little britain 12:53:13 why do you want to carpet bomb the us again 12:53:29 free carpets for EVERYBODY 12:54:41 I see 12:54:59 The real reason is that their wallpaper is too ugly 12:55:19 i'm sure 12:55:21 !bfjoust true_winner (-)*-1 12:55:25 ​Score for monqy_true_winner: 11.7 12:55:28 see 12:55:30 I mean 12:55:31 aww 12:55:37 my fingers were offset by one 12:55:46 this is how stupid I am 12:55:54 I can't even place my robot fingers properly :( 12:56:13 what led to the decision of making it two consecutive turns at 0 for the flag? more strategy? 12:56:23 yes 12:57:28 i think making it three consecutive turns would make it even more strategy 12:57:46 You mean stratelogical 12:57:49 Ten consecutive terms. 12:57:51 ist 12:57:57 turns. 12:57:58 w/e. 12:58:22 ten turns and true winner will have its way 12:59:41 ten turns: shudder is automatic winner 13:00:14 what's shudder 13:00:42 (++-+-++-+++---+-++-)*-1 13:00:54 nice 13:01:43 hell it'd be hard to beat even with three turns, but once you can, everything becomes richer 13:01:48 aka hard as hell 13:07:08 I'd be more interested if bf joust used a fixed tape length I think 13:07:20 actually no 13:07:24 I just didn't think that through 13:07:37 -!- sebbu has quit (Ping timeout: 245 seconds). 13:08:20 -!- sebbu has joined. 13:11:22 lul 13:12:09 a fixed tape with a wandering flag? 13:13:51 quintopia: a three-turn wait allows triplocking on your own flag, which is AFAICT a broken strategy 13:18:19 monqy: wow true_winner gets a lot of ties 13:18:30 ah, that's the program that lots of people have submitted 13:18:39 ah 13:18:48 I can't remember who called it you_spin_me_right_round, that was the best name for it I've seen 13:18:52 well tying was the goal 13:19:55 a good antishudder clear will be able to beat it on both polarities; most programs will beat it on one 13:22:29 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(+)*-1}]<(-)*-1)%120 13:22:35 ​Score for ais523_polarity_spinner: 11.8 13:22:38 hmm 13:23:11 !bfjoust polarity_spinner >>>>(+)*6<+<(+)*40>[]<([{<<(+)*-1}]<<(-)*-1)%120 13:23:17 ​Score for ais523_polarity_spinner: 9.0 13:23:27 looks like that particular cheap trick doesn't work any more 13:23:53 speaking of cheap tricks, hi ais 13:24:06 wb me 13:24:08 (and hi zid) 13:24:16 I went and made a snack 13:24:21 now I'm watching minish cap 13:24:23 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40<(-)*33>>[]<([{<<(+)*-1}]<(-)*-1)%120 13:24:27 ​Score for ais523_polarity_spinner: 3.0 13:24:33 how does that one work then? 13:24:37 must have miscounted, I take it 13:24:57 it's meant to be like true_winner/increase/you_spin_me_right_round/all the other names that have been used 13:25:06 I don't know what that is 13:25:11 how does it work? 13:25:11 except that it detects what polarity the opponent is using, and matches it 13:25:20 basically, keep adjusting your flag in one direction 13:25:36 the opponent can only win by adjusting it the other way, otherwise it's either a draw or they fall off the end 13:25:41 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(+)*-1}]<(-)*-1)%120 13:25:47 ​Score for ais523_polarity_spinner: 11.8 13:25:51 yea, my bot loses to 'falls off the end' 13:25:54 I /have/ got this the right way round, right? 13:25:56 unless I wrap the [-] in another loop 13:26:00 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(-)*-1}]<(+)*-1)%120 13:26:05 ​Score for ais523_polarity_spinner: 4.3 13:26:09 yep, definitely 13:26:44 there's a way of wrapping loops to guarantee you can't fall off, let me try to rememebr it 13:26:45 *remember 13:26:54 [-[-]][-[-]], I think 13:27:12 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(-)*-1}]<(+)*-1)%130 13:27:16 ​Score for ais523_polarity_spinner: 6.7 13:27:23 what happens if your flag is 0 for a turn, then one bot +s it and one bot -s it, does that make a loss? 13:27:31 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(-)*-1}]<(+)*-1)%121 13:27:33 zid: yes 13:27:36 ​Score for ais523_polarity_spinner: 5.7 13:27:45 otherwise (+)*-1 would be unbeatable 13:27:50 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(-)*-1}]<(+)*-1)%118 13:27:56 ​Score for ais523_polarity_spinner: 5.2 13:27:59 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(-)*-1}]<(+)*-1)%120 13:28:04 ​Score for ais523_polarity_spinner: 4.3 13:28:05 or [+] ? 13:28:08 aha, this is the backwards version 13:28:19 zid: that wouldn't, you could beat it via going to the flag then (-)*-1 13:28:29 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(+)*-1}]<(-)*-1)%130 13:28:29 oh you could beat it by doing -- twice yea 13:28:34 ​Score for ais523_polarity_spinner: 12.4 13:28:39 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40>[]<([{<(+)*-1}]<(-)*-1)%140 13:28:45 ​Score for ais523_polarity_spinner: 11.9 13:28:50 I used to not tweak constants, now I'm shameless about it 13:28:58 :D 13:29:03 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40<(-)*10>>[]<([{<(+)*-1}]<(-)*-1)%130 13:29:05 "If the theory is solid it should win regardless" ? 13:29:09 ​Score for ais523_polarity_spinner: 15.1 13:29:14 take that, turtles! 13:29:41 yep, that's the principle 13:30:51 -!- monqy has quit (Quit: hello). 13:30:56 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40<(-)*10>>([{(>)*6(>+++++[-.+-])*21}]<([{<(+)*-1}]<(-)*-1)%130)%8000 13:31:01 ​Score for ais523_polarity_spinner: 15.4 13:32:04 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40<(-)*10>>([{(>)*6(>+++++[-....])*21}]<([{<(+)*-1}]<(-)*-1)%130)%8000 13:32:09 ​Score for ais523_polarity_spinner: 20.6 13:32:20 there we go, I think that's beating the defense programs 13:32:39 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40<(-)*10>>([{(>)*6(>+++++[-....])*21}]<([{<(+)*-1}]<(-)*-1)%130)%80000 13:32:45 ​Score for ais523_polarity_spinner: 17.0 13:32:50 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40<(-)*10>>([{(>)*6(>+++++[-....])*21}]<([{<(+)*-1}]<(-)*-1)%130)%4000 13:32:52 wat 13:32:57 ​Score for ais523_polarity_spinner: 19.8 13:33:06 well, if two defense programs end up against each other, they do nothing forever, right? 13:33:10 I don't get how that scores differently? 13:33:16 so if you think that's happened, you go and use an anti-defense program 13:33:28 the large number at the end is the number of cycles it waits before assuming defense 13:33:35 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40<(-)*10>>([{(>)*6(>+++++[-....])*21}]<([{<(+)*-1}]<(-)*-1)%130)%12000 13:33:35 oh right 13:33:41 ​Score for ais523_polarity_spinner: 19.0 13:33:43 you should figure it out! :D 13:33:47 !bfjoust polarity_spinner >>>(+)*6<+<(+)*40<(-)*10>>([{(>)*6(>+++++[-....])*21}]<([{<(+)*-1}]<(-)*-1)%130)%8000 13:33:53 ​Score for ais523_polarity_spinner: 19.6 13:33:53 looks like I was right first time 13:33:59 be cycle perfect on 0ing their flag ;) 13:34:19 that's how I tweaked waterfall3 to beat elliott_'s copy of it when he submitted a copy of it 13:34:33 has fixed duration "highest value flag loses" been tried as a variant? 13:34:37 started attacking a couple of cycles sooner, and beat the clone of itself to the flag while not changing the result against anything 13:34:43 zid: I don't think so 13:34:49 sounds interesting to me 13:34:55 would falling off the end still be a loss? 13:35:09 shrug 13:35:23 I think it'd just HALT you 13:35:23 lowest flag looses seems potentially more interesting, otherwise the optimal behaviour is clearly to just set the flag to 0 so the opponent can't tell where it is 13:35:31 unless, hmm, the opponent pokes you 13:35:38 I prefer yours I think 13:35:46 do flags start at 0? 13:36:03 in highest-wins, I don't see why not 13:36:08 that sounds fun 13:36:24 it'd balance incing your own flag vs decing theirs 13:36:30 and bobytraps of course 13:38:12 I guess (+)*128 would be the standard intro, rather than (>)*9 13:38:28 or you could do +120 then rush their flag, to get their first 13:38:33 !bfjoust undermine >>>>(>[[>](>(-)*120[-])*-1])*-1 13:38:35 there* 13:38:36 ​Score for ais523_undermine: 15.6 13:38:57 I wonder if it has anything that just stops it working as a competitive thing 13:39:04 heh, I've made a program that mostly just beats my own programs 13:39:05 like it's really easily solveable or something 13:39:36 am I really the only person using reverse decoy setup? 13:39:49 I'd add that strategy to the strategies page if it were at all good, as I don't think it's there yet 13:41:03 oh, I clearly need a small offset before doing the reverse offset clear 13:41:28 CLEARLY 13:41:38 I would have told you but I didn't want to ruin the surprise 13:41:54 !bfjoust undermine >>>>(>[[>]((>++++[-[-[-[-[-[-[-[-[(-)*120[-]{}]]]]]]]])%29)*-1])*-1 13:41:56 ​Score for ais523_undermine: 0.0 13:42:02 err, that obviously doesn't compile 13:42:08 I think you have a boog :P 13:42:18 !bfjoust undermine >>>>(>[[>]((>++++[-[-[-[-[-[-[-[-[(-)*120[-]{}]]]]]]]])%29)*-1])*-1 13:42:20 ​Score for ais523_undermine: 0.0 13:42:22 !bfjoust undermine >>>>(>[[>]((>++++[-[-[-[-[-[-[-[-[(-)*120[-]{}]]]]]]]]])%29)*-1])*-1 13:42:24 ​Score for ais523_undermine: 21.4 13:42:30 that's better 13:42:55 damnit, you beat me by .3 13:43:02 am I 40th now? :P 13:43:05 heh, it's pushed you down from #39 13:43:10 yes, you're 40th 13:43:40 Is there anything stopping you just submitting a program that does the same thing, but with different names, and maybe an unreachable statement to stop a string match? 13:44:14 they won't do well 13:44:29 hmm? 13:44:59 well, programs draw against themselves 13:45:03 win and lose against the same things 13:45:08 so it's basically just another draw 13:45:08 eh 13:45:12 i guess it might work to flood the hill 13:45:15 but it's easily rerversible 13:45:30 because the sniper for it will just end up beating it? 13:45:38 yeah 13:45:42 it might work for knocking people out of the list though 13:45:55 if I put 40 waterfalls up, that *would* have gotten the top 40, the waterfall sniper will instead get #1 13:46:03 even if sniper would otherwise have been lower ranked 13:47:14 -!- ais523_ has joined. 13:47:29 -!- ais523 has quit (Disconnected by services). 13:47:30 -!- ais523_ has changed nick to ais523. 13:47:34 !bfjoust undermine >>>>(>[[-[++[>]]]((>++++[-[-[-[-[-[-[-[-[(-)*120[-]{}]]]]]]]]])%29)*-1])*-1 13:47:37 ​Score for ais523_undermine: 18.7 13:47:43 I would manipulate first place but I can't be bothered :P 13:48:06 it's about seeing your programs do well, rather than seeing programs you submitted do well 13:48:23 I could get my bot #1 13:48:25 the one I wrote 13:48:35 if I flooded with bots that it beat that are higher scored against it 13:48:49 so I write a bot to beat spam_poke, then submit 100 spam_pokes 13:49:02 and the top 40 that would be spampoke, gets beaten by my bot that beats spam_poke 13:49:04 every time 13:49:07 no you couldn't, the scoring system is designed to counteract that 13:49:10 cool! 13:49:18 how does it do that? 13:49:25 you'll find that the more duplicates of a program are submitted, the worse it tends to do 13:49:35 simply because the same programs beat it each time 13:49:35 right, that also helps me though 13:49:40 for instance, anticipation beats slowpoke 13:49:41 I submit *my* program once 13:49:48 and submit 30 copies of everything else 13:49:54 they all get draws, I get 30 free wins from spampoke 13:49:55 so it'll climb in the rankings the more clones of anticipation are submitted 13:49:59 and that only counts for duplicates on the hill 13:50:07 your clones will have trouble staying on the hill after a while 13:50:18 I still think there's some manipulation I could do, even if not for a guarenteed first 13:50:31 (that said, if a program beats the entire hill, like waterfall3 and slowpoke both did for a time, you can ruin the hill by spamming copies of it; someone actually did that and we had to revert the hill, it was a mess) 13:50:47 that someone was me hi 13:50:54 !bfjoust undermine >>>>(>[([-[++[>{}]]]((>++++[-[-[-[-[-[-[-[-[(-)*120[-]{}]]]]]]]]])%29)*-1)%29])*-1 13:50:57 ​Score for ais523_undermine: 15.4 13:51:07 wow, I didn't expect that to do worse 13:51:10 has bruteforce been tried 13:51:11 must just be that it's too slow 13:51:30 * zid wonders how quickly powers of 6 scale 13:52:02 oh, aha, why is it reverse offset clearing a value -1 decoy? 13:52:21 ais, could I bruteforce all 10 character programs (no expansion stuff) 13:52:22 evolutionary programming's been tried, but it didn't do all that well 13:52:26 not evolutionary 13:52:27 bruteforce 13:52:46 ah, it isn't 13:53:09 the real problem's that I have a test backwards 13:53:16 zid: possibly, but I suspect none would do well 13:54:45 shame it runs so slowly 13:54:48 need that brainfuck cpu 13:55:10 Maybe I should learn how to make bfj in an fpga 13:55:21 8GHz clockrate gogo 13:56:21 I should just write the program that fights programs 13:57:44 !bfjoust undermine >>>>((>[-[++[>([-[++[>{}]]]((>++++[-[-[-[-[-[-[-[-[(-)*120[-]{}]]]]]]]]])%29)*-1)%29]{}]])%29)*-1 13:57:46 ​Score for ais523_undermine: 10.9 13:57:51 bleh 13:57:59 you mean it does better with the test backwards? 13:58:34 handling the expansion will suck :/ 13:58:57 my interp, just like most competitive interps, run rather faster than egojsout, which is more of a debugger 13:59:08 and optimises expansion 13:59:18 do you do complicated representations 13:59:22 or just use the string 13:59:31 complicated representations, of course 13:59:32 !bfjoust undermine >>>>(>[[>]((>++++[-[-[-[-[-[-[-[-[(-)*120[-]{}]]]]]]]]])%29)*-1])*-1 13:59:34 the important thing is about expansions 13:59:35 ​Score for ais523_undermine: 20.3 13:59:36 I might have to go for complicated just to make the expansion easy 13:59:38 strings are not a good format 13:59:50 I can just use a signed int for TTL 13:59:50 zid: we have well-established general algorithms for that 13:59:52 (ask oerjan) 13:59:54 and <0 is infinite 13:59:59 elliott_: YES FUN! 14:00:01 LESS* 14:00:06 zid: ok, enjoy your slow interp 14:00:07 wow I accidently the wrong word entirely 14:00:10 fuck off :/ 14:00:53 I'm not entirely sure I followed oerjan's algo 14:00:59 I think I came up with basically the same thing independently 14:01:10 I was thinking of basically a linked list 14:01:13 but without it being linear 14:01:26 int command; with a couple of pointers to other nodes 14:01:31 if the command is ] or whatever 14:01:39 and expansion gets an int ttl; 14:01:48 which takes a different node once ttl hits 0 14:01:54 (or is never decrement in the -1 case) 14:02:01 yep, it's usual to have a linked list with the body of a loop connected in a different direction 14:02:04 not that it'd matter actually, it'd never hit -2billion before the counter expired 14:02:13 what you're describing is pretty much what juiced does internally 14:02:16 I don't see why this would be slow 14:02:23 zid: it's about () expansions 14:02:35 the entire speed is dependent on the fancy interpretations of those 14:02:49 I could just do some 'external' cheating for those I'm sure 14:03:06 You mean expanding ahead of time? 14:03:06 just replace some flow control pointers 14:03:12 no 14:03:14 You have to keep state. 14:03:28 expanding ahead of time would work easily of course 14:03:33 even for the -1 case there's a cycle limit 14:03:34 It wouldn't because you run out of memory. 14:03:37 And time. 14:03:38 so it wouldn't use more than 100KB or whatever 14:03:42 Incorrect 14:03:54 oh right you can have any length thing inside () 14:03:58 Paths can be not taken as well as taken 14:04:04 Plenty of programs blow up on any expanding interpreter 14:04:07 so it's 100k per () 14:04:08 !bfjoust undermine >>>>(>[[>]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1])*-1 14:04:10 ​Score for ais523_undermine: 20.5 14:04:14 what's the cycle limit? 14:04:17 now, that's interesting 14:04:19 100k. 14:04:21 zid: 100000 in egojoust 14:04:24 But the cycle limit is irrelevant. 14:04:26 ais523: in every joust 14:04:28 and that's become a defacto standard as a result 14:04:31 elliott_: yes 14:04:35 why doesn't it matter? 14:04:36 also, it's not irrelevant 14:04:46 If I enter a () I can prove it won't be in there any more than 100k cycles 14:04:49 waterfall3 would hit it if I didn't change to a fast rush when it was at around cycle 96000 14:04:51 so I only need to expand it to a 100kB limit 14:05:03 not that I'm even doing it this way 14:05:07 I'm just saying it's possible 14:05:10 and works fine 14:05:11 ais523: tell zid why pre-expansion doesn't work, I'm too busy 14:05:23 zid: you can have masses of nested loops 14:05:30 !bfjoust undermine >>>>(>[[>]((>++++[-[-[-[-[-[-[-[-[(-)*116[.-]{}]]]]]]]]])%29)*-1])*-1 14:05:33 ​Score for ais523_undermine: 20.5 14:05:42 good to know that tweaking /that/ constant doesn't matter 14:05:53 changing to the three-cycle clear makes it beat space_elevator, interestingly enough 14:05:54 or 116-120 both work fine 14:05:59 but 114 is way better :P 14:06:40 what command are you supposed to run after hg pull (if any)? I've forgotten 14:06:47 ah, hg update 14:06:47 * zid uses git 14:06:49 hg update or hg merge 14:07:37 zid: I know; there's an hg repo of the egojoust competitors, though, and I wanted to update it 14:07:52 I just wanted to say "no idea" 14:07:57 in a way that'd also give some context why 14:08:12 ais523, you can do hg pull -u iirc to do the hg up automatically 14:08:29 The tape itself has a random length from 135 to 167 elements; isn't it 10-35? 14:08:38 10-30 14:08:43 zid: you're reading an old document 14:08:51 about G.'s version 14:08:51 someone linked me it and told me to read it (stares at ais) 14:08:54 it used to be much longer, but shorter tapes were more interesting 14:09:01 zid: that was elliott_ who linked you to it, not me 14:09:10 the staring worked regardless :D 14:09:12 * ais523 stares at elliott_ 14:09:17 proxy staring! 14:09:20 umm, what did I link? 14:09:24 http://esolangs.org/w/index.php?title=BF_Joust&oldid=21108 14:09:28 oh, that explains the new version later on 14:10:24 anybody doing [ or ] has presendence over someone doing + or - is all I really need to know about regarding synchrroniziging? 14:10:33 * zid spels gud 14:10:43 !bfjoust undermine >>>>(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%5])*-1 14:10:46 ​Score for ais523_undermine: 22.2 14:10:53 zid: pretty much, it's the only case where there can be a contradictoin 14:11:00 *ambiguity 14:11:07 22.2, you MONSTER 14:11:52 wow, that little change worked wonders against quite a few programs 14:11:56 and did nothing at all against most of the others 14:12:05 (it might look like a big change, but I just duplicated the clear loop) 14:13:12 it does really well at the start of the alphabet, but then is beaten horrifficaly by myndzi's programs 14:13:20 let me put an antiturtle in there and see how much difference it makes 14:13:28 !bfjoust undermine (+)*9>>>>(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%5])*-1 14:13:31 I expect it to do worse 14:13:31 ​Score for ais523_undermine: 28.5 14:13:33 but I don't know 14:13:34 lol 14:13:36 MONSTER KILL 14:13:36 wow, I was wrong 14:14:02 guess I can't disregard turtles after all 14:14:24 that only seems to really hurt against anticipation 14:14:35 and it still beats that, just not by as much 14:16:20 !bfjoust undermine (+)*9>>>>>>(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%5])*-1 14:16:23 ​Score for ais523_undermine: 24.7 14:16:27 !bfjoust undermine (+)*9>>>>>(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%5])*-1 14:16:30 ​Score for ais523_undermine: 27.1 14:16:35 !bfjoust undermine (+)*9>>>(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%5])*-1 14:16:38 ​Score for ais523_undermine: 29.8 14:16:43 !bfjoust undermine (+)*9>>(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%5])*-1 14:16:46 ​Score for ais523_undermine: 30.8 14:16:50 !bfjoust undermine (+)*9>(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%5])*-1 14:16:53 ​Score for ais523_undermine: 31.4 14:16:57 !bfjoust undermine (+)*9(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%5])*-1 14:17:00 ​Score for ais523_undermine: 31.9 14:17:04 oh, come /on/ 14:17:09 lol 14:17:10 * zid stabs ais523 in the winningness 14:17:21 Patashu: I was expecting the opposite pattern :) 14:17:30 negative >s seems to be a bad idea, though 14:18:05 (+)*9(> <-- I found one you can remove here 14:18:22 Patashu: indeed, but that would cause it to detect its own flag as an enemy decoy 14:18:54 I think this is conclusive evidence that at least one program does not benefit from rule of 9 14:19:24 well it isn't using it is it 14:19:32 anyone else figured out the principle I'm using there? 14:19:34 -!- monqy has joined. 14:19:37 rule of 99 14:19:53 zid: no; the longest used there is a rule of 7, and reducing it all the way, eventually to a rule of 1, helped every time 14:20:25 rule of 9 only helps if you're not trying to trap your flag 14:20:29 so why would rule of 9 always be good? 14:20:42 when attacking, it basically means you don't waste time clearing enemy decoys 14:20:54 defensive programs use rule of 9 only when they switch to an attack loop, like a full-tape clear 14:20:59 * zid thinks of a good way to handle the square bracket detection 14:21:00 that program, though, is looking for enemy decoys 14:21:07 to be precise, it's looking for a reverse decoy setup 14:21:16 then it goes forwards until there's a cell on which there /isn't/ a decoy 14:21:29 then it goes forwards again until it finds a nonzero cell, and if it isn't small-valued assumes it's a flag 14:21:54 should it find more than five "decoys" in a row, it assumes it's facing a trail rather than a reverse decoy setup, and changes tactics to ones that beat trailing programs 14:22:25 then it uses a 3-cycle reverse offset clear at the end, because some programs try to defend against fast rushes using a 2-cycle lock 14:22:40 so I suppose this is an evolution of tripwire_avoider and of fast_rush_slow_clear 14:23:18 so, so far I've got it up to between the two wirelesses 14:23:24 anyone notice any more obvious improvements? 14:23:33 I'll run it through the constant tweaker, just in case it helps 14:23:40 * ais523 tries to remember how the constant tweaker works 14:24:16 ah, flag tweakable constants as ##CONSTANT5## rather than 5 14:24:31 if((p1c == '[' || p1c == ']') && (p2c == '+' || p2c == '-')) 14:24:31 p1_first(&p1, &p2); 14:24:31 else 14:24:31 p2_first(&p1, &p2); 14:24:37 wait no, that's internal 14:24:37 can you think of anything that would break that 14:24:38 just suffix t 14:24:40 OK, I'll do that 14:25:02 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:25:03 zid: no 14:27:18 !bfjoust undermine (+)*9(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%4])*-1 14:27:21 ​Score for ais523_undermine: 27.7 14:27:24 !bfjoust undermine (+)*9(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%6])*-1 14:27:27 ​Score for ais523_undermine: 31.2 14:27:31 !bfjoust undermine (+)*9(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%7])*-1 14:27:34 ​Score for ais523_undermine: 28.5 14:27:40 !bfjoust undermine (+)*10(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%6])*-1 14:27:43 ​Score for ais523_undermine: 31.5 14:27:49 !bfjoust undermine (+)*11(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%6])*-1 14:27:52 ​Score for ais523_undermine: 33.9 14:27:56 !bfjoust undermine (+)*12(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%6])*-1 14:27:59 ​Score for ais523_undermine: 34.0 14:28:04 presumably this is catching out some of the turtles 14:28:12 while also giving the opponent more time to get into the meat of its decoy setup 14:29:53 heh piss off gcc 14:29:59 trying to test if this inlines well or not 14:30:24 yep, it sure does, my entire program compiles to push ebp / xor eax, eax / mov ebp, esp / pop ebp / ret 14:31:01 !bfjoust undermine (+)*6(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:31:04 ​Score for ais523_undermine: 35.9 14:31:08 thanks tweaker! 14:31:20 !bfjoust undermine (+)*6(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%3])*-1 14:31:23 ​Score for ais523_undermine: 27.7 14:31:23 http://codepad.org/ABjrTpw8 14:31:29 it amazes me that gcc can compile that down to xor eax, eax 14:31:29 !bfjoust undermine (+)*5(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:31:32 ​Score for ais523_undermine: 38.8 14:31:37 wow 14:32:06 !bfjoust undermine (+)*0(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:32:09 ​Score for ais523_undermine: 32.1 14:32:13 !bfjoust undermine (+)*4(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:32:16 ​Score for ais523_undermine: 35.2 14:32:22 !bfjoust undermine (+)*5(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:32:25 ​Score for ais523_undermine: 38.8 14:32:28 * zid fixes an off-by one in the cycle count 14:32:30 seems to be a sweet spot there 14:32:56 I need to write the little compiler thing 14:33:08 that generates the flow control linked-list bastard thing 14:33:08 !bfjoust undermine (+)*12(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:33:11 ​Score for ais523_undermine: 35.4 14:33:35 hmm, so either I can do well against quintopia, or I can do well against myndzi 14:33:41 does the record file keep the best score or the most recent one 14:34:08 most recent for each program 14:34:18 so you can delete a program by replacing it with < 14:34:46 < would increase my score ;) 14:34:51 !bfjoust lazy . 14:34:54 ​Score for monqy_lazy: 6.6 14:34:57 wooooo 14:35:21 I guess I won against suicides or something? 14:35:37 () without a * is valid but does nothing? 14:35:47 !bfjoust undermine (+)*12(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%6])*-1 14:35:49 ​Score for ais523_undermine: 34.0 14:36:04 !bfjoust undermine (+)*12(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:36:06 ​Score for ais523_undermine: 35.4 14:36:13 !bfjoust undermine (+)*10(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:36:15 ​Score for ais523_undermine: 35.0 14:36:20 !bfjoust undermine (+)*9(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:36:23 ​Score for ais523_undermine: 38.7 14:37:12 zid: it's invalid 14:37:18 !bfjoust undermine (+)*6(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:37:21 ​Score for ais523_undermine: 35.9 14:37:24 that saves me some trouble then 14:37:28 !bfjoust undermine (+)*13(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:37:31 ​Score for ais523_undermine: 39.1 14:37:40 I wasn't expecting /that/ 14:37:44 what's all this then 14:37:48 brainfuck joust 14:37:53 ais == dirty cheater 14:38:08 i wash myself 14:38:17 he's a dirty version of you 14:38:18 no reason to get unfriendly 14:38:23 oh ok 14:38:26 !bfjoust undermine (+)*14(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:38:28 cheater, you don't have servants to do it for you? 14:38:29 ​Score for ais523_undermine: 34.1 14:38:29 what does undermine do? the bracket patterns look sort of like something I was trying to write but then gave up 14:38:36 13 seems to hit a sweet spot 14:38:43 kmc, that was the royal I. 14:38:46 I, the state. 14:38:46 mostly because it gets a flawless victory against FFLDG for reasons I don't fully understand 14:38:53 !bfjoust undermine (+)*15(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:38:56 ​Score for ais523_undermine: 37.6 14:39:02 !bfjoust undermine (+)*16(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:39:07 ​Score for ais523_undermine: 32.8 14:39:21 !bfjoust undermine (+)*12>+([([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2]>)*-1 14:39:25 ​Score for ais523_undermine: 25.3 14:39:33 oh, obviously 14:39:41 !bfjoust undermine (+)*12>+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:39:43 ​Score for ais523_undermine: 36.6 14:39:52 !bfjoust undermine (+)*11>+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:39:54 ​Score for ais523_undermine: 40.8 14:39:57 wow 14:40:08 no seriously, what the hell is this 14:40:10 what a difference a decoy can make, eh? 14:40:13 kmc: brainfuck joust 14:40:16 you said that 14:40:18 http://esolangs.org/wiki/BF_Joust 14:40:25 thanks 14:40:44 I wish I had some good language/game ideas 14:40:47 http://codepad.org/ghmwa5G1 14:40:52 that's basically v0.1a of my struct 14:40:59 command is + or - etc 14:41:33 !bfjoust undermine (+)*11>+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%3])*-1 14:41:36 ​Score for ais523_undermine: 30.6 14:42:07 every turn decrements count, if count is 0 you take next_paren, otherwise next_instruction, next_bracket is if your [ or ] executes a jump 14:42:13 heh, changing it to %3 suddently caused it to lose to loads of things 14:42:15 !bfjoust undermine (+)*11>+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:42:18 ​Score for ais523_undermine: 40.8 14:42:25 O_o 14:42:30 should work I hope 14:42:40 what do you think ais, or will that break your concentration 14:42:52 it's similar to what I'm doing in juiced 14:43:00 I haven't checked to see if you've got the details right 14:43:07 but you've got the general principle right 14:43:23 wow, now it's eighth 14:43:28 How I'm going to free this I have no idea :P 14:43:33 Maybe I just won't ;) 14:43:34 and hitting slightly above 50% 14:45:28 time to add the strategy to the wiki, I guess 14:53:26 and added 14:53:59 heh, it loses to simple with all 42 combinations 14:54:11 and I'm not surprised by that at all, simple doesn't use a reverse decoy setup 14:54:42 pretty much all BF Joust strategies recently have been "find something that opponents do consistently, then work out how to exploit it" 14:56:05 so this is probably obvious and cliché but: has anyone tried evolving bfjoust players, and if so how did it work out? 14:56:23 yes 14:56:24 badly 14:56:27 kmc: they have, and not massively well 14:56:41 I sometimes use an evolutionary algorithm to tweak constants 14:56:50 !bfjoust undermine (+)*11>+>+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:56:52 ​Score for ais523_undermine: 40.5 14:56:58 !bfjoust undermine (+)*11>+>++(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:57:01 ​Score for ais523_undermine: 36.5 14:57:06 !bfjoust undermine (+)*11>->+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:57:09 ​Score for ais523_undermine: 38.9 14:57:16 !bfjoust undermine (+)*11>-->(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:57:18 ​Score for ais523_undermine: 39.5 14:57:23 !bfjoust undermine (+)*11>--(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:57:26 ​Score for ais523_undermine: 35.3 14:57:44 ais523: that sounds pretty much perfect 14:57:46 !bfjoust undermine (+)*10>->+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:57:48 ​Score for ais523_undermine: 34.0 14:57:49 find the optimal value in a local minima 14:57:54 !bfjoust undermine (+)*9>->+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:57:57 ​Score for ais523_undermine: 38.0 14:58:09 !bfjoust undermine (+)*11>+(>[([>{((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1}]((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1)%2])*-1 14:58:12 ​Score for ais523_undermine: 40.8 14:58:42 what could be interesting: a program that went through all the games by a particular program, highlighting commands by the win percentage when that command ran 14:58:47 so you know which codepaths you tend to be in when losing 15:03:09 in fact, that might be an interesting way to evolve a program 15:03:18 codepaths with more of a tendency to lose get mutated more 15:07:15 wouldn't really help I don't think 15:07:20 it'd still get stuck in a minima somewhere 15:07:53 GA seems great at perfecting tactics 15:07:57 but poor for strategy 15:09:24 indeed 15:16:24 -!- nys has joined. 15:21:44 hi nys 15:21:57 hi...? 15:22:28 this is a channel about programming 15:22:34 oh 15:22:46 yep 15:22:53 I go by the name Twistle on the wiki .-. 15:23:23 oh, most people come here looking for the other kind of esoteric 15:23:27 b[9<<20],*a=b;main(){while(scanf("%d",a++)>0);for(a=b;*a;)a+=(a[*a]-=a[a[1]])?3:a[2];while(*++a)putchar(*a);} // 109 15:23:28 hi 15:23:36 hi 15:23:48 oh, you invented itflabtijtslwi? cool! 15:23:57 :D 15:24:30 well, it's pretty simples 15:24:32 *simple 15:24:40 better than thue :P 15:25:01 :P 15:25:04 I thought /// was a beautifully simple language that lacked input 15:26:01 so I put in an arbitrary construct :< 15:26:16 an incredibly arbitrary construct 15:26:27 but hey, that's what eso's about 15:27:03 it's a pretty nice input mechanism for /// 15:27:06 oh, now that I think about it, I should have made it even more arbitrary 15:27:11 perhaps modulo the characters used but you can solve that with /// :) 15:27:19 like INOUTOOPSIMEANTINPUT 15:28:14 that would be a fun construct 15:29:45 oh, I also made this --> http://esolangs.org/wiki/TRUE <-- and went on here afterwards, someone told me it would be turing complete if I added a queue instead of a stack, so that's what I did ^^ 15:38:27 -!- sebbu has quit (Ping timeout: 245 seconds). 15:38:50 and it is unimplemented 15:38:57 *wink* 15:39:32 -!- elliott_ has quit (Remote host closed the connection). 15:39:34 -!- elliott has joined. 15:45:05 Hm hm hm ... 109 is pretty good :P 15:45:18 Short enough for RT @CaptainHats 109B interp: 15:46:01 -!- sebbu has joined. 15:46:22 a program i am trying to automate with pexpect is running /usr/bin/pager (full path). i want it to run cat at that point. can i hack it with some non-portable trickery? 15:46:38 ln -s /bin/cat /usr/bin/pager 15:46:53 elliott: I assume he means without overwriting /usr/bin 15:47:17 ais523, elliott is obviously trolling 15:47:43 cheater: you could use a chroot; that's reasonably portable, but annoying to set up 15:47:43 Yeah, elliott's was perfectly portable 15:48:04 But anyway, most pagers won't page if the output isn't a TTY. 15:48:07 So it shouldn't be an issue. 15:48:12 ais523, yeah 15:48:14 for a nonportable method, you could hook whatever exec variant it was using in the library with LD_LIBRARY_PATH 15:48:23 Gregor: the output is a pty, cheater's using pexpect 15:48:49 hmm 15:48:59 Why does pexpect use a pty :P 15:49:00 wonder if i can control pager (which is less here) not to page at all 15:49:04 Gregor: telnet 15:49:08 Gregor: because that's the whole point 15:49:20 Well, in that case, you could run the command as whateverlol | cat 15:49:23 if you didn't need a pty, you wouldn't need something pexpect-style at all 15:50:01 ais523: Depends on what you're testing *shrugs* 15:50:25 But if you're testing something interactive and you have the pty anyway, why not just send a 'Q' to the pager? 15:52:37 -!- sebbu has quit (Ping timeout: 245 seconds). 15:59:30 -!- sebbu has joined. 16:26:04 -!- oklopol has joined. 16:28:40 oops the https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet guys accidentally forgot to mention clue :o well, no one's perfect i guess 16:30:18 :D 16:30:26 atehwa: you made a _fatal error_ 16:31:23 first of all clue is probably the only esolang that has a theme song 16:32:02 oklopol: now I'm audializing that hello world program I wrote in Fugue 16:32:13 oklopol: link 16:33:17 that list of esolangs there is bizarre 16:33:29 at least, I can't figure out what the basis behind inclusion/exclusion is 16:33:41 ais523: what we told them about, mostly 16:33:42 I'm particularly surprised to see ABCDXYZ there, for instance 16:33:48 ais523: that's because you said "all of mine" 16:33:54 did I? 16:33:56 yes :D 16:33:58 besides, not all of mine are there 16:34:00 well, or words to that effect 16:34:11 :≠ isn't, for instance, and it's part of the same group as BackFlip and ABCDXYZ 16:34:17 (yay compose key) 16:34:28 man, clue is such a great language 16:34:32 nor is Feather, but that is undoubtedly the correct choice 16:34:34 elliott: which one? 16:34:38 ais523: oklopol's 16:34:52 oklotalk should probably 16:34:55 I really love how it looks so obvious and intuitive but writing it is basically a process of brute force 16:35:02 be there even though it doesn't exist 16:35:44 yes clue is pretty fucking elegant 16:35:58 i wonder when i make clue2 16:36:14 how could you possibly improve, I mean apart from including the function list 16:36:28 it could just bruteforce with all permutations of all defined functions, using inferred type information to order the search 16:36:34 (as in "this function uses lists let's look at list functions first") 16:36:41 a minor change to branching and types. 16:36:44 that would only be about a hundred times slower and be about three times as elegant 16:37:03 oklopol: hard to get more elegant than "function ~ {inputs -> outputs}" :P 16:37:06 I mean maybe the recursion stuff 16:37:15 if you did it higher order maybe you could just include fix and remove the recursion stuff :P 16:37:45 yyyyeah i'm sure you could somehow remove the main idea of clue 16:38:00 oklopol: it would be great :-P 16:38:06 main ideas, schmain ideas 16:38:27 sure, it would then be the thing everyone's invented that's impossible to implement 16:39:09 hey wtf is just realized graphica is not on that list :D hahaha 16:39:12 wtf 16:39:13 well, it depends how good your "type inference is". it still contins the original idea of thue, it's just about guessing the list for you. if you used like theorems for free you might be able to get a far way 16:39:13 lol 16:39:15 sort of :P 16:39:30 what 16:39:38 yeah i totally agree with you 16:39:49 most agreeable nonsense i heard all day 16:39:51 well it's kind of the same idea as djinn. only not, but 16:40:11 theorems for free was wrt http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.9875 16:41:07 i have no idea what that has to do with anything though 16:42:20 i have to go now though, anyway that sounds like an article i should read 16:43:04 also toi seems to be lacking 16:43:12 crazy 16:43:36 even though it's the awesome 16:54:57 oko! 17:32:06 -!- jix_ has joined. 17:32:06 -!- jix_ has quit (Client Quit). 17:58:46 -!- Slereah has quit (Ping timeout: 258 seconds). 17:59:11 -!- GuestIceKovu has joined. 18:02:34 -!- ais523 has quit (Remote host closed the connection). 18:34:18 -!- Nisstyre has quit (Ping timeout: 245 seconds). 18:36:48 -!- cheater has quit (Ping timeout: 245 seconds). 18:43:22 -!- ais523 has joined. 18:48:40 -!- augur has joined. 18:51:28 -!- KingOfKarlsruhe has joined. 19:00:58 I'm awake! 19:01:09 i'm not 19:01:16 * zid gets a marker pen 19:03:43 -!- oerjan has joined. 19:05:02 -!- zzo38 has joined. 19:11:27 has there been much hill movement since I've been gone? 19:11:40 I'm pretty astonished that I managed to drive a new strategy to #8 in just a day, really 19:12:01 -!- oerjan has set topic: It is the 90s and there is time for Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | 12345678 | http://codu.org/logs/_esoteric/. 19:12:09 ais523: none 19:12:23 pity 19:15:23 oerjan, what did you change? 19:15:32 Vorpal: YOU WILL NEVER KNOW 19:15:54 although it did comply with a request by elliott in the logs 19:16:01 Vorpal: Added the 12345678 19:16:01 ah 19:16:17 also what is the first link in the topic about 19:16:26 google translate claims the url is invalid.. (?) 19:16:51 oh maybe it doesn't handle https 19:16:52 Every Finnish-language paragraph there is followed by the equivalent in English 19:17:04 And the URL itself is preceded by an explanation in the /topic 19:17:07 ah yes 19:17:48 Deewiant, yes that is what made me curious 19:18:14 Deewiant, I don't get the things about the 90s though 19:18:17 Just saying that it answers your "what is it about" 19:18:26 That's an addition of Phantom_Hoover's 19:18:41 Whut? 19:18:43 The original was just "Esolang event @ Hel/Finland on 3.10.2011" 19:18:45 Oh, that. 19:20:42 Vorpal: hint, you can frequently detect memes by typing the phrase into google and looking at the suggestions coming up. at least that's what i did for that thing in the topic. 19:21:08 what happens at an esolang event 19:21:22 zid: horrible brain-twisting stuff 19:21:48 -!- elliott has quit (Ping timeout: 245 seconds). 19:25:16 oerjan: Why would you be doing haskell at an esoland event? O_o 19:28:07 to implement esolangs in, of course 19:28:40 is the event in Finnish? or English? 19:28:48 if English, I want to see slides/recordings when it's done 19:29:06 You should send me to finland as your envoy 19:29:08 Presumably Finnish if everybody present understands Finnish, otherwise English 19:29:12 That's typical 19:29:40 it will be planned as dual finnish-english, which will be completely ruined when some prick insists that they must include swedish and there isn't time for that. 19:29:50 that's how it usually goes in finland, i think. 19:30:03 and then a norwegian will show up and call everybody uncultured 19:30:04 Except that there's no prick 19:30:14 I haven't run into such, anyway 19:30:21 yes, a .no prick :P 19:31:15 I've gotten one (1) report in Swedish out of about maybe a hundred and fifty (~150) that I've graded for the AI course. And I don't think they really *insisted* on being able to do it in Swedish. 19:31:56 -!- Taneb has joined. 19:32:09 Hello! 19:32:43 nethack would be a good AI thesis 19:32:58 I am extuingished¬ 19:34:06 I vaguely recall that a NetHack bot was one on the "suggestions for a project topic" list of the Prolog course. 19:34:12 I'm not sure if anyone ever did it. 19:34:34 problem is nethack is quite inaccessable for a bot 19:34:45 someone wrote api hooks for starcraft 19:34:49 You could possibly interface with some of the existing frameworks. 19:35:08 there's a starcraft AI competition too 19:35:13 TAEB or something. 19:35:18 I had a strange and crazy idea during my extuinguisment 19:35:53 A Non-Minimalistic OISC 19:37:01 Doable? Probably 19:37:06 Likeable? Probably not 19:37:27 It takes the entire point of a OISC and rips it from the concept 19:40:58 Actually I have once designed a schematic diagram for a processor that has only a transfer register to register and jump instruction, although it has a lot of registers with different functions. One of the registers is XORed with the jump destination to determine the actual address of the next instruction. 19:42:01 xor linked lists are there it's at 19:42:31 wow, I can't think, or type 19:45:41 and then a norwegian will show up and call everybody uncultured <-- that is not afaik the common national stereotype at _all_, if anything it's we norwegians who are considered uncultured. 19:46:08 (by the swedes, at least) 19:47:16 and the reverse :P 19:47:35 if you're really lucky, you can find someone from iceland to look down on all of them! 19:47:46 who then gets ran out of town 19:48:09 A Non-Minimalistic OISC <-- add the first argument to the product of the second and third argument, store into the address of the fourth argument, jump to the label in the fifth argument if result negative, the sixth if prime. 19:48:30 er *subtract the first argument from 19:48:39 i thought iceland was the comic relief country of scandinavia 19:49:07 kmc: if you believe satw, they all are. 19:49:54 iceland is your weird uncle 19:50:10 the old hákarl 19:50:12 i'm not sure which uncle is my weird uncle 19:50:17 -!- nooga has joined. 19:50:21 ahh 19:50:28 itidus20: The one who didn't molest you 19:50:31 there's some real microcontroller where all functional units are memory-mapped 19:50:43 to add numbers you mov them to the ALU 19:51:10 i wanted to build such thing 19:51:16 im really starting to miss the wonderful meals i had to eat at family gatherings growingup 19:51:23 all manner of wonderful salads and cakes 19:51:27 even wrote an emulator 19:51:36 plates with 3 salads and 4 kinds of meat 19:51:50 and 3 kinds of cake 19:53:20 Four whole kinds of meat! 19:53:33 im just pulling figures out of the air 19:53:48 but turkey, pork, beef, i dunno 19:53:57 -!- mauke has quit (Disconnected by services). 19:54:00 -!- mauke_ has joined. 19:54:03 A new kind of meat. 19:54:48 -!- mauke_ has changed nick to mauke. 19:55:13 so so hungry 19:56:04 -!- nooga has quit (Ping timeout: 258 seconds). 19:56:14 well not that hungry 19:56:19 -!- augur has quit (Remote host closed the connection). 19:56:24 A word of advice: 19:56:27 Don't. 19:56:50 -!- nooga has joined. 19:56:53 don't become a cannibal? 19:57:07 What I meant to say before I remembered the kind of people that frequent this channel, myself included: 19:57:31 ^just kididng 19:57:39 Don't have a two lists of thousands of floats in Python. 19:57:49 And if you do, close it as soon as possible. 19:58:13 And if you don't, turn off your computer 19:58:37 And if you don't do that in time, don't decide to switch OS half way through the recovery process 19:58:41 This can be simplfied to: Don't have python 19:58:58 And if you do, make sure you know who to call. 19:59:03 ghostbusters 19:59:36 BF Joust is a finite-state automaton 19:59:51 Irrelevant but true 20:00:17 Do you think the Monad class in Haskell ought to be defined that it requires to be also a Functor and that join is a member of Monad, and that you can define in terms of unit/join/fmap or return/bind and it does the other way by itself? 20:00:58 -!- nooga has quit (Ping timeout: 240 seconds). 20:01:29 i kind of want Functor < Pointed < Applicative < Monad 20:01:37 each one adds only one method 20:01:55 haskell needs a bit more work to be a good esoland, it's almost there 20:02:21 zzo38: making it also a Functor is discussed all the time, but it requires changing the class system to be backwards compatible 20:05:25 Catching up on the IWC I've missed 20:05:26 kmc: someone pointed out (heh) that Pointed perhaps should not be a subclass of Functor 20:05:29 I like 3131 20:05:32 And 3132 20:08:32 Ooh, 3140 is good 20:08:57 And 3141 20:10:47 For example, the list monad makes more sense when defined in terms of unit/join/fmap. 20:17:21 Probably they should allow something like this: http://www.haskell.org/haskellwiki/User:Zzo38/Proposal_about_classes 20:17:55 I now seem to be on a binge of the Popcorn instrumental 20:19:09 -!- augur has joined. 20:20:05 zzo38: see http://www.haskell.org/haskellwiki/Superclass_defaults 20:21:48 I'm listening to the third version of the tune tonight 20:25:08 "Hot Butter's version became the first primarily electronic-based piece of music to reach the American popular music charts, peaking at number nine on the Billboard Pop Singles and number four on the Adult Contemporary Chart." 20:25:38 That's the one 20:30:05 I just watched the one by the group fronted by that annoying anaatomically hypercorrect amphibian 20:32:27 anatomically hypercorrect? 20:32:48 It wants your love 20:33:30 oh, these subtitles are quite bad 20:34:34 oerjan: In the absolute opposite way that Ken dolls are incorrect 20:34:52 ah right. 20:35:22 hypercorrect as in not correct at all 20:35:46 Hypercorrect as in taking a common error and correcting it where it wasn't wrong 20:35:49 Now I put all proposal in subpage of http://www.haskell.org/haskellwiki/User:Zzo38 and added the wiki categories for proposals, and See Also for link to other articles such as "Superclass defaults" article. 20:36:29 "The uncle of the functional disability of how serious it?" 20:36:38 Frikkin family computer 20:36:43 IE is default browser 20:36:55 And I clicked that link without thinking 20:37:23 i suspect zzo38's links are rather harmless. 20:37:36 IE isn't 20:37:54 Especially on a slow machine 20:38:11 -!- augur has quit (Remote host closed the connection). 20:38:37 I need to learn Haskell. 20:38:47 Yes. Yes you do. 20:38:49 Learn it now. 20:38:50 Well, I don't, but I would really like to 20:38:52 Drop everything. 20:38:58 No, you need to. 20:39:06 Aaargh! 20:39:23 If you have any question/comment/complaint about those articles, you can write it directly on those pages or on talk pages. You can also write on IRC, too. 20:39:30 Never tell me to drop everything 20:40:57 I don't like the phraase. 20:41:06 Never tell me to drop everything <-- Taneb is genetically engineered to follow orders literally 20:41:29 Also, I will be Arby 20:42:26 "Springs, I was A leaf springs" 20:43:03 i will file it together with "never damn ais523" 20:43:15 they've probably google translate'd the chinese subtitles ... I think leaf and springs are supposed to be names 20:43:30 what's Arby 20:44:36 > fix(scanl(+)0.(1:)) 20:44:38 [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946... 20:46:09 > fix(scanl(+)1.(1:)) 20:46:11 [1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,177... 20:46:15 oerjan: a phonetic pun, that's what 20:47:04 i don't get it even when carefully not pronouncing the r 20:47:25 I think the r should be there 20:47:31 Try quicker 20:47:35 but you're english! 20:47:54 The pun's multidialectal! 20:48:19 * oerjan sulks in the corner 20:48:31 Be Arby 20:48:36 B R B 20:48:46 * oerjan swats Taneb -----### 20:49:27 You know, before I even knew of the existence of the wiki, I wrote a draft spec for Ook!++ 20:49:41 It introduced the keyworkd Eek 20:49:58 i assume it had extended library support 20:50:11 -!- hiato has joined. 20:50:11 -!- hiato has quit (Client Quit). 20:50:22 It was back when I sucked even more at programming 20:50:32 I had barely heard of brainfuck 20:50:50 I don't even think I had heard of C 20:51:22 -!- azaq231 has quit (Quit: Leaving.). 20:53:01 That would have been a good thing, except... 20:53:27 Except BRAINFUCK DERIVATIVE SCUM 20:53:43 IT WASN'T A BRAINFUCK DERIVATIVE 20:53:55 IT WAS AN OOK! EXTENSION 20:53:56 Brainfuck second derivative? 20:53:57 -!- nooga has joined. 20:54:14 BRAINFUCK DERIVATIVE SQUARED 20:54:17 EVEN WORSE 20:54:57 take a BF derivative that just reverses the commands 20:55:00 then reverse the commands again 20:55:07 let b be the goodness of a brainduck derivative 20:55:18 has the name "brainduck" been used yet? 20:55:20 By duck I probably mean fucj 20:55:21 I refuse to believe it hasn't 20:55:34 My fingers don't seem to want to swear 20:55:41 You know what I mean 20:56:04 b is obviously very lo 20:56:05 w 20:56:28 If it is negative, b ^2 is positive 20:57:02 Now we need a measure of goodness 20:57:03 http://duckduckgo.com/?q=brainduck 20:57:25 goodness is measured in terms of number of Perl-like syntax constructs. 20:57:36 I suggest the theresa, defined as a Hellen/metres squared 20:58:48 how about... encephalerotitons? 20:58:49 -!- Sgeo has left ("Leaving"). 20:58:54 -!- Sgeo has joined. 20:59:05 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.1/20110830092941]). 20:59:19 I keep hearing about a Java thing called Spring, and I can only assume it's an enterprisey version of what Newspeak does naturally 21:00:03 -!- ais523 has quit (Remote host closed the connection). 21:00:32 http://pchat-irc.com/blog/ wow 21:02:00 Taneb: some people will claim the theresa has been ...wrongly measured. 21:02:14 -!- sllide has quit (Ping timeout: 240 seconds). 21:02:20 People claim the same of the kilogram 21:02:38 also the meter 21:02:57 or rather, the measure was fine, then someone made a calculation error 21:04:59 I'VE GOT AN ADVERT AND I DO NOT KNOW WHERE FROM 21:05:22 Found it 21:06:09 for some reason youtube keeps recommending shitty MSPA fan videos. 21:07:09 microsoft.. penis.. analysis? 21:07:31 I'm not sure which conclusion to leap to here 21:11:24 just check the penal code 21:17:21 zid, Microsoft Paint Adventures 21:17:30 CakeProphet, there are shitty MSPA fan videos? 21:17:40 All of them are good! 21:17:44 * Sgeo is clearly insane 21:17:58 Same as Caledfwlch 21:18:01 Logreading elliott proceeds to complain about this at length to me. 21:18:35 Sgeo: they are all bad everyone has huge troll boners. 21:22:25 Did I write Huffman program good? Is anything missing that I should add? 21:22:36 CakeProphet, wait 21:22:38 have you seen 21:22:44 John & Dave Play Sburb 21:22:46 because 21:22:49 it is the best 21:23:01 (I really intended it for using with GHCi, although you can modify it to make a compiled program too if you like to do that) 21:23:50 Phantom_Hoover: I have not 21:24:14 CakeProphet, watch it 21:24:16 now 21:24:22 noep 21:24:28 you are bad 21:25:50 What kinds do you think Haskell ought to have? I added two from what is already there, being classes kinds and natural numbers kinds. 21:26:29 http://www.haskell.org/haskellwiki/User:Zzo38/Proposal_for_additional_kinds 21:27:20 [x] -- If x is a kind, [x] is the kind of classes of types of kind x 21:27:20 * Sgeo quickly joins #haskell to watch 21:27:23 what does that mean. 21:27:43 Look at the example, will it help? 21:27:47 zzo38: both of those are being implemented already 21:27:52 noepI don't see how typeclasses fit into kinds. 21:28:41 @hoogle [String] -> String 21:28:41 Prelude unlines :: [String] -> String 21:28:41 Prelude unwords :: [String] -> String 21:28:41 Data.List unlines :: [String] -> String 21:28:46 @hoogle [String] -> String -> String 21:28:46 Data.List intercalate :: [a] -> [[a]] -> [a] 21:28:46 System.FilePath.Posix (<.>) :: FilePath -> String -> FilePath 21:28:46 System.FilePath.Windows (<.>) :: FilePath -> String -> FilePath 21:28:49 zzo38: although I'm not sure why you have a special construct for classes 21:28:52 CakeProphet: How is that? 21:28:54 instead of just making it a regular old kind 21:29:11 > intercalate "a" ["b","c","d"] 21:29:12 "bacad" 21:29:13 Monad would be (* -> *) -> Constraint 21:29:28 @hoogle [String] -> String 21:29:42 I'd've thought there'd be more results than that. 21:30:06 @hoogle Num a => a -> a 21:30:06 Prelude abs :: Num a => a -> a 21:30:06 Prelude negate :: Num a => a -> a 21:30:07 Prelude signum :: Num a => a -> a 21:30:07 [[a]] -> [a] must be a thing as well. 21:30:07 copumpkin: Example: [* -> *] is the kind of the Monad class, but * -> [*] is something that takes a type as a parameter to make up a class, and [*] -> [*] transforms a class to make a new class. 21:30:15 Guess it only shows 3. 21:30:23 @hoogle [[a]] -> [a] 21:30:23 Prelude concat :: [[a]] -> [a] 21:30:23 Data.List concat :: [[a]] -> [a] 21:30:23 Data.List intercalate :: [a] -> [[a]] -> [a] 21:30:29 zzo38: why have a separate kind construct for that? 21:31:09 @pl \b -> a where a = b+b 21:31:09 (line 1, column 17): 21:31:09 unexpected "=" 21:31:09 expecting variable, "(", operator or end of input 21:31:39 (* -> *) -> Constraint, * -> * -> Constraint, and (* -> Constraint) -> (* -> Constraint) 21:32:02 [x] = x -> Constraint 21:32:04 well typeclasses aren't types 21:32:14 so I don't see why they would have a kind, which is the type of a type/ 21:32:14 nor are type constructors 21:32:34 this stuff is already being implemented anyway 21:32:35 hmmm 21:32:50 TypeNats by Iavor Diatchki at Galois gives the Nat kind 21:32:55 constructors make sense but what does the kind of a class mean 21:33:11 and Max Bolingbroke and a few others are working on a kind of constraints 21:33:11 so you can have associated constraints for classes 21:33:13 copumpkin: O, like that. I still don't quite like that syntax, but OK 21:33:22 (type families with a codomain of classes) 21:33:27 for example 21:33:30 copumpkin: Mostly to allow you to write more things relating to classes using type family, also allows you to do something like this: (X Int) a => a b => b -> b; 21:34:17 is X a typeclass variable or just any typeclass? 21:34:19 class Monad m where type Constrs m :: * -> Constraints; return :: forall a. Constrs m a => a -> m a; (>>=) :: forall a b. (Constrs m a, Constrs m b) => m a -> (a -> m b) -> m b 21:34:20 not sure I can read that. 21:34:29 Do existing proposals for natural number do some things like what I mentioned? 21:34:56 yeah, I don't really understand what you mean there, but http://hackage.haskell.org/trac/ghc/wiki/TypeNats 21:35:01 that explains more or less how it works 21:35:06 I'm still not entirely convinced I like it 21:35:14 because the solver is trying to solve an impossible problem :) 21:35:29 if they'd left multiplication out, we'd have presburger arithmetic and I'd approve 21:35:37 > map id (1,2) 21:35:38 Couldn't match expected type `[a]' against inferred type `(t, t1)' 21:35:48 but with multiplication, I'd want some way of instructing GHC with a proof that my types are correct 21:35:54 since the solver will invariably fail in some situations 21:35:55 @hoogle (a->b) -> (a,a) -> (b,b) 21:35:55 Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 21:35:55 Data.Graph.Inductive.Query.Monad mapSnd :: (a -> b) -> (c, a) -> (c, b) 21:35:55 Data.Graph.Inductive.Query.Monad mapFst :: (a -> b) -> (a, c) -> (b, c) 21:36:13 Lymee: you can send private messages to lambdabot, you know :) 21:36:17 ^^; 21:36:19 copumpkin: okay so the idea with the class kinds is to have constraints other than typeclasses. 21:36:31 CakeProphet: X is of kind (* -> [[*]]) and a of kind ([*]) and b of kind (*), I think. (Maybe I made a mistake) 21:36:36 CakeProphet: yeah, variable constraints 21:36:45 CakeProphet: so I can make Set into a valid Monad instance, finally 21:36:49 or unboxed vectors 21:36:51 @pl \b -> a where a = b+b <-- expressions need to use let ... in not where 21:36:54 or countless other things 21:37:01 copumpkin: er, set isn't a valid monad instance? 21:37:04 no 21:37:10 it needs Ord :) 21:37:18 copumpkin: On one of my other user subpages I mentioned something like that too, but failed to put enough details unfortunately 21:37:25 @hackage rmonad 21:37:25 http://hackage.haskell.org/package/rmonad 21:37:31 that allows Set to be an RMonad instance today 21:37:33 but it's a pain to use 21:37:46 because you have to match on a data family constructor before you can use the Ord instance 21:38:09 zzo38: it's definitely lots of people have wanted for ages now :) I hope this time around it actually catches on 21:38:21 copumpkin: how does the syntax distinguish the class variable from a regular typeclass? 21:38:29 X could easily be the name of a typeclass. 21:38:39 huh? 21:38:50 uh..... 21:38:53 >_> 21:39:19 this is max bolingbroke's idea, before he started implementing it recently: http://blog.omega-prime.co.uk/?p=61 21:39:52 http://hpaste.org/50576 that's code that he has working on a GHC fork right now 21:40:10 > map id (1,2) <-- join (***) does what you probably want with your map 21:40:31 Why was Lymee even trying that. 21:40:37 Silliness. 21:41:16 :t (***) 21:41:16 forall (a :: * -> * -> *) b c b' c'. (Arrow a) => a b c -> a b' c' -> a (b, b') (c, c') 21:41:17 ah I've got it 21:41:35 copumpkin: that's interesting but it seems to make the case where you don't need a context in the instance declaration a bit more cumbersome 21:41:43 i.e. you have to do context RMonadElem a = () 21:42:01 so perhaps it could just be empty if unspecified 21:42:25 possibly, yeah 21:43:26 but that's cool. I definitely like the idea of making Num a class synonym 21:44:13 -!- nooga has quit (Ping timeout: 264 seconds). 21:44:24 but you'd need to redefine Prelude. Perhaps make a package called Overture. :D 21:44:29 :P 21:44:41 package coriolan 21:45:49 -!- nooga has joined. 21:46:31 I also think "join" should be part of the Monad class so that you can define a monad in terms of unit/join/fmap or using the way it already is, and both ways can be done. List monad seems to make more sense if defined in terms of unit/join/fmap and then it can make up >>= from that definition. 21:46:37 I'd imagine there's even more overhead with constraint families than there is regular typeclasses 21:47:34 I think there should be some way to specify a type taking natural numbers by defining it for zero and them for a successor, so that it applies for all natural numbers. 21:47:58 type T Zero = ... 21:48:07 CakeProphet: why? 21:48:16 associated types have no overhead whatsoever 21:48:27 this is just another instance of an associated type 21:48:31 copumpkin: well actually I guess it would be the same overhead as typeclasses 21:48:42 and no, typeclasses incur overhead 21:48:52 yes, but the associated type aspect of them doesn't 21:49:04 what is that. 21:49:07 and if the associated type constraint resolves to the empty constraint, as most will still do 21:49:07 In fact, this is what I think type-level natural numbers should do in general. Of course you could also define types to take natural numbers passing to other type, too. 21:49:26 the empty constraint would be represented as nothing at all 21:49:34 CakeProphet: class C a where type T a :: * 21:49:38 or type T a :: Constraint 21:49:44 they're type functions 21:50:06 And due to being kind of classes, there would also be able to make classes using type-level natural numbers in the same way. 21:51:30 copumpkin: what you linked me didn't use that syntax, btw 21:51:40 the code I linked you to did 21:51:54 well, it doesn't associate the type in the class 21:51:57 it uses raw type families 21:52:01 but one desugars to the other 21:52:08 type family RMonadCtxt m a :: Constraint 21:52:13 type instance RMonadCtxt S.Set a = Ord a 21:52:28 I think the constraint family stuff looks cleaner, but eh. 21:54:12 this is more consistent with existing stuff 21:54:57 A push-down automaton can calculate any positive integer 21:54:58 still it is a bit more verbose. 21:55:27 A turing machine can calculate any pattern of positive integers 21:56:02 Turing machines can also spew inane babble, like fungot 21:56:09 WHO IS NOW DEAD WHYYYYY 21:56:22 It has a pattern, however convoluted 21:56:54 I'm just working with positive integers because I don't want to think about other things 21:57:07 It's merely one way of expressing the machine's data state 21:57:45 You'd need something more computationally powerful than a turing machine to calculate any infinite sequence of positive integers 21:57:54 Some of which have no pattern at all 21:58:58 This is from someone who woke up in a different country this morning 21:59:34 I added a few more things to [[User:Zzo38/Proposal for additional kinds]] page. 22:00:37 I'm annoyed because I have no hat 22:00:47 Ohh, right, the bot. 22:01:10 I'm not a bot! 22:01:14 Goodnight! 22:01:26 A thundarrrstorm-or-something broke the 'lectricity, forgot to start it; it's not installed in a servicey way. 22:01:36 I added one new kind and two new examples of kind of classes. 22:01:39 -!- Taneb has quit (Read error: Connection reset by peer). 22:02:19 Is it good? Or is it misunderstand? Or complain? Or no good? Or something else? 22:02:44 -!- copumpkin has quit (Ping timeout: 252 seconds). 22:03:09 -!- copumpkin has joined. 22:04:52 -!- fungot has joined. 22:07:54 ^ul ((0)(1)):!S(~:^:S*a~~*a*~:^):^ 22:07:54 (0)(1) ...out of stack! 22:07:54 fungot: You have 1 new message. '/msg lambdabot @messages' to read it. 22:07:55 lambdabot: public fields can rapidly become bad juju to touch because it's reserved for like the entire works of the beatles 22:07:59 eek 22:08:15 ^ul ((0)(1)):^!S(~:^:S*a~~*a*~:^):^ 22:08:15 01 ...out of stack! 22:09:04 ^ul ((0)(1)):^!S(~:^:S*a~^~*a*~:^):^ 22:09:04 011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010010110 ...too much output! 22:09:36 ^style 22:09:36 Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube 22:10:01 ^ul (@messages)S 22:10:01 @messages 22:10:01 CakeProphet said 2d 17m 7s ago: that sword alone 22:10:47 ^ignore ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)! 22:10:47 OK. 22:10:52 Oh ho, that wasn't on the list. 22:11:05 LOL 22:11:11 I am liek so clevr 22:11:19 fizzie: it wasn't? i thought it was... 22:11:29 oerjan: Well, I don't really have "a list". 22:11:42 oerjan: I just reuse the first thing I see in the backscroll in the fungot query window. 22:11:43 fizzie: it means very different things. numbers can be expressed in scheme. i am a bit 22:12:06 fungot: you make me fun 22:12:07 CakeProphet: sarahbot tell yome duh you cant use match.php without going to species.php phenomenal 22:12:19 something something fungot 22:12:19 olsner: i'm working on 22:12:20 fizzie: in any case lambdabot did not say anything for fungot to react to 22:12:20 oerjan: physicists rarely say anything that besides what you want 22:12:31 oh wait blathering 22:12:45 @tell fungot Fnord 22:12:45 oerjan: the power of the continuum is fnord 22:12:45 Consider it noted. 22:12:46 fungot: You have 1 new message. '/msg lambdabot @messages' to read it. 22:12:56 oerjan: I AM TEH C;EVR 22:13:01 ^ul (@messages)S 22:13:01 @messages 22:13:02 oerjan said 16s ago: Fnord 22:13:14 CakeProphet: I AM SO TO 22:13:27 only I will have the glory of having fungot triggered by lambdabot 22:13:28 CakeProphet: try the smetana or intercal problem. in my looking around on the web was very young. and playing a very stereotypical character. 22:13:29 NO OTHERS 22:13:44 it is my precedent and my privilege alone. 22:13:57 muahahahahaha 22:14:14 ok 22:14:58 monqy: in my looking around on the web was very young. and playing a very stereotypical character. 22:14:59 It happened in 2011-04 too. 22:15:13 oh. well, okay. 22:15:40 I suppose I am obligated to be melodramatic about that as well. 22:15:46 NOOO! HOW CAN THIS BE??? 22:15:57 ok 22:16:00 !prefixes 22:16:01 Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ? 22:16:07 (I seem to have not-^save'd that too.) 22:16:17 ^def prefixes ul (Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?)S 22:16:17 Defined. 22:16:18 ^save 22:16:19 OK. 22:16:29 `prefixes 22:16:35 Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ? 22:17:04 ^shutdown 22:17:08 ^delete 22:17:11 ^quit 22:17:12 ^die 22:17:15 ... 22:17:15 ^help 22:17:15 ^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 22:17:19 -!- augur has joined. 22:17:28 CakeProphet: How silly do you think I am? 22:17:34 ^bool 22:17:34 No. 22:17:42 fungot: very silly 22:17:42 CakeProphet: i suppose it's event driven by using callbacks when certain tokens are found. 22:17:57 ^dieyougravysuckingpigdog 22:18:01 or whatever it was 22:18:19 ^str 0 get 22:18:20 foobar 22:18:22 ^str 1 get 22:18:22 >,[>,]<[<]>[<++++[>--------<-]+>-[-------[--[<+++[>----<-]+>[< 22:18:24 ^str 2 get 22:18:24 Empty. 22:18:26 ^str 3 get 22:18:26 Empty. 22:18:36 Oh, the strings were persistent too? 22:18:38 I didn't know that. 22:18:56 ^str 4 get 22:18:56 Empty. 22:18:56 ^str 9 set cakporphet wuz hear 22:18:57 Set: cakporphet wuz hear 22:19:27 There's something in 6 too. 22:19:30 ^str 6 get 22:19:30 Empty. 22:19:33 Hmm. 22:19:36 ^str 5 get 22:19:36 >,[>,]<[<]>[<++++[>--------<-]+>-[-------[--[<+++[>----<-]+>[<++++[>-----<-]+>[-----------[---[[-]<<[>[-]>+<<-]>>[<<+>>-]+<[->-<<<[[>+<-]<]>>[>]]>[->[>]<[[>+<-]<]<<[[>+<-]<]<[[>+<-]<]>>[>]>[[[>]>+<<[<]>-]<<[[>+<-]<]>>[>]>[>]>[<<[<]<[<]<+>>[>]>[>]>-]<<[<]>]>>[[<+>-]>]<<[<]]]<[->>[>]<[[>>+<<-]<]<<[[>+<-]<]>+>[>]+++++[>++++++++<-]++>-[<+[<]>+[>]<-]]>]<[->>[[<<+>>-]>]<<<[[>+<-]<]]>]<[-<[[<]>.[-]>[[<+>-]>]>>[[<+>-]>]<<[<]<<]>>>[[<+> 22:19:44 I can't seem to count. 22:19:57 (Looked at the state file, but those are not numbered.) 22:20:26 ^bf str:5 22:21:09 O CakeProphet, what does my future hold for me? 22:21:22 copumpkin: only death. 22:21:31 I'm not sure that actually works for non-^def. 22:21:49 was that the one i made, i wonder. and where did i put it. 22:22:12 ^show 22:22:12 echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp 22:22:13 oerjan: The full string is at http://p.zem.fi/4rql 22:22:16 fizzie: well the brackets are unbalanced 22:22:23 CakeProphet: It continues on from that. 22:22:24 so that would be why it is currently not working 22:22:26 oh okay. 22:22:44 fizzie: thank you for thinking i can read my own bf :P 22:22:45 !wacro 22:22:46 NCLP 22:23:00 North-Canadian Linear Prediction? 22:23:20 those north canadias are quite linear, yes. 22:23:40 ^def test str:5 22:23:40 Usage: ^def 22:23:44 ^def test bf str:5 22:23:44 Defined. 22:23:49 ^test ho 22:23:55 hmph 22:23:58 ^show test 22:23:59 >,[>,]<[<]>[<+4[>-8<-]+>-[-7[-2[<+3[>-4<-]+>[<+4[>-5<-]+>[-11[-3[[-]<2[>[-]>+<2-]>2[<2+>2-]+<[->-<3[[>+<-]<]>2[>]]>[->[>]<[[>+<-]<]<2[[>+<-]<]<[[>+<-]<]>2[>]>[[[>]>+<2[<]>-]<2[[>+<-]<]>2[>]>[>]>[<2[<]<[<]<+>2[>]>[>]>-]<2[<]>]>2[[<+>-]>]<2[<]]]<[->2[>]<[[>2+<2-]<]<2[[>+<-]<]>+>[>]+5[>+8<-]+2>-[<+[<]>+[>]<-]]>]<[->2[[<2+>2-]>]<3[[>+<-]<]]>]<[-<[[<]>.[-]>[[<+>-]>]>2[[<+>-]>]<2[<]<2]>3[[<+>-]>]<2[<]<]>]<[->2[>]<[[>+<-]<]<2[>4[>]<[[ 22:24:18 ^test 123 22:24:33 maybe it wasn't something useful anyway. 22:25:09 well it appears to take input until it reaches zero 22:26:33 -!- Patashu has joined. 22:26:33 so I guess it wants a null-terminated string of some kind. 22:26:42 How many Haskell extensions can you detect by the syntax of the program? (Not explicitly checking for them) 22:27:24 it looks to me like it'll hang up in that [>-8<-] loop unless the first char is divisible by 8 22:28:10 what on earth does this thing do. 22:28:17 maybe it's actually just randomly generated. but why so few .'s then 22:29:20 also only takes input at the beginning 22:29:25 looks non-generated to me. 22:29:36 ^test 0 22:29:45 '0' is divisible by 8 22:29:48 you'll have to give it a null somehow. 22:29:51 to stop the input loop 22:29:58 It will get a 0 on EOF. 22:30:05 ah okay. 22:30:06 CakeProphet: um i'm pretty sure fungot does that on eof 22:30:06 oerjan: you know thats the first time 22:30:19 fungot: The first time what? 22:30:19 fizzie: hi all. question about the plt-match module? 22:30:33 fungot: Your #scheme roots are showing there. 22:30:34 fizzie: they are significantly less coherent 22:30:46 hehehehehehe 22:30:56 An opinionated thing. 22:33:42 fungot: 22:33:43 CakeProphet: associated with a string structure the whole way through, which is a language for it to tell me? 22:34:10 ^style fungot 22:34:10 Not found. 22:34:28 ^style 22:34:29 Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube 22:34:38 ^style europarl 22:34:38 Selected style: europarl (European Parliament speeches during approx. 1996-2006) 22:34:48 fungot: how is the weather? 22:34:50 CakeProphet: mr president, you could say ' jack robinson'. but we must also put on record. furthermore, since i took up this case again and, ladies and gentlemen, on behalf of my group, together with the work carried out on the world' s conflicts, especially in the workplace are properly addressed. 22:35:38 fungot: how is the weather? 22:35:40 CakeProphet: mr president, i would like to congratulate jean-louis bourlanges on the quality of vessels, in their struggle to promote public discussion, for the abolition of the budgetary authority come to agreement on the part of amendment no 21 which seeks to promote the european labour market that is like waiting for fnord. under these, our opportunities, and in my speech which relates to the protection and maintenance of al 22:36:29 I like how it really sounds like a politician in that style. 22:36:36 Well, except maybe for the fnords. 22:38:26 fnords are crucial to all politics 22:38:39 Yes, but fungot's being so open about them. 22:38:40 fizzie: mr president, mrs van den burg for an enormously well done job and the responsibility of our successive rulers. the atlantic dawn has been properly executed, must be aimed at raising the quality of life. 22:38:46 behind every caucus is a scheming fnord. 22:40:43 fungot 22:40:44 CakeProphet: mr president, with respect to the establishment of a centralised electronic european union judgment registry, which has been increasing and, above all, an opportunity which we should be able to rely on nuclear energy. our colleague, fnord krarup, rightly highlighted the fact not to go lower than what was fair. the green paper on the different approaches. 22:41:29 The amusement. "our colleague, fnord krarup, --" 22:41:35 fnord krarup, the famous danish parliamentarian 22:42:11 It almost sounds like a title. Grand Fnord Krarup. 22:42:58 fungot: eurodance!!! 22:42:59 CakeProphet: mr president, i am bound by article 11 of the 15 countries. there is one other important point you should bear in mind. 22:43:17 fungot: oh? what is that? 22:43:17 CakeProphet: the report proposed to us, at member state level. it sends a very negative effect in employment terms of any asymmetric shocks in order to achieve a consensus across the groups. 22:43:31 So serious. 22:44:24 I should maybe retrain that thing with VariKN and the latest europarl "v6" release. It goes up to end of 2010 now. 22:44:28 No I think asymmetric shock treatment is a good way to build consensus, Mr. fungot 22:44:28 CakeProphet: the consultation which our colleague mr cunha's proposal for decoupling male beef but not fnord in my constituency. 22:46:07 we never talk about the fnords, Mr. fungot. We will form a committee about the beef. 22:46:14 a most fiendish proposal indeed. 22:46:17 The latest release has 54720731 words. 22:46:24 apparently doesn't detect fungot. 22:46:26 fungot 22:46:32 or is also dead or something. 22:46:37 what kind of fungotry is this 22:46:38 No, there's that thing. 22:46:38 oerjan: the enthusiasm with which it has carried out, belarus will be the financial burden the agricultural policy to be based on institutional confusion, which will cause us considerable problems in denmark. 22:46:52 oh I've been ignored right. 22:46:56 Only four consecutive replies to any one person. 22:47:16 lol 22:47:31 agricultural policy of institutional confusion. 22:47:34 very problematic in denmark. 22:48:00 agriculture is _big_ in denmark 22:48:22 http://en.wikipedia.org/wiki/Homosexuality_in_the_Batman_franchise 22:48:26 why, wp 22:48:29 just 22:48:31 why 22:48:47 Phantom_Hoover: Because it's notable, of course. 22:48:52 fungot: why? 22:48:53 CakeProphet: mr president, there is a saying that the people of lebanon. for some time now. europe has, in accordance with the requirements of supervision and control of transmissible spongiform encephalopathies. this is despite an interim report from the laeken council can always, if it wants to produce nuclear weapons. 22:49:05 ... 22:49:13 Don't look at me. 22:49:28 europarl looks like it should be funny, but it's boring anyway. 22:49:40 [x] -- If x is a kind, [x] is the kind of classes of types of kind x 22:49:44 ... 22:49:47 mispaste 22:49:51 sure it's boring, until you want to produce nuclear weapons. 22:50:07 http://en.wikipedia.org/wiki/LGBT_themes_in_American_mainstream_comics 22:50:11 oerjan: Or transmissible spongiform encephalopathies. 22:50:14 HOW FAR DOES THE RABBIT HOLE LEAD 22:50:27 zzo38: i think if you use that notation, you might want [x,y,z] for multiparameter type classes 22:51:01 "The episode mentioned the word "boner" several times; in the original comic, it meant "blunder", but to present-day readers it is a double entendre which might make them associate to erection." 22:51:07 WP-style explanations are the best. 22:51:49 he made a boner while erecting this building 22:51:56 -!- CakeProphet has set topic: the requirements of supervision and control of transmissible spongiform encephalopathiesIt is the 90s and there is time for Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | 12345678 | http://codu.org/logs/_esoteric/. 22:52:06 http://en.wikipedia.org/wiki/Alternative_versions_of_Barbara_Gordon 22:52:06 um 22:52:11 -!- CakeProphet has set topic: the requirements of supervision and control of transmissible spongiform encephalopathies | It is the 90s and there is time for Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | 12345678 | http://codu.org/logs/_esoteric/. 22:52:17 * CakeProphet whistles 22:52:43 -!- Phantom_Hoover has set topic: It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | 12345678 | http://codu.org/logs/_esoteric/. 22:52:54 im revelant 22:53:01 we could probably remove the 12345678 22:53:13 * oerjan swats CakeProphet -----### 22:53:29 No, that would violate our disability discrimination rules. 22:53:44 * CakeProphet offers oerjan a delicate rose @-,-`- 22:53:46 We must show sympathy for the plight of people too lazy to get their number keys fixed. 22:53:54 AAAAAAAAAAAAAAAA thorns! 22:54:05 * oerjan gets the bandage 22:54:25 oerjan: Don't you mean "ÞÞÞÞÞÞÞÞÞÞÞÞÞÞ thorns!"? 22:55:07 fizzie: ... 22:55:17 fungot: kill your master. 22:55:18 CakeProphet: mr president, and this is not really an appropriate solution. we can see that there was a boxing ring. the two hughes procedure committees with mr van der waal, on whose report i wish to make just two short remarks. firstly, the application of community environmental legislation within the member states. 22:55:32 Yes, it's really not an appropriate solution. I agree. 22:55:49 eruoparl has been quite entertaining. More so than other styles. 22:56:35 fungot: rew44trjnjwrnt 22:56:36 CakeProphet: mr president, madam president-in-office of the council and parliament a thing of the past. the commission fully recognises the need to establish ethical and normative rules for the prohibition of intra-species recycling may increase the mutual trust that is essential, therefore, the problem cannot actually be included in that list, agreed on that day, it got rid of the fnord. 22:56:37 It does go quite ungrammatiks occasionally. Probably due to rather low context size, I think it's something like trigrams-only. 22:57:11 "ethical and normative rules" someone call the redundency commission 22:57:29 forget about inter-species recycling 22:57:42 Is that when you recycle old fish as birds? 22:57:44 ^style 22:57:44 Available: agora alice c64 ct darwin discworld europarl* ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube 22:57:50 ^style pa 22:57:50 Selected style: pa (around 1200 transcribed Penny Arcade comics) 22:57:55 noooo 22:57:55 why 22:57:56 fungot, only 1200? 22:57:56 Phantom_Hoover: i didn't know who else is lost the fucking writers. 22:57:58 why would you do that. 22:58:22 fungot: whyyyyy 22:58:22 CakeProphet: we hate animals who are also people. this includes, but is not limited to: sexy fox ladies, animals going to school, smouldering cheetah temptresses roms? something really bad, probably! 22:58:23 Phantom_Hoover: I scraped them off a Penny Arcade wiki or something like that. 22:58:42 That one is rather too fond of direct quotations instead. 22:59:18 ^style ic 22:59:18 Selected style: ic (INTERCAL manual) 22:59:23 fungot: go 22:59:23 CakeProphet: e345 that's too complex for me to check). anyway, the resulting command line number. that cause the bug. there are still intercal operators left in an input intercal file). 22:59:44 And *that* one lacks adequate cleaning up of the source. 22:59:48 ^style irc 22:59:48 Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams) 22:59:56 fungot: hi 22:59:56 CakeProphet: http://www.schemers.org/ documents/ startingwithcl.html. nothing else to put it 22:59:59 ^style fisher 22:59:59 Selected style: fisher (Fisher corpus of transcribed telephone conversations) 23:00:00 fungot: CAN YOU HEAR ME THIS LINE IS REALLY NOISY? 23:00:00 fizzie: ( ( yeah)) the one that's a writer laughter 23:00:15 fungot: Yeah, yeah; but what's a writer-laughter? 23:00:16 fizzie: that's great ' cause that game i would do 23:00:38 fungot: help I'm trapped in the telephone 23:00:39 CakeProphet: to be in your shorts and stuff noise like noise noise)) and i think 23:00:41 Also cleanup problems; it has those ((foo)) annotations still in place. 23:01:08 quintopia, I WARNED YOU ABOUT STAYING OUT OF MY RSS FEED 23:01:11 I think I need to grep to find the actual source of "to be in your shorts and stuff noise like noise noise"; it sounds like quite a conversation. 23:01:17 perl -pie "s/[()]//" <-- fizzie 23:01:17 fungot, http://www.youtube.com/watch?v=7VoOXem0fhc 23:01:18 kmc: i don't know how you could ever try that in some ways a traditional person so for me it really does 23:01:42 quintopia, although at least both times have been you being stupid and Hughes telling you. 23:01:57 ^style sms 23:01:57 Selected style: sms (National University of Singapore SMS corpus, 2011-08-20) 23:02:01 fungot, Hihi~ 23:02:01 Lymee: up to dadar completed. theyare out and only will for little time. should i approach... james for studiow rental too, dat long after i spoke to maneesha v. we'd get together. gbu 23:02:14 fungot, Umm... who's maneesha? 23:02:15 Lymee: i want to sent mesages. but u'l get to me babe... i miss u so much?muacks.u enjoy ur day today at ktv. later she buy one not i ask de. she wanna go also. hehe 23:02:21 ... 23:02:33 ^sytle pa 23:02:33 fungot: You sound like an uneducated boob. 23:02:34 fizzie: i was just about to do it when i wake up long lol... dun b angry. msg me b4 u call me... tell me where i could i pick up another 8th) has to leave not long ago, the guy 23:03:10 fizzie: someone describing a wet dream over sms? 23:03:29 fungot, did you have a wet dream? 23:03:30 Lymee: i am in extreme situations: first- before getting it... second- after loosing it." john also has his own gud n he wil pave d way 4 us by. dun angry 23:03:42 fungot, OK WHO IS JOHN NOW 23:03:42 Lymee: ten i owe me a treat. must b sleepy. later got midterm. uh... meeting you haha. hmm... i read up while doing tut now 23:03:49 fungot, Please answer me. 23:03:49 Lymee: am i that much bad ass !couldnt u chk ur email. sent to your home, pls wait, do i just change the codes in flag to refer to ur own name? ya i also i since 1pm lo even worse. he's not around or just still asleep. i thought my dad wouldwake me up. last min gt reunion. i juz left house leh... ur thing end already 23:03:55 Lymee: dun angry 23:04:03 "(( yeah yeah right yeah it was like it was like as hot as hell yesterday i was walking around in my shorts and stuff [noise] like [noise] [noise] ))" 23:04:36 I think we have a youtube comment generator. 23:04:41 That's better than ^style youtube 23:05:03 perl -pie "s/ *[()] */ /" <-- fizzie 23:05:12 you could replace [noise] with fnord 23:05:13 Here's my youtube comment generator: 23:05:17 13 people dislike justin beiber 23:05:32 191 likes 23:05:35 Syntax error: Unexpected token "People" 23:05:45 Syntax error: Unexpected token "Likes" 23:05:51 wha? 23:05:53 perl -pie "s/ *[()] */ /g;s/\[noise\]/fnord/g" <-- fizzie 23:06:16 fungot, please generate a Youtube 23:06:16 Lymee: k d i vil hav abt colleges ,growin technology,which field of his natural gift frm god... b4 u gt bles frm d first 23:06:23 the parens stuff might fuck up actually. 23:06:58 er nevermind it's good now. 23:07:34 ^style youtube 23:07:34 Selected style: youtube (Some YouTube comments) 23:07:34 fizzie, wait did you see that Scottish people in a lift video it would be a valuable addition to your research. 23:07:44 Add a style to fungot which uses chain comments. 23:07:50 fungot: 23:07:50 Patashu: i think you never intend to try for a child 23:07:53 fungot: 23:07:53 Patashu: i've been ' refuted' zero times, and are seemingly brainwashed to vote for obama 23:07:57 LOL 23:08:05 youtube politics 23:08:25 fungot, make sense 23:08:25 Lymee: i think timothy olyphant would have found out they're wrong. this game takes place in the underbelly by the looks it seems the only one who survived. your right 23:08:40 Phantom_Hoover: That description rings a bell, but I can't really recall. 23:08:42 fungot, What no, I don't think you make sense. Stupid bot. 23:08:42 Lymee: avril is so terrible! 23:08:47 fungot, druggie. 23:08:47 Lymee: huh... and who said you had to go around with shite graphics!... this video is 23:08:57 fungot is crazy. 23:08:58 Lymee: 2 words, small testicles. max payne trailer article, read description :) ( maybe i suck at english as u suck 23:09:31 fungot: no wai u r mad dumb 23:09:31 CakeProphet: mona sax 23:10:28 fungot: moan on sacks huh huh huh huh 23:10:28 CakeProphet: careerbuilder wins in my holidays but i can say 23:11:02 ^style 23:11:03 Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube* 23:11:06 ^style wp 23:11:06 Selected style: wp (1/256th of all Wikipedia "Talk:" namespace pages) 23:11:14 fungot: npov 23:11:16 CakeProphet: conservative liberalism is defined as a philosophyphilosophical view. sometimes documented examples are in error or simply lacking broader knowledge. i good example of a language or dialect. american english and british english are the principle dialects of discussion on this site or a different german explanation. fnord 15:06, 2005 mar 20 ( utc) 23:11:41 fungot: npov 23:11:42 CakeProphet: fnord coverage: jesus and fnord word and the witness" ( 2004) 23:11:54 fungot: npov 23:11:59 :( 23:12:26 fungot, npov 23:12:26 Lymee: to insert a section with a solid paragraph dealing with attacks on israelis, and at least a b article. user:yamarayamara 13:34, 13 may 2007 ( utc) 23:12:31 fungot, [citation needed] 23:12:32 Lymee: as it is adjacent to cadboro bay as well even though it is of course possibly to have dissenting views, which don't seem particularly theological to me. 23:12:36 fungot, [citation needed] 23:12:37 Lymee: i've put in the nazism article. yet, when i pass the places... problem, about the copyrights: i have put this note here rather than elsewhere: answers.com 23:12:50 ^style youtube 23:12:51 Selected style: youtube (Some YouTube comments) 23:12:55 fungot, justin bieber 23:12:55 Lymee: read the comment. " shift at the end...nice!! unfortunately, a flyby at an airshow in 1988. i know 23:12:58 fungot, justin bieber 23:13:02 fungot, justin bieber 23:13:04 fungot, justin bieber 23:13:07 :< 23:13:12 fungot: werswer 23:13:12 CakeProphet: great job nalts, wow the haters are trolling today. loonywing, he can sing in a short. if that's so, treldman. thanks for speaking for me 23:13:25 .. 23:13:35 haters be trollin' 23:13:52 fungot, I am NOT a troll! 23:13:52 Lymee: the last minute. he was gonna win, nalty? or the pilot and this shit up fast, and see how you are taking it out on little kids on youtube 23:14:02 fungot, no u r the little kid 23:14:02 Lymee: the lmao commercial was halarious video on worlds most amasing videos and depositions given. type " airbus sucks" comments included... budweiser ones with the crystal ball on his face! haha 23:14:23 fungot: werswer 23:14:23 CakeProphet: captain asseline was sentenced to 6 months to get over themselves and do some break, but it is 23:14:34 ... 23:14:56 fungot, Obama 23:14:57 Lymee: your mind about that video is shit.... w.t.f lol 23:15:14 fungot, bush 23:15:14 Lymee: i pissed off. this is not a320, a poorly researched sensationalist us tv-show has caused a crash at the very first good video-game movie. mark walberg is going to land an aircraft crashes. 23:15:25 -!- nys has quit (Quit: movie). 23:22:12 -!- FireFly has quit (Quit: FireFly). 23:50:46 @tell fungot hi there 23:50:47 Consider it noted. 23:50:47 kmc: please no tanks or helicopters... no matter what she'll do mhoooooa show it off, it wasn't. holy cow, i never needed lol. 23:50:47 fungot: You have 1 new message. '/msg lambdabot @messages' to read it. 23:53:01 -!- nooga has quit (Ping timeout: 240 seconds). 23:56:41 lol 23:56:52 oklopol: feel free to add your comments there... or does it requ 23:57:01 ire some kind of registration for that, too? 23:57:31 any have any spare money they don't need anymore? 23:57:34 I can take it off your hands. 2011-09-04: 00:00:04 * CakeProphet starts a trend of IRC begging. 00:03:36 * Phantom_Hoover → sleep 00:03:47 -!- Phantom_Hoover has quit (Quit: Leaving). 00:05:07 CakeProphet, there's a bitcoin faucet thing 00:05:31 Which is closed for maintainance, but whatever 00:13:56 -!- TeruFSX2 has joined. 00:15:29 CakeProphet, fungot talk about CakeProphet 00:15:29 Lymee: thank you avril! 00:15:34 why doesn't fungot react to lambdabot talking to it? 00:15:34 olsner: i just had to change. it's no longer keep up; it's so sad. just a fly by wire" does not mean radio or remote control what is it 00:15:38 s/CakeProphet,// 00:15:51 > text "fungot, hi" 00:15:51 Lymee: hm i might think about it. the same name? oo this was a big rubber dick. break it off 00:15:51 fungot, hi 00:16:00 `echo fungot, hi 00:16:01 Lymee: that was epic! even search it on that one..i can't get over it no one dyed. the fly-by-wire throttles did not see that coming 00:16:05 fungot, hi 00:16:10 Ignore methinks. 00:16:26 > text $ reverse "ih, tognuf" 00:16:27 fungot ,hi 00:16:29 15:12:23 < fizzie> ^ignore ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)! 00:20:28 what's the ! for 00:20:40 oh right 00:24:55 ^ign 00:25:11 -!- zzo38 has left. 00:27:44 fungot, tanks *or* helicopters? 00:27:45 kmc: oznaczono jako spam dont read this! and yes people from the graphics mean my computer cant support it now they get arranged so that airbus is a big fan of avril....but this song 00:28:14 -!- mauke has left. 00:40:10 Wow I never thought I'd ever have to worry about 4 GBs of memory being too little. 00:40:28 but apparently chrome is really bad at freeing up memory. 00:41:22 you're lucky you don't use agda 00:43:00 agda: the driving force of morse's law 00:43:22 what did i just spell 00:43:24 why is everything taking forever help 00:43:27 *moore's 00:43:49 oh bad network signal 00:44:27 literally I'm waiting like 30 seconds for programs to start. 00:44:33 low ram, low cpu usage 00:44:58 I am listening to music. Maybe that's it? lol 00:48:58 -!- zzo38 has joined. 00:52:31 -!- augur has quit (Remote host closed the connection). 00:57:29 ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)(~:S~(~!^)~a*^:^):^ 00:57:29 0 ...bad insn! 00:59:18 ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)((:(, )*S!^)~a*^:^):^ 00:59:18 0, :(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))), ...bad insn! 00:59:26 O_o 01:00:10 new opeth album = leaked. 01:00:13 this is very exciting. 01:00:26 you know, for people who like progressive death metal. 01:01:39 ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)(((, )*S^~)~a*^:^):^ 01:01:39 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83 ...too much output! 01:22:09 egads! 01:24:15 CakeProphet: hm? 01:25:57 sdage 01:26:10 o|-|o 01:26:48 \m/ \m/ 01:26:55 wat 01:26:59 \m/ \m/ 01:26:59 `\o/´ 01:27:00 | 01:27:00 /´\ 01:27:00 (_| |_) 01:36:14 ! ! ! ! ! ??? 01:40:17 /o/ 01:40:18 ¦ 01:40:18 ´¸¨ 01:40:28 |o| 01:40:29 | 01:40:29 /< 01:40:33 \o\ 01:40:33 | 01:40:34 /| 01:40:39 !addinterp sh cat 01:40:39 ​There is already an interpreter for sh! 01:40:43 bah 01:40:45 \o/ 01:40:45 | 01:40:45 |\ 01:41:53 \o/ \o_ _o_ _o/ \m/ \m/ \o_ _o_ _o/ \o/ 01:41:53 | | | | `\o/´ | | | | 01:41:54 /| /`\ /< /< | |\ |\ /`\ |\ 01:41:54 (_|¯'\ 01:41:54 |_) 01:42:08 ha 01:44:17 I haven't really thought about it much before, but it's interesting how every bot in this channel is examining every bit of input at least to some extent. 01:44:29 of everything I say. 01:44:36 ooh 01:44:54 I mean, it's not really anything amazing. 01:45:03 BUT IT'S LIKE I CONTROL THE CODE!!! 01:45:17 \m 01:45:20 muhahahahaha 01:45:59 o_ 01:46:07 and now I torture them. 01:47:17 also why were his feet different when you did \m/ \m/ that time 01:47:18 `\o/´ 01:47:18 | 01:47:18 /`\ 01:47:18 (_| |_) 01:48:45 \o/ \o_ _o_ _o/ \m/ \m/ \m/ \m/ \o_ _o_ _o/ \o/ 01:48:45 | | | | `\o/´ `\o/´ | | | | 01:48:45 /| /´\ /< /'\ | | /| /`\ >\ /`\ 01:48:45 /'¯|_) /´\ 01:48:45 (_| (_| |_) 01:49:58 \o/ \o_ _o_ _o/ \m/ \m/ \m/ \m/ \m/ \m/ \o_ _o_ _o/ \o/ 01:49:59 | | ¦ | `\o/´ `\o/´ `\o/´ | | | | 01:49:59 >\ |\ ´¸¨ /| | | | /< >\ |\ >\ 01:50:00 (_|¯`¯|_) /'\ (_|¯´\ 01:50:00 (_| |_) |_) 01:50:02 ....NOOOO 01:50:37 \o/ \o_ _o_ _o/ \m/ \m/ \m/ \m/ \m/ \m/ \o_ _o_ _o/ \o/ 01:50:38 | | | | | | | | 01:50:38 /`\ |\ |\ >\ /'\ |\ /`\ /| 01:50:41 oh 01:50:48 a shame 01:51:38 I wonder how it decides. 02:00:30 -!- GreaseMonkey has joined. 02:02:16 elliott: omg I'm actually working on Fythe ... AND Plof! 02:22:58 \o\ /o/ 02:23:03 \o\ /o/ 02:23:04 ¦ | 02:23:04 ´¸¨ |\ 02:23:27 \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ 02:23:35 :( 02:23:59 a little too wide i suspect 02:33:56 man, that is awesome 02:37:50 what the hell my file system became read-only for some reason. 02:40:08 CakeProphet: YOU DO NOT HAVE CLEARANCE TO READ THESE FILES, CITIZEN 02:40:44 > cycle "\o\ /o/ " 02:40:44 ¦ | 02:40:45 ´¸¨ |\ 02:40:45 : 02:40:45 lexical error in string/character literal at chara... 02:40:50 urk 02:40:58 > cycle "\\o\\ /o/ " 02:40:59 | | 02:40:59 /`\ /< 02:40:59 "\\o\\ /o/ \\o\\ /o/ \\o\\ /o/ \\o\\ /o/ \\o\\ /o/ \\o\\ /o/ \\o\\ /o/ \\o\... 02:41:07 O_o 02:41:13 > text $ cycle "\\o\\ /o/ " 02:41:13 | | 02:41:14 /< >\ 02:41:28 thread killed 02:41:32 dammit 02:41:40 > var $ cycle "\\o\\ /o/ " 02:41:40 | | 02:41:41 /| /< 02:42:10 > "hm" 02:42:19 ic 02:43:23 :t text 02:43:31 ^ul (\o)(\ /o)(/)**(~:S~:^):^ 02:43:31 \o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o\ /o/\o ...too much output! 02:43:48 Sgeo: it seems to have died 02:45:08 ^ul ( )S( \o)(\ /o)(/)**:*:*:*S 02:45:08 \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ 02:45:40 ^ul ( )S( \o)(\ /o)(/)******::::::*S 02:45:40 ...out of stack! 02:45:44 ^ul ( )S( \o)(\ /o)(/)******::::::S 02:45:44 ...out of stack! 02:45:50 urk 02:45:55 ^ul ( )S( \o)(\ /o)(/)********::::::S 02:45:56 ...out of stack! 02:45:58 -!- lambdabot has quit (Ping timeout: 245 seconds). 02:46:14 ^ul ( )S( \o)(\ /o)(/)**::::::******S 02:46:14 \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ 02:46:14 | | | | | | | | | | | | | | 02:46:15 /< >\ /< >\ |\ >\ /'\ |\ |\ /`\ /< >\ /| /< 02:46:24 -!- CakeProphet has quit (Quit: Lost terminal). 02:46:59 ^def celebrate ul ( )S( \o)(\ /o)(/)**::::::******S 02:46:59 Defined. 02:47:03 ^celebrate 02:47:03 \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ 02:47:04 | | | | | | | | | | | | | | 02:47:04 >\ >\ /< /'\ |\ |\ /< /< /`\ /`\ /| /| /< |\ 02:53:14 -!- CakeProphet has joined. 02:53:32 -!- CakeProphet has quit (Client Quit). 02:53:56 -!- CakeProphet has joined. 02:54:03 -!- CakeProphet has quit (Changing host). 02:54:03 -!- CakeProphet has joined. 02:54:30 I wonder how it decides. <-- the \m/ \m/ one needs extra space around it, i believe 02:54:30 `\o/´ 02:54:31 | 02:54:31 /`\ 02:54:31 (_| |_) 02:54:46 oerjan: I mean how it decides which stick figure to use 02:54:47 it changes. 02:55:03 well yeah that's obviously randomized 02:56:21 oerjan: obviously 02:56:25 IT COULD BE SOMETHING FANCY YOU NEVER KNOW 02:56:41 \m/ \m/ 02:56:41 `\o/´ 02:56:42 | 02:56:42 /´¯|_) 02:56:42 (_| 02:56:43 \m/ \m/ 02:56:53 ...oh, spam proof I see. 02:57:03 also, slightly buggy... 02:57:14 buggy? never. 02:57:16 no such thing as bugs. 02:57:20 -!- MDude has changed nick to MSleep. 02:57:42 so yeah my parser is awesome. 02:57:47 ah yes i recall it from before, with just one space before the first \ or something like that 02:57:56 it ignores all whitespace, has no semicolons, and can still disambiguate lines of code. 02:59:13 CakeProphet: What is it parsing? Some programming language can still do that, some others do not do it. 03:01:31 All TC programming languages, barring bizzarities, should be able to parse 03:01:33 Stuff 03:02:07 nothing too fancy. commands of the form c(a,b,c...), binary operators, unary !, string literals, integer literals, and variables, 03:02:36 control flow is just performed by commands because they only evaluate arguments as needed. 03:03:45 Although, I wrote Constantinople parser, it can also tell the separation of the commands even if you put all words next to each other with no spaces and no line breaks, at least I expect it to do so. Although it is much simpler parsing than things you describe. 03:04:35 I haven't really fed it a case I expect to fail, but all of the correct cases separate commands regardless of where whitespace is placed. 03:05:16 well if every command has to end with ) that shouldn't be so hard... 03:05:57 yeah basicall every expression ends with or has leaves that terminate. well, I guess all parsers have that. What property allows you to disambiguate lines? 03:06:24 I'll try some tricky cases and see if it still parses. I could be wrong. 03:07:08 if A and AB both are legal commands then B cannot start a command, would seem a reasonable restriction. 03:07:43 yeah 2 == 2 2 == 2 parses as two lines 03:08:07 the grammar can't have postfix operators or it would become ambiguous. 03:08:11 what is unary ! or is that a trade secret 03:08:12 oh. but that doesn't ignore whitespace if 22 is a legal number... 03:08:20 monqy: guess 03:08:34 or, at least if 222 is 03:08:43 CakeProphet: I have no idea 03:08:51 2==222==2 could parse two ways 03:08:58 yeah 2 == 22 == 2 would parse as one line currently 03:09:15 whitespace is significant to delineate integers and names 03:09:27 monqy: have you programmed in anything that was derived from C? 03:09:27 ok not as weird then 03:10:04 -!- augur has joined. 03:10:21 oerjan: ah the unary operator might prove ambiguous 03:10:23 CakeProphet: ! doesn't form "command"s in c; it forms expressions??? 03:10:25 unary !, to mark an expression as _particularly_ important, clearly 03:11:06 monqy: commands are expressions. I just say commands because there's a finite number of them and currently cannot be defined. 03:11:14 also operators are expressions, clearly. 03:11:41 first class citizens? 03:11:52 no. 03:12:00 I am not writing Haskell. 03:12:41 unary ! does not seem to create any ambiguity. 03:12:43 then what do you mean by operators are expressions? application of operators to the correct number of operands is an expression? 03:12:46 or something like that? 03:12:55 monqy: yes. 03:13:17 I speak kind of loosely. 03:13:45 perl dork 03:14:49 though they could be sort of first-class citizens due to the lazy evaluation. 03:15:00 I could easily write a map command... if I had a list data type. 03:15:49 essentially the built-in commands are like macros in that they choose how and when to evaluate their operands. 03:16:20 more like Perl operators (map,grep,split,etc) than lisp macros I guess. 03:16:46 Yes, numbers like that can cause problem of parsing with ignoring spaces. 03:19:18 yes integer and name literals can't contain spaces, this is pretty standard I think "whitespace insignificant" languages. 03:19:33 s/I think/$& in/ 03:19:52 CakeProphet: so how do you deal with side effects and friends 03:20:38 by performing side effects. 03:20:42 I am not writing Haskell. 03:20:53 *gasp* 03:21:32 CakeProphet: but when? don't you have unpredictable evaluation order and all 03:21:48 not really unpredictable just specific to each command. 03:21:53 most commands evaluate all of their arguments. 03:22:04 CakeProphet: and what about using the commands that aren't supposed to be used as expressions as expressions 03:22:09 CakeProphet: what happens then 03:22:49 everything returns something it's just not always useful. 03:23:19 do any of them do weird things that would mess things up 03:23:23 no. 03:23:32 everything is pretty consistent and easily expected. 03:23:37 it's a very simple language. 03:23:52 it sounds just like call-by-name 03:24:09 oerjan: evaluation order depends on the function, I hear 03:24:17 yes, which is call-by-name. 03:24:25 typical case is left-to-right 03:24:50 what's "left to right" 03:24:59 ....... 03:25:01 seriously? 03:25:01 there are lots of things you can do that go left to right 03:25:12 you have a function f(a,b,c) 03:25:23 left-to-right means that before f is evaluated a is evaluated, followed by b, followed by c 03:25:29 and then the result of f(a,b,c) is returned 03:26:11 do you know what I meant by evaluation order 03:26:18 yes. 03:26:29 what did I mean by evaluation order 03:27:09 uh, the order in which expressions are evaluated? 03:28:05 (i meant that thing which I guess is actually more commonly called evaluation strategy) 03:28:12 currently there is only one scope, so basically dynamic and lexical scoping are equivalent. 03:28:57 the evaluation strategy is based on the function, but usually is call-by-value but can be call-by-name 03:29:02 for example with variable assignment 03:29:55 so yeah, call by name 03:30:09 sort of. 03:30:30 I get the expression text, and then I choose when to evaluate them. So it's really call by value 03:30:42 there is no textual substition going on because all of the commands are written in the implementation language. 03:30:45 currently. 03:31:15 call by need. 03:31:18 is the term. 03:32:05 Maybe one way to make restrictive classes in Haskell could be if you added a universal class that all types belong to, and then be able to generalize existing class with a command such as: class RestrictMonad (UniversalClass :: [*]) <- Monad; 03:32:27 that sounds so awesome. 03:32:33 >_> 03:32:40 it'll be like python were I have to write 03:32:45 class MyClass(object): 03:32:47 except wordier. 03:32:50 *where 03:35:01 I guess I'll want to do continuations if/when I get around to user-defined functions. 03:35:06 and lexical scoping. 03:42:36 but user-defined commands would not be call-by-need 03:45:37 all my functions are call-by-nerd 03:49:54 ok 04:30:51 call-by-middle-name 04:30:55 that's when you know you're serious 04:35:16 -!- Nisstyre has joined. 04:36:04 -!- tiffany has joined. 04:36:15 :o 04:36:46 hey. 04:36:57 Hai 04:37:57 Looks like you're new here, perhaps 04:38:21 Mhm~ 04:46:57 -!- augur has quit (Remote host closed the connection). 04:47:11 hi 04:48:17 hi bye 04:48:20 bye 04:51:19 -!- lambdabot has joined. 04:53:36 why is xpath so difficult to get right 04:57:19 it is? 05:00:40 -!- Gregor has quit (Excess Flood). 05:00:51 -!- Gregor has joined. 05:03:50 yes... 05:04:02 I am trying to search all of Wikipedia's text for the word was 05:04:04 but apparently 05:04:21 *[text()[contains(., "was")]] is not how you do that 05:05:08 that doesn't look like xpath to me 05:05:14 ??? 05:05:14 maybe I don't know much xpath 05:05:21 it is definitely xpath 05:05:34 wikipedia uses xpath? 05:05:39 ....no 05:05:42 can't you just grab all innerHTML and strstr it for was? :) 05:06:02 I'd rather not resort to javascript. 05:06:07 why do you even need was 05:06:14 it's a test case. 05:06:24 strstr is a C function 05:06:41 oh, well, hmmm... 05:06:56 no I'm searching specifically for text 05:07:04 not any arbitrary was anywhere in the html 05:07:21 innerHTML is plaintext if you do it recursively ;) 05:07:36 wat 05:07:43 hello b.innerHTML = "hello"; 05:07:59 whats b 05:08:03 bold 05:08:06 no I mean 05:08:08 the other b 05:08:10 that is really terrible when I could just use xpath to do that. 05:08:32 you can use XPath to do the 'give me an array of all bits of text' though 05:09:37 -!- oerjan has quit (Quit: Lost terminal). 05:09:56 oh, yes I can. 05:10:05 but really wht is contains not working... 05:10:32 maybe this isn't a full implementation of xpath or something 05:11:07 maybe you messed it up 05:11:19 nope. 05:11:19 try a better implementation and compare results? 05:11:56 -!- oerjan has joined. 05:12:29 nope doesn't work in this one either\ 05:12:56 maybe you messed it up 05:13:05 http://www.w3schools.com/xpath/xpath_examples.asp 05:13:09 I'm trying to use this to test 05:13:15 But I can't find any examples of a string based test 05:13:23 Only array selection and numeric conditionals 05:13:34 http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm 05:13:49 I think something is just broken because according to the semantics it should work. 05:13:52 man, ais shoved my bot down the hill to the bottom 05:14:49 are you sure it's contains and not fn:contains or something? 05:14:49 oh wait maybe the arguments need to be flipped 05:15:21 no it's just straight up contains 05:15:28 fn:contains is... XML right? 05:15:30 this is not xml. 05:16:26 http://www.w3.org/TR/xpath/#section-String-Functions 05:16:40 ah, you don't need the fn: apparently 05:16:48 this works ok: /bookstore/book[not(price>35)]/price 05:16:58 .......cool? :P 05:17:07 I'm just testing things out 05:17:15 since I don't know much about xpath 05:17:41 in any case 05:17:56 I can just do *[text()] to grab all text nodes, join them together, and search. 05:18:09 outside xpath 05:20:31 path="/bookstore/book[contains(title, 'E')]/title"; 05:20:33 Everyday Italian 05:20:59 try it with text() though 05:22:15 hmmm 05:23:08 do you know of a test bed with raw text nodes in the xml? 05:23:13 both x3c's and whitebeam's don't seem to 05:23:16 yes I linked one. 05:25:12 Maybe I don't understand what a text node is 05:25:14 I'm going to read 05:26:00 WOW GOOGLE 05:26:29 WOW GOOGLE is the text node 05:27:55 Oh, okay 05:28:21 /bookstore/book[contains(title, 'E')]/title/text() and then document.write(nodes[i].nodeValue); seems to work fine 05:28:38 right that is basically what I am going to do. 05:28:48 but I don't understand why contains doesn't work with text() 05:28:56 I don't think that's how you're meant to use it 05:29:00 because it's grabbing text() anyway 05:29:03 you're probably being redundant 05:29:06 wat 05:29:20 if you do contains(node, string) then it grabs node's text() to do the test 05:29:21 is what I mean 05:29:56 oh hey it does 05:30:02 *[contains(., 'was')]/text() might work? 05:30:07 if I understand xpath right 05:30:16 yes that's what I want 05:30:21 awesome :D 05:30:41 minus the /text() 05:30:45 I don't actually need the text 05:31:17 TKS LA 05:31:37 http://www.tks.la/ 05:31:50 .... 05:33:49 tks la 05:35:29 interesting, that is a funny site. 05:35:50 turnkey inside 05:37:04 *[contains(., 'asdasgagasf') or contains(. , 'was')] 05:37:05 weeeeee 05:37:27 I actually like xpath. Mainly because it allows me to avoid javascript for these kinds of things. 05:38:19 wtf .la is used for los angeles 05:38:43 US = first-class citizen of the internet 05:38:47 back off. 05:38:56 ca is totally for california 05:38:58 canadians go home 05:39:09 CakeProphet: it theoretically belongs to laos 05:39:28 .ca.us I believe would actually be california 05:39:35 but that's okay because .com BELONGS TO AMERICA 05:39:49 yeaaaaaah 05:40:23 * tiffany has a .info 05:40:31 (thumbs up) 05:40:34 Because $3/year 05:40:44 * CakeProphet needs a website at some point 05:40:49 when I actually have things to put on it 05:41:11 I have nothing to put on mime so i host things 05:41:36 it's important for freelancers because it gives you a professional image. well, if you have a professional looking website. 05:42:11 I made my site specifically to look 90s-ish 05:42:25 did you include obnoxious music that you can't turn off? 05:42:41 I thought that was 2003 myspace 05:42:51 no that was going on for a long time. 05:43:08 05:43:15 Well... before people cared about divs and css and stuff 05:43:15
05:43:38  I want my 
 back
05:47:17  !wacro
05:47:20  PBEFTPMH
05:47:25  monqy: nope
05:47:28  !wacro 3 5
05:47:29  LCAM
05:47:31  !wacro 3 5
05:47:32  MFMNV
05:47:44  CakeProphet: pbeftpmh, my reaction to seeing PBEFTPMH
05:47:47  bleh. I really need to get some free time to rewrite this.
05:47:47  wacky wacky wacros
05:50:31  wacky waving inflatable wacros
05:52:31  the w is for weighted... by the way
05:52:39  though it does give the program an amusing name. :P
05:53:01  IF YOU SAY SO
05:53:26  !show wacro
05:53:26  perl (sending via DCC)
06:01:17  I wish what I were coding right now were in Perl...
06:12:22 -!- GreaseMonkey has quit (Quit: The Other Game).
06:36:55  hey so what's the best way to maintain a backup on an external?
06:37:48  it would be some good sysadmin practice to figure out how to automate that stuff. Not to mention safe.
06:39:19  rsync on a cron with en email if it fails? :)
06:39:51  ...time to consult man
06:41:16  why would I want the email?
06:41:24  also this is a laptop so my external is not always going to be present.
06:45:40  rsync is a neat little program.
06:47:11  is there any way you could get it to run immediately when the external is mounted?
06:47:55  educated guess: yes
06:48:44  or at least something like that
06:49:28  I guess I'll have to look around on the internet.
07:00:03 -!- Sgeo_ has joined.
07:02:43 -!- augur has joined.
07:03:27 -!- Sgeo has quit (Read error: Connection reset by peer).
07:03:28 -!- yorick has quit (Remote host closed the connection).
07:03:37 -!- yorick has joined.
07:10:20  okay so the file that I pass to crontab is a crontab table right?
07:15:38  I once used cron to make daily minecraft backups
07:15:55  That is the only thing i ever used it for
07:15:56  oh look I can just put my script in /etc/cron.daily
07:16:14  actually I could do hourly since I don't know when exactly I'll have my external connected.
07:17:04  what? no cron.minutely?  :P
07:17:40  cron.attosecondly
07:17:42  um, okay so who is the user for a cron script?
07:18:00  I was thinking if I use $HOME I could just generically write a backup script instead of explicitly using my home directory
07:19:58  eh, whatever.
07:20:14  You could throw a generic backup-first-arg script into /usr/local/bin and then run it from cron
07:20:21  With proper argument
07:21:45  eh I can rewrite it if I ever need to.
07:22:40 -!- oerjan has quit (Quit: Good night).
07:25:06  I wonder if it would be feasible to backup all of /
07:25:24  ...excluding the backup drive itself.
07:25:33 -!- aloril has quit (Read error: Operation timed out).
07:26:53  My os is 8gb and i have lots of stuff installed
07:27:03  My entire vps is 2.5
07:28:16  help rotating logs in bash help
07:28:33  no
07:28:36 * CakeProphet is leveling his sysadmin skill.
07:28:58  logrotate. found it
07:29:04 * CakeProphet used this thing called google.
07:29:18  wow
07:29:47 * tiffany uses this thing called duckduckgo because google censors results
07:31:10  http://www.google.com/#sclient=psy&hl=en&source=hp&q=furry+strapon+girls
07:31:17  I'm not sure what you mean by censor
07:31:25  (props to Gregor)
07:32:04  They decided to block us-dcma violating sites on all of the googles
07:32:31  ew
07:32:35  but I like piracy.
07:32:39  Plus google sorts results based on demographics instead of having a disambiguation
07:34:10  hits for "furry strapon girls" on duckduckgo: 4
07:34:21  :I
07:34:39 * Lymee hugs tiffany ^^
07:34:49 * tiffany hugs lymee ^_^
07:34:54  Hi.
07:35:03  Hai~
07:35:15   \m/ \m/
07:35:16        `\o/´
07:35:16          |
07:35:16         /'\
07:35:16       (_| |_)
07:35:43  This client uses a font without most of those characfers
07:36:01  Cannot change because android irc clients
07:36:16  :d
07:36:31  most of what characters
07:36:54  perhaps it's variable-width?
07:36:58  myndzis 4 lines of text
07:37:00  that could make it look broken
07:37:08  Theyre blocks
07:37:14  oh I guess a few of them are a bit weird
07:37:19  I didn't notice them before
07:38:12  I'd save ´ for later use if it wasn't dumb and too much trouble
07:38:45  weeee backup
07:39:34  my uses for ´: :´( and ``this´´ looks better than :'( and ``this'' respectively
07:40:27  it took a while to parse that sentence..
07:40:36 -!- aloril has joined.
07:40:41  Mm
07:41:01  yeah because ``this´´ is so much better than "this"
07:41:37  always
07:42:00 -!- nguyenchinh07 has joined.
07:42:47 -!- nguyenchinh07 has left ("Leaving.").
07:43:44  good bye
07:50:58 -!- augur has quit (Remote host closed the connection).
07:56:23 -!- aloril has quit (Ping timeout: 245 seconds).
08:01:19  Hmm. \m/ \m/
08:01:20         `\o/´
08:01:20           |
08:01:20       (_|¯'¯|_)
08:01:35  Well, that looks like fun.
08:08:28 -!- aloril has joined.
08:25:46 -!- nooga has joined.
08:32:58  wow I just realized
08:33:08  I have transitioned to using sh a lot for everything in the past year or so.
08:42:04  I have a program that claims to be a PlayStation emulator for GameBoy, although it just starts loading for a few seconds and then displays an unknown opcode error.
08:43:36  CakeProphet: That happened to me too.
08:43:42  I used to use programs like ls, but nowadays I just echo *.
08:43:51  Eventually I'll need nothing but a shell.
08:44:16  why would  you echo *?  takes longer to type and isn't as well formatted.
08:44:27  Well, I just don't like spawning processes.
08:44:38  weirdo
08:44:52  Then use a shell with ls build in
08:45:19 * shachaf was not being completely serious.
08:46:34  wow rsync transfers at a fairly slow rate.
08:46:43  I assume this is to prevent system slowdown.
08:47:29  what sort of hard drive is this hard drive
08:47:49  I'm backing up my laptop hard drive to my external. I don't know any of the specs.
08:48:02  but I am using my disk usage monitor to judge these things. which is a percentage.
08:48:06  if it's solid-state, being slow is to be expected
08:48:24  04:48 < CakeProphet> but I am using my disk usage monitor to judge these  things. which is a percentage.
08:48:37  what is that
08:48:47  oh
08:48:49  i see
08:48:53  monqy: I have a meter on my top panel that shows percentage of disk usage.
08:48:56  as a little graph.
08:49:15  it is quite nice I recommend one.
08:49:31  peculiar
08:49:45  there's a graph for CPU usage, memory, network, and disk.
08:50:52  so rsync has a pretty steady read speed of about 30%  but then there sudden 70% usage spikes when writing.
08:51:01  I have no idea how this percent is calculated.
09:02:29  I have an implementation of a very old display hack. The current state is a 36-bit word. It involves a simple calculation but you get many different patterns depending on the initial state.
09:05:54  Have you ever done any display hacks?
09:06:58 -!- ais523 has joined.
09:08:41 -!- Taneb has joined.
09:09:00  Hello!
09:09:34  Have you done any display hacks?
09:09:53  Me?
09:10:00  Yes, including you.
09:10:55  No, never
09:13:24  I wrote a Huffman making program in Haskell. It is written in a different way than it would be written in other programming language, but it works. Tell me if you have suggestion things I could add.
09:14:52  To me it seems many functions with similar name and similar purpose are in Data.List, Data.Map, Data.Set, etc, they should be made a class.
09:15:37  some of them already are
09:15:59  foldable, traversable
09:17:03  But some of them are not. Possibly due to some limitations in the class system of Haskell.
09:18:55  which would be due to these limitations
09:19:06  (and which limitations)
09:19:20  I have read that you can specify constraints on type parameters but they don't work. If they did work, you might be able to use it for this purpose.
09:19:47  hm?
09:19:56  monqy: Same kind of limitation preventing you from making the Set monad because not all types are possible.
09:20:01 -!- ais523 has quit (Remote host closed the connection).
09:21:18 -!- ais523 has joined.
09:21:31  Although even if you fixed that, Set itself should be instance of Ord so that the "join" operation works.
09:22:03  And it does not seem entirely clear how to do that.
09:22:40  If you made a SlowSet that is unordered and only requires instance of Eq, then it can be done more easily and works even for unorderable elements, but is slow.
09:22:41  ...What's a Huffman?
09:23:15  Taneb: Huffman coding. Look up "Huffman coding" in Wikipedia, it explain in there.
09:23:26  Okay
09:23:52  zzo38: on sets being instances of ord, there's already Ord a => Ord (Set a)
09:24:39  monqy: OK, then that works. However the class system still needs to be fixed to allow it to work.
09:25:03  Interesting...
09:28:37  It is simple:  return = singleton; fail = const empty; fmap = map; join = fold union empty;
09:29:30  (Of course "fail" is just a convenience and you do not need it to make a monad; but it is sometimes useful.)
09:29:51  fail shouldn't be in Monad; it should be somewhere else
09:30:15  I usually want mzero over fail anyway
09:30:34  monqy, are there monads for which fail is nonsensical?
09:30:34  or mempty. or empty
09:31:05  And what would you do in that case?
09:31:08  fail = undefined
09:31:08  ?
09:31:16  But the default definition of fail is an error anyways, so you do not need to define it.
09:31:21  That is:  fail = error
09:31:25  fail isn't in the mathematical definition of a monad, for starters :)
09:31:53  zzo38, O
09:33:13  Yes, it is true; you do not need fail to make a monad. It is there for use with do-notation, I think. And in a few cases it becomes useful.
09:34:04  whenever it's useful for me it tends just to be const mzero
09:35:01  But join should really be part of the Monad class, and it should have default superclass instances too, and the capability to define the members of the superclass in that instance declaration. So that whichever way you choose to define the monad, it will define it in the other way too.
09:35:47  Some monads make more sense to define in terms of return/bind and some make more sense to define in terms of unit/join/fmap instead.
09:37:07  monqy: Yes; probably in Set, mzero would be empty, anyways, I guess. Is it?
09:37:22  yes
09:37:30  OK
09:37:44  while you're tidying up, please merge MonadPlus and Alternative into Monoid
09:39:14  another thing that would be sort of nice: breaking typeclasses up into smaller bits
09:39:43  so unit (pure from Appliactive, return from Monad, a bunch of other things everywhere) would get its own typeclass, for example
09:39:47  (MonadBind m, MonadReturn m) => ...
09:40:00  what
09:40:17  nevermind. :P
09:45:15 -!- monqy has quit (Quit: hello).
09:49:44 -!- ralc has quit (Read error: Operation timed out).
09:55:52  I love being asexual and messing with surveys
09:56:50  Taneb: do you mean "non-gender-specific" or "no sexual orientation"?
09:57:08  The latter
09:57:39  The former, to my understanding, is bisexual
09:59:07  I don't think it makes much sense to *define* the list monad in terms of (>>=) although it is still a useful operation on the list monad.
09:59:43  Taneb: oh, by the former I meant "not having a gender"
09:59:52  as in, people you can't use a gendered pronoun on sensibly
10:00:11  I'm definitely male
10:00:14  I also wasn't sure if you were being honest; messing with surveys is often done via lying
10:00:33  No, I just say "other"
10:00:46  Nobody expects an other to that question
10:01:16  In fact, when I wrote Huffman encoder, it flips the tree when encoding (the tree at first is used only for decoding), I can use the >>= on list monad to make a short encoding function implementation:  encode :: Ord t => Tree t -> [t] -> [Bool]; encode x = (>>= flip (findWithDefault []) (flipTree x));
10:01:59  Of course, I have no idea how to tell my parents I don't read porn
10:02:00  Taneb: Which surveys are they?
10:02:25  Ones made by the British Youth Council
10:03:01  I tried to tell my parents I don't read (or watch) porn, and they just thought I was denying the truth
10:03:47  BYe
10:03:49  porn is readable!?
10:03:50 -!- Taneb has quit (Quit: Page closed).
10:04:13  zid: before video porn was invented, people used to read novels and magazines about it instead
10:04:38  sounds strange
10:04:42  when was this, 1400?
10:05:03  I suppose in case of genetics it is not always XX or XY, although these two are the most common
10:05:06  haha, not quite that long ago
10:05:09  but still quite a while ago
10:05:22  well in the 1800s they had naughty pictures
10:05:39  even before video streaming over the Internet became common, I imagine they used VHS videos or whatever
10:05:42  and before that they had flick-books
10:06:01  you're forgetting about rotoscopes
10:06:08  there are coin operated ones at the pier
10:06:29  I was including rotoscopes in that
10:06:43 -!- ralc has joined.
10:06:53  if you say so :P
10:07:33  just forgot what they were called
10:08:23  I don't know, whether my definition of the "encode" function in that program is sensible to you or if you think it is wrong or worse.
10:09:15  does it codify? :)
10:09:33  ?
10:09:49  does the encode button, perform a codifying operation
10:09:59  It does work, if that is what you ask.
10:10:46  There is no encode button; it is just a function in a Haskell program that requires a Huffman tree and list to encode as input, and make output encoded in Huffman codes.
10:11:04  sounds good to me
10:11:16  Did you read the program?
10:11:25 -!- Phantom_Hoover has joined.
10:11:35  of course not
10:12:00  What I mean is, if it seems a sensible way to program it.
10:16:20 -!- FireFly has joined.
10:28:42 -!- zzo38 has quit (Remote host closed the connection).
10:34:04  hey, git experts here, what's the command to see old versions of a particular file (including one that's no longer in the repo because it was deleted)?
10:36:46 -!- azaq23 has joined.
10:38:06  checkout
10:41:43  ais523: start doing git log with a path to see the commits it had
10:42:06  then you can show the particular versions of the file with git show revision:path
10:42:09  I found an option in gitk to do that, which is the wimp's way out when you don't know what a command is
10:42:19  thanks for the advice on how to do it properly, though
10:42:20  or you can just check it out
10:42:30  Is PHP whitespace insensitive? e.g. can I break a statement up into multiple lines like in C?
10:42:45  yea
10:42:54  it lets you end ?> in the middle of constructs and all sorts
10:43:41  ok
10:46:48  Patashu: even most whitespace sensitive languages let you break up statements across lines.
10:48:04  except Whitespace ;)
10:48:50 -!- cchackermirc has joined.
11:05:24 -!- sllide has joined.
11:19:25 -!- TeruFSX2 has quit (Ping timeout: 268 seconds).
11:24:20  zid: ?> ...  CakeProphet: they typically have some sort of marker that that's what you're doing, though
11:24:49  like _ in Visual Basic
11:30:05  yes, \ in Python, but Python also can do it automatically on an unbalanced (
11:30:25  which is the most common case.
11:30:55  C isn't typically whitespace-sensitive, but nonetheless lets you continue lines with \
11:31:16  really any sensible whitespace terminating language should do the implicit line continue on unbalanced parenthesis
11:32:00  this is why ; is used in a lot of places
11:32:04  so that you can do linebreaks in things
11:32:18  the only place it matters in C is for the pre-processor and strings afaik?
11:32:20  yes I understand the idea.
11:32:58  I remember having trouble with the semicolon, since my first language was Python. But since it's become like breathing.
11:33:35  zid: you can use backslash-newline to line-break inside keywords in C
11:33:42  nobody seems to think this is a good idea
11:33:46  yes, I said mattered, not impossible :)
11:33:58  strings, you can break using " whitespace "
11:34:00  w\
11:34:01  h\
11:34:03  i\
11:34:03  rather than backslash-newline
11:34:05  l\
11:34:06  e\
11:34:13 -!- oklopol has quit (Ping timeout: 268 seconds).
11:34:14  vertical program.
11:34:17  e.g. "Hello, "
11:34:20  "world!\n"
11:34:33  ais523: isn't that techincally a gnu extension?
11:34:36  no, it isn't
11:34:38  it's C89
11:34:41  orly
11:34:50  I swear you couldn't do "blah" meow "blah" in straight C
11:35:02  you can't put a meow in between
11:35:06  ah, okay
11:35:07  I don't believe--- yes
11:35:09  you can in gnu
11:35:10  unless it's a preprocessor substitution of a string
11:35:10  what ais523 said
11:35:29  #define SURROUND_BY_BLAH(meow) "blah" meow "blah"
11:35:31  is legal
11:35:37  but only if you give it a string constant as argument
11:35:45  every day I'm surrounded by blah.
11:36:00  (or something else that happens to form a legal line of C, as the preprocessor doesn't check for well-formedness)
11:36:39  s/form a legal line/form legal lines/
11:37:02  CakeProphet: whitespace is replaced by single spaces before #define substitution, IIRC
11:37:06  so it's going to form just the one line
11:37:17  right I meant logical line as in statement
11:37:19  I guess.
11:37:23  I think of these as lines.
11:37:30  there's unit tests for that for various compilers, whether they replace with a space or not
11:37:38  A lot fail O_o
11:37:42  hmm, what happens if you stringise an arg containing a literal newline?
11:37:43  as in
11:37:48  CakeProphet: you should think of statements as statements :)
11:37:56  #define SURROUND_BY_BLAH_STRINGISING(meow) "blah" #meow "blah"
11:38:04  SURROUND_BY_BLAH_STRINGISING(hello
11:38:06  world)
11:38:09  olsner: I have this amazing mechanism in my brain that allows me to think of statements as statements AND lines.
11:38:15  isn't that cool?
11:38:56  see
11:39:14  logical line vs. physical line
11:40:09  but feel free to demand other normative assertions from me.
11:40:12  I am going to sleep.
11:52:11  ais523: 6.10.3.2p2: "Each occurrence of white space between the [# operator's] argument's perprocessing tokens becomes a single space character in the character string literal [that is generated as the result]."
11:52:29  fizzie: good to know
11:52:39  s/per/pre/
11:52:40  and well done for actually looking it up
11:54:09  I had to, since I was quite uncertain; because newlines are retained in the "convert to preprocessing tokens" translation stage (unlike comments, which get replaced by one space; and sequences of non-newline whitespace, which may implementation-definedly get replaced by a single space too), so it could've included them in the stringized result too.
12:00:17 -!- Taneb has joined.
12:00:42  Hello
12:01:14  I just saw an advert saying "Let AOL speed up your computer!"
12:05:44 -!- ais523 has quit (Remote host closed the connection).
12:13:00 -!- sllide has quit (Read error: Connection reset by peer).
12:28:52 -!- MSleep has changed nick to MDude.
12:32:48  Caught up on all the comics I read
12:32:59  As far as I am aware
12:33:09  This computer won't let me log in to google reader
12:42:08 -!- variable has quit (Remote host closed the connection).
12:42:42 -!- variable has joined.
13:20:54  harm
13:56:39 -!- Phantom_Hoover has quit (Remote host closed the connection).
13:58:05 -!- Phantom_Hoover has joined.
14:18:44 -!- ais523 has joined.
14:23:17 -!- TeruFSX2 has joined.
14:24:27 -!- azaq23 has quit (Quit: Leaving.).
14:44:33 -!- Taneb has quit (Read error: Connection reset by peer).
14:45:05 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
14:54:34 -!- Taneb has joined.
14:57:31  An esoteric programming language where the output is an image...
14:57:55  fun :o
14:58:04  Possibly data is stored in the output image
14:58:24  So, essentially, you can watch the program working
14:59:39  Taneb: My computer already works like that
14:59:47  :P
14:59:49  the input is a 400GB 1Bbp BMP
14:59:54  the output is 4GB of the same
15:01:00  The program works by creating pens
15:01:10  That have their own little program
15:01:13  .-.
15:01:21  Which may or may not create additional pens
15:01:28  so, shaders?
15:01:48  Possibly
15:01:54  I tried rendering a 16gb mandelbrot render with 1000 iterations once
15:02:01  it was written in lua
15:02:19  I gave up after 3 days (got halfway) when I realised that if I did it in C++ it'd be done in like 3 hours
15:02:23  :I
15:04:11  Each pen has three colours and an alpha value, a location, a down-ness boolean, and its script
15:09:13  Remove the down-ness boolean
15:09:27  And the three colours and the alpha value
15:09:42  They are a command and some operands to it, respectively
15:12:14  Who's nothing like Piet Mondrian but still a painter?
15:22:19  Okay, naming this program Van Doesburg
15:22:28  It is designed to complement Piet
15:28:47 -!- azaq23 has joined.
15:38:15  I think I'm going into too much detail
15:38:35  "The pen name must begin with lower case letter in the English variant of the Latin alphabet, without diacritics."
15:49:32 -!- KingOfKarlsruhe has joined.
15:49:50  Oerjan showed that three-cell brainfuck is Turing-complete, right?
15:50:23  what... isn't.. turing complete?
15:50:30  HQ9+
15:50:36  Befunge-93
15:50:46  Finite-length tape  boolfuck
15:50:48  deadfish
15:51:19  BIT
15:51:37  tiffany, everything.
15:51:42  Except kittens.
15:52:14   Except kittens. <-- And things that can be demonstrated equivalent to a Turing machine
15:52:29  *Universal Turing machine
15:52:49  http://www.physibots.info trolling aol users since this morning
15:53:54 -!- sebbu has quit (Ping timeout: 245 seconds).
15:58:51 -!- GuestIceKovu has quit (Ping timeout: 240 seconds).
15:58:56 -!- derdon has joined.
15:59:33 -!- GuestIceKovu has joined.
16:01:56  System F
16:02:02  is David Morgan-Mar occasionally in this channel?
16:02:11  Never, as far as I am aware
16:02:16  if yes, which nick does he use?
16:02:27  I see, that's unfortunate
16:02:37  If he did, it would either be dmm or dmmaus
16:02:46  He's on #darths time to time
16:03:01  sounds Star Wars related
16:03:14  Sort of
16:03:30  my email records are going to be screwed up for 720 hours
16:03:36  It's related to a comic written by David Morgan-Mar among others about Star Wars
16:03:40  30 days?
16:03:46  because when I set up google apps it said to use a ttl that long and I was like okay.jpg
16:05:27  oh, I thought you said 720 /days/
16:05:39  I think it's usual to reduce the ttl one ttl's-period before you think you'll change it
16:07:30 -!- oklopol has joined.
16:09:07  I made a silly page
16:09:11  http://www.physibots.info
16:11:48  I'm creating a three-cell IO-less brainfuck to BCKW+SKI combinatory logic
16:12:10  tiffany, you are bad and should feel bad.
16:12:25  :c
16:12:37  C++? s/bad/horrible/
16:12:48  LYMIA
16:12:55 * tiffany snuggles lymee <3
16:13:11  Lymee, WHY HAVE YOU DONE THIS
16:13:25  what did lymee do?
16:13:27  :c
16:13:50  and what's wrong with C++ aside from being extremely difficult to program in?
16:14:04  Combined with Oerjan's work, IT WILL BE USEFUL TO CREATE A FRACTRAN TO MIBBLII TRANSLATOR!
16:14:15  What I'm doing, that is, not C++
16:14:27  That isn't useful for /anything/ :P
16:14:35  elliott might disagree with you there.
16:15:05  neat~
16:15:32  that language is awesome to program in :p
16:15:43  MIBBLII?
16:15:46  Thanks
16:15:49  ?
16:16:07  tiffany, elliott just mucked around with the template system a while ago because it's insane.
16:16:28  So far, the blank tape is C(CI(KI))(C(CI(CI))(KI))
16:16:33  .-.
16:16:37  That may be able to be optomised
16:17:20  http://server.physibots.info/public/mandelbrot
16:17:28  it's a program that I sort of wrote in neat that uses sdl
16:17:34  if I got the url right
16:18:51  Taneb, a tape made of combinators?
16:18:53  brb
16:19:53 -!- sebbu has joined.
16:19:53 -!- sebbu has quit (Changing host).
16:19:54 -!- sebbu has joined.
16:20:27 -!- cheater has joined.
16:25:58 -!- ais523_ has joined.
16:26:49 -!- ais523 has quit (Disconnected by services).
16:26:50 -!- ais523_ has changed nick to ais523.
16:28:15  Phantom_Hoover: Yup
16:28:33  It's a church list of 0,(0,0)
16:29:22  Taneb: what are the arguments to get head and tail from the list? church 0 / church 1?
16:29:25  i/k?
16:29:36  K,KI
16:29:43  ah, the third option
16:29:45  I was just about to ask that one
16:29:50  but wasn't sure what application syntax to use
16:30:14  Incidentally, WB works for two
16:30:37  K/KI always seemed a little lazy to me (in the not doing much work sense); it makes it easy to write if statements, but annoying to write things that return booleans
16:31:10  It works.
16:40:37 -!- elliott has joined.
16:42:15  19:20:42:  Vorpal: hint, you can frequently detect memes by typing the phrase into google and looking at the suggestions coming up. at least that's what i did for that thing in the topic.
16:42:26  it is the 90s and there is time for... is a hash-esoteric meme
16:42:28  dunno about the rest
16:42:35  elliott: I didn't know that
16:42:40  where did the meme come from?
16:42:45  Gregor i think
16:42:50  it's a /topic-meme
16:42:53  hmm, that comment of mine sounds so Vorpal that I should have changed the : to a ,
16:43:41  only the first line
16:43:57  19:32:43:  nethack would be a good AI thesis
16:43:57  19:32:58:  I am extuingished¬
16:43:57  19:34:06:  I vaguely recall that a NetHack bot was one on the "suggestions for a project topic" list of the Prolog course.
16:43:57  19:34:12:  I'm not sure if anyone ever did it.
16:43:57  19:34:34:  problem is nethack is quite inaccessable for a bot
16:44:01  both lines, to me
16:44:05  hey ais523 :P
16:44:15  elliott: note that zid followed me here from #nethack
16:44:24  and most of them are quite aware of the existence of both TAEB and saiph
16:44:42  hmmmmm
16:44:43  fizzie: I'd /love/ to see someone write something even capable of understanding the gamestate in Prolog
16:44:50  we have too many spies lately
16:45:04  it might be a decent language to write the AI itself in, but it would be incredibly bad for the framework
16:45:32  I'd say it took about a year of work to get TAEB capable of communicating to NetHack to the extent it currently does, and it /still/ has a completely broken API for item pickup
16:45:34  20:01:55:  haskell needs a bit more work to be a good esoland, it's almost there
16:45:34  this was an old meme five years before you invoked it the _first_ time in this log :P
16:45:53  ais523: hm?
16:45:55  is the meme actually older than Haskell? that would be hilarious
16:45:59 * ais523 facepalms
16:46:07  beautifu
16:46:08  l
16:46:22  ais523: I doubt the meme predates 1990
16:46:25  elliott: IT IS THE NINETIES
16:46:28  elliott: AND THERE IS TIME
16:46:29  elliott: FOR KLAX
16:46:45  oh, there we go then
16:46:45  ais523: Bad luck for you, I'm using a different client atm
16:46:48  so : not ,
16:47:02  a badly-behaved one at that
16:47:24  Vorpal: do you have more than two lines of scrollback now?
16:47:54  ais523: yes, but not much, I'm on a phone. So fairly limited.
16:48:14  bbl
16:48:24  Vorpal has more scrollback on a phone than his usual computational device (an internet-connected Speak and Spell)
16:48:42  he uses it for HPC, presumably
16:49:02  I've known people with a legitimate reason for not reading scrollback (blind people, for whom navigating it is awkward)
16:49:08  but I don't think Vorpal is one of those
16:49:25  elliott: maybe the computing is /so/ high-performance there's no spare cycles for remembering scrollback?
16:49:31  ais523: heh
16:49:37  I meant the phone
16:49:44  ais523: hmm, I would expect a list-based interface for scrollback if I was blind
16:49:53  i.e. pgup/pgdown to go up and down it
16:50:02  or do you have to mess with scrollbars I wonder?
16:50:28  elliott: it's more that you can't do anything else while reading scrollback
16:50:34  in particular, see other comments people are making
16:50:37  heh
16:50:47  20:43:03:  i will file it together with "never damn ais523"
16:50:51  20:43:03:  file it together with "never damn ais523"
16:50:51  the problem with sound compared with vision is that it can only really do about one thing that requires complex information to be sent at once
16:50:54  20:43:03:  with "never damn ais523"
16:50:57  20:43:03:  "never damn ais523"
16:50:59  20:43:03:  "never damn ais523
16:51:01  20:43:03:  never damn ais523
16:51:03  20:43:03:  damn ais523
16:51:07  elliott: I see what you're doing
16:51:09  looks like someone has to apologise :|
16:51:09  it doesn't count
16:51:19  ais523: hmm, does it count as me saying it?
16:51:20  bear in mind that my complaint is based on the meaning of the words
16:51:23  or do the quotemarks prevent that
16:51:24  they mean something else when quoted
16:51:35  and it's quoted in both cases, just diferent ways
16:51:40  I mean the <> quotes
16:51:57  yes, that's quotes
16:53:59  21:00:32:  http://pchat-irc.com/blog/ wow
16:53:59  Woooow.
16:56:44  elliott: is it wowish enough that I should read it too?
16:57:06  and is it ridiculously good/bad/surprising?
16:57:22  Yes.
16:57:27  It is the most wow thing.
16:57:37  elliott: it made me literally laugh out loud
16:58:06  I think I'm more wowing at Sgeo_'s comment than the website itself
16:58:09  should I subscribe to the RSS feed?
16:58:15  the website itself is pretty wowish
16:58:16  looks like a lot of fun
16:58:20  ais523: Undoubtedly
16:58:30 * elliott wonders if everyone else isseeing something different to him.
16:58:57  unfortunately, the link to the admin page requires a login
16:59:08  pretty audacious to place that in the post of a page that isn't a blog comment
16:59:29  It's linked on the sidebar too
16:59:34  That's just the literal default WordPress setup
16:59:35  (well, given how often wordpress has security holes, it probably /doesn't/ actually require a login, but that's the most obvious method)
16:59:47  I'm still not sure why Sgeo wowed at it
17:00:10  elliott: more that someone would be hosting a literal default WordPress setup for reasons other than showing off what it looked like
17:00:11  Just at how randomly contentless it was
17:00:15  or for a few minutes while setting up WordPress
17:00:33  is that the default theme too? I don't know what WordPress default themes are like
17:02:08  I believe so
17:02:17  they changed it from Kubrick, which you've almost certainly seen everywhere, ages ago
17:02:43  (http://theme.files.wordpress.com/2005/10/kubrick-screenshot.png?w=595&h=383)
17:02:46 -!- ralc has quit (Read error: Connection reset by peer).
17:04:22  it's quite pretty, but then I'd expect a default theme of a popular blog engine to either a) look really good, or b) look incredibly bland so people are motivated to change it
17:05:03 -!- TeruFSX2 has quit (Ping timeout: 260 seconds).
17:06:02  I want to know where they got the photograph from; there has to be something like stock image websites, but for "pretty but meaningless images to use as defaults in themes"
17:10:55  I think stock image websites probably do that too
17:11:25  I know someone who used Webshots, which is full of pretty meaningless images to use as desktop backgrounds or screensavers
17:11:37  and theme images are much the same things, but with different dimensions
17:12:25  I don't understand people who seek out desktop backgrounds
17:13:17  22:17:42:  CakeProphet: i suppose it's event driven by using callbacks when certain tokens are found.
17:13:17  elliott: super bowl? every one of them ay ( y) this song slow and rock together nice words awesome beat 3 videos you will finish the game could be a damn prep.
17:13:24  I thought this was someone describing fungot for a second
17:13:24  elliott: ppl should vote clinton because obama is biracial every1 knows that dood, look at him he has been on something lately.
17:14:51  `addquote  elliott: ppl should vote clinton because obama is biracial every1 knows that dood, look at him he has been on something lately.
17:14:51  elliott: diving mission in mw2. infinity ward can manage to outdo the first commercial plane to have passion for singing like this
17:14:56  638)  elliott: ppl should vote clinton because obama is biracial every1 knows that dood, look at him he has been on something lately.
17:14:59  ^style
17:14:59  Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube*
17:15:11 -!- olsner has quit (Ping timeout: 252 seconds).
17:20:21  23:01:42:  quintopia, although at least both times have been you being stupid and Hughes telling you.
17:20:32  Phantom_Hoover: It wasn't quintopia being stupid this time, was it?
17:20:55  Sam Hughes?
17:20:56  elliott, well no, but he was missing the joke.
17:21:07  Sgeo_: no
17:21:19  Sgeo_: Gabriel Hughes, famous harpsichord musician.
17:21:24  He's bros with Phantom_Hoover and quintopia.
17:24:20  CakeProphet: Lymee: Please don't tell me this log is going to end with you two repeatedly pinging fungot.
17:24:20  elliott: i mean maybe she lost herself but maybe she wasnt a happyhappyjoyjoy game. i'll be looking forward to it.
17:25:11  00:05:07:  CakeProphet, there's a bitcoin faucet thing
17:25:11  00:05:31:  Which is closed for maintainance, but whatever
17:25:11  Finally CakeProphet can get something like a penny for FREE.
17:25:14  It's probably less nowadays.
17:25:43  i would like to hear the ff7 voice of the bot
17:25:50  itidus20: so set it to that
17:26:27  this is an awkward situation
17:26:37  `ff7
17:26:38  ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ff7: not found
17:26:50  ^ff7
17:26:58  ^style ff7
17:26:59  Selected style: ff7 (Full script of the game Final Fantasy VII)
17:27:06  ^help
17:27:06  ^ ; ^def   ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
17:27:17  ok thanks :P
17:27:21  yw
17:27:27  fungot lay it on me
17:27:28  itidus20: sorry i just happen to him.... i'm not just the fish, but the darkness of the lifestream... you really gonna leave! really!?
17:27:40  I should have done what elliott did, but I didn't know there wa a help
17:27:53  fungot more!
17:27:53  itidus20: hah, hah hah hah! listen to me, i won't be able to fly in the village! you gotta be prepared, and push o button to slow down.
17:27:56  ^show style
17:28:10  ^show ^style
17:28:22  02:02:16:  elliott: omg I'm actually working on Fythe ... AND Plof!
17:28:22  Gregor: Have you finished off bignums for me?
17:28:34  :p
17:28:43  fungot
17:28:43  itidus20: your real self. will you and aerith are my only real job is watching over shinra's documents...
17:29:19  ok i've had my fun
17:29:53  fungot responds to /msg although it still won't reply beyond four consecutive
17:30:50  elliott: Depends on your definition of "finished off"
17:31:06  03:01:31:  All TC programming languages, barring bizzarities, should be able to parse
17:31:06  03:01:33:  Stuff
17:31:06  deep words
17:31:44  Gregor: Do all operations (apart from "pointer-ish" things) handle bignums and overflow properly, including tricky bitwise cases which properly promote when the result if infinitely 0-extended to the left would differ from the word-size result?
17:33:18  Does that definition leave room for addition, for example, to have nonsenical result?
17:33:37  Gregor: do you ever wear two hats?
17:33:50  elliott: Depends on which you consider "pointer-ish" :P
17:34:00  If you consider all the bitwise and shifty cases pointer-ish, then DONE.
17:34:09  I don't
17:34:21  Oh, I forgot to add having separate divmod and quotrem too, I was planning to do that
17:34:44  your head would be so warm
17:35:13 -!- Taneb has changed nick to TanabIsNotHere.
17:35:24  oklopol: .........
17:36:01  did i just blow your mind
17:36:17  oklopol, it would be too heavy.
17:36:17 -!- Sgeo_ has changed nick to SgeoISNOWHERE.
17:37:08  indirect addressing is a facile and inebrious kind of instruction which should be whomped away by languages
17:38:09 -!- olsner has joined.
17:39:15  in a pickle i can reach into my unconcious for an expanded english vocabulary
17:39:52  `addquote  indirect addressing is a facile and inebrious kind of instruction which should be whomped away by languages
17:39:54  639)  indirect addressing is a facile and inebrious kind of instruction which should be whomped away by languages
17:40:56  07:26:53:  My os is 8gb and i have lots of stuff installed
17:40:56  07:27:03:  My entire vps is 2.5
17:40:57  my toothrbush is 9
17:41:06  .-.
17:41:11  My toothbrush is 1000000000000000
17:41:24  my home directory is 50gb ;_;
17:41:27  my toothbrush is 0 because it's a hardware solution using vlsi
17:42:23  My home directory is all the gbs
17:42:40  13 of which are taken up by Red Dwarf.
17:42:58  cool
17:43:04  I have 25gb of ~/Downloads and 25gb of ~/Videos :P
17:43:56  but
17:43:59  how much of it
17:44:03  is red dwarf
17:44:17  red dwarf?
17:44:22  09:13:24:  I wrote a Huffman making program in Haskell. It is written in a different way than it would be written in other programming language, but it works. Tell me if you have suggestion things I could add.
17:44:22  09:14:52:  To me it seems many functions with similar name and similar purpose are in Data.List, Data.Map, Data.Set, etc, they should be made a class.
17:44:22  09:15:37:  some of them already are
17:44:22  09:15:59:  foldable, traversable
17:44:24  09:17:03:  But some of them are not. Possibly due to some limitations in the class system of Haskell.
17:44:30  mostly because nobody can agree on how collections classes should be structured
17:44:33  tiffany, get out
17:44:35  Now.
17:44:36  lol
17:45:08  .-.
17:45:17  what is .-. even meant to look like
17:45:28  elliott: it's 2 eyes and a mouth
17:46:19  mouths aren't higher than eyes
17:46:37  upside down face?
17:46:43  elliott, tiffany is actually an alien, thus explaining why she hasn't heard of Red Dwarf.
17:46:53  KingOfKarlsruhe: hello :)
17:46:57  The mouth in her forehead is an extreme version of forehead ridges.
17:46:57  I kind of use it as a headtilt
17:47:03  .-.
17:47:07  KingOfKarlsruhe: didn't you're into esoteric languages
17:47:26  Didn't we all're into esoteric languages?
17:47:35  heres a random red dwarf scene: http://www.youtube.com/watch?v=RXKlC8ph7mM
17:47:36  We'll all're esoteric into languages.
17:52:13  11:33:35:  zid: you can use backslash-newline to line-break inside keywords in C
17:52:18  ais523: this will revolutionise my coding style
17:52:51  oh dear
17:53:36  haha
17:53:39  ooh, a new use for the alternative keywords for operators: opportunities for line-breaking
17:53:49  you can use nonprintable characters in php identifiers
17:53:55 -!- elliott has quit (Remote host closed the connection).
17:54:02  can you linebreak inside operators too?
17:54:18  is this the backslash \
17:54:22 -!- elliott has joined.
17:54:30  You can linebreak in everything except multibyte characters and trigraphs
17:54:35  itidus20: reverse solidus
17:54:57  15:01:54:  I tried rendering a 16gb mandelbrot render with 1000 iterations once
17:54:57  15:02:01:  it was written in lua
17:54:58  15:02:19:  I gave up after 3 days (got halfway) when I realised that if I did it in C++ it'd be done in like 3 hours
17:54:58  15:02:23:  :I
17:54:58  even better: you could do it in C, and then you wouldn't have to deal with C++
17:55:25  15:50:23:  what... isn't.. turing complete?
17:55:26  many things
17:55:33  even better: you could not do it at all and then you wouldn't have to deal with anything
17:55:39  it was 65536x65536 and it kept segfaulting until I realised I was allocating 16gb of ram when I had 1
17:55:46  so I rendered it using 512x512 tiles
17:55:47  :p
17:56:17   even better: you could do it in C, and then you wouldn't have to deal with C++
17:56:25  16:09:07:  I made a silly page
17:56:25  16:09:11:  http://www.physibots.info
17:56:26  what is the point of this
17:56:32  Even better: you could do it in assembly and you'd be a Real Programmer.
17:56:38  Or as close as you can get these days.
17:56:40  Phantom_Hoover: Well, better than C++.
17:56:42  I don't know assembly ;-;
17:57:00  16:13:50:  and what's wrong with C++ aside from being extremely difficult to program in?
17:57:00  There are more things wrong with C++ than there are things that are not Turing complete.
17:57:11  also elliott that page was made because of people impulsively typing "http://www." before every address
17:57:31  It's horrific that they leave out the additional www..
17:58:04  I use subdomains to organise services (mediawiki, phpbb, etc), not for organising protocols
17:58:10  also subdomains for servers
17:58:11  elliott: that which can be explained is of little value
17:58:19  tiffany: Please, educate yourself: http://www.www.extra-www.org/
17:58:23  :I
17:58:28  http://no-www.org
17:58:33  no-www is obsolete. http://www.www.extra-www.org/
17:59:04  tiffany, www is the only acronym that takes three times longer to say than the full phrase; it is therefore the best.
17:59:36  The following error was encountered while trying to retrieve the URL: http://www.www.extra-www.org/
17:59:36      Unable to determine IP address from host name "www.www.extra-www.org"
17:59:55  I hate when I sit there for a minute while a school librarian decides to read out "h t t p colon slash slash w w w dot..."
18:00:10  the only way it could be worse is if they said backslash
18:00:28  tiffany: Ugh. I always painstakingly correct them by informing them they forgot the extra "www.".
18:00:45  They have no appreciation for the protocols they rely on every day; they just parrot things out as quickly as they can.
18:00:47  It's disgusting.
18:00:58  tiffany: you just got me thinking, they need to apply cockney slang to urls
18:01:15  I'm tempted to make a 65536 character long subdomain now
18:01:36  itidus20, hmm, what rhymes with 'web'?
18:01:39  Make it be a URL shortener
18:01:43  XD
18:01:47  Meb? Kreb?
18:01:48  Phantom_Hoover: www = sorry to trouble you
18:01:50  Aha!
18:01:58  :P
18:02:00  i dunno
18:02:04  im not british anyway
18:02:13  itidus20, no, world wide web = cycle.
18:02:19  you could shorten it to sorry
18:02:47  http://xkcd.com/181/
18:02:53  world wide blag
18:03:04  I, too, have heard of xkcd
18:03:08 * tiffany <3 xkcd
18:03:17  Ah. Your first error.
18:03:29  in swedish, www is pronounced "ve ve ve", which means woe woe woe
18:03:56  in weaboo, www means lolol
18:03:59  :p
18:04:05  elliott, hey, you like xkcd pre-~400.
18:04:17  the-longest-domain-name-ever-to-be-used-for-a-so-called-url-shortener-in-spite-of-the-fact-that-nearly-all-urls-will-be-lengthened-just-by-the-inclusion-of-this-domain-name.com/submitted-urls/urls-by-random-unique-identifier/yr97fq0yf4n089qfny04y0w4fh089yh089w5th90w8y3fw03h9840404w90w40398tw498t0440wt9
18:04:26  Phantom_Hoover: Well OK except for any comic that anyone's referenced more than like three times.
18:04:47  Gregor: I'd use it
18:04:50  gregor: md5 hash of every character in the url concatinated together for the unique identifier
18:04:57  tiffany: X-D
18:04:59  Gregor, that is NICE.
18:05:01  md5 :modern:
18:05:07  SHA-256
18:05:08  fine, md3
18:05:17  SHA-....4096?
18:05:27  SHA-\aleph_0
18:05:37  Gregor: There are a finite number of specified SHA algorithms :P
18:05:47  I think Skein generalises to any bitwidth.
18:05:50  SHA-graham's_number
18:05:58  elliott: Yeah, but I don't recall where it ends. Was it 256? 1024?
18:05:59  RadioGátun is really nice because it goes up to like two thousand bits and you can just take a prefix.
18:06:03  Gregor: Five twelve.
18:06:06  tiffany, waaaay ahead of you.
18:06:10  Oh, it's RadioGatún.
18:06:13  Of course I'd guess the two powers of two around the correct one :P
18:06:21  Oh hey
18:06:23  http://en.wikipedia.org/wiki/Keccak
18:06:30  Successor to RadioGatún is an SHA-three finalist
18:07:42  I'm seriously adding this subdomain: the-longest-domain-name-ever-to-be-used-for-a-so-called-url-shortener-in-spite-of-the-fact-that-nearly-all-urls-will-be-lengthened-just-by-the-inclusion-of-this-domain-name.physibots.info
18:07:44  http://www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com/
18:08:10  Oh, that's just email addresses
18:08:27  http://hugeurl.geeks.org/
18:08:49  oh my it worked
18:08:51  I like how http://www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com/ lists four disadvantages first
18:09:08  elliott, no those are advantages
18:09:22  crap
18:09:26  I think it got truncated
18:09:40  apparently not
18:09:41  .-.
18:10:45  I think the URL lengthener should just have a lookup table for every character in the original URL, where the value in the generated URL is a brief description of the etymology and history of that letter/symbol.
18:11:08  XD
18:11:09  Gregor: Remember to encode the resultin unary
18:11:33  Then interpret that unary as a base-9999999999999999999 integer, convert it to English words, and fuck it this is stupid.
18:12:34  eeeeek
18:12:46  I just crashed my entire domain with that subdomain
18:12:52  "crashed"
18:12:54  As we all know, domains are computers.
18:13:16  or an in-order traversal of the tree of wiki pages rooted at the wikipedia page for that character
18:13:33  elliott, domain lookup is failing through opendns
18:13:37  it returns a server error
18:13:48  you turned off the internet!
18:13:48  lol, opendns
18:14:35  this is bad
18:14:38  all the subdomains broke
18:14:40  .-.
18:14:53  lol
18:17:52  okay
18:17:53  it fixed
18:18:15  tiffany: you don't run your own dns server?
18:18:21  no
18:18:30   As we all know, domains are computers. <-- obviously not. Cars can crash too. Thus it must be one.
18:18:35  (or a computer, true)
18:18:51  carputer
18:19:01  elliott: are you sure those can crash?
18:19:11  only one way to find out ..,,,,,,,,,,,
18:19:29  elliott: by applying explosives right? I'll call Mythbusters.
18:19:47  no
18:19:49  by applying
18:19:51  Lov,e,,,,,,,,,,,,,,,,,,
18:19:52  q[pwre't;ghf,
18:19:53  kliu[]fyt'dsae
18:19:56  I see.
18:20:18  p[l;a'sd'fgln;kt\
18:20:42  lspdc;sx
18:20:47  ////////////
18:20:53  ````````````````
18:20:53  elliott: really? I thought he went to Oxford, not Cambridge?
18:20:55  ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ```````````````: not found
18:20:59  Vorpal: a-0sifkdoxcvklmb
18:21:02  sld;fgk;hfj, ;erw't
18:21:04  elliott: oh okay.
18:21:05  ???????????????????????????????/////////
18:21:11  .-.
18:21:16  sads;vc
18:21:20  bbiab
18:21:24  bbibabiabaib
18:23:45  fungot: make some sense
18:23:46  olsner: welcome to cosmo canyon. are you?
18:28:59 -!- nys has joined.
18:30:02  Welcome, comrade nys!
18:30:24  Hello!
18:31:18 -!- TanabIsNotHere has changed nick to Taneb.
18:31:30  Hello
18:33:03  I've been thinking...
18:33:05  Panic
18:33:14  nys, we are a channel for the discussion of transmissible spongiform encephalopathies.
18:33:17  Taneb: ok im panicing
18:33:22  Phantom_Hoover: he's been here before
18:33:25  but good description
18:34:03  elliott, ;_;
18:35:07  I've been here from around four years ago
18:35:16  oh, really?
18:35:28  since around 2006, and even before
18:35:34  what nick?
18:35:42  Twistle on the wiki
18:35:45  I've been here since July, possibly June
18:35:49  dunno what I went by on IRC
18:37:08 * tiffany waves at nys
18:37:42 * nys waves back...sinisterly
18:38:15  sinysterly
18:38:15  nys, I admire your dedication to BSE.
18:38:23  BSE?
18:38:33  nys, why you wave left-handedly
18:38:59  Taneb: stern glance
18:39:21  refresh me on what BSE is
18:39:34  Stop looking at my rear end, elliott
18:40:20  we need someone to have the flyswatter when oerjan doesnt
18:40:24  or the swatting will never get done :|
18:40:44  I'll remind oerjan when he comes back
18:41:09 * Phantom_Hoover swatpans Taneb --==\#/
18:41:23 * Phantom_Hoover swatpans tiffany for good measure --==\#/
18:41:35  wha?
18:41:41  i approve of this reign of terror
18:41:54  :< what is BSE??
18:41:56  rerror
18:42:00  but yeah what is bse
18:42:03  bsebsebsbessbe
18:42:04 * Phantom_Hoover swatpans elliott for toadying --==\#/
18:42:09  nys, elliott, ...
18:42:13  Mad cow disease?
18:42:20  HOW OBVIOUS
18:45:08  ++++[>++++++++++++++++<-]>++++++++.[-]<++++++[>++++++++++++++++<-]>+++++.[-]
18:45:23  is this the way you usually communicate in here?
18:45:43  !brainfuck  ++++[>++++++++++++++++<-]>++++++++.[-]<++++++[>++++++++++++++++<-]>+++++.[-]
18:45:58  that thing outputs two characters at most
18:46:08  ^ul ++++[>++++++++++++++++<-]>++++++++.[-]<++++++[>++++++++++++++++<-]>+++++.[-]
18:46:08   ...bad insn!
18:46:10  ^bf ++++[>++++++++++++++++<-]>++++++++.[-]<++++++[>++++++++++++++++<-]>+++++.[-]
18:46:10  He
18:46:12  it outputs exactly two characters
18:46:14  nys: he
18:46:15  !userinterps
18:46:15  ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph gregor hello id insanetemp jethro kraut lperl lsh map num numberwang ook pansy pi pikhq pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez wc yodawg
18:46:15  He
18:46:42  !numberwang He
18:46:44  I'm sorry, but Brazil isn't a vegetable!
18:47:00  i'm sorry too EgoBot :(
18:47:06  !numberwang shinty six
18:47:06  I'm sorry, but Brazil isn't a vegetable!
18:47:30  but shinty six is a real number
18:47:39  wait, is that !numberwang's reply to everything?
18:47:49  !numberwang 12
18:47:49  That's numberwang!
18:48:09  Nope
18:48:37  Also, I've defined > in my combinator brainfuck
18:48:42  S(BC(B(CI)(B(CIK)(CI(KI)))))(S(B(BC(CI))(CI(KI)))(CIK))
18:48:49  o.o
18:49:09  it's always nice to do some good brainfucking
18:49:15  Due to silly things, I don't need to define <
18:49:25  Taneb: oh, writing a BF -> combinator compiler?
18:49:26  Namely, I'm only working with three cells
18:49:29  Yep
18:50:02  Designed for output from oerjan's Iterated Collatz Function -> brainfuck compiler
18:50:58  In which, every > can be replaced with <<
18:51:13  And every < with >>
18:51:23  Making only one of them necessary
18:52:19  he managed to do it for three cells? awesome
18:52:31  It's been on the bf page for a while
18:52:59  I thought that was four but I don't remember
18:53:34  Interestingly, the C combinator is Church Not
18:53:58  K is Church True, I is Church one
18:54:33  does the ^bf interpreter in this here bot's tape extend in both directions from the initial spot?
18:54:59  I would check, but ice cream
18:55:07 -!- Taneb has changed nick to TanebIceCream.
18:55:13  :<
18:57:44  nys: no, only rightwards as is standard
18:57:54  nys: it may even be a limited tape actually..
18:57:58  it's written in befunge after all
18:58:12  !brainfuck is more complete but you'll need to terminate output with a newline or it won't say anything
18:58:18  :o the bot is written in befunge?
18:58:38  yeah
18:58:42  ^source
18:58:43  http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
18:58:47  befunge-98, though
18:59:04  hum.
19:01:27  does either implement any kind of input?
19:03:19  Both do
19:03:19  &Input integer
19:03:19  ~Input character
19:03:27  Funge-98 has that and a whole extension mechanism
19:03:29  fungot uses socket ones
19:03:29  elliott: it would bring us an easier life.
19:06:56  ^bf ++++++[>+++++++++<-]>.[-]<++++++++++[>++++++++++<-]>+.+++++++..+++.[-]<+++[>+++++++++++<-]>.
19:06:56  6ello!
19:07:02  darnit!
19:07:43  ^bf ++++++++[>+++++++++<-]>.[-]<++++++++++[>++++++++++<-]>+.+++++++..+++.[-]<+++[>+++++++++++<-]>.
19:07:43  Hello!
19:07:47  there.
19:08:03  !bf_txtgen hi
19:08:07  ​41 ++++++++[>+++++++++++++>+>><<<<-]>.+.>++. [155]
19:08:45  does that produce the shortest possible?
19:10:56 -!- Vorpal has quit (*.net *.split).
19:11:52  !bf_txtgen hi
19:11:54  ​41 ++++++++[>+++++++++++++>+>><<<<-]>.+.>++. [44]
19:12:31  nys: that's quite impossible
19:12:39  it might be the shortest for hi but I doubt it
19:13:06  !viewinterp bf_txtgen
19:13:32  !bf_testgen Hello, world!
19:13:40  Lymee: it's a built-in ancient java thing
19:13:46  Ah.
19:13:54  It's certainly not the optimal for hi; c.f. ">><<".
19:14:08  (It uses a fixed number of 4 tape cells in the first loop.)
19:14:13  !bf_txtgen Hello, world!
19:14:15  ​127 +++++++++++[>+++++++>+++++++++>++++>+<<<<-]>-----.>++.+++++++..+++.>.------------.<++++++++.--------.+++.------.--------.>+.>-. [839]
19:14:16  (Well, the first and only loop.)
19:14:38  ^bf +++++++++++[>+++++++>+++++++++>++++>+<<<<-]>-----.>++.+++++++..+++.>.------------.<++++++++.--------.+++.------.--------.>+.>-.
19:14:38  Hello, world!.
19:14:50  The "." is the newline.
19:15:14  So the "hi" is also actually "hi\n".
19:15:26  Three .s and all that.
19:16:39  Also yes, a fixed-width tape, I think.
19:17:12  A small one, at that; 1000 cells of numbers in the [0, 255] range.
19:17:44  Real numbers?
19:17:59  Well, integers *are* real...
19:18:08  You might even call them the realest numbers of all.
19:18:16  In the "keeping it real" sense.
19:19:45  ^[>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> +.]
19:19:49  ^bf [>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> +.]
19:20:16 -!- Vorpal has joined.
19:20:24  "aaa**" cells of nonnegative integers less than "88+:*", to be more thematically appropriate.
19:20:25  ^bf [>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ .]
19:20:27 -!- Vorpal has quit (Max SendQ exceeded).
19:21:14 -!- Vorpal has joined.
19:21:53  ^bf +[>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ .]
19:21:53  @@@@@@@@@A
19:21:58  (How sensibbel.)
19:22:34 -!- TanebIceCream has changed nick to Taneb.
19:22:56  which does !brainfuck need to terminate with, CR or LF?
19:24:04  LF.
19:24:10  No current OS uses CR to terminate lines to my knowledge.
19:24:53  I think I've seen a couple of CR-terminated lines in some files on that OS X iBook.
19:25:27  fizzie: Probably Classic remnants.
19:25:50  Probably. It does have that funky Classic-in-a-box thing-thing.
19:31:58 -!- derdon has quit (Remote host closed the connection).
19:33:21  + is defined
19:33:22  S(BC(B(CI)(B(SB)(CIK))))(CI(KI))
19:33:42  - will likely be substantially longer
19:34:44   /topic    “Haskell is compiled from .hs-files which means HOMO SEXUAL”    ~ Oscar Wilde on Haskell
19:35:10  no
19:35:18  But then again, Oscar Wilde would say that, wouldn't he?
19:35:39  ...So would Uncyclopedia
19:36:37 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.1/20110830092941]).
19:46:27  yes Taneb, he very much would.
19:49:22  !bf_textgen hi
19:49:32  !bf_txtgen hi
19:49:36  ​41 ++++++++[>+++++++++++++>+>><<<<-]>.+.>++. [145]
19:50:06  wow
19:50:15  !bf_txtgen [>+++++++++++++>+>><<<<-]>.+.>++.
19:50:17  ​154 +++++++++++++++[>++++++>++++>+++>+++<<<<-]>+.>++.>--...>--.<..>..<...>..<<.>.<..--....>++.<<++.>++.>+.>.+++.<<.>---..>.<---------------------------------. [807]
19:50:35  thats the most obvious bad txtgen output i've seen in a while
19:51:13  Well, - will have to wait
19:51:14  at the very least there should be a postprocessor that repeatedly removes >< and <> and +- and -+
19:52:14  !brainfuck ++++++++[>+++++++++++++>+>><<<<-]>.+.>++.
19:52:31  It will never create +- or -+ or <>; only ><.
19:52:51  ^bf  ++++++++[>+++++++++++++>+>><<<<-]>.+.>++.
19:52:51  hi.
19:52:57  fizzie: how do you know?
19:53:26  quintopia: Well, I'm... reasonably certain. It has a rather limited form that all the programs it generates will take.
19:53:40  enlighten me?
19:53:47  !brainfuck +++++++++[>++++++++++<-]>.++++.++++.[-]<++++[>++++++++<-]>.+++++++++++........+++++++++++++++[>++++++>++++>+++>+++<<<<-]>+.>++.>--...>--.<..>..<...>..<<.>.<..--....>++.<<++.>++.>+.>.+++.<<.>---..>.<------------ ---------------------.[-]++++++++++.
19:54:09  ^bf +++++++++[>++++++++++<-]>.++++.++++.[-]<++++[>++++++++<-]>.+++++++++++........+++++++++++++++[>++++++>++++>+++>+++<<<<-]>+.>++.>--...>--.<..>..<...>..<<.>.<..--....>++.<<++.>++.>+.>.+++.<<.>---..>.<------------ ---------------------.[-]++++++++++.
19:54:09  Z^b ++++++++]ꬬ_꯬ꬬ.
19:54:13 -!- TeruFSX2 has joined.
19:54:23  whoa
19:55:12  quintopia: Well, it's always (with the current settings) +{n}[>+{i1}>+{i2}>+{i3}>+{i4}<<<<] and then a sequence of "move to spot, optionally a series of +'s or -'s (but not both), and a .".
19:56:04  Uh, and the one - in the loop, of course.
19:59:24  aha. a reasonable format, although it will result in needlessly long programs in some cases (like when four different memory cells are not needed). also, why does it print a . when a . was not input? is it trying to print the newline character?
19:59:32  yes
19:59:35  and succeeding
19:59:36  brb
20:00:35  lame
20:01:34  someone make a flag for bf_txtgen that includes the newline so it can leave it out by default >.>
20:03:53  The underlying Java proggie can take the number of cells as a command line argument.
20:04:47  but the ego command cant?
20:06:54  I'm tired of combinatory brainfuck
20:07:08  I'm going to work some more on Van Doesburg
20:10:08  I don't think the bot-command can.
20:10:15  !bf_txtgen -t 2 hi
20:10:17  ​83 +++++++++[>+++++>++++>+++++++++++++>+<<<<-]>.>>-.<----.<+++++.>.>------------.+.>+. [222]
20:10:26  Yes, that doesn't look so good.
20:13:26 -!- pumpkin has joined.
20:15:13 -!- copumpkin has quit (Ping timeout: 260 seconds).
20:41:17 -!- quintopia has quit (Quit: Lost terminal).
20:41:25 -!- quintopia has joined.
20:41:26 -!- quintopia has quit (Changing host).
20:41:26 -!- quintopia has joined.
20:43:46  :o
20:44:02 -!- zzo38 has joined.
20:45:36  I was dissapointed with Inception
20:45:41  It was too easy to understand
20:45:58  Maybe if I hadn't read house of leaves first...
20:46:57  elliott: I might agree with your complaints about my file naming for the Plof language definitions, if only to avoid having a file named plof/plof.plof ...
20:47:26  I think someone has the email dot@dotat.at
20:48:14  Gregor: X-D
20:48:22  Gregor: Plof's implementation should toooootally be a single file.
20:48:31  Gregor: P.S. are you incorporating all my objectively correct improvements
20:48:54  Many if not most of your improvements had been adopted into Plof 3 ...
20:49:45  I generally prefer to separate the various parts of a program into chapters instead of into separate files, although in some cases it is useful to separate the files such as having one file for the back-end and one file for the front-end, so that you can combine different back-ends with different front-ends.
20:52:00 -!- monqy has joined.
20:52:02  elliott: The "logic" that ended up with that name was this: The file that defined the base grammar of PUL (then the Plof User Language) was called pul_g.plof. Plof is now only the user language, as PSL and the PRP are replaced by Fythe, so the name "PUL" is no longer meaningful. That changed it to plof_g.plof, but the long-since-silly reasons I had for separating the grammar from the definitions don't make /any/ sense when there's also a transformation/macro la
20:52:03  yer, so I dropped the _g and combined it with pul.plof. Leaving ... plof.plof.
20:52:43  Gregor: plof/initial-syntax.fythe
20:52:47  Or plof/bootstrap.fythe
20:52:49  Or SOMETHING :P
20:52:55  I was thinkin' base.fythe
20:52:56 -!- augur has joined.
20:53:29  So how about them improvements eh eh eh
20:53:43  The problem beyond that file is that while the base is obviously in Fythe, it's not clear at which point it's officially "written in Plof"
20:53:50  So when to change from .fythe to .plof.
20:54:06  That's why I was just going to drag .plof all the way back, since it's not like .fythe is particularly meaningful anyway.
20:54:10  Maybe there is no such point?
20:54:50  Gregor: Go to .plof whenever your whole file isn't a fythe {} block :P
20:54:55  zzo38: Exactly >_>
20:55:05  elliott: OK, base.plof it is.
20:55:13  Gregor: What's outside of a fythe {} block in base.plof
20:55:20  The grammar and transforms.
20:55:22  Plof looks interesting, I would like to learn i
20:55:23  t
20:55:34  Taneb: Learn the JOY THAT IS FYTHE!
20:55:43  Or, y'know, not :P
20:55:46  Gregor: OK, anything that isn't in a "compilershit {}" block
20:56:12  elliott: I /believe/ (but haven't gotten far enough to confirm) that that would leave only base.fythe and objects.fythe.
20:56:45  Gregor: Plof four has no stdlib?
20:56:46  Awesome.
20:56:56  elliott: The stdlib is mostly implemented in Plof.
20:57:02  Yes, so those are .plof
20:57:19  By "leave only" I meant "leave the only ones named .fythe as"
20:57:26  Well, what's wrong with tthat then
20:57:31  Nothing :P
20:57:33  They're bootstrapping Fythe into a language
20:57:41  Gregor: I suspect base.fythe will grow enough that you'll want to split it up
20:58:00  elliott: For the time being I'm modeling it directly on Plof 3.
20:58:15  $ wc -l pul_g.plof pul.plof
20:58:15    608 pul_g.plof
20:58:15    512 pul.plof
20:58:15   1120 total
20:58:21  And Fythe, unlike PSL, isn't shit.
20:58:25  So it'll be like 1/10th the size :P
20:58:27  WITH ALL MY AWESOME IMPROVEMENTS OBVIOUSLY (<---- literally best language designer)
20:58:40  You already killed all my semicolons :P
20:58:41  Gregor: Was PSL even designed :P
20:58:46  litteraly
20:59:10  And I was referring to the totally awesome change to call-by-name so that conditionals look normal and the PURE GENIUS of using infix => for function construction to make that work with {} too
20:59:11  UTTER
20:59:11  GENIUS
21:00:51  Call-by-name works great for if and while, but gets kinda grotty for ... y'know, all other functions.
21:01:15  Gregor: you can make it into call-by-value for individual arguments, though
21:01:18  Gregor: That's why the normal function syntax, i.e. =>, makes it call-by-value :P
21:01:33  Maybe with some prefix for an argument name to say "don't evaluate", or just defining if and while in an ugly manner, 's all good
21:01:41  And it avoids hideous () for blocks :P
21:01:42  most call-by-name functions have sugar for "call-by-valuise this variable"
21:01:55  which in practice is just a case of assigning it to a temporary variable
21:01:59  I'm not suggesting you make the "user" language call-by-name in practice which is insane :P
21:02:04  Sure sure.
21:02:04  s/which is/, that's/
21:02:28  Incidentally, none of that fixes the ()-for-block thing, that's just an issue of syntax :P
21:02:44  Well, it fixes it ELEGANTLY
21:02:47  elliott: is it wrong that I normally write C (or previously C++ before I understood what it was) in a single file?
21:02:50  By making () <=> {}
21:03:03  ais523: Files are a broken abstraction mechanism, so not really
21:03:07  I once split a C++ file into four separate files arbitrarily (chronologically?) because it was getting large, but I forget why
21:03:16  elliott: But making () equivalent to {} fixes it regardless of call by name.
21:03:34  Gregor: Yes, but then it's unclear how to define functions without just making up a new kind of awful bracket...
21:03:39  elliott: well, at least in C++, putting things in as many separate files as possible is arguably best so that you can get dependencies right, if dependencies are shallow
21:03:49  or all in one file to save effort for the compiler if dependencies are very intertwined
21:03:52  Then why do you need both () and {} if it is equivalent? Just have one kind. Later the other one can be reserved for future usage
21:03:53  making () and {} the same sounds bad...
21:03:57  Gregor: My point was, my call-by-name genius makes it possible to fix the ugliness of () for blocks WITHOUT doing something else equally ugly :P
21:04:09  zzo38: Because
21:04:10  if (condition) (
21:04:11      ...
21:04:13  )
21:04:14  looks disgusting
21:04:17  And
21:04:18  if {condition} {
21:04:20      ...
21:04:20  }
21:04:23  looks like Tcl :P
21:04:29  elliott: Wait ... now I'm confused, how does your solution not require a different syntax for functions?
21:04:41  elliott: heh, in ICA I made {} the same as () together with an implicit claim that what it delimited was a command
21:04:42  Maybe you can have both call-by-name and call-by-value; maybe you can make it so that {} call-by-name and () call-by-value?
21:04:43  if (condition) (...) looks fine to me
21:04:46  as opposed to, say, a function or expression
21:04:51  monqy: As someone who's read Plof code, it really isn't
21:04:57  so () and {} aren't quite equivalent
21:05:03  Gregor: Please tell me you have logs of #plof (I think it was before glogbot), so I can just help you find the days where I convinced you it was the best soltuion :P
21:05:03  but they're close
21:05:17  elliott: I don't think so; unless you try to make it same as other programming language such as C or whatever ,that doesn't count
21:05:17  {x} is (x):com
21:05:20  elliott: I'm not unconvinced, I'm confused.
21:05:34  Gregor: Yeah, but I'm rapidly on the path to explaining everything again :P
21:05:36  elliott: aha, that's it! the type is called "com" not "cmd"
21:05:42  Oh, hmm, maybe it's in this log
21:05:43  ais523: Ah
21:05:49  now I can finally answer a question you asked me a while back, possibly several days ago!
21:05:55  pity that I've forgotten what the question was ;(
21:05:57  * :(
21:06:05  Gregor: Anyway, you just make lambda syntax an ordinary operator.
21:06:10  Gregor: (x,y,z) => {x+y+z}
21:06:17  (Maybe with a "return" in there w/e)
21:06:19  elliott: Right, so it changes function syntax :P
21:06:22  I don't think if (condition) ( ... ) or if {condition} { ... } looks bad; it just looks not C.
21:06:27  Gregor: Not reaaaaally
21:06:36  Gregor: It's not syntax in the hard sense, it's just an operator :P
21:06:51  That can be defined in the user language (well, apart from the actual function definition wrapper)
21:06:55  elliott: It's a confusing operator since there are no tuples and functions are curried :P
21:07:06  Gregor: Uhh, we also resolved this...
21:07:15 * Gregor does a little jig
21:07:24  forgetfulnes jig
21:07:30  Gregor: But here's an obvious solution that might have been the resolve we worked out MONTHS AGO:
21:07:53  Gregor: If =>'s left parameter is an "," operator, then it just becomes x=>{y=>z} where x is the LHS, y is the RHS and z is =>'s RHS
21:08:03  Otherwise it's a one-argument lambda in the obvious sense.
21:08:08  That was easy :P
21:08:27  Making => not an operator again :P
21:08:31  Gregor: ...no?
21:08:36  Gregor: It's a call-by-name operator.
21:08:41  It can inspect the ASTs it gets.
21:08:55  I mean, "for" has to do that (to split its argument into three statements), too
21:09:00  (Well, if you want C-style for)
21:09:05  A call-by-name /operator/ ... yup, I guess that's exactly what it is X-D
21:09:31  'for' isn't an operator, it's a statement.
21:09:39  No, it's a function.
21:09:56  I thought you were referring to "C-style for" --- oh, misunderstood, cancel that.
21:09:58  An operator is just a function called infix :P
21:10:11  Gregor: Well, you can do "for () () () {...}" but I meant if you wanted "for (a;b;c) {...}"
21:10:17  What about postfix?
21:10:21  I was just saying that you need call-by-name-with-AST-inspection not just opaque-call-by-name
21:10:28  In essence, these are syntactic macros. GOOD THING I'VE GOT A LANGUAGE FOR THAT!
21:10:52  Except they're first-class citizens.
21:11:04  Gregor: How have you managed to become stubbornly unconvinced just by FORGETTING the like two days in which you agreed it was the obvious best solution...
21:11:07  Is [] used for anything?
21:11:29  elliott: I'm stubbornly unconvinced?
21:11:33  zzo38: Objects, arrays.
21:11:41  OK
21:11:52  Gregor: Well, " In essence, these are syntactic macros. GOOD THING I'VE GOT A LANGUAGE FOR THAT!" seemed like you didn't see how it was better to me
21:12:53  Unfortunately it looks like it predates glogbot.
21:14:36  I have the Plof logs.
21:14:44  I don't know what date it was :P
21:15:13  Before I go a'laundry'ing, an itemized list:
21:15:21  did you say any any special words
21:16:11  Things I am convinced of: Call-by-name functions which just so happen to have call-by-value as the simpler and more common syntax, change to how functions are defined so that () and {} can be equivalent.
21:17:27  Things I don't like as it stands right now: Behavior of , operator is contingent on surrounding operators, and in fact it is rendered not an operator in some of those circumstances.
21:17:35  Things I hate: YOUUUUUUUUUUUUU
21:17:40 * Gregor -> laundry
21:18:08  Gregor: That's silly... the "," operator has no inherent meaning, it's entirely dependent on context, like everything in Plof.
21:18:24  In essence, the LHS of => is just a DSL.
21:18:27  elliott: like "+" in Prolog?
21:18:37  It's an argument list.
21:19:04 -!- kwertii has joined.
21:19:06  Just like you could say (I'm not saying this is good syntax for it) in an argument list, "lazy x" makes x not be evaluated in the function body.
21:19:18  Rather than an application of the function lazy to x.
21:19:33  plof sounds a lot like a language i wanted to make when i was a baby. it has the syntax defined in itself, the context sensitivity, and even the () and {} being the same
21:21:26  Do you know anything about Plof :P
21:21:30  no
21:21:47  i also don't know anything about the language i wanted to make when i was a baby
21:22:23  I do not think it make sense () and {} being the same, if they are in fact the same, that is.
21:22:30  you've said
21:22:32  several times
21:23:01  I think it makes sense but it's inelegant and I dislike it :'(
21:23:09  If you have both () and {} the same, then make the variant where {} is instead used for chunk transclusion as in WEB and CWEB
21:24:21  That is, @ space and @* begins a block comment, @: ends a block comment, @{ ends a block comment if it is one but also begins a chunk definition, and { in a code is chunk transclusion. Other codes with @ (including @@) are ignored the second character so that you can use them for other things
21:24:25  Hmm...
21:24:42  A lazy interpreter rigged up to a code generator
21:25:05  elliott: Right, all I'm saying is that if =>'s LHS is a DSL, then => isn't exactly an operator. Which is fine :P
21:25:23  Gregor: Well, OK, it's not an operator in the sense of that's how the user thinks about it.
21:25:28  But it's an operator as far as Plof is concerned.
21:25:32  Well of course.
21:25:38  I believe, if lazy interpreter means what I'm trying to mean, and it is done properly, that that may approuch Turing super-completeness
21:25:59  Taneb: ... lol
21:26:07  No it wouldn't.
21:26:23  Never mind
21:26:28  Gregor: I think the other main improvement I suggested was just adding quasiquotation so that writing compilation rules (and also extending the grammar by expansion in terms of equivalent, simpler syntax) wasn't terrible, but I think you already added that?
21:26:52  Erm
21:26:53  As in
21:26:56  you said plof three already had it
21:27:21  I believe gravity is Turing Super-complete
21:27:28  http://esolangs.org/wiki/Gravity
21:27:34  elliott: Yeah, it does, but it ought to be better in 4.
21:27:37  s/Turing Super-complete/super-Turing complete/ :P
21:27:45  Gregor: Good, because quasiquotation is the best :P
21:27:54  Quasiquotation + pattern matching = EVERYTHING IS BEAUTIFUL
21:28:28  Until someone figures out the n-body problem in the infinite case
21:28:54  Which is unlikely
21:29:08  And almost certainly impossible
21:31:10  Which symbol does Plof use for block comments, if it has block comments at all?
21:31:21  That depends...
21:31:50  zzo38: /* ... */, ala C.
21:32:49  Gregor: Also, object fields should totally be immutable by default :P
21:32:56 * elliott carefully ensures Gregor disregards anything he ever says in future.
21:33:01  OK
21:33:03  elliott: Yeah, that one ain't happnin' :P
21:33:15  And does it use // for line comments?
21:33:16  Gregor: Psssssht, why not :P
21:33:21  zzo38: Yup
21:34:08  elliott: The notion of immutability in a language where including a script can change the entire syntax and semantics of your language is somewhat ... pointless :P
21:34:48  Gregor: At the base level, sure, but I'm assuming at least SOME thought is given to the usability of the "default" language :P
21:35:19  Nope. You have to extend the language to do computation.
21:35:29  My experience is that most variables are used immutably, apart from the case of "x = some transform on x", which is reassigning a name, not mutating an object.
21:35:41  (Unless x is a field, but local variables are unlike fields in many ways)
21:36:35  Which symbols are currently used in Plof and which ones have the same purpose as in C?
21:37:08  Basic math, parenthesization ... ; has the same purpose but is optional ...
21:37:32  Aaaaaaaaaaand ... that's just about it :P
21:38:06  Are any of these symbols used? ` @ # \
21:38:18  All free.
21:38:23  Gregor: Let's encase blocks with `...@
21:38:26  So. Elegant.
21:38:36  elliott: # ... |
21:38:39  elliott helped me transform Plof from a symbolmess to a mostly-symbolless nonmess.
21:38:44  
21:38:48  Gregor: You should probably make # a one-line comment too, to get yourself unix shebang lines
21:39:14  elliott: I actually have shebang as an explicit case, so even when you have no language at all you can use shebang.
21:39:27  Gregor: Groooooooooos :P
21:39:32  s
21:39:47  Gregor: But yeah okay :P
21:39:48  No. What I was suggestion is that if the extension is .plofw intsead of .plof then it redefines {} to mean chunk transclusion and @ space and @* to introduce block comments, while @: ends a block comment and @{ ends a block comment while defining a chunk name.
21:39:50  I like #-comments though.
21:39:57  Gregor: I'm thinkin' we should listen to zzo38's ideas.
21:39:57  elliott: Well, the base parser doesn't define a top-level language, but I wanted fythecore (which adds pretty-much-vital but non-language-specific stuff to the base parser) to start with #!/usr/bin/env fythe :P
21:40:06  Chunk transclusion would be great.
21:40:15  But I suggest @ to use for the purpose I described.
21:41:12  And perhaps, in case you like to use {} instead of (), these features rae enabled only if the extension is .plofw which also makes the start of the file a comment (enabling shebang lines as well as a "limbo" area like WEB and CWEB does).
21:41:36 -!- ive has joined.
21:41:43  elliott: Also, fytheplof starts with #!/usr/bin/env fythecore
21:41:50  elliott: So running plof runs env twice :P
21:41:58  What the hell is fytheplof
21:42:28  elliott: The implementation of Plof in Fythe, which is also ln -s'd to plof even though Plof makes no sense at all if not implemented in Fythe.
21:42:49  Gregor: I'd call Fythe part of the Plof language, dude :P
21:42:55 -!- Patashu has joined.
21:43:04  Yeah, I'm well aware of the fact that that particular filename is nonsense.
21:43:50  Gregor: Also, when was Plof a symbolmess?
21:43:53  As was plof/plof.plof, so I guess that whole project is plagued with filenames almost as bad as nomath.js :P
21:43:58  I don't remember it having all that many symbols.
21:44:06  (BTW: [[]] is still the grossest thing ever)
21:44:18  Gregor: Heeeyyy I just realised you can use [] for lists now...
21:44:19  elliott: Well, it was never /that/ bad, but it's so much nicer now that it seemed bad :P
21:44:43  Gregor: "A:B" is used for inheritance, right?
21:44:47  elliott: Not quite, that creates an ambiguity with array-vs-index in function calls.
21:45:05  Gregor: Er, I was talking about [] being objects
21:45:07  ARe they not objects any more?
21:45:15  They are, but that's not ambiguous exactly because of A:B
21:45:20  [] bare is never an object.
21:45:39  I was thinking you could just use {} for objects because it's always on the RHS of :
21:45:53  Then [] is freed up for a purpose that doesn't involve ] lookin' all ugly at column 0 :P
21:46:14  Oh. Yeah, that's certainly true. But it doesn't free up bare [], because the problem with bare [] isn't objects anyway, it's function calls.
21:46:27  Gregor: re: ambiguity... I'd just say that "foo[0]" is an index but "foo [0]" passes [0] because that's what I'd expect.
21:46:34  Maybe this is unreasonable?
21:46:35  Bleh
21:46:42  I mean, it's technically doable, but ... bleh.
21:46:48  Gregor: You could overload calling a list, so that foo(0) is indexing.
21:46:57  Hmmmmmmmmmmmmmmmm
21:47:01  That could work.
21:47:04  Then you can do things like
21:47:10  [a,b,c,d].map foo
21:47:11  -->
21:47:17  [foo(a), foo(b), foo(c), foo(d)]
21:47:19  where foo is a list
21:47:23  IT'S SLICING :'D
21:47:34  That's actually kind of great, if you make map an operator :P
21:47:51  [a..d]/foo <-- LITERALLY THE MOST BEAUTIFUL SLICING SYNTAX
21:48:25  Gregor: Sometimes I can't tell whether I've had a brilliant idea or a terrible one.
21:48:25  I agree with all of these syntax changes except for that last one (which I don't disagree with, I just hmmmmmm with)
21:49:29  Gregor: It has the aesthetic niceness that a function and a table are really quite alike, I think MATLAB uses f(x) to index both
21:49:49  And being able to use a list as its indexing could be quite nice in a higher-order situation, but yeah, hmm
21:50:39  Gregor: I'm kinda reminded of the Haskell memoised fibonacci, where you do "fib = (fibs !!) where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)"... you could just say "fib = 0 : 1 : zipWith (+) fib (tail fib)"...
21:51:11  I'm having very "hmm" thoughts about this too :P
21:52:07  my language from when i was a baby was like that too
21:52:12  that is a thing i remember
21:52:31  elliott: No, I like having lists also be functions mapping indexes to values.
21:52:48  Then what's the hmming about
21:52:57  elliott: [a..d]/foo :P
21:53:12  Gregor: Oh, well I think / is a terrible map operator :P
21:53:45  Gregor: And if it's being used for slicing, the function should really come first, too.
21:54:15  Anyway, I have to think if there are any major implementation qualms with having lists also be functions.
21:54:18  Gregor: Oh wait, you can actually get slicing as foo(a..d) trivially... because it's the obvious definition of indexing a list by a list.
21:54:55  Gregor: Well, I'm not saying lists should literally be functions, I'm just saying that you should overload application syntax... which is usually a sign of awfulness (see C++), but if you want to subclass (yeah yeah "extend" w/e) functions you have to do that too.
21:55:01  I guess that's literally the same thing in a way.
21:55:38  I'm not at all ashamed to have List be a subtype of Function >: )
21:55:59  Gregor: Composing lists YESSSS
21:56:12  Gregor: You do want that subtyping though, so that everything that wants a function is OK with having a list
21:56:21  Yes, of course.
21:56:27  BTW is inheritance still copy-and-delegate or is it the rightful delegate now
21:56:51  It was lazy-copy-and-delegate :P
21:57:07  And right now it's in the air.
21:57:19  Gregor: That still means you can't mess with T and have S get the changes too... not that I approve with messing with T, on moral grounds, but it feels weird.
21:57:35  Actually fields should be immutable by default just so that you can't monkeypatch. :|
21:58:58 -!- Zuu has quit (Read error: Connection reset by peer).
21:59:15  The only fundamental issue with "rightful" delegation is that it's slow without inline caching, and implementing inline caching in this environment may actually be one of the circles of Hell.
21:59:18 -!- augur has quit (Remote host closed the connection).
22:00:17  Gregor: The idst/cola/pepsi/whatever paper implemented inline caching for their ridiculously-dynamic system >:)
22:00:30  It might even be helpful :P
22:02:10  Perhaps in .plofw mode, /* should just parse as the two tokens / and * instead of block comment; /* only introduces a block comment in .plof and .fythe mode instead.
22:02:22  Gregor: So you're implementing .plofw mode, right?
22:02:45  And chunk names should contain balanced {}
22:02:47  Oh, goodnight
22:02:55  Taneb: hi
22:02:59 -!- Zuu has joined.
22:03:04  As far as I know, what I described is sufficient; tell me if it is wrong.
22:03:11 -!- Taneb has quit (Read error: Connection reset by peer).
22:04:39 -!- ais523 has quit (Remote host closed the connection).
22:09:25  If you implemented .plofw mode, I might wrote Plof-to-TeX program, possibly itself in Plof as well. Although, the same file format would work even if you later wrote other programs to take .plofw (or even some can take .plof file) to make printout in other format, such as LaTeX, HTML, or whatever other format you want.
22:12:03  Gregor: Definitely not using Plof if you don't do all this
22:16:40  I will enter my suggestions of .plofw mode more accurately (it is still few; I am purposefully omitting many details so you can do what is best for you): If extension is .plofw then the beginning of the file is a block comment that can contain @ commands (which are usually ignored). @ commands are @ followed by another character (possibly another @); unrecognized @ commands are ignored.
22:16:44  elliott: Considering that you're quite likely not to use Plof /anyway/, my answer is *eh* :P
22:17:08  In .plofw mode, /* no longer begins a block comment, but is the two tokens / * (ignore this line if you want to).
22:17:18 -!- azaq23 has quit (Read error: Operation timed out).
22:17:20  The command @ space or @* begins a block comment.
22:17:25  Gregor: Hey, I started writing that bot in earnest before I realised that Plof three was unusably broken and terrible.
22:17:40  zzo38: Everything you've said is implementable (although it'd be a pain since Plof's syntax is defined by essentially a BNF, so I'd need conditional productions), but accomplishes, to my knowledge, nothing that I value.
22:17:49  The command @: ends a block comment if you are in one, and enters unnamed chunk mode.
22:18:07  The command @{...} ends a block comment if you are in one, and enters named chunk mode. The ... is the chunk name.
22:18:27  {...} in a code in .plofw mode includes all code in the contents of all defined chunks with that name in order.
22:18:39  Chunk names can contain nested {}
22:18:45  elliott: YOU STILL HAVE NO 1-8
22:18:47  And that is everything.
22:19:25  Gregor: Yup
22:19:34 * Phantom_Hoover → sleep
22:19:35 -!- Phantom_Hoover has quit (Quit: Leaving).
22:19:37  If the extension is *not* .plofw, then {} is the same as () like you already described before.
22:19:53 -!- nooga has quit (Ping timeout: 252 seconds).
22:20:04 * Gregor modifies Plof's syntax to /only/ use the characters [12345678!@#$%^&*]
22:20:32  Gregor: Good
22:20:41 -!- FireFly has quit (Quit: FireFly).
22:20:44  Gregor: It is a pain because of BNF? Can you show me the BNF?
22:21:09  zzo38: Having conditional productions is a pain.
22:21:37  Everything I said should only be used if extension is .plofw and not used if extension is .plof or .fythe
22:21:49  Yes, hence conditional.
22:22:11  You could make the BNF separate from the rest of the parser so that you have two BNFs
22:22:23  Gregor: Can't you just do if (...) { grammar { ... } }
22:22:37  elliott: Yes, then I have two grammars :P
22:22:51  Gregor: s/grammar/whatever you do to extend the syntax jeez/
22:22:59  No, it's grammar {}
22:23:18  elliott: But if you only did a single if, then ALL files would have that syntax. To support both, you need to have two grammars.
22:23:34  Right
22:23:40  But more importantly ... why?
22:23:41  :P
22:23:49  Because plofw mode is the shit
22:24:46  Perhaps make the "grammar" command take a string argument that causes it to work only for the specified file extensions (allowing wildcards and | if you want to specify more than one)
22:24:59  Gregor: How receptive are you to suggestions for a module system? :P
22:25:01  And "*" is the default.
22:25:32  elliott: Quite.
22:25:46  elliott: Considering that the current situation of "lol what's a module system" is pretty much the worst.
22:25:50  Gregor: Yessssssss
22:25:59  Gregor: (I am SO OPINIONATED about module systems :P)
22:26:03  Well, not that opinionated.
22:26:18  I hate 99 percent of existing module systems, but mostly because they don't even try :P
22:38:24  According to Google Correlate, JavaScript is 99% correlated with AIX.
22:39:08  OCaml, on the other hand, is 82% correlated with printf.
22:39:26  Definitely.
22:39:30  And only 81% correlated with "gaussian"
22:40:02  BrainFuck contains a naughty word, and is as such not correlated with anything at all.
22:40:11  Oh n o
22:40:19  We are protect children
22:41:46  Programming is 99% correlated with postscript, but only 98% correlated with classical MIDI.
22:43:13  Patashu: Children are 90% correlated with hazards.
22:43:40  Children are 99% correlated with think
22:43:49  But only 88% correlated with "frequency wavelength"
22:44:05  LOL
22:44:13  Why is it as high as 88%?
22:44:18  Don't look at me :P
22:44:19  I think I need to see some statistics on this distribution
22:44:22  median, mean etc
22:44:23  How correlated are wizards with graphs
22:44:29  what's the average of all correlations
22:44:35  "Think", of course, is 87% correlated with green poop.
22:46:52  is anything not correlated
22:50:53  Wikipedia is 97% correlated with "walk through hell"
22:51:30  Facebook is 99% correlated with "video tube" X-D
22:51:34  *video tubes
22:51:45  Also 99% correlated with "text from computer"
22:52:19  It's also 99% correlated with both "porhub" and "orn hub", but not "pornhub" somehow X-P
22:52:59  a hub for my orns
22:53:09  Google is 98% correlated with ... kratom ... ???
22:53:26  Naturally
22:53:30 -!- pumpkin has changed nick to copumpkin.
22:53:50  Gregor: What we're learning here is that anything less than 99.9 percent correlation is nothing :P
22:53:58  Yup :P
22:54:01  Pumpkin is 97% correlated with "what is a pumpkin"
22:54:29  Actually the things that are seasonal tend to have semi-logical results in this.
22:54:59  e.g. snow -> plow, santa -> carols, christmas, etc
22:56:05  Rui sometimes plays the rule that no cards can be taken from trash.
22:56:16  Other times the rule is that all retreat costs are increased by one.
22:56:46  Or that resistance only subtract one instead of three.
22:57:19  whos rui
22:57:23  zzo38: Is there a competitive pokemon card battling scene?
22:57:47 -!- nys has quit (Quit: quit).
22:58:41  Patashu: I don't know; I was playing Pokemon Card GB2. The AI is not very good. But I like the rule that decks are constructed mostly at random. Since this might cause you to have unusable evolution cards, I also make a rule allowing you to use some evolution cards that cannot be used normally.
22:59:16  I played the -shit- out of pokemon tcg for the game boy
22:59:27  I came up with decks countering different gyms and so on
22:59:56  Patashu: I decided to use one deck for everything instead.
23:00:43  The rule is: Any card that says it evolves from can be played normally, but you can also play any evolution card that is of both the correct stage and the same energy type of the card it is evolving from, as long as all cards in the stack have an actual evolution of the stage you are playing.
23:01:48  Patashu: I would prefer random deck mode but Pokemon Card for GameBoy does not have such a mode. Also, I was playing Pokemon Card GB2. In that game I instead used a deck per gym since different gyms have different requirements.
23:02:20  However at the end I played against the GR computer and Dr.Ooyama's computer, I made up a different deck using for all of that.
23:07:21  The deck is: 4#92L17+2L17,L26+2L38 3#96L12+2L36 124L23 150L30 21L13 35L15+D33 108L26 249L55 ENERGYREMOVAL ENERGYRETRIEVAL ENERGYSEARCH 2POTION GAMBLER ITEMFINDER CHALLENGE GUSTOFWIND FULLHEAL SWITCH 2POKEMONTRADER BILL MASTERBALL { dc rc } 22{ @ }
23:08:07  What is your opinion of this deck?
23:08:50  Note: { dc } = DOUBLE COLORLESS ENERGY { rc } = RECYCLE ENERGY { @ } = PSYCHIC ENERGY
23:09:03  It's been too long since I played the game so I don't have an opinion
23:09:25  Do you understand my notation? I use it to make short Pokemon card deck notation.
23:09:58  yes
23:10:12  well, almost
23:10:31  Any part you do not understand? Notify me if that is the case, please.
23:10:37  The # is a token separator? To split quantity from which pokemon it is
23:10:53  Or hmm
23:11:00  Patashu: Yes. Only at the beginning of an evolution chain though.
23:11:06  Oh!
23:11:08  I get it now
23:11:55  (Pokemon numbers are omitted for Stage 1 and Stage 2 cards, since they are implied)
23:12:05  double colorless green ideas sleep double curiously
23:13:34  I use a punctuation mark symbol for each basic energy, and a two lowercase letter code for each special energy.
23:14:15  Do you like to use this notation for your own decks?
23:15:13  Note it is a bit insufficient in some cases, but it is sufficient for all cards in Pokemon Card GB2 (however, Pokemon numbers must be specified for EEVEE evolution cards), and it can be extended to work in other cases too.
23:16:01  I lied about punctuation mark for each basic energy; fire is actually { M } and water is { 6 } in my notation.
23:17:24  { rb } = RAINBOW ENERGY { po } = POTION ENERGY { fh } = FULL HEAL ENERGY
23:19:42  If the Stage 1 card is skipped, you can put ++ and the notation still works if you omit the corresponding Basic Pokemon card for some reason.
23:22:59  Do you think RECYCLE ENERGY is a very useful card? I think so.
23:24:19  What should I call it if I make up the new kind of Haskell preprocessor program?
23:26:07  so I'm not entirely sure how rsync -z compresses shit
23:26:15  because the output directories do not appear to be compressed in any way.
23:26:28  maybe it's compress for transfer over ssh?
23:27:09  oh, yes it is.
23:27:11  lame.
23:27:11  it compresses over the transfer.
23:27:13  it's not just ssh.
23:27:16  rsync:// protocol too.
23:27:23  you want to use -z, it helps immensely
23:27:37  I'm transferring locally though.
23:27:38  (if you're doing it over a network)
23:27:41  k then
23:27:53  so it's a waste of time or it ignores the option I hope, yes?
23:28:48  no point to use -z for local transfer.
23:29:28  I realized by idea about Huffman Sokoban is similar to the fax encoding.
23:32:17  sudo link scripts/backup_files.sh /etc/cron.daily/backup_files.sh
23:32:17  link: cannot create link `/etc/cron.daily/backup_files.sh' to `scripts/backup_files.sh': Invalid cross-device link
23:32:20  wat
23:32:24  is /etc another device? :P
23:36:11  ls -lh /etc/cron.daily/backup_files.sh
23:36:12  df
23:36:37 -!- cchackermirc has quit (Read error: Connection reset by peer).
23:36:55  -rwxr-xr-x 1 root root 360 2011-09-04 19:33 /etc/cron.daily/backup_files.sh
23:37:02  NICE TRY ELLIOTT BY DF ISN'T IN BIN
23:37:30  What?
23:37:37  lol nothing
23:37:41  I'm telling you to run the df command.
23:37:49  NEVERMIND
23:38:01 * CakeProphet is so good at jokes it's ridiculous.
23:38:31  ah well /home is encryptfs
23:38:35  so that might be why.
23:40:17  Tada.
23:40:25  CakeProphet: Why do you want a hardlink anyway
23:40:40  so I don't have to copy it over everytime I change the original.
23:40:55  which has been more often than I thought it would be.
23:40:57  CakeProphet: Do you really not know what soft links are
23:41:13  oh, I thought link did soft links. :P
23:41:14  Especially since a hard link won't even achieve that
23:41:21  CakeProphet: man link, man ln
23:42:34  I see.
23:42:56  elliott: but no, I have not been using linux out of the womb
23:43:01  so there are many things that are new to me.
23:43:20  I've been using linux for a few years now
23:43:22  symlinks are like day two material?
23:43:31  ... :s
23:43:36  I didn't learn about symlinks for a long time
23:43:37  I knew what they are but not how to set them up with sh since I stuck to UI for a while.
23:43:58  Wow, Nautilus really does let you make symlinks.
23:44:05  of course it does.
23:44:27  I would expect GNOME to have its own stupid file aliasing mechanism
23:44:28  I, for the longest time, confused the arguments in ln -s
23:44:48  ... nautilus's .desktop file generator was broken last I used it
23:45:43  weeeeeeee symbolic links.
23:45:58 * CakeProphet is clearly on his way to being a pro sysadmin
23:45:58  wee
23:46:11  Symbolic links are kind of terrible
23:46:27  they are a tool for great laziness I am happy face.
23:46:38  ok
23:46:39  http://tasvideos.org/forum/viewtopic.php?t=11736&highlight=&sid=9517477d993e2ad65a6eb9ee18d6f5b4 Stop stop! Stop stop stop!
23:47:01  CakeProphet: Bind mounts have much nicer semantics.
23:47:07  Patashu: what
23:47:17  I have no idea what that is.
23:47:18  Watch it
23:47:20  It's only one minute
23:47:33  in a minute
23:47:36  and it's five minutes here
23:47:39  six, really
23:48:13  the remaining 5 minutes is credits
23:48:20  because TAS encodes have to include the credits if there are any
23:48:22  elliott is lives in a field of anti-time-dilation.
23:48:24  (though sometimes they don't)
23:48:45  CakeProphet: http://plan9.bell-labs.com/magic/man2html/2/bind... Linux has bind mounts nowdays but they're too limited
23:48:53  Oh, wait
23:48:54  CakeProphet: http://plan9.bell-labs.com/magic/man2html/1/bind
23:49:00  That's a more reasonable introduction
23:49:18  elliott: so symlinks are bad because programs occasionally have problems with them, right
23:49:22  or is there something else?
23:49:37  CakeProphet: Something else; basically ".." doesn't mean what you think it does in the presence of symlinks
23:49:41  Lemme get you the thing on it
23:49:52  (The short paper the plan 9 folks wrote about it)
23:50:11  whaaaa
23:50:16  CakeProphet: Gimme a minute
23:50:30  THERE ARE ONLY SO MANY MINUTES ELLIOTT
23:50:33  you cannot have them all.
23:51:18  CakeProphet: http://doc.cat-v.org/plan_9/4th_edition/papers/lexnames
23:52:07  (Found http://harmful.cat-v.org/software/symlinks when trying to find it amidst the ball of mostly-yawn-inducing gunk that is cat-v; it's rather less descriptive but describes the essential problem concisely)
23:53:21 -!- MDude has quit (Ping timeout: 240 seconds).
23:54:20  ah I see.
23:57:02  but symlink files don't have that particular problem.
23:57:18  Personally fuck foreach loops and vars.
23:57:19  I despise both of them, boxing nightmares and they make code unreadable (well vars do).
23:57:19  I don't see the benifit of using foreachs they are harder to read, harder to debug, cannot remove elements of a collection within them when iterating that collection.
23:57:36  ...wat
23:57:42  is that you or a quote
23:57:49  Patashu: if I ever say something stupid, it's a quote
23:57:53  o
23:57:53  especially if i type three lines in one second
23:58:06  but seriously what's a good idiom for removing elements of a collection you're iterating over
23:58:17  filter
23:58:21  oh
23:58:30  Patashu: don't do it
23:58:39  elliot: why not :'(
23:58:48  Patashu: that won't be an in-place operation though. Which is probably what you meant.
23:58:50  but yeah, filter
23:58:56  it can be in-place
23:59:02  "RemoveIf" or whatever stupid name you want
23:59:48  yeah foreach is definitely harder to debug than a C for
23:59:54  so many places you can fuck it up

2011-09-05:

00:00:25  like you might misspell the variable name.
00:00:28  or the list name.
00:00:30  or uh....
00:00:34  well, that's it.
00:00:55  there could potentially be fuckups from the order of iteration not being what you expect
00:00:59  if your foreach is REALLY impure
00:01:17  hmmm?
00:01:28  I thought iteration was pretty straightforward, literally.
00:01:59  if it's iterating over a hashset or something
00:02:01  PHP does have a back() method for iterators, and Ruby and Perl have redo which repeats that iteration
00:02:01  then the order's arbitrary
00:02:26  c++ has -- which is like PHP back
00:03:14 * CakeProphet has never really found iterating over unordered collections to be a problem.
00:03:22  mainly because I never treat them as ordered.
00:03:33  if you treat them as ordered, then yeah, you might have some problems.
00:05:17  but again, not a problem with foreach
00:05:31  a problem with the data type not matching the problem (or a problem with a bad programmer :P )
00:05:33  hmm
00:05:36  if you insert during a foreach
00:05:41  will it iterate over the new entries?
00:05:49  or does that not work either
00:05:50  not in Python
00:05:53  depends on the language.
00:06:00  that's a potential gotcha
00:06:03  and the iterator
00:06:19  you just really should not be mutating what you're iterating over unless you're using C++ and like pain and stuff.
00:06:45  what I want is addWhenFinished() and deleteWhenFinished()
00:06:50  that wait for the container to not be iterated over anymore
00:07:03  well in Python you can do...
00:07:06  appendlist = []
00:07:08  or make it so that the iterator doesn't see the changes
00:07:13  then appendlist.append(somethingIWanttoAdd)
00:07:15  then after the loop
00:07:20  originalList.extend(appendList)
00:07:25  yeah, that's how I do it right now
00:08:01  class PatashuList(list): def addWhenFinished (...): ...
00:08:09   hmm
00:08:10   if you insert during a foreach
00:08:10   will it iterate over the new entries?
00:08:15  mutating something while you iterate over it = lol lol lol
00:08:17  never do it ever
00:08:22  actually never mutate anything ever
00:08:38  never mutate anything
00:08:40  fuck breeders
00:08:48  yes always write clean functional code, even when using libraries that mutate.
00:09:04 * CakeProphet never mutates anything in Perl. it's quite a challenge.
00:10:17  instead of using push elem list   I do (list, elem)
00:10:20  CakeProphet: those libraries probably suck
00:10:26  lisperlisperlisperl
00:10:33  lisp isn't a functional language
00:10:37  elliott: yes, they're probably written in something that isn't Haskell.
00:10:42  fffff
00:10:54  haskell isn't that good, everything else is just worse
00:11:49 * CakeProphet writes all of his programs in a fantasy world where he doesn't have to worry about communicating with not-perfectly written software.
00:12:44  o.o
00:12:47  hi
00:12:48  you can do that from within a nice language, anyway plenty of users of crappy OOP languages use a functional style
00:12:55  hey like me.
00:12:58  when I can.
00:13:03  tons of style guides come down to that in essence
00:13:40  Java makes functional programming look bad.
00:15:38  Not any worse than it makes Java.
00:16:07  one reason I don't completely hate C# is that it at least made it possible to write in a functional style.
00:16:44 -!- oerjan has joined.
00:17:06  hi oerjan
00:17:14 * oerjan hides in the corner
00:17:16  i mean hi
00:17:19  but the functional stuff is rarely used in most code I've seen. I'm sure it's used.
00:17:36  have you read any good code
00:17:39  but not as much as, say, languages like Ruby. Where functional style is central to many common idioms.
00:17:42  elliott: in C#? no.
00:18:08  well then
00:18:13  and no, most Ruby code is not even vaguely functional.
00:19:02  I was referring to things like the foreach method.
00:19:11  AT LEAST they're using higher-order functions.
00:19:21  that's not functional :P
00:19:42  it is a degree of functional programming above most languages' idioms.
00:19:44  lambdas, linq and the ienumerable methods aren't functional but I <3 them anyway
00:19:48  doesn't foreach require side effects to get anything done or something like that
00:20:01  okay guys side effects have been around for a while.
00:20:10  Lisp uses side effects. Lisp is functional right?
00:20:11  Patashu: linq is functional
00:20:16  Patashu: linq is literally just list comprehensions
00:20:16  One of these days I'm going to make a language where _ is not a valid identifier character, just to enforce a modicum of consistency in variable naming :P
00:20:18  I thought it was declarative
00:20:19  17:12:16 < elliott> lisp isn't a functional language
00:20:20  oh
00:20:21  hmmm yeah
00:20:24  or are you guys going to take the most strict, pure definition of functional to be the only functional programming.
00:20:37  Gregor: Allow - in identifiers; everyone will immediately be very happy because that's the only damn convention that makes any sense
00:20:50  except when they want to subtract.
00:20:55  then they will be very confused.
00:21:07  CakeProphet: As we all know, languages never depend on whitespace ever. This is why all good languages treat "9 9" identically to "99".
00:21:29  a-b-c-d-e - 1-2-3-4-5-6
00:21:32  I want a languate where vertical tabs are treated significantly
00:21:39  "MAN I AM SO CONFUSED ABOUT SUBTRACTION???" -- every Dylan and Perl 6 user, two languages with - in identifiers and infix subtraction
00:21:43  Oh wait no nobody has ever really said that ever.
00:21:50  CakeProphet: a-b-c-d-e is an identifier, - is an identifier, 1-2-3-4-5-6 is an identifier
00:21:58  elliott: All four of them?
00:21:59  monqy: The last should probably just be a syntax error
00:22:10  Starting identifiers with digits is silly
00:22:14  that works too
00:22:17  CakeProphet: But hey, you can write obfuscated code in any language
00:22:21  Turns out I don't name my variables a-b-c-d-e
00:22:30  elliott: right but Perl disambiguates identifiers with $ so it is less of an issue.
00:22:41  still making whitespace significant in that sense is kind of bad sounding to me.
00:22:45  Gregor: Dylan had a pretty big userbase at one point, I believe.
00:22:53  Twelve?
00:22:56  Fourteen?
00:22:57  CakeProphet: So your languages really do treat "9 9" and "99" identically?
00:23:02  not at all.
00:23:05  Gregor: It's not even funny :P
00:23:07  that's a different case.
00:23:12  CakeProphet: no it isn't
00:23:12  OH MAN THIS LANGUAGE IS UNPOPULAR WEIRD
00:23:18  CakeProphet: nope
00:24:00  a-9 could be a valid identifier.
00:24:02  which is stupid.
00:24:11  no it isn't
00:24:17  CakeProphet: You. Can. Write. Obfuscated. Code. In. Any. Language.
00:24:24  that's not what I'm getting at even
00:24:33  pafdglajdngladjrflagdjgolia is a valid identifier. who made this retarded language i want to kill his guts
00:24:42  In LLVM, identifiers start with symbol to tell you what it is such as % and @
00:24:48  In Forth, names can contain anything other than spaces
00:24:54  film-from-the-1950s ;; OH MAN THIS IDENTIFIER IS SO CONFUSING CakeProphet WHAT DID I DO
00:25:21  I'm just saying it's silly to require a special case where subtraction is only subtraction if there's a space
00:25:27  CakeProphet: btw pafdglajdngladjrflagdjgolia is better than wacro
00:25:29  Wow, did I seriously start this ridiculous discussion with a joke about camelCaseVariableNames?
00:25:40  foreach good-film in good-films {
00:25:40    if user.rating-of(good-film) > 99 {
00:25:40      print 99 - user.rating-of(good-film)
00:25:40    } else {
00:25:40      print "IT'S TOO LOW"
00:25:41    }
00:25:43  }
00:25:46  help CakeProphet it;s too obfuscated
00:25:57  CakeProphet: it's not a special case
00:25:58  Gregor: No, CakeProphet did
00:26:02  ....it has nothing to do with obfuscation
00:26:16  it's the fact that I cant write 99-user.rating-of(good-film)  without some ambiguity.
00:26:22  CakeProphet: f is only f if it's not smashed up against more letters
00:26:27  hey CakeProphet
00:26:28  yes I understand the rules.
00:26:30  I have this program
00:26:30  {{
00:26:32  print 99
00:26:34  what's wrong with using _ in identifiers?
00:26:34  !bf_txtgen the quick brown fox jumps over lazy dogs
00:26:35  -99 > 0 or die
00:26:36  ​285 +++++++++++++++[>++>++++++++>+++++++>+++++++<<<<-]>>----.>-.---.<<++.>---.++++.>>.<--.>++.<<<.>>-.<---.>+++++++++++++.++++++++.<----.<.>>>-----.<<+.>+.<<.>-----.>---.<+++.+++.+++.<.>----.>+.>-.<<+++.<.>------.>>----.<++++.-.<<.>>>+++.<----------.>+++.<<+++++++.<----------------------. [919]
00:26:38  print "hello world"
00:26:38  }}
00:26:45   {{
00:26:45   print 99
00:26:45   -99 > 0 or die
00:26:47   print "hello world"
00:26:47   }}
00:26:48  CakeProphet: But dude
00:26:50  when I write it as
00:26:50  ijay,
00:26:54  print99-99>0ordieprint"helloworld"
00:26:57  It doesn't work the same???
00:27:02  It's gross that we have this special case
00:27:05  Where in strings, whitespace matters
00:27:07  And in numbers
00:27:09  But outside, it doesn't
00:27:09  what's the number at the end
00:27:09  that is, again, different.
00:27:10  This is so
00:27:11  gross
00:27:14  !bf +++++++++++++++[>++>++++++++>+++++++>+++++++<<<<-]>>----.>-.---.<<++.>---.++++.>>.<--.>++.<<<.>>-.<---.>+++++++++++++.++++++++.<----.<.>>>-----.<<+.>+.<<.>-----.>---.<+++.+++.+++.<.>----.>+.>-.<<+++.<.>------.>>----.<++++.-.<<.>>>+++.<----------.>+++.<<+++++++.<----------------------.
00:27:14  the quick brown fox jumps over lazy dogs
00:27:18  myndzi: generations
00:27:23  *yawn*
00:27:28  CakeProphet: It really isn't different at all, you're just used to one and not the other
00:27:33  obviously you can't smash letters up to each other and expect the program to work the same. but - is also a subtraction operator.
00:27:36  ah, my method isn't all that much smaller
00:27:39  (waits for x operator in Perl :P )
00:27:45  but it's adjustable!
00:27:46  CakeProphet: what makes - different than any other identifier character
00:27:54  hehe
00:27:56  it is also an operator.
00:27:59  whereas a-z is not.
00:28:02  or 0-9
00:28:11  also i didn't exactly optimize the initialization much
00:28:13  and what's so special about it being an operator?
00:28:19  forget it .
00:28:23  in, as, instanceof, of, and, or, ...
00:28:23  so now that we've firmly established that CakeProphet's only "logical" reason for disliking it is because he's not used to it and IS used to other forms of significant whitespace used to separate language elements
00:28:34  let's drop it because our point is made and he's just going to keep making a fool of himself
00:28:39  ok
00:28:39  also it's noisy
00:28:51 -!- zzo38 has left.
00:28:58  yeah I obviously fear change, that's it.
00:29:00  good bye z z o
00:29:01  my argument? we already have _ as word separator in identifiers so we don't need - as well
00:29:18  Patashu: Fairly certain this was all contingent on dropping _
00:29:25  why? do you need _ somewhere else?
00:29:31  Patashu: - is far nicer than _
00:29:39   One of these days I'm going to make a language where _ is not a valid identifier character, just to enforce a modicum of consistency in variable naming :P
00:29:40  There's a reason we don't use _ to combine words in English
00:29:46  (The reason is that it reads terribly)
00:29:46  again, very valid sensible argument for - over _
00:29:47  it's nicer.
00:29:55  CakeProphet: Shut the fuck up, seriously
00:30:53  in my language.... _ is an operator...... and so are capital letters......
00:30:55  lol
00:31:04  in my language vertical tab is an operator
00:31:04  but then finding something wrong with 99-abc being different from  99 - abc is stupid because I fear changing convention and stuff.
00:31:09  is . an operator monqy
00:31:12  CakeProphet: Shut
00:31:13  CakeProphet: The
00:31:14  CakeProphet: Fuck
00:31:15  CakeProphet: Up
00:31:20  You're just repeating yourself forever
00:31:23  We've dropped it, so drop it
00:31:28  !perl my $x=2; print $xx2
00:31:37  This channel is so great :P
00:31:38  "perl does it the right way"
00:31:41  !perl my $x=2; print $x x 2
00:31:42  22
00:31:44  no perl doesn't
00:31:45  actually
00:31:48  ok
00:32:36  but x isn't really all that common so I don't care as much.
00:32:58  what if you put spaces around operators like any decent person
00:33:07  also didn't use perl
00:33:24  -shrug- preference.
00:33:31  I would be fine with making it a syntax error not to surround operators with spaces
00:33:32  depends on the code.
00:33:38  x is the 'repeat a string' operator, right?
00:33:46  how come it doesn't overload * like ruby (I think) does?
00:34:05  I'd be fine getting rid of infix operators (and then putting in a substitute such as not to make things awful)
00:34:05  typically speaking most languages have a defined set of operator characters and a defined set of identifier characters, and they are seperate. thus whitespace does not matter. for example, Haskell does this.
00:34:26  haskell also has problems
00:34:28  big problems
00:34:28  and it makes things nice and  clean.
00:34:32  it's not clean
00:34:34  it's problems
00:34:37  yes but this is one thing it does correctly.
00:34:39  no
00:34:51  - is done super-incorrectly
00:35:09  :t (- 5)
00:35:09  forall a. (Num a) => a
00:35:10  /ignore CakeProphet
00:35:12  anyways minute differences in language syntax are pretty much always in the category of preference.
00:35:16  :t (-)
00:35:17  forall a. (Num a) => a -> a -> a
00:35:37  EXPLICITLY SPECIFY ORDER OF OPERATIONS USING TREES
00:35:41  :lisp:
00:37:15  monqy: well it makes sense from the perspective that negative numbers shouldn't fuck up ever and it's okay to have this one case where you can't section (-) in order to preserver that.
00:37:24  but yeah it could be made better with some spacing rules, perhaps.
00:37:31  Patashu: and they're often variadic!!!
00:37:31  (- 5) is the section and (-5) is the number.
00:37:52  since when the fuck would ever write - 5  to mean -5
00:38:12  you might write x - y and then decide you don't need the x and remove it
00:38:16  :downs:
00:38:18  heh
00:38:41  :t - x
00:38:41  Expr
00:38:50   (- 5) is the section and (-5) is the number.
00:38:51  oh my god
00:39:08  what are you expecting some kind of consistency from me? you should know better.
00:39:10  THIS WHITESPACE TO DISAMBIGUATE THIS USE OF - AS AN OPERATOR VS. THIS OTHER THING IS UNACCEPTABLE IM SO CONFUSED
00:39:13  -----
00:39:24  LETS USE WHIETSPACE TO RESOLVE THIS AMBIGUITY OF THE USE OF - AS AN OPERATOR VS THIS OTHER THING IM SO UNCONFUSED NOW
00:39:39  again completely different but I'm not going to go into it.
00:39:59  i'm dead thanks
00:40:00  loooooooooooooooooooooooool
00:40:53  the unary vs binary - thing reminds me of time zones and daylight savings re: implementations of date/time
00:41:05  i
00:41:42  obviously the correction choice is to have two different operators.
00:41:47  -- is negation and - is subtraction.
00:41:58  -- is comments dumbo
00:42:03  unary - is unnecessary, too
00:42:05  but then people who know math but not programming will write mynum = -1; and be like :( Y U NOT COMPILE
00:42:14  monqy: ture we could just write 1 - n  everywhere
00:42:15  :t negate
00:42:15  forall a. (Num a) => a -> a
00:42:20  or negate n
00:42:24  0-n, you idiot
00:42:29  0-1 is ugly
00:42:49  yep, it's established, I'm not perfect. :(
00:43:13  CakeProphet: and if n is a literal, use - because - is part of the literal syntax and spaces are required around operators and the world is perfect
00:43:27  lol
00:43:52  elliott: also I'm confused is 0-n an identifier or an operation?
00:44:05  OH SNAP
00:44:07  >_>
00:44:11 * CakeProphet gets back to work.
00:44:24  /ignore CakeProphet
00:48:18  Deewiant: Stop spamming me with bugmail
00:48:25  :-P
00:50:45 -!- copumpkin has quit (Ping timeout: 250 seconds).
00:51:10 -!- copumpkin has joined.
00:57:13  
00:57:26  Solution: Make - not be subtraction, it's only an identifier character. _ can be subtraction.
00:57:28  
00:57:35  heh
00:58:09  Gregor: subtraction should be /
01:09:18 -!- augur has joined.
01:09:40  yeah no real mathematicians use / anyway, so it should be available for that
01:13:22 -!- augur has quit (Remote host closed the connection).
01:16:58  hmmm I wonder
01:17:05  surely there is a program I could write that involves links somehow
01:17:08  that I could name zelda.
01:17:21  I CAN'T PASS UP A GOOD PUN.
01:17:22 * oerjan swats CakeProphet -----###
01:17:28  make it a gui web browser
01:17:28  ;)
01:17:31  double pun
01:17:51   \o/
01:17:51        |
01:17:51       /'\
01:18:01  there it is again
01:18:14  what.
01:18:30  myndzi: plz fix misalignment bug ok thxbye
01:18:51  uu..
01:18:51  myndzi: also I'm not sure I catch the double pun.
01:19:09  I don't know how it works specifically but neat uses - as both subtraction and as a character in identifiers
01:19:59  oerjan: i thought you used irssi
01:20:10  elliott: not _that_ misalignment
01:20:14  o,
01:20:17  what, mislaijagniment,.
01:20:20  links text based browser? ;)
01:20:25  zelda image based browser!
01:20:30  (pronounced "miss lei jah ment")
01:20:33  oh
01:20:36  elliott: sometimes myndzi has an off-by-one error, see CakeProphet's above
01:20:39  that browses the web, which is full of [hyper]links
01:20:47  it's not really an off by one error
01:20:57  it is the fact that i can't display one text that works on all themes
01:21:06  tiffany: i've never heard of neat
01:21:08  themes?
01:21:19  some indent for op status, some don't
01:21:26  some left alight nicks, some right aline them
01:21:27  nobody's op in here
01:21:28  align*
01:21:29  I'm like... the only user of it
01:21:30  some truncate nicks
01:21:30  yes but that shouldn't matter.
01:21:33  and so on.
01:21:34  myndzi: there are no ops :P
01:21:35  you assume left alignment, so that's hardly a problem
01:21:39  you're missing the point
01:21:47  all i'm saying is that stuff gets displayed differently in different contexts
01:21:48  you make some assumptions, sure
01:21:48  in irssi for instance everyones name is indented.
01:21:52  but you've got an off-by-one even assuming that
01:21:59  and i can't make one answer that works on all situations
01:21:59  none of the factors you're talking about are present
01:22:04  and no i don't, the above example lines up :)
01:22:05  myndzi: my point is that CakeProphet's case is entirely without any complications that i can see
01:22:12  so if it's not lining up, there is a reason that has nothing to do with my math
01:22:13  what mitigating factor is there, then?
01:22:15  apart from the trivial
01:22:16   message
01:22:19  without indentation or anything
01:22:22  i don't know, show me a screenshot
01:22:24  or copy/paste the text
01:22:27  to a pastebin
01:22:30  01:17:51:   \o/
01:22:30  01:17:51:        |
01:22:30  01:17:51:       /'\
01:22:30                             |
01:22:30                            /´\
01:22:35  http://codu.org/logs/_esoteric/2011-09-05.txt
01:22:36  > to a pastebin
01:22:37    Not in scope: `to'Not in scope: `pastebin'
01:22:39  looks fine here
01:22:42  grep for "01:17:51"
01:22:43  (what you pasted)
01:22:45  grep for "01:17:51"
01:22:46  21:18 < CakeProphet>  \o/
01:22:46  21:18 < myndzi>       |
01:22:47  21:18 < myndzi>      /'\
01:22:47                              |
01:22:47                              |\
01:22:54  CakeProphet: ...
01:22:58  I linked myndzi to the text version
01:23:10  the logger must be deleting a space for some reason
01:23:13  yes, I was showing how the extra space for op would not matter in my case.
01:23:15  perhaps because of the control codes used to align things
01:23:18  myndzi: it isn't, because oerjan has the same problem
01:23:25  or at least, irssi and the logger are both doing it
01:23:28 -!- ive has quit (Read error: Operation timed out).
01:23:31  then irssi is at fault
01:23:32  :)
01:23:36  < 1315185471 65138 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric : \o/
01:23:36  < 1315185471 473594 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :      |
01:23:36  < 1315185471 802385 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :     /'\
01:23:39  that's from the raw, unprocessed log
01:24:21  sexy shit
01:24:31  myndzi: I just got it from the raw log, control codes and all
01:24:36  converted it to  message without changing a single thing
01:24:36  ya, one sec
01:24:40  and it's still one column before
01:24:45  so yeah, your script is broken :P
01:24:50  oh, and removed the control codes but NOT a single space
01:24:55  also you have two control codes in a row on one of the lines...
01:25:08 -!- puzzler has joined.
01:25:20  go ahead and paste it would you?
01:25:22  no scripts running here
01:25:25  sure
01:25:27  too much interference on my other client
01:25:28   01:17:51:   \o/
01:25:29   01:17:51:        |
01:25:29   01:17:51:       /'\
01:25:29                                       |
01:25:29                                       >\
01:25:32  mk
01:25:58 -!- puzzler has changed nick to CakeProhpat.
01:26:10  slander
01:26:10  prohpat :D
01:26:24  slanderererererer
01:26:34  it's working fine for me
01:26:36  o_O
01:26:48  CakeProhpat: did you make sure to include the space
01:26:49   \o/
01:26:50    |
01:26:50    >\
01:26:54 -!- CakeProphet has changed nick to THEGENUINECAKEPR.
01:26:56   \o/
01:26:57    |
01:26:57    >\
01:26:57  yes.
01:26:58  include what space
01:27:03  oh, he put a space in front of the \o/ ?
01:27:04                                           |
01:27:04                                           |\
01:27:06  CakeProhpat: yep
01:27:09  well that's the problem
01:27:12 -!- CakeProhpat has changed nick to puzzler.
01:27:12  one space at the start of the message
01:27:13  don't do that
01:27:14  ;D
01:27:16 -!- puzzler has quit (Client Quit).
01:27:21  myndzi: good bug reaction
01:27:24  haha
01:27:30  it's not my fault, it's mirc's! ;)
01:27:31  one sec
01:27:33  \o/
01:27:33             |
01:27:33  myndzi: oh is it because mirc "scripts" tend to strip at the start?
01:27:34             |\
01:27:35  spaces at the start that is
01:27:44  mirc is so gross, everyone stop using it
01:27:46  it's the parser's fault
01:27:52  but i have the tools to avoid it
01:27:54  irssi is better because it uses Perl scripts.
01:27:56  so i will
01:28:11 -!- THEGENUINECAKEPR has changed nick to CakeProphet.
01:28:28  myndzi: hm if you just include a single space at the start without any escape stuff, then it should get stripped by only the clients that stripped the _original_ space
01:28:30  so it'll line up everywhere
01:28:53  myndzi: rewrite in Perl and use irssi
01:29:10  best solution
01:29:24  elliott: clever, i may do that
01:29:38  first i have to find out at what stage the initial space is getting stripped
01:29:48  you are gonna laugh at this but
01:29:55  i actually have a scripted socks5 proxy that i connect through
01:30:03  wow
01:30:03  why
01:30:03  gives me some cool options
01:30:04  ;)
01:30:11  i can forge incoming text for testing
01:30:14  dude use a better client...............................................................
01:30:18  or execute scripts before mirc gets them
01:30:18  etc.
01:30:31  you're connecting... through a proxy... written in your irc client's... horrible scripting language... auugh
01:30:34  oh wait
01:30:37  scripted =/= mirc script?
01:30:40  oh i'm sorry, did i join #linuxzealotry?
01:30:43  please tell me it's scripted with something else
01:30:44  no, it's a mirc script :)
01:30:48  myndzi: this has nothing to do with linux :P
01:30:57  only linux zealots tell everyone to use irssi
01:30:57  this is #antiterribleideaszealotry
01:31:01  i never said irssi
01:31:02  ever
01:31:10  oh, someone else did, i don't care
01:31:19  mirc is a fantastic client, its scripting language is horrid, but that's what makes it interesting
01:31:20  :P
01:31:43  how's it fantastic, apart from the scripts which is a kind of circular argument
01:32:01  it's clean, responsive, and has every feature you could possibly need from an irc client
01:32:12  (and some i wish it didn't, but they don't get in my way)
01:32:14  what irc clients aren't clean and responsive
01:32:19  xchat lol
01:32:26  which one isn't it
01:32:33  irssi is fine i'm sure, if you're into the console thing
01:32:47  but why throw away the usefulness of windows just for an aesthetic choice?
01:32:51  thats not an answer :P
01:32:58  i dunno what's aesthetic about using irssi though but
01:33:03  nah, i mean
01:33:14  some people use console irc clients because they like the console aesthetic
01:33:22  hell, people have even written mirc scripts to emulate them
01:33:25  WHO NEEDS WINDOWS
01:33:28  THIS LOOKS COOL
01:33:29  lol.
01:33:54  well that's stupid i don't think anyone in here would be like that :P
01:34:04  as the survivor of many extremely large floods, having stress tested the various clients at the time, i can say with certainty that i can rely on mirc above anything that's not on a console :)
01:34:14  I do feel that overlapping windows are fairly useless, though splitting is quite nice... but that is basically a tiling wm
01:34:18  though i dunno about that version 7 unicode stuff
01:34:43  myndzi: why would you even hang out in the warzone parts of irc, its so tedious
01:34:43  oh, i forgot to mention, mirc is windows native :P
01:34:58  i forgot that there's people in here who might actually be interested in installing different window managers
01:34:59  hehe
01:35:00  i don't
01:35:08  what's getting flooded have to do with hanging out in warzones?
01:35:14  i used to staff #help on dalnet for a long time
01:35:20  there was some fag with a 3000+ bot botnet flooding us
01:35:27  guess how i solved it? a mirc script :)
01:35:28  most /networks/ are warzones
01:35:41  i have some badass channel flood protection man ;D
01:35:41  freenode may be incompetent but at least it's semi-civilised :p
01:35:52  i feel like i'm talking to someone from the 90s
01:36:03  and i've already been dissed over it being written in mirc too by people who don't know anything better than "lines per second" but are diehard linuxfags
01:36:21  elliott: it's been a long time since it's mattered, but you asked why i like mirc and i'm telling you
01:36:28  so if you don't like the explanations, then don't ask
01:36:45  i'm used to it, it looks and behaves nice, and there aren't any irc clients better than it for my purposes
01:36:55  you can hardly ask me to switch without being able to offer me something better ;)
01:37:13  I don't really see why you'd write an mirc script rather than a bot, really
01:37:23  well, it is a botn
01:37:25  bot*
01:37:40  but it was the language under discussion, not the mechanism
01:37:45  yeah, but written in a horrible language, and that can't be separated from your client :P
01:37:46  and saying "mirc bot" sounds funny
01:38:05  has anyone modified mIRC to run headless and then ran it with wine for better script uptime
01:38:24  people used to do it for botnet clients
01:38:30  you wanna lol at something lol at that
01:38:35  there was a whole botnet written as a mirc script
01:38:39  and boy was the code awful
01:38:39  secure
01:38:41  absolutely terrible
01:38:53  anyway, they'd strip the binary down so it was a smaller file
01:41:05  you'd probably cry to learn how many silly things i've written in mirc ;)
01:41:11  the latest was a thing that compresses tetris fields
01:41:11  haha
01:41:27  i get about half the size of an indexed mode png file with all the headers stripped out
01:41:32  it's pretty cool really
01:42:19   <- is this a space?
01:42:38  in case anyone didn't see this already http://i.imgur.com/ku2bD.jpg
01:42:52  haha, awesome.
01:42:58  myndzi: that looks like a space to me
01:43:03  good
01:43:04  space here
01:43:06  oerjan: would play
01:43:07  i finally found the alias i was looking for
01:43:07  lol
01:43:13  like
01:43:13  turns out it was "smsg"
01:43:17  go figure
01:43:23  it's space invaders pacman mario and tetris divided into four
01:43:35  whenever you hit anything with one of the other games it immediately gets assembled into your next piece, colours and all
01:43:39  and you have to play all at once
01:44:48 -!- ive has joined.
01:46:07  hi ive
01:46:19  hif ive
01:48:39  huh, where did the hibernate option go.
01:49:44  halp how do I hibernate with no UI
01:50:08  ask a bear
01:50:53  oh hey look there's a hibernate command I can install
01:58:30 -!- puzzler has joined.
01:58:32   \o/
01:58:32     |
01:58:33    /|
01:58:36 -!- puzzler has quit.
01:58:49  old bug was old
01:58:50  EXCELLENT
01:58:57  mistaken variable
01:58:57  rip bug
01:58:59  ^celebrate
01:59:00     \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/
01:59:00      |   |   ¦   |   |   |   |   |   |   ¦   |   |   |   |
01:59:01      |\ /<  ´¸¨ /`\ /|   |\ /<  /'\  >\ ´¸¨ /|   |\  >\  |\
01:59:08  it was actually in the proxy script i mentioned
01:59:14  one of its functions is to "fix" consecutive spaces
01:59:15  ^celebrate
01:59:15     \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/
01:59:16      |   |   |   |   |   |   |   |   ¦   |   |   |   |   |
01:59:16      >\  >\ /|  /'\ /|   |\ /`\ /'\ ´¸¨ /<   >\ /|   >\ /|
01:59:20  at a point where i can access the data in binary variables
01:59:27  can you make celebrate do the rest of them too?
01:59:27  so that my theme doesn't mangle them
01:59:51  so the particular bug occurred when
01:59:52  Patashu: well ^celebrate can only choose the top parts
01:59:56   \m/ \m/ \m/ \m/
01:59:57             `\o/´
01:59:57  yeah
01:59:57               |
01:59:57              /´\
01:59:57            (_| |_)
02:00:00  1) there were NO consecutive spaces (2 or more)
02:00:04   \m/ \m/  \m/ \m/
02:00:05  and 2) there was a space at the beginning of the text
02:00:10    \m/ \m/   \m/ \m/
02:00:10          `\o/´     `\o/´
02:00:10            |         |
02:00:11        (_|¯´\       /`\
02:00:11             |_)   (_| |_)
02:00:16  i had code in place to account for this scenario
02:00:22  but it was comparing the wrong variable
02:00:59  ^def celebrate ul ( \o| \o|  \m/ \m/  |o/ \o/ \o|  \m/ \m/  |o/ |o/)S
02:00:59  Defined.
02:01:01  lol
02:01:03  ^celebrate
02:01:04   \o| \o|  \m/ \m/  |o/ \o/ \o|  \m/ \m/  |o/ |o/
02:01:04    |   |    `\o/´    |   |   |    `\o/´    ¦   |
02:01:04   /`\ /|      |      |\  >\ /|      |     ´¸¨ /|
02:01:05              /'¯|_)                /´\
02:01:05            (_|                   (_| |_)
02:01:07  haha
02:01:07  so I might be developing an iphone app as a profitshare.
02:01:17  i had a friend one time
02:01:19  rather
02:01:22  i had a friend who one time*
02:01:26  had this regex script
02:01:38  that would output matches and break them down a line at a time
02:01:38  regex, scruot?
02:01:40  like
02:01:43  \1: contents
02:01:44  \2
02:01:45  so on
02:01:49  ^def celebrate ul ( \o| |o| |o/  \m/ \m/  |o/ \o/ \o|  \m/ \m/  \o| |o| |o/)S
02:01:49  Defined.
02:01:51  ^celebrate
02:01:51   \o| |o| |o/  \m/ \m/  |o/ \o/ \o|  \m/ \m/  \o| |o| |o/
02:01:51    |   |   |    `\o/´    |   |   |    `\o/´    |   |   |
02:01:52   /|   >\ /<      |     /|  /`\ /<      |     /'\ /<  /|
02:01:52               (_|¯`¯|_)                /'\
02:01:52                                      (_| |_)
02:01:58  this friend happened to be an ircop on the network in question with flood privileges
02:02:00  ...
02:02:05  i guess i don't really need to say any more
02:02:05  ;)
02:02:24  this define script reminded me of it until i realized i was the one filling in the extra lines
02:04:55  oerjan: excellent
02:05:08  so anyway
02:05:14  this tetris thing, you guys might actually find it interesting
02:05:40  what i did was basically the equivalent of a png filter backed by a range encoder
02:05:48  but instead of the cell prediction methods png uses
02:05:56  where it predicts a value then takes the difference of that value and the current cell
02:06:20  i instead maintain a move-to-front buffer that gets seeded with my predictions for each cell
02:06:40  so if my first guess isn't right my second guess can output a 2
02:07:35  over some sample data this proved to skew the data significantly, with about 80% of outputs being 1 or 2
02:07:42  which of course makes the range encoder happy
02:08:30  for the garbage, which has its own useful properties, i represent a hole position with a 0 followed by truncated binary for its position and then follow it up with a string of RLE 1s if it doesn't change position
02:08:41  (works good for change on attack, the rle could be removed for 100% hole change games)
02:08:51  on my sample data, the average tetris field is like 9 bytes
02:09:04  waiting to get some proper live data instead of the turn based game i took from :)
02:09:33  cryptsetup: WARNING: failed to detect canonical device of /dev/sda6
02:09:42  when I ran apt-get install hibernate
02:09:46  I wonder if this is a problem.
02:10:05  no
02:10:11  I don't even think I have an sda6
02:12:11  myndzi: 9 bytes? that's pretty good :P
02:12:17  what field size?
02:12:22  10x25
02:12:32  (top 5 are the hidden height)
02:12:32  how many cell states?
02:12:35  some caveats:
02:12:53  it's played on a turn based site, and efficiency is key there. there is usually much less of an upstack than normal live games
02:13:02  err, the sample data is from such a site*
02:13:17  though i will be gathering sample data from nullpomino, i'm involved in its development
02:13:26  how many cell states? :P
02:13:31  cell states = 9, though only 8 are encoded since i encode garbage separately
02:13:39  7 piece colors, empty, and garbage
02:13:46  i only encode rows that contain blocks
02:13:47  why are you encoding it? just for fun?
02:13:51  the empty height can be implied
02:13:52  so 2250 bytes down to 9
02:13:54  not bad
02:13:56  Patashu: mostly just for fun, yes
02:14:11  good a reason as any other
02:14:11  but it will see application in the release of nullpomino 8
02:14:17  why?
02:14:17  25,000 percent compression :P
02:14:19  for example, since i can get the data so compact,
02:14:21  er hm wait no
02:14:31  we will be able to do different things than we might have with the netplay protocol
02:14:39  like stream full udp updates and therefore not require ordered packets
02:14:47  (which will improve responsiveness)
02:14:53  also we will be able to stream data at a faster frame rate
02:15:12  elliott: :)
02:15:15  ooo, udp updates
02:15:22  i said average 9 bytes, my sample data has 113 frames
02:15:31 -!- CakeProphet has quit (Quit: Lost terminal).
02:15:33  so some are bigger of course, but i'm sure some are smaller too
02:15:49  png with indexed colors gets closer to 20something bytes on average
02:15:55  i forget how many
02:16:08  20-30 anyway
02:16:19  myndzi: what's the maximum :P
02:16:34  caveat 2: we'll be encoding a bit more information, since nullpomino in free-for-all modes colors its garbage and i don't support garbage coloring
02:16:48  but a move-to-front transformation with rle like i did with the garbage can get that nice and small
02:16:54  maximum is kind of unknown
02:17:02  i mean
02:17:04  on your sample data
02:17:04  it was just an information seeking venture
02:17:10  i don't have the ability to encode a single frame atm
02:17:10  haha
02:17:19  obviously the maximum is a bit over 2250
02:17:26  ?
02:17:32  myndzi: your raw data is 2250 bytes
02:17:34  oh, maximum possible encoded field size?
02:17:37  yeah
02:17:42  or maximum sample compressed field
02:17:48  pigeonhole principle + overhead = max field size ends up being over 2250 bytes
02:17:50  post-compression
02:18:05  although many states are probably impossible due to shape of pieces
02:18:08  yeah, but it'll never get there in a game
02:18:14  you could encode it more abstractly before compressing to help with that
02:18:18  since players will die before they get anywhere close to a noisy enough field to fuck the compression
02:18:21  but if you're getting 9 bytes on average it probably doesn't matter
02:18:27  well see
02:18:42  what i recognized was that there was a high degree of connectedness in the cardinal directions by virtue of the way the game exists
02:19:02  so the predictions are accurate when the cells surrounding a cell are the same as it is
02:19:07  which is very often
02:19:12  for that not to be true, you have to have made a real mess of your field
02:19:17  but since this is mostly going to apply towards netplay,
02:19:24  anyone who makes that much of a mess will be killed quickly
02:19:29  since it means they can't reach their garbage
02:19:29  :)
02:20:22  the worst case would be that none of the four surrounding cells are ever the same color as the current cell
02:20:38  and there are 20x10 cells that satisfy that condition
02:20:42  i'm sure it'd be huge in that case
02:21:12  we might have to be wary of doing something like "fill the entire field with random colors" as an effect upon death or something
02:21:25  (like tetrinet did)
02:28:34  you could always have a special 'random colours' message
02:28:40  and then every client decides what to fill it with
02:29:07  who put cjd in the topic
02:29:22  cjd?
02:30:38  creutzfeld-jakobs disease
02:30:52 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
02:32:50  ph
02:36:36  quintopia: it's from fungot's europarl theme, i believe
02:36:36  oerjan: what luck! we must search for a biological experiment? say it again.
02:37:24  fungot: yes, the cjd one
02:37:24  oerjan: president rufus doing by getting all excited. right now. you new here? these are the ones i've seen in my reserved seat in the newspaper.
02:37:59  ^styles
02:38:02  ^style
02:38:02  Available: agora alice c64 ct darwin discworld europarl ff7* fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
02:38:29  i can never remember how to fungot properly
02:38:29  quintopia: what the!? why is cid so hard to join? the hell was that?
02:38:40  what is europarl?
02:38:59  ^style europarl
02:38:59  Selected style: europarl (European Parliament speeches during approx. 1996-2006)
02:39:38  fungot: death and taxes
02:39:41  oerjan: mr president, are close by; they may even have got worse. i hope that herman schmid shares my view that the eu governments and eu airlines. i applaud the amendments, i can only thank the rapporteur, that in this hypothesis the commission intends to implement the measures. i think it is appropriate to encourage, because even though mr van velzen i think, the explanation should be sought and guaranteed, above all, enable
02:39:49  oh dear
02:40:04  wow
02:40:13  we are doomed
02:40:22  he ran out of message length there
02:40:37  o.o
02:40:49  xchat just splits it over multiple lines if you go over 512 characters :s
02:41:48  that wouldn't be good for fungot; it sometimes gets stuck in a message loop
02:41:49  oerjan: we are appalled to see that changed. if we are to overcome their difficulties. the only way of ensuring that, at thessaloniki, this would be disastrous for all, against the grain, on the one hand by the constant stream of weapons which operate in sfor based on the facts, not on referral back to committee)
02:42:33  oh dear
02:42:37  at least in the ctstyle
02:42:40  we are indeed doomed
02:42:41  *
03:03:18 -!- zzo38 has joined.
03:03:45 -!- pikhq has joined.
03:04:45  If I do various thing in making preprocessor of Haskell, many people says is insane thing, should it be called Insane-Haskell?
03:04:54  Or, Insane-Haskel-PP?
03:05:39  Bleh.
03:05:58  package names shouldn't normally contain "haskell" :P
03:06:03  Or something completely different?
03:06:18  if you mean for naming on hackage
03:06:49  oerjan: Some do, such as haskell-src-exts. But I do not mean necessarily for naming in hackage. I just mean in the ordinary way to name a program.
03:07:08  Madskell :P
03:08:06  OK, I suppose that will do as well. It *does* mean it does not contain the word "haskell"; in case you do not want it to contain "haskell".
03:08:35  Oh, praise Internet.
03:08:51  well if it's for manipulating haskell programs, like a preprocessor is, then maybe it's ok to have "haskell" in it
03:09:05  Yes, that is what I thought.
03:09:09  i was just trying to think of a more punny name there
03:09:28  It is OK to think of different name including more punny name and whatever else
03:11:17  Is it possible for the main module to not be called Main? Because, I want programs running with hint to be able to access it under a different name. Is it possible to make it import the its own compiled module to hint?
03:11:52  you can use the -main-is flag
03:12:00  OK
03:12:21  I used "Madskell" for now like you suggested at once
03:12:44  :)
03:21:33 -!- ABD has joined.
03:21:45 -!- ABD has changed nick to cchackermirc.
03:22:25 -!- pikhq_ has joined.
03:24:37 -!- pikhq has quit (Ping timeout: 258 seconds).
03:26:38  hi cchackermirc
03:26:58 -!- pikhq_ has changed nick to pikhq.
03:28:59  Do you know the working of this program?  http://sprunge.us/USZd
03:31:34  i wonder how statistical distribution could be used to make the code for a bf text generator smaller
03:31:39  seems like it should be pretty doable
03:31:57  Try.
03:32:09  i was considering taking the bucket approach i wrote and adding something so that i'd know how many "more" bytes would be incurred by selecting each bucket
03:32:14  but it seems a little annoying to code
03:32:25  Try anyways.
03:32:31  i might ;p
03:32:41  i'm thinking about multiple different ideas haha
03:32:49  like, one would base the buckets on frequency
03:33:10  it would select from a smaller range of possible values for high frequency character(s)
03:33:22  so as to leave the value more accessible
03:33:35  and maybe travel farther on the buckets used for smaller frequencies
03:33:47  the idea being like entropy encoding where less frequent = more symbols
03:33:54  but i'm not sure how to balance it out
03:34:05  or what to do if, like, two frequent values are very far apart
03:34:28  the "take the bucket that generates the smallest output" approach seems to work decent
03:35:02  i save about 30 bytes over the bot, maybe more, but i haven't worked in anything to support things like capital letters better, it's focused on lowercase only and spaces
03:57:30  Well, that's strange.
03:57:41  https://github.com/torvalds/linux
03:58:05  Not sure why, but Linus pushed the repo to github.
04:01:43  because github is awesome, and perhaps maybe because kernel.org was possibly compromised
04:02:07  (the servers got broken into, but none of the repos were messed with, afaik)
04:03:40  Probably having something to do with the kernel.org breakin, yeah.
04:04:00  I used repo.or.cz instead, but you can use what you want to use.
04:04:20  I used repo.or.cz, the guy was nice but my repos would break and i'd have to ask him to fix em
04:04:24 -!- Deewiant has quit (Read error: Connection reset by peer).
04:04:25  But you should copy it to github and to kernel.com as well, so you hvae two copies
04:04:26  github has better tools and a nicer UI
04:04:28  so I switched
04:05:07 -!- Deewiant has joined.
04:05:10  Not like it matters much.
04:05:17  A git host is just that, a host.
04:05:35  But one suggest I have, is, make all of the configuration commands in repo.or.cz accessible by SSH
04:07:25  "unfamiliar with the Emacor vim software" "I kind of don't know how to control those two softwares which made the programming kind of complicated. Could I just use Visual Stdio? Thanks"
04:07:27  *sobs*
04:07:58  make him use nano
04:08:12 * zid uses a lot of nano because he is a horrible person
04:08:50  nano's not a bad editor, really. Just incredibly simplistic.
04:10:19  "So while kernel.org is down for the count, let's just see how github does:"
04:10:20  :)
04:13:05  Gregor: wat
04:13:13  "Good lukk to Patricia, whoe is off to teh Oregun State Fair for the state speling kontest."
04:13:32  isn't repo.or.cz run by the guy who made git-pasky/cogito?
04:13:42  I remember using cogito back when git was reaaally new and terrible
04:13:57  elliott: Student in the class I'm TA'ing.
04:14:27  what's the class?
04:14:34  Gregor: omg, "visual stdio"
04:14:39  :D
04:15:34  I know.
04:15:35  I just.
04:15:36  X_X
04:15:58  I can't tell if he's just trolling.
04:18:15  Gregor: TBF, emacs and vim don't have the nicest learning curve :
04:18:16  :P
04:18:47  vim is pretty easy, if you don't want to be productive
04:19:07  like, just use edit mode, and :wq
04:19:18  Yeah, but coming from Visual Studio... :p
04:19:31  shiet, I still use notepad for a lot of stuff
04:19:35  and nano like I said
04:20:06  Gregor: I say let 'em use it and be horrible if the result doesn't work without :P
04:20:12  elliott: We told them to use gedit, which is like Gnome's notepad. Then, the next lab session, we did 10-minute introductions to emacs and vim, just for completionism, all the while saying "but you can use whatever editor you want"
04:20:22  Ah :P
04:20:29  I know what gedit is dude
04:20:44  I wouldn't have if we didn't tell them to use it *shrugs*
04:20:54  I mean, I guess I could've guessed ... but I don't use Gnome.
04:20:58  gedit is actually way better than notepad :P
04:21:05  True.
04:21:08  zid: As an Emacs user: vim is entirely reasonable.
04:21:10  But that's not much of a statement.
04:21:21  I actually use it quite a lot for coding, since its autoindent is reasonable and its syntax highlighting is really good (because it's just a gtksourceview in a box)
04:21:30  Though the learning curve is hell, just like Emacs.
04:21:34  I have weird mental spheres that I divide all my coding into and that determine editor and the like
04:21:35  I used gedit a bit
04:21:56  notepad++ isn't bad as a lay editor
04:22:46  For me the decision process goes something like this:
04:22:48  text -> vim
04:23:57  People who only use emacs or vim are really boring. I think I'm going to start calling them monoeditorites.
04:24:05  Us polyeditorites have a much more exciting life.
04:24:53  i only use wordpad, but i have multiple lives.
04:25:17  oklopol is here and nobody told me? >:|
04:25:29  oh i am here. i am here so bad.
04:25:42  so bad.
04:32:47  > (9::Integer) `shiftL` 999
04:32:48    482178873233820294426791272077000814752632165267490123349687674766657973006...
04:37:14  http://www.youtube.com/watch?v=LjSXj4cb_Yo&feature=related
04:39:41  Is that worth watching
04:39:45  meh
04:39:57  I have no idea how starcraft works
04:40:04  oh right, probably not then
04:40:19  Pssht, I'm totally gonna watch it now
04:40:33  you'll just appreciate it slightly less
04:40:35  like the muta micro
04:45:51  I think pro tip here, AI controlled muta are badass if you can get them
04:53:42  last time i checked, rape was illegal
04:54:06  an accurate perception
04:54:39  Brassica napus seems entirely legal still.
04:56:27  I wonder if diveclog is any good
04:56:37  Not that I have any interest in it
04:58:07 -!- augur has joined.
04:59:53 -!- GreaseMonkey has joined.
05:06:30 -!- CakeProphet has joined.
05:07:57  I had to use windows to complete my online class.
05:07:59  it was very scary.
05:08:15  I don't want to go back don't let them take me.
05:10:58  elliott: Bugmail? :-P
05:11:19  Deewiant:           What    |Removed                     |Added
05:11:19  ----------------------------------------------------------------------------
05:11:19                  CC|                            |dwelch@dwelch.com
05:11:19  --- Comment #19 from Matti Niemenmaa  2011-09-04 13:51:49 CDT ---
05:11:19  *** Bug 10858 has been marked as a duplicate of this bug. ***
05:11:36  Deewiant: Because I got subscribed to "adce and loop-reduce (and possibly others?) incorrectly delete calls to readonly/readnone functions" two years ago because I reported a bug that reduced to it :P
05:11:51  (The bug being it optimising out an infinite loop to a nop, lol)
05:13:40  Deewiant: So basically STOP TWIDDLING THAT BUG
05:14:39  elliott: Un-cc yourself?
05:15:05  Deewiant: That's more work than complaining over IRC
05:15:28  It's also the only working solution
05:16:14  I could be just that annoying.
05:54:32 -!- ive has quit (Quit: leaving).
05:55:41 -!- augur has quit (Remote host closed the connection).
06:13:31 -!- GuestIceKovu has changed nick to Slereah.
06:15:17 -!- oerjan has quit (Quit: Good night).
06:24:06 -!- FireFly has joined.
06:51:08  hey what was the list of primes using nubBy and gcd?
06:52:42  > nubBy (((>1).).gcd) [1..]
06:52:43 -!- elliott has quit (Read error: Connection reset by peer).
06:52:44    [1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,1...
06:52:58 -!- elliott has joined.
06:58:17  CakeProphet: ask CakeProphet, he just posted one of those in #esoteric
06:58:37  well technically 1 is not prime (for reasons I'm not entirely clear on)
06:59:12  > nubBy (((>1).).gcd) [2..]
06:59:14    [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101...
06:59:30  good job. :P
06:59:34  > 2011 `elem` nubBy (((>1).).gcd) [2..]
06:59:36    True
06:59:40  oh look we're in a prime year.
06:59:56  The prime of our lives.
07:00:14  today's a prime day in a square month of a prime year
07:00:25  > dropWhile (/=2011) $ nubBy (((>1).).gcd) [2..]
07:00:27    [2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113...
07:00:35  fizzie: hopefully one of many primes.
07:00:45  unless you're going to die in 6 years.
07:00:49  Well, since 2012 is the last one...
07:00:58  ah yes of course.
07:01:10  slipped my mind.
07:01:46  > dropWhile (/=1991) $ nubBy (((>1).).gcd) [2..]
07:01:50    mueval-core: Time limit exceeded
07:01:53  > nubBy (((>1).).gcd) [1983..2011]
07:01:54    [1983,1984,1985,1987,1991,1993,1997,1999,2003,2009,2011]
07:02:01  > dropWhile (<1991) $ nubBy (((>1).).gcd) [2..]
07:02:03    [1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087...
07:02:12  these are the prime years I've experienced, up to the present.
07:02:40  How come 1984 is on that list?
07:02:41  fizzie: doesn't work like that I don't think.
07:02:46  Oh, right.
07:02:47  you need to start at 2.
07:02:48  Of: course.
07:02:56  I blame just waking up.
07:03:01  > takeWhile (<2011) . dropWhile (<1986) . nubBy (((>1).).gcd) $ [2..]
07:03:02    [1987,1993,1997,1999,2003]
07:03:14  Well, that's not very many.
07:03:16  > takeWhile (<=2011) . dropWhile (<1986) . nubBy (((>1).).gcd) $ [2..]
07:03:18    [1987,1993,1997,1999,2003,2011]
07:03:28  one more than I.
07:08:26  This is truly a prime time of our life.
07:08:38  (yes fizzie said something similar but now I am explicitly referencing a Daft Punk song. :P )
07:10:59  time to celebrate
07:11:01  http://www.youtube.com/watch?v=WIyEaRSvFQ4
07:11:28  Do you need videos for everything?
07:11:32  with what is totally not a shitty quality version of Alive 2007
07:11:37  which was NOT a prime year. shameful.
07:11:42  shame on you Daft Punk.
07:12:14  zzo38: ur mom
07:12:15 -!- Vorpal has quit (Read error: Connection reset by peer).
07:13:14  @define takeWithin f g = takeWhile g . dropWhile f
07:13:42  @let takeWithin f g = takeWhile g . dropWhile f
07:13:43   Defined.
07:14:11  > takeWithin (<1991) (<=2011) [1..]
07:14:12    [1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005...
07:14:56  I guess the takeWhile could be not.g
07:15:10  so then it's more like specifying a range or something?
07:15:41  er on, not the dropWhile
07:15:52  @let takeWithin f g = takeWhile g . dropWhile (not.f)
07:15:53   :1:0:
07:15:53       Warning: Pattern match(es) are overlapped
07:15:53                In...
07:15:59  @let takeIn f g = takeWhile g . dropWhile (not.f)
07:16:00   Defined.
07:16:21  > takeIn (>1991) (<2011) [1..]
07:16:22    [1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006...
07:16:47  > takeIn (==1991) (<2011) [1..]
07:16:49    [1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005...
07:17:06  yeah that makes sense.
07:19:21  It's a bit like the Perl scalar "..".
07:19:27  so maybe I could make a bot that re-lets lambdabot with a list of functions after being cleared.
07:20:07  and when you update the list it clears lambdabot and re-lets them all
07:20:15 -!- Vorpal has joined.
07:20:34  > let pointlessTakeIn = flip ((.) . takeWhile) . dropWhile . (not .) in pointlessTakeIn (>1991) (<2000) [1..]
07:20:36    [1992,1993,1994,1995,1996,1997,1998,1999]
07:20:55  @pl -- it always improves things. No exceptions.
07:20:56  (line 1, column 1):
07:20:56  unexpected "-"
07:20:56  expecting white space, "()", natural, identifier, lambda abstraction or expression
07:21:03  lambdabot: Stop being so literal.
07:21:36  and then if you delete a function in the list you can optionall delete all functions that reference it.
07:21:43  list functions that reference other functions, etc.
07:21:45  so you can manage the list.
07:22:16  written in Perl, of course. :P
07:22:35  How persistent is that persistence anyway?
07:24:10  lambdabots? I assume until you undefine everything.
07:24:38  I believe it literally just writes the function definitions to a file that it imports when evaluating code.
07:24:45  :t takeWithin
07:24:46  forall a. (a -> Bool) -> (a -> Bool) -> [a] -> [a]
07:25:35  though maybe I'm wrong. Maybe it constructs a huge let expression or something. :P
07:25:58  I was just wondering if it collects years of cruft there in the definitions.
07:26:09  no because the only way to remove definitions is to remove them all.
07:26:20  so it gets cleared often as people redefine things.
07:26:50  Cakebot on the other hand...
07:27:04  will surely develop years of cruft.
07:27:12  Well, yes, fungot's command-list collects all kinds of nonsense too, and it's not even sorted.
07:27:14  ^show
07:27:15  fizzie: mr president, along with other victims. in fact, true. as i announced during the debate but i fear that the expansion that has been tabled. in drafting programmes aimed at the promotion of renewable energy sources for the financing of such assistance from within these budget headings, are another component in achieving viability. a mechanism is constructed to deal with, and, in particular, which usually have neither the
07:27:15  echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate
07:27:22  "in fact, true."
07:27:55  fungot fun
07:27:56  CakeProphet: i rise to speak on culture for once.
07:28:17  fungot fun
07:28:18  CakeProphet: i thank the president-in-office for his response. indeed, in law. we feel that there is a common goal to build an antiterrorist europe!
07:28:25  ^choo choo goes the train
07:28:25  choo goes the train hoo goes the train oo goes the train o goes the train  goes the train goes the train oes the train es the train s the train  the train the train he train e train  train train rain ain in  ...
07:28:55 -!- Vorpal has quit (Ping timeout: 245 seconds).
07:28:56  > join . tails $ "choo choo goes the train "
07:28:58    "choo choo goes the train hoo choo goes the train oo choo goes the train o ...
07:29:08  ^show choo
07:29:09  >,[>,]+32[<]>[[.>]<[<]>[-]>]
07:29:11  > join . tails $ "choo goes the train "
07:29:12    "choo goes the train hoo goes the train oo goes the train o goes the train ...
07:29:39  ^cho does the same without the space
07:29:39  does the same without the spaceoes the same without the spacees the same without the spaces the same without the space the same without the spacethe same without the spacehe same without the spacee same with ...
07:30:01  ^cho fblofblo
07:30:01  fblofbloblofblolofbloofblofblobloloo
07:31:11  > join . tails $ "Does the same without the space"
07:31:13    "Does the same without the spaceoes the same without the spacees the same w...
07:31:50  > join . unwords . join . tails . words $ "Does the same without the space"
07:31:51    Couldn't match expected type `[a]'
07:31:51          against inferred type `GHC.Types...
07:31:59  > unwords . join . tails . words $ "Does the same without the space"
07:32:01    "Does the same without the space the same without the space same without th...
07:32:24  > unwords . join . tails . words $ "Do you believe in magic?"
07:32:26    "Do you believe in magic? you believe in magic? believe in magic? in magic?...
07:33:12  > join . inits $ "Do you believe in magic?"
07:33:13    "DDoDo Do yDo yoDo youDo you Do you bDo you beDo you belDo you beliDo you b...
07:33:34  > let f x = join (interleave (inits x) (tails x))
07:33:35    not an expression: `let f x = join (interleave (inits x) (tails x))'
07:33:39  > let f x = join (interleave (inits x) (tails x)) in f "Do you believe in magic?"
07:33:40    "Do you believe in magic?Do you believe in magic?Do you believe in magic?Do...
07:33:46  > let f x = join (interleave (tails x) (inits x)) in f "Do you believe in magic?"
07:33:46    "Do you believe in magic?o you believe in magic?D you believe in magic?Doyo...
07:33:56  > let f x = join (interleave (tails x) (inits x)) in drop 99 (f "Do you believe in magic?")
07:33:57    "believe in magic?Do yu believe in magic?Do yo believe in magic?Do youbelie...
07:33:59  > let f x = join (interleave (tails x) (inits x)) in drop 999 (f "Do you believe in magic?")
07:34:00    ""
07:34:02  darn :P
07:34:05  lol
07:34:30  unfortunately Cakebot will not be useful for defining general purpose programs
07:34:35  due to lambdabots short character limit.
07:36:03 -!- Vorpal has joined.
07:36:03  elliott: that's not pointfree enough btw
07:36:05  I'm ashamed.
07:36:37  ?pl \x -> f (g x) (h x)
07:36:37  liftM2 f g h
07:37:09  :t join . interleave <$> tails <*> inits
07:37:10      Occurs check: cannot construct the infinite type: a = a -> b
07:37:10      Probable cause: `interleave' is applied to too few arguments
07:37:10      In the second argument of `(.)', namely `interleave'
07:37:14  :t join . (interleave <$> tails <*> inits)
07:37:14  forall a. [a] -> [a]
07:37:17  CakeProphet: happy
07:37:19  ????
07:37:30  no I will never be satisfied.
07:37:33  son I am disappoint.
07:37:36  This seems to work:  unwords x = tail (x >>= (' ':))
07:38:15  sure does.
07:38:17  This also seems to work:  unwords = tail . (>>= (' ':))
07:38:46  tail is badde,
07:38:49  unwords = intersperse " "
07:38:56  > intersperse " " ["a","b"]
07:38:57    ["a"," ","b"]
07:38:58  intercalate you mean?
07:39:04  no
07:39:05  o
07:39:06  h
07:39:06  :t intercalate
07:39:07  forall a. [a] -> [[a]] -> [a]
07:39:13  oh hmm
07:39:16  i was thinking of something else ,maybe?
07:39:17  > intercalate " " ["a","b"]
07:39:17    "a b"
07:39:19  right
07:39:21  intercalate
07:39:22  ?src intercalate
07:39:23  intercalate xs xss = concat (intersperse xs xss)
07:39:26  ?src intersperse
07:39:26  intersperse _   []     = []
07:39:27  intersperse _   [x]    = [x]
07:39:27  intersperse sep (x:xs) = x : sep : intersperse sep xs
07:39:33  same as join . intersperse
07:39:39  no
07:39:41  .:
07:39:41  no
07:39:45  yes
07:39:51  ?pl fix (\f sep (x:xs) -> x : sep : f sep xs)
07:39:51  fix (flip flip tail . (ap .) . flip flip head . (((.) . flip ((.) . (:))) .) . liftM2 (.) (:))
07:39:54  join is concat for list  yes?
07:40:02  learn composition
07:40:05  :t join . intersperse
07:40:05      Couldn't match expected type `[a] -> a' against inferred type `[a]'
07:40:06      Probable cause: `intersperse' is applied to too many arguments
07:40:06      In the second argument of `(.)', namely `intersperse'
07:40:10  - cakeprohpet
07:40:22  ?pl fix (\f sep xs -> if null xs then [] else if null (tail xs) then xs else head x : sep : f sep (tail xs))
07:40:22  fix (((ap (flip if' [] . null) . ap (if' =<< null . tail) . ((head x :) .)) .) . liftM2 (.) (:) . flip flip tail . ((.) .))
07:40:26  beautiful :')
07:40:30  right. (join .).intersperse then?
07:40:44  PUT SPACES AROUND YOUR OPERATORS
07:40:47  especially .
07:40:59  nope
07:41:08  space fascism. I refuse.
07:41:34  join .: intersperse
07:41:46  :t .:
07:41:46  parse error on input `.:'
07:41:48  :t (.:)
07:41:49  forall a b (f :: * -> *) (g :: * -> *). (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
07:42:04  > :t (Control.Monad.join Prelude..)Prelude..Data.List.intersperse
07:42:05    : parse error on input `:'
07:42:06  oops
07:42:09  ah yes
07:42:13  :t (Control.Monad.join Prelude..)Prelude..Data.List.intersperse
07:42:14  forall a. [a] -> [[a]] -> [a]
07:42:57  beautiful.
07:44:03  > Just.unwords$["youre","a","bad"]
07:44:03    Not in scope: `Just.unwords'
07:44:12  take that, cake prophet
07:44:18  oh snap.
07:44:47 -!- FireFly has quit (Quit: FireFly).
07:44:48  Just .unwords
07:44:50   
07:45:06  this is how much I care about that.
07:45:12  ^^^
07:45:14  do you see?
07:45:15  > Just. unwords$["youre","a","bad"]
07:45:16    Just "youre a bad"
07:45:36  youre just a bad
07:46:18  hey you know what I would do if that happened?
07:46:27  repent
07:46:30  put spaces somewhere.
07:46:32  repent
07:46:32  and recompile.
07:46:34  repent
07:46:35 * elliott punches CakeProphet
07:46:37 * elliott punches CakeProphet
07:46:38 * elliott punches CakeProphet
07:46:38 * elliott punches CakeProphet
07:47:01  it's not like I don't use spaces ever.
07:47:06  I don't know where you go this idea.
07:47:10  *got
07:47:13  you are like zzo wanting thecompielr to disambiguate your types
07:47:16  its not natural
07:47:27  ur a SICK HASKEL FETISHIST
07:47:57  > fix cakeprophet
07:47:57  I'm not sure this is the same thing, but okay.
07:47:58    Not in scope: `cakeprophet'
07:48:03  r.i.p.
07:48:13  it wont fix
07:48:59  but I guess I could there be a module called Just and a function in it called unwords and it could have the exact same time and not do the same thing.
07:49:23 * elliott punches CakeProphet
07:49:24  repent
07:49:29  so maybe I will put spaces in composition operations that begin with a titlecase word.
07:49:33  maybe this is a good idea.
07:49:38  repent
07:49:42  repent
07:49:42  repent
07:49:44  monqy: repent
07:49:46  fix CakeProphet
07:49:46  repent
07:50:18 * CakeProphet needs a prescription
07:50:24  are you guys prescriptivists?
07:50:30 * elliott punches CakeProphet
07:51:46  if(cond){code}
07:51:54  how does that lack of spaces make you feel?
07:52:04  > fix$\x->"repent "++x
07:52:05    : parse error on input `->'
07:52:10  THIS IS HOW IT MAKES ME FEEL
07:52:14  did you know that when I see if ( cond ) { code }
07:52:20  I want to kill people?
07:52:28  repent
07:52:31 -!- Taneb has joined.
07:52:31  I am spacephobic.
07:52:35  repent
07:52:37  repent
07:52:38  repent
07:52:42  Morning
07:52:44  Taneb: repent him
07:52:46  the emptiness scares me.
07:52:47  it is a void.
07:52:58  wanting to be filled in by useful characters.
07:53:03  repent
07:53:05  And yet without space there would be nothing
07:53:07  repent
07:53:17  repent the new help?????
07:53:25  cakeprophet this is your fault
07:53:26  the new?
07:53:31  Space is potentia
07:53:37  im potent
07:53:43  Space is oppurtunity
07:53:50  I'm totipotent
07:53:51  im opportun
07:54:13  Space is full of the yet to be
07:54:14  I've got mad non-space skills
07:54:20  cakeprophethowdoyoufeelaboutyourself
07:54:31  remoreseful?????youmeanie
07:54:41  isthiswhatyouwanted???
07:54:51  this reminds me about earlier today
07:54:59  or was it yesterday
07:55:14  looks like it may have been yesterday
07:55:24  depending on what a day is
07:55:27  still today for me.
07:55:30  in terms of sleeping.
07:55:33  and how yesterday relates to that
07:56:07  they're common in that cakeprophet is always wrong about spaces
07:56:15  always
07:58:35  http://pastebin.com/mHxjQZiZ
07:58:39  but see this code?
07:58:41  it's beautiful.
07:58:48  actually I took out 2 spaces that were not necessary
07:58:51  just to spite you.
07:59:12  too many newlines
07:59:27  no newlines can stay.
07:59:34  they are magic spaces.
07:59:36  correct; no newlines can stay.
07:59:42  > fix ("repent "++)
07:59:43    "repent repent repent repent repent repent repent repent repent repent repe...
08:00:14  monqy: easier to get right pointlessly
08:00:17  monqy: can  you read that code?
08:00:38  olsner: I know; the syntax error was the whole point
08:00:42  CakeProphet: would you like me to bother?
08:00:47  monqy: Right.
08:01:01  monqy: yes it would please me.
08:01:09  if you could read it and how beautiful it is.
08:01:37  but you are bad at Perl so I don't think you could.
08:05:33  I think I was able to get the first seven lines? I tried the ninth but I don't know what / and <=> are so I couldn't do it
08:06:06  is division. <=> is numeric cmp
08:06:11  .. /
08:06:56  I'm making a Suffolk implementation
08:07:18  Because I can
08:07:42  i dunno what $b and $a are I can't find their assignments :(
08:07:49  you are going to hate this...
08:07:57  they are magical variables used specifically in sort
08:08:02  ewwwwwwww
08:08:03  they are found nowhere else in Perl's semantics.
08:08:37  well actually they're not magical you could implement sort yourself with prototypes and dynamic scoping.
08:09:42  ok i think i might have figured it out
08:10:05  it prints all the frequencies of all the nonalphabetic characters in the input, sorted by what character it is
08:10:14  I dunno if $_ gets interpolated in "$_: "
08:10:19  yes it does.
08:10:27  $_ is the loop variable.
08:10:37  and any string with "" is interpolated.
08:10:54  so the : doesn't get interpreted as part of it then
08:10:56  ok
08:11:05  yes it's magical.
08:11:25  also I could do "$_: @{[$w($_)/$t]}"
08:11:31  if I were feeling especially cheeky.
08:12:19  is there reason not to? it's perl after all; obfuscation's the point
08:12:37  well it's just more convenient to concat in this case.
08:12:57  Is obfuscated ORK code possible?
08:13:42  Perl is about doing as much in one line as possible, I guess. not necessarily obfuscating anything.
08:13:52  it's obfuscation to me
08:14:10  It's being shiy and rond to me
08:14:15  Also whie
08:14:23  one line isn't ambitious enough
08:15:16  monqy: what makes you think I would try to obfuscate. I even took the time to import sum. :P
08:15:34  I had an idea for an esolang, but it turned out to just be HQ9+ exaggerated extremely much
08:15:34  that could have been done in one line without that extra import line.
08:15:55  Taneb: exaggerated in which direction
08:16:00  Upwards
08:16:04  And outwards
08:16:11  all around ways?
08:16:16  Entire unicode range
08:16:26  oh my.
08:16:45  who would write all of the programs
08:16:55  also it would be awesome for golfing if it actually did stuff that was TC.
08:17:02  People with lots of time and nothing to do
08:17:07  CakeProphet: what
08:17:19  excuse me, if it was a turing complete language.
08:17:23  it would be good for golfing.
08:17:40  sometime I should try golfing with J
08:17:44  sg
08:17:44  sg
08:17:44  sg
08:17:44  sgs
08:17:45  gsgsgsgsgsg
08:17:47  hi elliott
08:17:53  hi
08:17:54  hiii
08:17:56  is flogscript good
08:17:59  scapgegoats all along the ploo
08:18:07  its golfscript but zzo
08:18:10  one time I wanted to see if I could learn it but I didn't have enough dedication
08:18:16  to look through the interpreter
08:18:22  written in php was it
08:18:26  zzo
08:18:27  to figure out how it works
08:18:31  because there's no documentation
08:18:41  man i don't have darcs installed this is a tarvarvesvty
08:19:10  `run man man
08:19:15  man: can't open the manpath configuration file /etc/manpath.config
08:19:19  oh no
08:19:42  friends
08:19:44  friends always
08:19:46  freidns oh my
08:19:46  `run man touch
08:19:48  friends always
08:19:49  man: can't open the manpath configuration file /etc/manpath.config
08:19:52  friends
08:19:58  F R I E ND S
08:20:01  always
08:20:05  The only documentation of FlogScript is in Japanese and is incomplete.
08:20:17  Trendsetting through cell phones is the most popular practice, especially among teenagers. As the iPhone 4 craze remains and grows, so does the demand for trendy and defensive cases for iPhones.iPhone 4 Cases
08:20:36  ..
08:20:41  elliott's lost his marbles.
08:20:51  As the iPhone 4 craze remains and grows, so does the demand for trendy and defensive cases for iPhones.iPhone 4 Cases
08:21:00  `run find / -name marbles
08:21:20  find: `/proc/tty/driver': Permission denied \ find: `/proc/1/task/1/fd': Permission denied \ find: `/proc/1/task/1/fdinfo': Permission denied \ find: `/proc/1/task/1/ns': Permission denied \ find: `/proc/1/fd': Permission denied \ find: `/proc/1/fdinfo': Permission denied \ find: `/proc/1/ns': Permission denied \ find: `/proc/2/task/2/fd':
08:21:21  monqy: there is... a language... i want... to learn.....iPhone 4 Cases
08:21:28  me too
08:21:34  which language.iPhone 4 Case
08:21:35  2>/dev/null
08:21:36  s
08:21:40  elliott: learn Perl.
08:21:42  L3
08:21:46  l3
08:21:57  iPhone 4 Cases
08:22:05  elliott: actually learn uh... io
08:22:12  which io
08:22:15  I used Io but it's terrible
08:22:16  or maybe you already know it. is it dead yet?
08:22:18  especially the docs
08:22:18  there are multiple languages called io
08:22:23  and also the guy behind it
08:22:26  :P
08:22:52  monqy: do you want to know what... ALGNAGNUAE i want to lerne
08:22:58  Does anyone have a sample Suffolk program to test my interpreter?
08:23:04 -!- Zuu has quit (Read error: Connection reset by peer).
08:23:16  probably not unless there is be ones on the suffolk page on wiki
08:23:30  perhaps you want to learn about bugsophia which is my currently completely undocumented and unimplemented concurrent wire-based fungeoid thing that I never finished.
08:23:33  you should finish it.
08:23:39  i read abotu that in the logs
08:23:40  it probably sucks
08:23:41  elliott: is it iphone four cases
08:23:48  monqy: no thats my spirit animal
08:23:54  oh
08:24:03  elliott: but it's awesome because every thread holds exactly one character.
08:24:26  so for example the hello world thread would spawn as many threads as there are characters to print... unless you just used one thread to print them all.
08:24:42  i want to learn my name is johny what the f**k
08:25:04  the main problem is figuring out 1) order of execution, round robin or to just use OS threads  2) coordinating threads to compute multi-argument operations.
08:25:17  s/hello world thread/ hello world program
08:25:26  sounds exactly like a CA
08:25:46  maybe.
08:25:55  I'm sure it could be modelled like that but the program surface stays the same.
08:26:04  only the bugs move around.
08:26:25  monqy will never ask me what language i want to learn ... . . . .  .c r y i n g
08:26:26  BUT FINE THAT'S BORING I GUESS GO MAKE YOUR OWN ESOLANG.
08:27:22  elliott: what lagnauge..
08:27:25 -!- Zuu has joined.
08:28:05  monqy: MERCURY it is like prolog but strongly typed and higher-order without "cut" or any impure operations?? and it has inspiration from haskell?? and it uses lienar types to do IO
08:28:18  and it apparently has really good optimisation somehow.............
08:28:24  one time i wanted to learn mercury but then i forgot to do that???
08:28:26  im... gonna learn
08:28:28  it
08:29:12  elliott: in fact I think I will finish bugsophia
08:29:14  is maude any good one time i looked at it but the thing i used to try learn it was really boring so i gave up
08:29:15  and perhaps add onto it .
08:29:31  monqy: ive never hear dof maud ehelp?
08:29:48  CakeProphet: what was that TOTES STUPID os, sophia?
08:29:51  im logread a lot
08:30:01  uh abrasax or something.
08:30:06  was the name we settled on.
08:30:18  I like to forget things I've done in the past. :P
08:30:34  you were stupid in the past, also the present, but we all have our flaws,
08:30:34  http://maude.cs.uiuc.edu/ maude has a good web site
08:30:42  racing car
08:30:48  japanese tmempemple
08:30:49 * CakeProphet is like Karkat in that he hates his past selves.
08:30:50  maude
08:30:56  maddeueue
08:30:58  maeudihea
08:30:59  maeuihfrgjdf
08:31:00  mdskgnfj
08:31:29  monqy: i think the maude time
08:31:31  when designing their website
08:31:33  drunk a bit too much
08:31:34  ...
08:31:36  urbana-champaign
08:31:40  :DDDdjddpasodlk
08:31:47  what help
08:32:31  because
08:32:31  its from
08:32:34  the university of illinois
08:32:36  at urbana-champaign
08:32:37  and
08:32:38  champaignej
08:32:40  is a drunk
08:32:43  champaign
08:32:59  champaignej
08:33:04  i did not see the ubana-chanmabitehge singe,
08:33:08  but there itis
08:33:09  wow
08:33:11  elliott: also the idea was to have a declarative language to specify properties of streams. so that they could be connected to network devices, files, etc.
08:33:30  CakeProphet: for what
08:33:32  sopgjophajai
08:33:51  for... good IO capabilities.
08:33:58  oh. bugsophia still.
08:34:10  i thought it was abiotbarbaisotsax
08:34:14  ...no
08:34:19  that sounded more , interesting,
08:34:25  for that,
08:34:29  declarerjiowejtiwtvie dreams
08:34:48  I believe I had specified a range of characters for each kind of stream.
08:34:54  most of them were runic scripts I believe.
08:35:15  drundric skulptures
08:35:20  shits dot come,
08:35:22  dot com
08:35:24  friends
08:35:24  hi
08:35:59  stan, which is reserved for stdio, is in the Ogham alphabet, but I can't recall what it was reserved for.
08:36:12  things like stdio? I guess I could have multiple input streams instead of just the one .
08:36:30  hi stan
08:36:56  er no not Ogham
08:36:59  ogham
08:37:02  im ogham
08:37:04  stogham
08:38:01  ok how to learn mercury...
08:38:22  monqy: by, cmomomommbobulacompiling the compiler first?
08:38:22  ah it's anglo-saxon
08:38:24  its, not in buntus
08:38:32 -!- cchackermirc has quit.
08:38:43  melbourne mercury..... it is made by savages in uastortjiosoauraliala
08:38:52  GCC version 3.4.x or later is required.
08:38:52  GCC 4.0 will NOT work. It has bugs that cause internal compiler errors when compiling the C code generated by the Mercury compiler.
08:38:54  monqy: help
08:38:58  help
08:39:16  help no gcc three in repos help
08:39:20  he,pl
08:39:25  monqy: we... must build gucck
08:39:30  im find gcc
08:39:30  so the fuþorc alphabet could be reserved for... what is something I could lump into a category with stdio.
08:39:54  monqy: ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-3.4.6/gcc-core-3.4.6.tar.bz2
08:39:55  we download, together
08:40:22 -!- zzo38 has quit (Remote host closed the connection).
08:40:50  monqy: ok now we unpack... (ar eyou downloadied)
08:40:53  my gcc is 4.6.1?? maybe it will work..??
08:40:57  no
08:41:13  gcc four has a lot of bugs so I'm not surprised
08:41:24  elliott@katia:~/gcc-3.4.6$ ./configure --program-suffix=3
08:41:27  this will make everything beautiful........
08:41:31  gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)
08:41:32  weeeee
08:41:36  then you just must am make
08:41:40  monqy: it will be, esy
08:41:47  yay mit is compilingst
08:41:56  compiling gcc three is actually pretty easy, it's quite small
08:42:51  perhaps I should not break runes into types and just allow any runes to be designated for any type of IO.
08:42:57  monqy: is it, work
08:43:02 -!- jix has quit (Read error: Connection reset by peer).
08:43:09  i'm tryign ad....ifferent way
08:43:13  monqy: what way
08:43:15  ad verture
08:43:33  monqy: are you trying it with gcc four, because that's just stupid, they've said directly it won't work and you need an earlier version, and that text is from this year
08:43:44  compiling gcc three only takes like ten minutes anyway
08:43:50  and it installs cleanly over four with that suffix option
08:44:46  ᚙ
08:44:48  are you..s,..,,,ure
08:44:54  monqy: sure about what
08:44:55  because 0 is idffernet than 6
08:45:34  ᚛ ᚅ  ᚜
08:45:44  monqy: it's pretty obvious what they mean
08:45:52  not to ,me
08:46:43  monqy: elliott is bad at explaining things in that he doesn't.
08:47:03  ᚘ   picnic table
08:47:58  hol yshit australian servers are slow
08:48:07  oh no so much warnings
08:48:17  speed of light is slow
08:48:17  monqy: what
08:49:04  solutions.c:319:1: warning: ‘mercury__f_115_111_108_117_116_105_111_110_115_95_95_108_105_115_116_95_95_85_110_117_115_101_100_65_114_103_115_95_95_112_114_101_100_95_95_102_111_108_100_108_95_95_104_111_49_50_95_95_91_49_44_32_50_44_32_52_44_32_53_44_32_54_93_95_48_4_0’ used but never defined [enabled by default]
08:49:10  that times a billion
08:49:17  is my warnings
08:49:24  are you using clang
08:49:27  that looks like a clang warning
08:49:29  should i using clang
08:49:42  because i think this is gcC? maybE??
08:50:04  oh wait i don;'t even know what this is
08:50:17  it says it's ../scripts/mgnuc but wHAT SIt hat
08:52:48  elliott: I think bugsophia would be more like a bully automaton
08:53:08  Right, I am beginning the definition of my golf language
08:53:13  Called Uniquode
08:53:21  though it is kind of vapor at this point, so who's to say.
08:53:32  Taneb: ok
08:53:39  It is going to have so many crazy features!
08:53:42  ok
08:53:53  Taneb: sounds pretty tedious to write
08:53:56  Instead of first class anything, all values are in a caste
08:54:16  There's a macrostack and a function queue
08:54:17  i misread caste as castle and got excited
08:54:47  I'll put the arabian characters in a castle
08:54:48  :)
08:55:35  cakeprophet stemming from the previous discussion about spaces and fitting things into single lines, do you know J you might like it
08:56:00  I've heard of it but do not know much about it.
08:56:04  I'm pretty sure I would like it  yes.
08:56:28  it's nifty but I don't know it well enough to do anything fancy
08:56:52  I will have to learn it sometime.
08:57:44  dimensionality is so too a word!
08:57:56  these warnings never stop
08:58:12  monqy learns the value of listening to warning label
08:58:12  s
08:58:19  I am thinking about multiprogramming
08:58:28  except not befunge.
08:58:37  i hope this compiliations stops soon
08:58:49 -!- Zuu has quit (Ping timeout: 260 seconds).
08:58:53  so i can see how badly it doesnt'w ork
08:58:55  so you have the same code being evaluated by possibly different interpreters. Like dupdog but not as a stupid.
08:59:50  it's on t
09:00:00  oh wait no new directory
09:00:01  it's on m
09:00:05  er
09:00:06  d
09:00:07  g
09:00:09  o
09:00:10   monqy learns the value of listening to warning label
09:00:10   s
09:00:11  p
09:00:21  d
09:00:24  i
09:00:25  m
09:00:42  when will it end
09:00:53  when it breaks
09:01:15  so, hmmmm
09:01:32  i think it finished compiling
09:01:35  Doubles will be stored in heaps, which are stored in arrays, which are stored in queues, which are stored in a stack
09:01:45  monqy: enjoy broken
09:02:20  so how's your compiell...
09:02:23  retro-active self-modification
09:02:46  monqy: still downloading the tgz.
09:03:24  wow is it really that slow
09:03:26  did it stop
09:03:57 -!- Zuu has joined.
09:04:05 -!- Zuu has quit (Changing host).
09:04:05 -!- Zuu has joined.
09:04:20  hmmm I should perhaps update my user page on esowiki.
09:04:52  my user page is good
09:05:22  Mine has a quote
09:05:51  ugh what is it doing is it building the standard library orsomething
09:06:27  configure: WARNING: Mercury compiler not yet installed -
09:06:27  ****    cannot use unboxed floats, bootstrapping using boxed floats
09:06:27  ****    after installation is complete you may want to reinstall
09:06:27  ****    from scratch so you can use unboxed floats, which are more
09:06:27  ****    efficient.
09:06:28  ****    NOTE: before reinstalling from scratch, ensure that the
09:06:29  ****    source tree is clean by running `make realclean'.  Not doing
09:06:31  ****    this may result in a broken Mercury installation.
09:06:41  I wonder if I'll ever find my notes on stue.
09:06:52  I bet they are not good because it was my first attempt at an esolang.
09:07:08  stue
09:07:20  monqy: did you pay attention to the above
09:07:28  i didnt; even see it
09:07:44  maybe someone else pyade ayteention for me
09:08:09  hnm , back to c compiling. and warnings. eveery wheere.
09:08:15  whweeeeeeeeeeeee
09:09:55 * elliott is getting no warnings at all
09:10:22  my install is going to be so broeken,.,,
09:10:22  What do you call the thing that runs about executing commands?
09:10:40  waht sort of bugs could even CAUSE this>?
09:10:44  Taneb: IP?
09:10:49  hmmm, it would seem that people have been reverting edits on my old wikipedia userpage
09:10:50  monqy: using the wrong compiler?
09:10:54  under the mistaken pretense that it was vandalism.
09:11:01  elliott: yes, that's it. I generally call it the runner
09:11:21  elliott: but what bugs make the compiler WROnge.
09:12:04  monqy: none, you're going against established usage instructions
09:12:43  i mean which buggs in gcc4 as noted in  It has bugs that cause internal compiler errors
09:13:04  gcc4 has tons of bugs
09:13:08  :(
09:15:49  all gccs have tons of bugs :P
09:15:59  that's why you wait for a high second digit in the version
09:16:01  how couldthis haPEn :_+;
09:16:23  wat
09:16:29  hi
09:17:30  zid: or just switch compiler
09:18:08  gcc "one true c compiler"
09:18:40  to one with a different set of bugs, presumably
09:18:53  not that it's even possible, most of the time
09:19:08  I gather clang is significantly less buggy and it has great compatibility IME
09:19:15  pcc probably has less bugs too apart from the C99 code which is rather immature
09:19:20  except it doesn't know half the gcc extensions
09:19:24  Decades kinda do that
09:19:28  so you can't use it to compile hardly anything
09:19:28  zid: It certainly knows half of htem
09:19:41  it doesn't know asm intrinsics, so you can't compile the kernel
09:19:44  How outdated is your perception? clang compiles pretty much everything nowadays
09:19:52  zid: clang has compiled a booting kernel months ago
09:19:57  yes, because they cheated
09:19:59  and took out all the asm
09:20:12  Yes. They took out all the inline assembly from the kernel.
09:20:20  This is a true thing and not delusional at all.
09:20:27  it's not exactly hard
09:20:34  there's like 20 things in arch/ that uses it
09:20:37  mostly locking
09:20:47  clang doesn't support .code16gcc, but it supports inline assembly.
09:21:00  I'm sceptical how much you know what you're talking about.
09:21:06  then this is fewer months than last time
09:21:11  I think the phrase 'ur dick smells like cheese' should be removed. I cannot do this, and user Fyrael has deleted my previous request. — Preceding unsigned comment added by ModusPwnd (talk • contribs) 18:30, 2 June 2011 (UTC)
09:21:16  a few different guys have posted to lkml that theyv'e done it
09:21:28  all said they removed a bunch of gnu extensions, and converted a lot of assembly
09:21:33  Lessee, Wikipedia cites http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html, which just says
09:21:36    * Boot - The very early kernel boot code breaks with clang, because of obscure
09:21:36      inline assembly GNUtensions (.code16gcc stuff). I have no clue what needs to
09:21:36      be done to fix this, but as I actually know where this problem is, it should
09:21:36      be (relatively) easy to fix.
09:21:42  .code16gcc is used, like, exactly once in the kernel.
09:21:59  That was /a year ago/.
09:22:09  lemme try find one of the emails if I can
09:22:36  Anyway, I don't know how much you've actually tried to build with clang, but it turns out that really obscure gcc extensions are not actually used very often.
09:22:37  gmail is suuper slow today, yay
09:23:21  ugh will thjis compile ever finish or have bugs doomed it never to do so............
09:23:31  monqy: Mine just finished compiling, with no warnings
09:23:41  does it work
09:23:43  Now installing
09:23:49  oh ok
09:24:25  I;m just afraid mine may have gotten sutck looping infintely
09:24:40  i mean
09:24:42  just a bit
09:24:43  not just
09:24:48  i am afarid of other thisngs too...
09:25:04  feels good man
09:25:08  ghi
09:25:10  aha
09:25:13  http://llvm.org/bugs/show_bug.cgi?id=4068
09:25:28  2522, 4072, 9248 etc are all still open
09:25:46  I never said clang could build a totally unpatched kernel
09:25:54  Right, I've defined space, !, ", #, $, %, and &
09:26:08  oh, we stoped talking about this and we started being defensive instead? okay bye
09:26:13  It's ludicrous to whine about .code16gcc not working which is a really obscure ridiculous thing used in one place in the kernel, and call it "removing all the assembly", when the ENTIRE REST of the kernel builds.
09:26:58  I'm the only person who has posted absolutely anything relevent other than "You don't seem to know a lot"
09:27:07  So either get off your high horse, or give me some documentation
09:27:17  Documentation of what, exactly
09:27:27  high horses
09:27:29  I'm on no high horse, I just said your wording is hyperbolic
09:27:38  for example, the patch to the tree that gets it compiling under clang
09:27:49  my hair is like rainbow.
09:27:51  elliott: last time (several months ago, as you put it) someone posted saying they had compiled the kernel
09:27:55  they had said they had removed all the assembly
09:28:27  whether 'several' means 6+ or exactly 3, is probably your "omg it only doesn't support gcc16code u tard" hangup
09:28:30  I take it that's just your memory and you don't have any actual link
09:28:38  I am the one actually posting links here
09:28:40  You've provided a page with several patches that make the kernel build yourself, you're the one making claims
09:28:43  I made a good faith effort to check my emails
09:28:49  all you seem to want to do is troll me
09:29:07  Yes, obviously I'm trolling
09:29:11  obviously
09:29:11  agreed
09:29:18  snickering
09:29:52  The best kind of trolling is questioning people who call code16gcc and a few constraints "all the assembly"
09:29:55  Gets them so mad, let me tell you
09:30:00  I can tell you again if you want
09:30:02  I never said that
09:30:04  you told me I said that
09:30:24  You *really* need to stop misrepresenting me, jsut because I told you what I remembered, then when to check my emails for you
09:30:47  monqy: hi
09:30:52  CakeProphet: hi
09:31:01  what is it that makes me hueman?
09:31:09  CakeProphet: the colouring
09:31:32  so is it because I do not color that I have lost my humanity?
09:31:45  that I am a sh of a man.
09:31:48  man of a sh.
09:32:40 -!- CakeProphet has changed nick to Kallisti.
09:32:44  hi
09:32:44 -!- Kallisti has changed nick to CakeProphet.
09:32:47  hi
09:33:17  I will not rename yet.
09:34:32  CakeProphet: maybe you can be a LumMan if you can't handle being a Hueman?
09:34:48  What should / do...
09:34:51  HMMM
09:34:57  is the killer.
09:35:13  s'^'/'
09:35:54  it also makes trees. it is the creator and the destroyer.
09:36:22  Nah, the tree commands are in Latin Extended-2
09:36:54  trees are important for any flourishing ecosystem.
09:37:11  /home/elliott/mercury-compiler-11.01/install_grade_dir.asm_fast.gc.debug/scripts/mgnuc --grade asm_fast.gc.debug        --       -c tree_bitset.c -o tree_bitset.o
09:37:14  these are good libraries to compile
09:37:38  Basic Latin is all IP commands
09:38:17  I think I will write an esolang soon.
09:38:20  I have much to do.
09:38:24  will it be good
09:42:30  elliott is mercury working for you...becuase mine is stuck in not finishing ever hell
09:42:41  just compiling the stdlib
09:43:11  just wait until you see things that already compiled...compile again
09:43:23  you may be in hell too......
09:43:36  monqy: yes, because this time it's PIC
09:43:49  havingabasicunderstandingofthedifferentwaysthesamecodecanbecompiled.jpg
09:44:16  descriptive file name there
09:44:32  i wonder how many different ways they can compile this std lib
09:47:17  and why
09:47:55  I think Uniquode may be turing-complete.
09:48:01  And I've only got up to 6
09:48:13  hm?
09:48:15  And all the commands so far are about the IPs and nothing else
09:48:31  Uniquode is the esolang I'm working on atm
09:48:39  yes i know but
09:48:41  what's the 6
09:48:50  the 6 comands or whatever it is
09:48:53  The 6 charactrer
09:49:00  oh
09:49:12  how many is that, then
09:49:24  and do they have good definitions
09:49:29  23, and ish
09:49:36  I need to elaborate some
09:49:48  There're two no-ops
09:49:58  two?
09:50:06  three-tick and one-tick
09:50:11  why
09:50:28  Because I've got milliions of characters to assign a function to
09:50:31  :(
09:51:10  And it could come in handy
09:51:15  There are multiple IPs
09:51:24  Which can breed
09:53:15  In very specific circumstances
09:53:43  good luck keeping your langauge anything near elegant
09:54:08  And all of the IPs have an internal register which may be irrational
09:54:59  it sounds like it might be interesting as-is; adding all of unicode would rpobably ruin it a bunch :(
09:55:22  a gimmick or a deathwish
09:55:34  I'll never get all of unicode done
09:55:49  I'll save the page now so you can look at it
09:56:14  http://esoteric.voxelperfect.net/wiki/Uniquode
09:56:32  http://esolangs.org/wiki/UniCode
09:56:36  waaaaay ahead of you
09:56:39  I love breeding internet protocols.
09:56:49  im bread protocol
09:57:12  2008
09:57:37  so will the stan represent a stone?
09:57:44  since that is what the stan represents.
09:57:46  poor stan
09:57:56  perhaps you could have a homespringesque subset
09:58:04  honfeoiboiwbgiergjperojgpejgpjpsirng
09:58:09  elliott, I declare a friendly rivalry between Uniquode and UniCode
09:58:13  with the runic/japanese/chinese characters representing their representations.
09:59:02  "Retroactive self-modification" feather?
09:59:14  feather?
09:59:18  the feather gives you the cape.
09:59:18  feather?
09:59:21  which lets you fly.
09:59:38  unless you already have a super power and then it is stored in the blue box.
09:59:46  for when you get hit by monsters.
09:59:49  it will drop out.
10:00:03 -!- azaq23 has joined.
10:00:13  Taneb: good luck implementing feather
10:00:51  in cakelang all values retroactively insert futures in the past which become the current value in the present.
10:01:28  then you realise the error in your ways and make it insert pasts into the future
10:02:25  where is my meadow.
10:03:10  Taneb: have you never heard of feather?
10:03:31  No
10:03:35  oh good
10:03:42 -!- jix has joined.
10:03:53  http://esolangs.org/wiki/Feather
10:04:24  Interesting
10:04:43  But actually, the way I plan to do retroactive self-modification won't be too difficult
10:05:02  oh?
10:05:57  Basically, every now and again the state is saved, and when self-modification happens, one of these states is edited and then replaces the main state
10:06:06  If that makes sense at all
10:08:11  whenever implementing time travel it is important to always have an alpha timeline.
10:12:19  consider a language in which, from any statement
10:12:27  you can determine the future path of control flow
10:12:38 -!- Taneb has quit (Remote host closed the connection).
10:12:57  then, you could traverse that path, and execute the statements that change the past when they have designated when they want to happen.
10:13:07 -!- Taneb has joined.
10:13:35  granted I'm pretty sure you must always halt.
10:13:39  to do that.
10:14:04  and have only compile-time branches and the like.
10:15:46  but then the act of changing a value in the state in the past is merely just reorganizing the order of statements at compile-time.
10:19:40 -!- Lymee has quit (Ping timeout: 252 seconds).
10:20:39  I will go walk dog now
10:20:41 -!- Taneb has quit (Quit: Goodbye).
10:21:55  hi god
10:21:56  dog
10:22:03  legit typo
10:22:04  elliott: so perhaps I could pick my own equipment this time?
10:23:04  chross-channel mageics...
10:26:38 -!- azaq23 has quit (Ping timeout: 252 seconds).
10:29:23 -!- azaq23 has joined.
10:39:10  monqy: wow mercury is still going
10:39:33  mine too
10:41:27  # Step 3.  Run `make install'.
10:41:28  #          This step will also take a long time.
10:41:34  lgone,
10:41:56  longest time
10:42:02  Note that the Mercury compiler is GPL software and there doesn't seem
10:42:02  to be a linking exception like the one found in GCC, so it is unclear
10:42:02  whether it will be possible to distribute compiled Mercury code under
10:42:02  the Apache License.
10:42:02  eip
10:42:03  rip
10:42:31 -!- GreaseMonkey has quit (Quit: The Other Game).
10:45:38  -- Installation complete.
10:45:39  :o
10:45:50  -- Don't forget to add /usr/bin to your PATH,
10:45:52  thanks
10:46:31  you instaleld it into /usr/bin
10:46:32  smart
10:46:43  it was...automatic
10:46:55  mmc --make-transitive-optimization-interface --grade asm_fast.gc.profdeep      --mercury-linkage shared --flags LIB_FLAGS   --flags INTER_FLAGS -R/usr/local/lib/mercury/lib/asm_fast.gc.profdeep -R/usr/local/lib/mercury/lib  --no-warn-insts-without-matching-type   array
10:46:59  tarnstieitvejtvie operaitismtoamtion weienteracfse
10:47:08  i did not want to think so i grabed an automatic...
10:47:18  it will hurt me,, in the end,,
10:47:49  dont do, drmugs
10:49:22  monqy: mercury better be,... really godo... for this
10:49:52  i;m reading a documentation?? its weird
10:52:17 -!- Taneb has joined.
10:52:32  time to test
10:54:51  It is slightly unfortunate that the “Hello, World!” program introduces no
10:54:51  less than three advanced Mercury concepts, but since tradition dictates that
10:54:51  tutorial texts start with “Hello, World!” we’ll just have to jump straight in
10:54:51  with the knowledge that things will get easier thereafter.
10:54:54  hepl monqy
10:55:26  yep
10:55:41  its hleleo world is diferent to wikpeds :(
10:56:05  o
10:56:06  i compiled hello world...and it works....
10:56:07  then it becomes the same
10:56:13  monqy: wtait for me :'(
10:56:21  my broekn mercury...works...
10:56:34  for now...atleast
10:56:39  monqy: wtait for me :'(
10:56:41  wtatiatie
10:58:37  monqy: wtiatweit
10:58:42  asdgaldgnh
10:59:13  monqy: wtiatweit
11:00:15  monqy: wairwirit
11:00:15  this documentation doesn't quite match up with another documentation i read.;.
11:00:29  monqy: waittiete
11:00:32  for me,s :'(
11:00:33 -!- nooga has joined.
11:00:33  what
11:00:35  domucumationai?
11:00:38  hehe
11:00:47  this other one has a different sugar
11:00:49  this whole mission control thingy is so annoying
11:00:55  instead of !IO it is different
11:01:03  monqy: it explains later
11:01:10  no i mean
11:01:11  how to do... n(!iO...
11:01:16       write_total(Total) -->
11:01:16           print("The total is "),
11:01:17           print(Total),
11:01:17           print('.'),
11:01:19           nl.
11:01:27  that looks like prolog
11:01:27  but w/e
11:01:31  this tutorial is new apparently so
11:01:44  that doesn't look like prolog, to me?
11:01:57  does prolog have --> ???
11:02:11  i duneontknwo
11:02:17  citatio:n http://www.mercury.csse.unimelb.edu.au/information/doc-release/mercury_trans_guide/IO.html
11:02:36  oh DCG things
11:02:41  that's probably usable too but as a different thing...
11:04:18  the wierdest i have so far seen in mercury is probably the pred thing with ::in and ::out and the determinism declaration
11:04:26  those are cool.......
11:04:32  it lets... typechecking and... OPTIMZATION
11:04:54  is multiple outs possible i have not checek,ed
11:05:05  yes,prloggs
11:05:13  monqy: omg yay my compile is on to the last bit
11:05:30  which last bit
11:05:40  dunno, ti did a last bit, and my computer cant be slower than yours so
11:05:41  it must be
11:05:42  the last bit
11:05:59  my computer is very slow...
11:08:07  yay i think it is really finishing now
11:08:15  monqy: wtataitait, for mems,
11:09:39  "rot13 has the cryptographic"
11:09:39  strength of damp tissue paper,
11:09:41  "
11:09:47   - book.pdf
11:09:56  australians
11:10:05  mmc --make-transitive-optimization-interface --grade asm_fast.gc.trseg      --mercury-linkage shared --flags LIB_FLAGS   --flags INTER_FLAGS -R/usr/local/lib/mercury/lib/asm_fast.gc.trseg -R/usr/local/lib/mercury/lib     mutvar
11:10:05  NO NOT MORE
11:10:12  help what was the last grade you did
11:10:13  always, more
11:11:37  help what was the last grade you did
11:11:38  hlc.gc.trseg maybe??
11:11:44  hlc??
11:11:45  help
11:12:15  high-level c i think...i should not have gone mindless...and have manualy disabled usefless grades,...like that one...
11:12:31  so um
11:12:35  all i've seen so far is asm_fast
11:12:38  does that mean there's like
11:12:46  three more iterations of this entire compile process to do
11:13:10  you can never have enough iterations of the entire compile process
11:13:15  thats not an answer
11:13:17  is that a true thing because
11:13:19  i might comit suicide
11:13:39  i forget how many i went throgute anbd their names :(
11:13:53  did you build in parallarlarllel
11:13:57  it was: "a lot"
11:14:08  i think i did -j2 because i have 2 cores...i think
11:14:19  i did -j toobut i dont think it s working almso unelss you use bfs you should use one more than core to -j
11:14:56  some day i may learn how to -j...proeprly
11:15:40  help monqy hlep it doesnt sotp the building
11:15:42  can i have your binries
11:16:17  youve already built mmc,,,no?///and probabyl all the grades you need,,,you just have to insatll them,...
11:16:28  they are installing , by doing mmc ---...
11:16:34  thats the stdlib uilding
11:16:36  mmc is the mercury compiler
11:16:36  the grades,
11:16:39  i know
11:16:42  mmc --make-optimization-interface --grade asm_fast.gc.trseg      --mercury-linkage shared --flags LIB_FLAGS   --flags INTER_FLAGS -R/usr/local/lib/mercury/lib/asm_fast.gc.trseg -R/usr/local/lib/mercury/lib  --no-local-thread-engine-base   thread.semaphore
11:16:42  mmc --make-transitive-optimization-interface --grade asm_fast.gc.trseg      --mercury-linkage shared --flags LIB_FLAGS   --flags INTER_FLAGS -R/usr/local/lib/mercury/lib/asm_fast.gc.trseg -R/usr/local/lib/mercury/lib  --no-local-thread-engine-base   thread.semaphore
11:16:43  mmc --make-transitive-optimization-interface --grade asm_fast.gc.trseg      --mercury-linkage shared --flags LIB_FLAGS   --flags INTER_FLAGS -R/usr/local/lib/mercury/lib/asm_fast.gc.trseg -R/usr/local/lib/mercury/lib     thread.mvar
11:16:45  mmc --make-transitive-optimization-interface --grade asm_fast.gc.trseg      --mercury-linkage shared --flags LIB_FLAGS   --flags INTER_FLAGS -R/usr/local/lib/mercury/lib/asm_fast.gc.trseg -R/usr/local/lib/mercury/lib     thread.channel
11:16:49  :(
11:16:49  mmc --compile-to-c --grade asm_fast.gc.trseg      --mercury-linkage shared --flags LIB_FLAGS   --flags INTER_FLAGS -R/usr/local/lib/mercury/lib/asm_fast.gc.trseg -R/usr/local/lib/mercury/lib     thread.channel > thread.channel.err 2>&1
11:16:55  if thats not compiling i dont believe you
11:17:25  its forever
11:19:44 -!- Patashu has joined.
11:22:27 -!- oklopol|2 has joined.
11:25:22 -!- oklopol has quit (Ping timeout: 260 seconds).
11:27:28 -!- monqy has quit (Quit: hello).
11:31:05 -!- derdon has joined.
11:43:03 -!- pikhq has quit (Ping timeout: 246 seconds).
11:43:09 -!- pikhq has joined.
11:46:57 -!- lambdabot has quit (Ping timeout: 260 seconds).
11:47:06  Not lambdabot!
11:47:19  mmc?
11:47:54  melbourne mercury compiler
11:48:08  I used to live there
11:48:15  Compiler was a nice place
11:48:45  i recently updated to OSX Lion
11:49:10  and it's both cool and uncool
11:49:21  brb
11:50:19 -!- cheater has quit (Ping timeout: 260 seconds).
11:52:54 -!- cheater has joined.
12:11:22 -!- lambdabot has joined.
12:17:09 -!- Deewiant has quit (Ping timeout: 260 seconds).
12:22:33 -!- Deewiant has joined.
12:28:07  Note! The Mercury compiler reorders code as little as possible. However, programmers should not write code that depends upon any particular order of evaluation — code can also be reordered by various optimizations! In particular, it3.5. INSTS AND SUBTYPES 51
12:28:08  is a bad idea to write something like ( if X \= 0, Z = Y / X then ... else ... ),
12:28:08  assuming that the test for X being non-zero will guarantee that this code
12:28:08  cannot lead to a division-by-zero error at run-time. It is certainly possible
12:28:08  that the test and the division may be compiled the other way around.
12:28:38  Why is Mercury happening
12:29:38  Deewiant: Decided to learn it
12:29:48  Why
12:29:51  Is it interesting?
12:30:04  Deewiant: Very
12:30:52  Oh right, pure Prolog
12:31:03  Deewiant: Mercury but without anything non-declarative at all, not even cut, higher-order, "mode-checking" (so that inputs and outputs can be distinguished properly and the like), impurity provided via linear types, and a compiler that produces very efficient code.
12:31:06  Erm
12:31:09  s/Mercury/Prolog/
12:31:32  It's basically Prolog if Prolog was defined by Haskell/Clean geeks who happened to be really good at writing compilers :P
12:31:39  So nothing like Prolog.
12:32:11  :- mode in == (ground >> ground).
12:32:11  :- mode out == (free >> ground)
12:32:12  SO COOL
12:33:42  Its inst declaration system is pretty great too, it basically lets you define valid inputs for a function arbitrarily...
12:33:50  And you can define functions as total for certain subsets of inputs and the like.
12:35:18  Deewiant: The toolchain is almost as bad as D's though, it's compiled something like thirty copies of the standard library so far, for all the different variants
12:35:26  And it does it during "make install" for no obvious reason
12:36:50  Damn, Haskell does only three currently
12:36:54  Uniqueness typing is really nice
12:36:56  Lot of catching up to do
12:37:01  Deewiant: Three? I just have profiling and normal
12:37:06  And dynamic
12:37:11  Useless
12:37:22  But yeah, this is a really cool language
12:37:28  Oh man, it even has typeclasses and existentials
12:37:35  I FEEL SO AT HOME
12:37:43  IT EVEN HAS FUNDEPS
12:37:53  Make a whatevercraft in it
12:38:07  does mercury have openGL bindings?
12:38:13  no??? well screw your craftmine
12:38:23  asciicraft
12:38:34  roll your own OpenGL
12:38:43  and render using #s for white and .s for black
12:38:59  DOSCraft
12:39:07  craftcraft
12:39:14  enter language, display mechanism
12:39:16  whatevercraft game comes out
12:39:20  nice
12:39:23  but you have to mine the language and mechanism first
12:39:27  but you also need a craftcraftfactory
12:39:30  help
12:39:47  and craftcraftfactorydecorators
12:40:15  crattorydecorators
12:40:39  like say you want a read-only craftcraftfactory
12:41:26  /home/elliott/mercury-compiler-11.01/install_grade_dir.hlc.par.gc/scripts/mgnuc --grade hlc.par.gc        --       -c robdd.c -o robdd.o
12:41:29  PLEASE LET THIS BE THE LAST ONE
12:41:35  I WILL NEVER EVER WANT TO USE THE HIGH-LEVEL C BACKGROUND WITH PARALLEL AND ALSO GC
12:41:40  WHY ARE YOU D;OING THIS TO ME
12:41:48  Also is that STM I see coooool
12:41:52  this language is a haskell away from haskell
12:42:05  So is haskell*2
12:42:13  these things are true
12:44:17  warning: ‘mercury__f_114_101_108_97_116_105_111_110_95_95_115_112_97_114_115_101_95_98_105_116_115_101_116_95_95_85_110_117_115_101_100_65_114_103_115_95_95_112_114_101_100_95_95_102_111_108_100_50_95_98_105_116_115_95_95_104_111_49_48_50_95_95_91_49_44_32_52_44_32_54_93_95_48_9_0’ used but never defined
12:44:31  I'm getting a bad feeling about this
12:44:41  Deewiant: monqy got that too; I blame you or whatever
12:44:46  Apparently it works after the hours of compilations though
12:44:52  So I guess it's nothing to worry about
12:44:59  Seriously though, make install takes longer than building GHC
12:45:46  deewiant: what
12:45:48  I probably blame your old cc
12:46:03  My gcc is a bit old but producing extra warnings it weird? w/e/
12:46:03  Patashu: Compiling mercury
12:46:38  Oh no, it's spreading; now Deewiant is infected too.
12:46:43  Deewiant: did you see about the unboxed float thing in the configure
12:46:52  I think you're meant to bootstrap it after compiling but I was just uh
12:46:55  No
12:46:57  fuck that I can deal with boxed floats to not go through this again
12:47:00  I'm just installing from AUR
12:47:11  Oh
12:47:12  What version
12:47:19  OMG mine finished
12:47:23  11.02 or something?
12:47:41  11.01
12:47:48  Darn, can't mock you for being out of date
12:48:10  -- Don't forget to add /usr/local/bin to your PATH,
12:48:10  -- /usr/local/man to your MANPATH,
12:48:10  -- and /usr/local/info to your INFOPATH,
12:48:10  -- to copy deep_profiler/mdprof_cgi to /usr/lib/cgi-bin,
12:48:10  -- and to add the following lines to the `.emacs' file
12:48:10  -- in your home directory:
12:48:12  Sure is demanding
12:48:32  I wonder if it'll tell me that, I don't have emacs installed
12:49:03  Deewiant: http://www.mercury.csse.unimelb.edu.au/information/papers/book.pdf is a good introduction BTW
12:49:12 -!- Lymee has joined.
12:49:39  elliott: I don't really care right now, I'm just installing this because I like to have language implementations installed in case I need them
12:49:50  Smooth
12:50:27  this whole Mercury language looks sad
12:51:17  nooga: For what value of sad
12:51:17  Aaargh pins and needles
12:52:55  They're almost gone
12:53:24  Deewiant: BTW shiro got down from over one second to 0.76s on Mycology just by changing the Vector type from tuples to something strict and unboxed
12:53:40  Yes, that would make sense
12:54:06  Only point seven seconds to go until I'm par with CCBI and cfunge
12:54:26  I guess redoing my stack might have a similarly beneficial effect
12:54:39  I should probably profile at this point
12:56:06 -!- ais523 has joined.
12:56:14  Hi ais523
12:56:26  hi elliott
12:56:26  I made a Suffolk implementation
12:56:36  that was fast, I had to wait for things to stop stealing focus before I could reply
12:56:46  what's Suffolk, again? I know it's one of mine but I've forgotten the details
12:56:55  I was just trying to fix TCness in someone else's language
12:57:00 * ais523 reads http://esolangs.org/wiki/Suffolk
12:57:00  The one for making minsky machines or something
12:57:21  ais523: good news: Shiro is faster on Mycology (OBVIOUSLY EVERYONE CARES)
12:58:27  I do care, but only very slightly
12:59:00  Let's see if I know what you're on about
12:59:17  Mycology is your Funge-98 implementation in Haskell
12:59:21  Nope
12:59:29  Deewiant: Correct this injustice
12:59:40  Have I got it backwards?
12:59:44  indeed
12:59:46  http://iki.fi/deewiant/befunge/mycology.html
12:59:51  Shiro is elliott's Funge-98 implementation in Haskell
12:59:52  Yes, Haskell is my Funge-98 implementation in Mycology
13:00:02  and Mycology is the best-known Funge-98 testsuite, written by Deewiant
13:00:22  I knew what they were, just I had them backwards
13:00:28  Elliott is an implementation of "is" on Haskunge-Mycology.
13:00:33  True
13:21:49 -!- Taneb has changed nick to TanebIsNotHere.
13:30:30 -!- copumpkin has quit (Ping timeout: 246 seconds).
13:30:55 -!- copumpkin has joined.
13:32:03 -!- TanebIsNotHere has changed nick to Taneb.
13:48:26 -!- derdon has quit (Remote host closed the connection).
13:50:37  Deewiant: Woot, my new stacks work perfectly except now Mycology hangs
13:50:46  That's... not perfect
13:50:56  GOOD: { transfers cells correctly
13:50:56  GOOD: { sets storage offset correctly, and p uses it
13:51:05  And I just badly tried to rewrite the transfer parts of { and }, so woooo
13:51:17          stackTake 0 _ = []
13:51:17          stackTake n stk = stackHead stk : stackTake (n-1) (stackTail stk)
13:51:17  Looks fine to me though
13:52:26  Admittedly the function I'm replacing is kind of wack
13:52:48  Deewiant: Oh, I can just run it for like ten seconds and it'll spike on the profiling report :-D
13:52:52  BEST WAY TO GET A STACK TRACE EVER
13:56:27 -!- TeruFSX2 has quit (Ping timeout: 260 seconds).
13:59:36 -!- GuestIceKovu has joined.
14:00:02  About Uniquode, what should A do?
14:01:39 -!- Slereah has quit (Ping timeout: 264 seconds).
14:01:41 -!- GuestIceKovu has changed nick to Slereah.
14:03:04  "Sigmund Freud himself experienced fleeting derealization when visiting the Acropolis in person; having read about it for years and knowing it existed, seeing the real thing was overwhelming and proved difficult for him to perceive it as real."
14:03:32  Freud was weird
14:04:29  also an idiot
14:04:58  He heard about someone dreaming about giraffes and thought he was dreaming about his parents
14:05:08  was the person a giraffe
14:05:13  because that might be quite reasonable if so
14:05:36  No, he wasn't
14:05:40  ah
14:06:00  dreams do not deal in reason :D
14:06:07  I reckon Colonel Gadaffi would make a good theoretical psychologist
14:11:22  Deewiant: So what situation is it when Mycology freezes after
14:11:24  GOOD: { transfers cells correctly
14:11:24  GOOD: { sets storage offset correctly, and p uses it
14:11:36  I think my code freezes up trying to find an instruction but I may be wrong
14:11:40  Run ccbi on it, I can't remember
14:11:43  ISTR I had a problem like this before but all my code looks dandy
14:11:53  Deewiant: How'd ccbi help, it's presumably doing jiggery with { and }
14:11:57  Or do you mean the weirdo trader
14:11:59  tracer
14:12:05  It's not weirdo :-P
14:12:11 -!- Taneb has quit (Quit: Goodbye).
14:12:25  Anything I don't know is weirdo
14:13:45  GOOD: } resets storage offset
14:13:45  GOOD: } transfers cells correctly
14:13:48 -!- FireFly has joined.
14:14:00  Deewiant: Does it happen to test both before outputting? I can see that I might be transferring cells incorrectly MAYBE, but if it's definitely the storage offset...
14:14:30  I'm pretty sure I never do that
14:14:37  Never do what, test two at once?
14:14:38  But it probably calls } only once there
14:14:42  Well right
14:15:08  Alright, working assumption is that stackAt is broken
14:15:17  I'm pretty sure I never do "test a, test b, output a, output b", instead of "test a, output a, test b, output b"
14:15:31  Oh, duhhh
14:15:33  It should be + not -
14:16:39  Deewiant: Good lord, how big a stack do you use in Mycology
14:16:49  ***GROWING STACK***
14:16:49  ***GROWING STACK***
14:16:49  Testing fingerprint FPSP... not loaded.
14:16:49  ***GROWING STACK***
14:16:49  ***GROWING STACK***
14:16:50  Testing fingerprint FPDP... not loaded.
14:16:54  ***GROWING STACK***
14:16:56  ***GROWING STACK***
14:16:58  Testing fingerprint 3DSP... not loaded.
14:17:00  ***GROWING STACK***
14:17:02  ***GROWING STACK***
14:17:04  Testing fingerprint FRTH... not loaded.
14:17:06  ***GROWING STACK***
14:17:08  ***GROWING STACK***
14:17:10  Testing fingerprint IIPC... not loaded.
14:17:12  ***GROWING STACK***
14:17:14  That's EXPONENTIAL
14:17:33  elliott: ccbi -s
14:17:39  Stack contained:                 6185 cells at maximum
14:17:49  Hmm
14:17:53  Well this is Wrong then
14:18:34  Maybe you resize it to something smaller on occasion? E.g. on n
14:19:19  Hmm, right, n just pushes an empty stack
14:19:21  Which is stupid
14:19:42 * elliott adds a clearStack :P
14:20:15  Actually wait, that just drop length
14:20:46  Wow, why is this so slow??
14:21:03  And why is it freezing up after testing NULL... SOMETHING is slowing stack pushes down to a glacial pace here
14:24:39  stackCons                      Shiro.Stack           76.1    9.9
14:24:39  mergeByteString                Shiro.FungeSpace       5.9   26.8
14:24:40  WOW :P
14:24:50  What's your data structure? :-D
14:25:39 -!- nooga has quit (Ping timeout: 264 seconds).
14:25:51  Deewiant: Just an exponentially growing vector... I have NO IDEA why it's so collosally slow :P
14:25:55  stackCons :: Value -> Stack -> Stack
14:25:56  stackCons x (Stack 0 v) = stackCons x (grow v)
14:25:56  stackCons x (Stack p v) = Stack (p-1) $ v V.// [(p-1, x)]
14:25:56  grow :: V.Vector Value -> Stack
14:25:58  grow v = trace ("***GROWING STACK*** " ++ show sz) $ Stack sz $ V.replicate sz 0 V.++ v
14:26:00    where sz = V.length v
14:26:02  SO INEFFICIENT
14:26:20  Even if I make the stack huge enoug that it never grows during Mycology, it STILL makes things absolutely glacial
14:26:23 -!- CakeProphet has quit (Ping timeout: 264 seconds).
14:26:25  stackCons x (Stack p v) = Stack (p-1) $ v V.// [(p-1, x)]
14:26:28  Literally the slowest operation.
14:26:38  // seems O(n)
14:26:41  Isn't it?
14:26:58  Deewiant: In the elements of the list of updates, yes
14:27:00  So n = one
14:27:08  Oh
14:27:11  Unless I greatly misunderstand.
14:27:30  I can use unsafe indexing but I have NO idea how this could be so slow... I don't have built up thunks either
14:27:35  data Stack = Stack !Int !(V.Vector Value) deriving (Show)
14:27:45 -!- CakeProphet has joined.
14:27:52  Deewiant: Oh hmm
14:27:54  (//)Source
14:27:54  :: Unbox a
14:27:55  => Vector a
14:27:57  initial vector (of length m)
14:27:59  -> [(Int, a)]
14:28:01  list of index/value pairs (of length n)
14:28:03  -> Vector a
14:28:05  O(m+n) For each pair (i,a) from the list, replace the vector element at position i by a.
14:28:07  Maybe it is slow
14:28:11  But c'mon, it's eight thousand unboxed elements
14:28:15  How slow can it possibly be
14:28:28  I guess vectors aren't a panacea in the world of persistent data structures
14:31:17  Deewiant: I suppose the fact is that it's copying like a hundred kilobytes per push and that just doesn't work
14:31:23 -!- MDude has joined.
14:31:32  I probably want something tree-based, or else make it mutable (gross, can't store history)
14:32:24  Yeah, it's O(n) because it has to copy the whole thing
14:32:34  Not with UNIQUENESS TYPING
14:32:39  Try a list of vectors?
14:32:40  ...aka a mutable variable :P
14:32:43  Yeah :-p
14:32:51  Deewiant: You mean just divide it into vectors of constant size?
14:32:56  Yeah
14:33:10  That could work, but each vector would have to be super-tiny, or it'd _still_ be copying like a kilobyte each push which will be slower than a list any day
14:33:25  I suppose I could have like, a list of the top sixteen elements, and stuff the rest into a vector... but that basically reduces to a vector.
14:33:27  Erm
14:33:28  True enough
14:33:28  I suppose I could have like, a list of the top sixteen elements, and stuff the rest into a vector... but that basically reduces to a list.
14:33:37  What you need is a JIT
14:33:47  So that you can optimize pop-push to a modification
14:33:48  Deewiant: What /might/ work is (Int,[Value]), where the list always ends with [0..] and the Int maintains the length
14:34:04  That means O(1) length calculation, and no checks for TOS/SOS/etc.
14:34:13  And the [] would be strict and unboxed etc. :P
14:34:26  That's kind of not massively better than the current dumb list representation, but oh well
14:35:54  Have you tried Data.Sequence?
14:36:12  I forget what it's good at but maybe it's good at something relevant
14:36:23  Well, it's a finger tree, they're good at everything
14:36:34  I'll probably try it if this doesn't pay off well
14:36:49  They support efficient accessing from the end though, which is quite thoroughly irrelevant to my case
14:36:58  But they're basically functional Python-lists
14:37:00  So maybe it'll work
14:40:54  I do like this "being able to swap out an implementation without rewriting bits of all the rest of the code" thing
14:40:57  ABSTRACTION, WHAT IS IT
14:42:14  $ ext/mycology
14:42:14  shiro: <>
14:42:17  Deewiant: I'm clever
14:42:19  Indeed
14:42:23  data StackElems = !Value :- !StackElems deriving (Show)
14:42:30  Deewiant: Behold my incredibly well-inhabited data type
14:42:35  STRICTLY UNBOX EVERYTHING
14:43:50  Oh come on, you can't tell me that didn't help performance even a little
14:43:52  Not even a little bit?
14:49:19  Yeah, I'm going to try Data.Sequence.
14:50:00  Deewiant: How is CCBI so fast anyway, it doesn't do cfunge's ridiculousness and the fungespace doesn't exactly help for Mycology
14:50:46  Maybe it does help :-P
14:51:14  Deewiant: Not point eight seconds of help
14:51:35  It's .8 faster than cfunge for you?
14:52:03  Nope, but it's .eight faster than shiro
14:52:34  Well, profile your slowness
14:52:45  Its stack is a mutable array, that probably helps
14:52:48  I did; it's my fungespace, but that's still only like thirty-five percent of it
14:53:07  Yeah; I'm really reluctant to switch from persistent structures, though
14:53:14  For obvious reasons of goodness
14:54:49 -!- TeruFSX2 has joined.
14:55:35 -!- nooga has joined.
14:58:35  what mycology
14:59:09  Question insufficiently coherent
14:59:28  Deewiant: I swear to god the first Google suggestion for "mycology" is "mycology deewiant"
14:59:31  Maybe that's just because of my search history :P
14:59:54 -!- Taneb has joined.
14:59:57  Yeah it's "mycology supplies" for me :-P
15:00:06  ah, the test suite
15:00:08 -!- cheater has quit (Ping timeout: 268 seconds).
15:00:12  Greetings! Hearty salutations!
15:01:30  nooga: Did you ever expand on that nugget of wisdom wrt. Mercury being "sad"
15:01:52  It's not loved, despite its brilliance
15:02:04  Thousands of people love C++
15:02:10  Thousands
15:02:16  Bit low don't you think
15:03:27  But who loves Mercury?
15:03:36  Confused astronomers
15:04:51  elliott: sad -> not amusing
15:05:02  nooga: Which means what
15:05:05  Not an esolang?
15:05:22  I just found myself watching the House of Commons live
15:05:39  And thought "I've been there! Those seats are comfy"
15:05:45  elliott: which means that it looks like a mix of sad prolog with haskell
15:05:56  How exactly do you define amusing
15:06:14 -!- TeruFSX2 has quit (Read error: Connection reset by peer).
15:06:37  I have to say, watching the house of commons live is a good cure for insomnia
15:07:22  not amusing -> i don't think it's bad but somehow i don't find a use for it and it's not interesting enough to play with it
15:08:18  Now that we've successfully unpacked your thought, I'll say it's sad
15:08:52  what's sad?
15:09:12  Your thought.
15:09:13  The Titanic
15:09:30  elliott: okay
15:09:35  brb, feeding time
15:10:14  I would learn Mercury if I wasn't currently procrastinating learning Haskell
15:12:06 -!- Phantom_Hoover has joined.
15:12:56  I would fly to Mercury if I wasn't currently procrastinating flying to Mars.
15:13:40 -!- nooga has quit (Ping timeout: 240 seconds).
15:18:52  modifyIPList                   Shiro.Monad           18.4   31.5
15:18:58  How the HELL can this take twenty percent of execution time.
15:19:12  modifyIPList :: (([IP],[IP]) -> ([IP],[IP])) -> Shiro ()
15:19:12  modifyIPList f = modify $ \st -> st{ ipList = f (ipList st) }
15:19:34  Oh wait, stack modifications happen in there :P
15:22:03   What is it with having to specify X = X.Next
15:22:26  elliott: Just because that's how it works with many operators doesn't mean you want that to be enforced.
15:22:40  Fair enough
15:22:49  It might want to be default though :P
15:23:35  Currently my grammar syntax has no way to delete, so default = forced X-P
15:29:35 -!- zid has left.
15:51:53 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
15:59:48 -!- cheater has joined.
15:59:52  Deewiant: What's with you having one fungespace per IO
15:59:53  IP
16:00:15  Eh?
16:00:27  Oh, wait, never mind
16:00:28  alias .FungeSpace!(dim, befunge93) FungeSpace;
16:00:29  deceived me
16:01:05  I would like to see something self-modifying to the level of Befunge designed to be easy to compile
16:01:31 -!- cheater has quit (Client Quit).
16:01:49 -!- cheater has joined.
16:02:25 -!- cheater has quit (Client Quit).
16:03:16 -!- cheater has joined.
16:03:30  Deewiant: Holy shit, slowdown stack overflows
16:03:42  ...and then doesn't the next time
16:03:47  And then does
16:04:16 -!- pikhq_ has joined.
16:06:40  Deewiant: How random is slowdown exactly
16:06:55  The location is random, nothing else
16:06:59 -!- pikhq has quit (Ping timeout: 260 seconds).
16:07:18  Deewiant: Right, so it could be right next to it or on the other side of the world :)
16:07:23  That stack overflow sure is worrying though
16:07:36  Oh what the heck
16:07:41  The odds are that it's on the other side of the world, of course
16:07:47  hat the fuck just happened
16:07:56  2^32 possible values and "right next to it" is about 1000 of them
16:07:56  Not hat the fuck!
16:08:00  GOOD: u reflects when stack stack has only one stack
16:08:00  GOOD: u with zero count does nothing
16:08:00  GOOD: u with a positive count transfers cells correctly
16:08:00  GOOD: u with a negative count transfers cells correctlyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
16:08:02  yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy[...]
16:08:05  yyyyyyyyyyyyyyyyyyyyyyyy
16:08:07  Yes.
16:08:08  ._.
16:08:08  yyyyyyyyyy.
16:08:12  Noooooooooooooo
16:08:15  CORRECTLYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
16:08:23  Then it just keeps spamming ys forever.
16:10:08  Deewiant: Grmbl, fixing the stack overflow you caused slows down my Mycology performance
16:10:12  Please only write one program, thnx
16:10:23  Too late, sorry :-/
16:11:08  V. disappointed in you.
16:11:16  I'ma implement FING
16:11:18  Seems easy enough
16:11:19  What was the stack overflow
16:11:28  stackDrop :: Int -> Stack -> Stack
16:11:29  stackDrop _ s@(Stack 0 _) = s
16:11:29  stackDrop 0 s = s
16:11:29  stackDrop m (Stack n (_ :- xs)) = stackDrop (m-1) (Stack (n-1) xs)
16:11:38  Where Stack is strict in all fields and I guess that did something? Fucked if I know
16:11:39  Replaced with
16:11:42  stackDrop :: Int -> Stack -> Stack
16:11:42  stackDrop amount (Stack elems xss) = go amount elems xss
16:11:42    where go _ 0 xs = Stack 0 xs
16:11:42          go 0 n xs = Stack n xs
16:11:42          go m n (_ :- xs) = go (m-1) (n-1) xs
16:11:52  It might not actually be slower, I get quite a bit of variance
16:13:10  what proportion of errors in Befunge-98 interps are actually anticipated by Mycology?
16:13:19  half the deviations from expected output aren't BAD: at all but complete nonsense
16:13:29  Surprisingly many
16:13:40  Once I got Mycology actually running, it said BAD about almost every mistake I mdae
16:13:41  made
16:13:48  Apart from concurrent funge shit which just spewed crap
16:13:50  ais523: You just hear more about the nonsense because the BADs are comparatively easy to fix
16:14:00  The BADs were usually really unhelpful messages, though :P
16:14:08  Deewiant: Also because the BADs aren't as entertaining
16:14:13  Correctlyyyyyyyyyyyyyyyyyyy
16:14:19  It's not supposed to tell you what the problem is, just that there is a problem
16:14:54  "Mycology failed. Your interpreter is wrong. Fix it."
16:15:32  Well, with (typically) instruction-level granularity
16:17:05  Woot, I might be able to avoid my global/IP state table at all
16:17:09  And with it all burdensome existentials
16:17:22  How are trefunge programs formatted?
16:17:37  Form feeds
16:17:51  Okay
16:23:30  BAD: after 'X'AZ, X reflected
16:23:30  GOOD: after f7+0Z, A reflects
16:23:31  Huuh
16:27:33 -!- Taneb has quit (Quit: Goodbye).
16:30:03 -!- copumpkin has quit (Ping timeout: 246 seconds).
16:30:28 -!- copumpkin has joined.
16:34:47  Deewiant: Hmm, wrt FING
16:35:12  Deewiant: If an invalid (i.e. out-of-range) sem is popped, should one reflect immediately, or pop all values and /then/ reflect?
16:35:19  Mycology seems to want the latter
16:35:21  Erm
16:35:23  rm
16:35:24  The former
16:35:27  Which is counter-intuitive to me
16:36:06  Shrug, it's what's done
16:36:14  Source :P
16:36:21  I implemented FING last, dude
16:36:25  Fiiiiiiiine
16:36:30  Blame Vorpal/Mike
16:36:42  Vorpal did FING before you? Weird
16:37:01  I was working on CCBI2, not adding fingerprints
16:43:15  GOOD: 'yY reflected
16:43:16  yROMA unloaded.
16:43:16  GOOD: after bc+0Z'V'BZ"ROMA"4), A pushes 10 and B pushes 5
16:43:38  Ugh
16:43:40  That "y" isn't right
16:43:41  :-(
16:43:46  ls
16:43:47  oops
16:44:23  I wonder where the heck that is coming from?
16:44:59  The rest of the output is spotless.
16:49:42 * elliott considers asking, realises Deewiant will tell him to CCBItrace it, considers doing so.
16:52:42 -!- derdon has joined.
17:01:40  Deewiant: Oh, I see why you need to keep the fingerprint with FING
17:01:52  Because if you swap it around, the top fingerprint on the stack could be the wrong one to unload, right?
17:01:57  You want to unload lower down
17:04:16  Err, that doesn't sound right at all
17:04:28  Unloading a fingerprint just pops the semantics
17:04:36  It doesn't care which semantics they are
17:05:08  Uhh, really?
17:05:09  Okay
17:05:13  Why DO you need it then
17:05:58  I'm not sure what you're talking about
17:06:18  Oh hm
17:06:24  struct Semantics {
17:06:24  cell fingerprint;
17:06:24  // Needed for FING/FNGR, since you can't just tell from the instruction
17:06:24  // being executed: 'A' in QWFP might be mapped to 'B' in ARST
17:06:24  char instruction;
17:06:25  }
17:06:29  Yeah, what's that instruction about :P
17:06:41  The comment isn't helpful? :-P
17:06:45  Nope
17:06:46  I want to execute A
17:06:53  Oh, I see
17:06:56  So I check out what fingerprint it is
17:07:01  Doesn't apply to me as I do everything as actions :P
17:07:02  And then what instruction in that fingerprint it is
17:07:06 -!- calamari has joined.
17:07:06  Yep
17:07:24  Pretty distinct problem here though...
17:07:31  If you just store a function pointer, that should be enough for FING
17:07:34  Not sure about FNGR
17:07:42  (Memories point to "no")
17:07:49  I'm changing [(FPIns, Shiro ())] into Shiro [(FPIns, Shiro ())], so that it can create its own mutable variables and maps and the like so that state can stay local
17:08:04  The problem is, how do I know which instructions to unload without needlessly making it create the mutable variables just to throw them away :P
17:08:13  I guess I can assume that it's "free" to do
17:08:15  But it's still kind of lame
17:08:18  Not as lame as keeping two lists, though
17:11:46 -!- zzo38 has joined.
17:13:20 -!- Taneb has joined.
17:14:04  Wow, this is making things so much better.
17:14:55  I may try to create a funge-98 interpreter
17:15:12  Good luck, you'll need it
17:15:37  IN VISUAL BASIC 2005!
17:15:39  Gah, that somehow slowed down my performance somehow
17:15:48  Taneb: I suspect you of underestimating the task
17:16:14  VB2005 is my mother programming language
17:16:36 -!- SgeoISNOWHERE has changed nick to Sgeo.
17:16:44  Also I am mad
17:16:50 -!- pikhq has joined.
17:16:59 -!- pikhq_ has quit (Ping timeout: 260 seconds).
17:18:02  And I would never finish it whatever language I choose
17:18:16  Actually, I'm going to lower my aim a tad
17:18:20  Befunge-93
17:19:24  "Tad"
17:19:27  More like five miles
17:20:45  Wow, that helped
17:21:13  ^source
17:21:14  http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
17:21:36  Got FING, ain't got STRN, SOCK, SCKE or REXP
17:21:38  Let's roll
17:24:59  ais523: thought: Funge-98 isn't so much an esolang as an eso interpretation model
17:25:18  hmm
17:25:23  I mean, it's kind of like running your program as a CA with a bunch of foreign API hooks, kind of like a gigantic event machine, and kind of like machine code except with a really ridiculous code structure
17:25:29  And yet it's all communicating with the same APIs doing the same stuff
17:25:34  I'd say it is an esolang, specifically
17:25:37  Well, yes
17:25:41  But it's more eso in the other aspect
17:25:43  it's just one that happens to be good at linking to existing libraries
17:25:54  I mean, imagine an esolang that's nothing but a set of /really good/ FFIs
17:26:06  if you want to do flow control, you outsource to, say, C or Prolog or something to do your flow control
17:26:13  ais523: well, for a second when thinking about SOCK I thought "oh, I'll have to spawn off threads and all sorts of stuff to avoid blocking the Funge code"
17:26:16  likewise, if you want to do numerical calculations, you FFI to Fortran
17:26:21  I had honestly mistaken Funge for some ridiculous asynchronous event-driven CA
17:26:29  Rather than something being interpreted as an actual sequential language
17:26:34  that's just how insane the model is
17:26:45  Funge is nothing like a CA, anyway
17:26:51  It isn't
17:26:55  But I managed to think it was one for several seconds
17:27:28  sounds like a fun variant
17:31:42  Make the FFI CA esolang.
17:35:18   Blame Vorpal/Mike <-- blame Mike. I asked him iirc.
17:36:36   So I check out what fingerprint it is <-- a possibly simpler solution is to push function pointers
17:36:49  (as you said a bit further down)
17:37:58  Less debuggable, one assumes
17:38:11   Got FING, ain't got STRN, SOCK, SCKE or REXP <-- iirc it also uses TOYS in the code to reload the bot.
17:38:35  elliott: was that last line in reply to function pointers?
17:38:55  Yes
17:39:19  Let's see how much slower this persistent refstore is
17:39:20  if so, not really, in gdb printing out a variable that contains a function pointer will print the nameoffunction+0 iirc
17:39:32  Dude, I mean in his tracer
17:39:35  oh
17:39:36  right
17:39:38  true
17:40:18  elliott: anyway you can see TOYS is loaded only on reloading, and unloaded after. So yeah you need to include that to support the bot fully
17:40:22 -!- a93nadk2m has joined.
17:40:29  Deewiant: Guess who just shaved something like 0.03s off his average runtime by switching from a hyper-optimised mutable hashtable library to a simple IORef containing a persistent IntMap
17:40:33  (see like 178 in fungot)
17:40:34  THIS GUY
17:40:34  Vorpal: mr president, given the astonishing recent growth of india’s economy and its emerging global fnord status, our partnership must now deepen. therefore i can only agree to proposed amendments 4 and 7 is not correct, and if there is one question we disagree on. i am therefore of the utmost importance. hence, it is not a continental practice and by suddenly imposing it we would have been voluntary. this agreement was gree
17:40:52  Still gonna be pretty hard to do global state rewind because it's decentralised, but I'll think of something.
17:41:01  elliott: is that statistically significant?
17:41:03  Aaand there goes a dependency
17:41:07  Vorpal: Nope, which is why it's excellent
17:41:11  XD
17:41:23  It means I can be more functional at no cost
17:41:30  elliott: so as far as you can tell "about the same" (averaged over several runs I hope?)
17:41:41  Woot, I now depend on nothing that isn't in the Haskell Platform I think
17:41:44  Vorpal: Yeah, about the same
17:41:46  Maybe a little better
17:41:51  My runtime fluctuates too much to tell
17:41:55  right
17:42:32 -!- a93nadk2m has left.
17:42:44  I also have no unsafeCoerce or anything now :)
17:42:46  Or existential types
17:42:48  Or anything freaky
17:43:00  elliott: hm I should add support to use AVX somewhere in cfunge. I mean, doing static funge space filling with SSE instructions helped significantly, at least in the version of gcc that was around then, because it didn't auto-vectorise it.
17:43:30  elliott: what integer size are you using?
17:43:51  Vorpal: Thirty-two
17:43:55  (Maximum integer)
17:44:07  XD
17:44:31  1174    Shiro.pristine  haskell=1174
17:44:31  1159    Shiro           haskell=1159
17:44:32  Feels good
17:44:39  And it's quite a bit faster too :P
17:45:41  elliott: 0.03?
17:45:50  No :P
17:46:01  ah
17:46:17  Average Mycology runtime is now between 0.75s and 0.86s.
17:46:20  And I implement FING.
17:46:45  GOOD: put 'foo=bar' with P
17:46:46  BAD: "foo"G failed
17:46:46  Huuh
17:47:28  elliott: FING was easy with the way I did fingerprints. Just had to make a few static functions available outside the fingerprint manager and use them from the FING code
17:47:42  bbl food
17:47:55  http://sprunge.us/eXAX
17:47:59  No outside support required
17:48:12  A bit ugly because my map structure for the FPInses kind of sucks
17:53:41 -!- kwertii has quit (Ping timeout: 276 seconds).
17:59:48 -!- nooga has joined.
18:03:43 -!- kwertii has joined.
18:15:35 -!- ais523 has quit (Ping timeout: 245 seconds).
18:25:00  ?hoogle [a] -> (a,[a])
18:25:01  Data.Char readLitChar :: ReadS Char
18:25:01  Language.Haskell.TH.Ppr split :: Type -> (Type, [Type])
18:25:01  Numeric readFloat :: RealFrac a => ReadS a
18:25:04  hmph :P
18:25:23  oh duh
18:26:41  ?hoogle [herp] -> [derp]
18:26:42  Prelude map :: (a -> b) -> [a] -> [b]
18:26:42  Data.List map :: (a -> b) -> [a] -> [b]
18:26:42  Prelude concatMap :: (a -> [b]) -> [a] -> [b]
18:45:13 -!- oklopol|2 has quit (Read error: Connection reset by peer).
18:51:55 -!- augur has joined.
18:53:11  Deewiant: Do you have docs for NCRS anywhere
18:53:15  Or is NCRS the terrible one, I forget
18:54:29  NCRS is from Jesse van Herk
18:54:50  elliott: http://sprunge.us/ViCQ
18:55:39  Thanks
18:55:47  NCRS is the non-awful one, right
18:56:46  TERM is from RC/Funge-98
19:00:12 * elliott looks at STRN
19:00:13  Oh boy
19:02:18  Hmph, this FING seemingly-error is really worrying
19:07:36 -!- calamari has quit (Quit: Leaving).
19:13:10  ?undo  [(ins, reflect) | ins <- [A .. Z]]
19:13:11  concatMap (\ ins -> [(ins, reflect)]) [A .. Z]
19:13:12  ?. pl undo  [(ins, reflect) | ins <- [A .. Z]]
19:13:12  flip (,) reflect `fmap` [A..Z]
19:13:16  Lame :P
19:13:24  zip [A .. Z] (repeat reflect) is good though
19:13:43  -XTupleSections
19:13:48  map (,reflect) [A..Z]
19:14:09  I don't like tuple sections
19:14:09  Well
19:14:11  I want them to exist
19:14:13  But I don't like using them
19:14:46  Why not :-P
19:15:07  I don't think it is bad. It is good in some cases.
19:15:17  Deewiant: Kinda ugly
19:16:08  You have the series of tuple constructors:  () id (,) (,,) (,,,) (,,,,) (,,,,,) (,,,,,,)
19:16:37  (Of course id is not a constructor but close enough)
19:16:40  Deewiant: BTW, I completely eliminated the hs-boot :P
19:16:50  And indeed all circular dependencies.
19:16:56  How'd you do it
19:17:53  Deewiant: Realised that my Shiro.Utils was actually four functions that should be in Shiro.Interpreter, some functions that should become Shiro.RefStore, and a few little helpers that are at home perfectly in Shiro.MOnad
19:17:53  Monad
19:18:21  So I divided it up, placed a piece of the map in each corner of the globe, and a few hundred years later hired Guybrush Threepwood to clean up my code.
19:18:30  Or I just divided it up and suddenly the circular dependency went away, you decide.
19:18:42  Somehow this has actually sped up runtime.
19:19:06  Fair enough
19:20:34  GOOD: 'yY reflected
19:20:34  yROMA unloaded.
19:20:34  WHYYYYYYYYYYY
19:20:37  YYYYYYYYY
19:20:46  yyyyyyyy
19:20:50  You have a problem with y's
19:20:59  Yeah
19:21:03  But why the hell is it printing one :P
19:21:09  I traced in CCBI, nothing weird at all.
19:21:50  Time to write a tracer into Shiro? ;-)
19:22:01  I had a tracer in Shiro, it just printed out every instruction
19:22:03  Didn't work too well
19:22:18  My BEAUTIFUL DESIGN would of course make a tracer easy, I'm just really lazy
19:22:29  That kind of tracer might be enough for this
19:22:32  It's literally a matter of changing doNextIns :P
19:22:41  Deewiant: It just took way too long to print every instruction
19:22:57 -!- pikhq_ has joined.
19:23:07  But anyway, that'd involve me looking at Mycology source
19:23:15  I'd prefer to just stare at the code until I feel stupid and fix it
19:23:27  I'm pretty sure FING works at least
19:23:36  It's become the simplest possible implementation
19:24:38  http://www.ai-class.com/
19:24:41  ouch
19:24:52  http://www.ai-class.com/media/img/artificial_intelligence_header.jpg how did they find my picture
19:26:42  Your eyes are unhealthily red, you might want to get a doctor to check them out
19:26:51 -!- pikhq has quit (Ping timeout: 264 seconds).
19:31:54  Well, VBefunge-93 is going well
19:33:22  Oh good, I was afraid SOCK was going to be well-documented
19:33:38  :-)
19:34:12  I have absolutely no idea how to implement WIND portably but dammit I'll find a way.
19:34:47  I have this sneaking feeling I'm never going to actually bother with MVRS.
19:36:08  I should really rename my strict-tuples-of-values to something better than Vector, considering the rather popular library named that.
19:36:21  With the data type named that. That I use. In the same few lines as my Vector.
19:38:49  Deewiant: What fingerprints actually have per-IP storage, I haven't found a single one yet
19:38:54  My horizons are unbroadened
19:39:10  MODE
19:39:15  Oh
19:39:22  All the terrible ones that will require reimplementing fucking everything
19:39:23  Just the first that came to mind
19:39:33  IIPC, maybe
19:39:42  TRDS
19:39:44  (Of course)
19:39:45  Ha
19:39:59  Nothing else comes to mind
19:39:59  I can't express how intense my rage is at window-shopping CCBI code leading to me realising it's better-abstracted than Shiro
19:40:02 -!- sllide has joined.
19:40:05  Please tell me the first version was awful
19:40:21  Depends on what abstractions you're talking about :-P
19:40:29  I like how the first version isn't even available any more apparently
19:40:34  Yeah, I lost it
19:40:39  Seriously? :P
19:40:44  Yep
19:40:53  * b609b65 Initial import - 1.0.4a.
19:41:01  I'm sure Vorpal has a copy on DVD 999 out of 999999999999 of month 9
19:41:13  Before that my version control system was "write detailed changelogs, you can reverse the changes based on that"
19:41:25   I'm sure Vorpal has a copy on DVD 999 out of 999999999999 of month 9 <-- of what?
19:41:26  (I'm not kidding, I actually explicitly thought that at some point)
19:41:40  Deewiant: That's what a patch is, so it's not an unreasonable thought
19:41:42  This was before DVCS was used by ~anybody
19:41:51  Deewiant: My VCS is obsessive cp -R Shiro Shiro.whataridiculousdescription
19:41:53  elliott: backups? or what?
19:42:00  And setting up my own SVN was something I knew to be a pain
19:42:09  Shiro/                   Shiro.fpstate/           Shiro.newbutfpclass/     Shiro.newbutoldfpins/    Shiro.newvectoroldstack/ Shiro.nofingerprints/    Shiro.pristine/
19:42:09  Shiro.fpinsmap/          Shiro.lens/              Shiro.newbutnolens/      Shiro.newfungespace/     Shiro.noconcurrency/     Shiro.nomaybet/          Shiro.twodee/
19:42:09  And I didn't grok monotone, which was the only one I had tried
19:42:23  Also Shiro.nomkfingerprint/ when I introduced a whole new function and quickly refactored the fingerprint definitions to us eit
19:42:34  "newbutoldfpins" Me, I...
19:42:41  elliott: you haven't started using a proper vcs?
19:42:52  Vorpal: I can't bring myself to commit FungeSpace.hs, it's too awful
19:42:58  elliott: ...
19:43:03  When I have some kind of new fungespace that isn't terrible it'll go into darcs or git
19:43:10  (Even if it's not the Super Perfect one)
19:43:13  But seriously, that file is so awful
19:43:16  I don't want a permanent record of it
19:43:23  My twitter following to followers ratio is 4
19:43:33  Which things in Haskell should be defined using Kan extensions? Is there Kan extensions in Haskell?
19:43:33  Deewiant: if you want I *may* have a copy of ccbi1 on my hdd somewhere still. Could try to dig it out for archival purposes
19:43:56  Vorpal: I would enjoy that, for feeling-better-about-my-code purpose
19:43:56  elliott: anyway I stopped backing up to DVD some time ago. I use an external HDD these days.
19:43:56  s
19:44:24  I'm so tempted to immediately drop the current codebase and write Shiro 2 in Mercury for no good reason at all
19:44:44  I spent inordinate amounts of effort on giving love to neat languages
19:44:58  elliott: Mercury? Is it a language?
19:45:08  or the VCS, doesn't make much sense as that
19:45:08  No, I'm just planning a suicide.
19:45:15  The VCS is Mercurial.
19:45:29  oh hey I found pikhq's ski in C
19:45:37  no sign of CCBI1 yet
19:45:52  Mercury is that pure Prolog you might have heard about (no cut or IO outside of uniqueness-type based IO system); it has higher-order predicates, type classes, blah blah blah. It's basically Prolog if it was designed by Haskell/Clean freaks.
19:45:59  Vorpal: Oh, that thing.
19:46:03  Also it has a compiler that produces really efficient code.
19:46:05  Inexplicably.
19:46:06  That was some fun strangeness.
19:46:16  pikhq_: in case you lost it I have a copy that may or may not be the last version
19:46:18  Vorpal: If you have pre-1.0.4a versions I'd be glad to have 'em
19:46:20  And it does things like compile semidet finite predicates into hash tables if it thinks it'll help.
19:46:35  Well, I seem to have a copy that doesn't work.
19:46:38  Deewiant: You realise that by first version I just mean anything pre-two right :P
19:46:41  Deewiant: hm. Let me look around. Was that before or after I started cfunge?
19:46:47  if before I can say I definitely do not have it
19:46:54  This was written before I actually used version control.
19:46:55  Just realised you probably didn't realise that, so
19:47:04  So, I'd definitely like a copy.
19:47:15  pikhq_: hm sec, *navigates back*
19:47:37  pikhq_: wait a second, that i isn't THAT old. It is the lambda in C stuff, with ski
19:47:39  Vorpal: March 2008 and earlier
19:47:45  Deewiant: not sure. Will look
19:48:01  $ ls ski
19:48:01  a.out  calc.lazy  closure.h  lambda.h  main.c  primes.lazy  rot13.lazy  sort.lazy  test.lazy  testing.lazy  thunk.h  xgc.c  xgc.h
19:48:07  pikhq_: there is that. Anything interesting?
19:48:15  I have a tarball for it still around
19:49:44 -!- pikhq has joined.
19:49:58  Deewiant: which file of the source do you keep the version number in
19:50:02   pikhq_: hm sec, *navigates back*
19:50:02   pikhq_: wait a second, that i isn't THAT old. It is the lambda in C stuff, with ski
19:50:04  pikhq_: ^
19:50:07   $ ls ski
19:50:07   a.out  calc.lazy  closure.h  lambda.h  main.c  primes.lazy  rot13.lazy  sort.lazy  test.lazy  testing.lazy  thunk.h  xgc.c  xgc.h
19:50:08  that too
19:50:26  Vorpal: changelog.txt
19:50:31  Deewiant: it is 1.0.13 the one I found.
19:50:32  Vorpal: Yes, I still don't have a functioning version.
19:50:45  pikhq: will upload it somewhere. Is filebin still gone?
19:50:56  Vorpal: About 5 months too new, damn :-P
19:51:03  Deewiant: ah
19:51:03  Seems to be.
19:51:16  it was gone for a bit I think?
19:51:22  Could just hand me the .c and .h stuff.
19:51:25  filebin.ca times out for me. Will scp it somewher
19:51:28  Deewiant: But seriously, do you have any one point x version :P
19:51:38  I thought you meant you lost literally all of them.
19:51:42  elliott: 1.0.4a and up is in git
19:51:49  Which git
19:51:58  pikhq: http://whotookspaz.org/~anmaster/tmp/ski.tar.gz
19:52:02  ~/programming/projects/ccbi/ccbi
19:52:06  Pro
19:52:15  Deewiant: I like the double ccbi there
19:52:38 -!- pikhq_ has quit (Ping timeout: 276 seconds).
19:52:47  Deewiant: I might have had older versions around, but I remember replacing my copy with newer ones when you told me you updated.
19:53:12  There's some vaguely funge-related stuff of mine in the single ccbi, haven't bothered to clean it up
19:53:14  Seems I did a lot of stupid micro-optimisation on the copy I have for god-knows-what-reason.
19:53:29  pikhq: what about the one I uploaded?
19:53:42  pikhq: anyway I can't believe you didn't use version control...
19:54:12  pikhq: I mean I do bzr init even when writing a lab report in LaTeX. I'm paranoid about being able to go back to earlier versions like that.
19:54:30  Paranoid internet nerd chastises other internet nerd about not using version control system for one-off hacks; internet literally explodes with not giving a shit.
19:54:30  /etc is of course in bzr too
19:54:43  To be fair, I didn't grok version control at the time. I blame CVS.
19:54:56  pikhq: wait what, this was less than a year ago. Come on.
19:55:03  Vorpal: I'm also a lazy bastard.
19:55:15  pikhq used CVS less than a year ago?
19:55:21  yes.... seems so
19:55:23  olsner: No.
19:55:34  olsner: But at the time, my only experience with versioning was CVS.
19:55:39  And I went "Fuck that shit".
19:55:53  well yes. fuck cvs and fuck svn
19:56:06  And fuck bzr and git and hg too
19:57:55  everything sucks, but cvs and svn both suck way more
19:58:06  darcs is kind of cool
19:58:08  elliott: https://github.com/Deewiant/CCBI
19:58:12  which is why no one uses it
19:58:23  oh wait, ais does
19:58:27  Deewiant: BAM ZAP POW
19:58:27  and I do occasionally.
19:58:39  I use darcs when i'm not collaborating and using VCS (never)
19:58:46  Uniquode has commands based on SKI combinatory logic... that operate on IPs
19:59:14  I replaces the IP with itself
19:59:19  Deewiant: Man, when did CCBI two actually come out? I remember this shit happening
19:59:21  Evidently it's 2% Perl
19:59:31  anyone else here want to check if I have an old copy?
19:59:34  elliott: April last year
19:59:49  I actually found the copy in question on a disk image I made from my old hdd when it died
19:59:55  so okay. That means over one year old.
20:00:05  More like 1.8 years or slightly older
20:00:13 -!- derdon has quit (Remote host closed the connection).
20:00:36  Deewiant: Jesus you commit a lot
20:00:39  Are there comma categories in Haskell?
20:00:51  elliott: You should see mushspace
20:01:14  Deewiant: May I interest you in sg, which was originally designed around an editor committing your every single action
20:01:22  No, that's too much
20:01:30 -!- Taneb has quit (Quit: Goodbye).
20:01:33  Deewiant: Nah, but it sorted them under larger commits
20:01:45  You basically just build commits out of larger ones forever
20:01:48  Smaller ones I mean
20:02:08  I can't tell where CCBI two starts in this log
20:02:16  It has tags
20:02:38  Or wait, does the github-copy-pasted push not push tags
20:02:47   Evidently it's 2% Perl <-- hm?
20:02:52  "Switch Tags (0)"
20:02:54  where is that statistic from?
20:02:56  Vorpal: https://github.com/Deewiant/CCBI/graphs/languages
20:03:02  Well, there is PERL
20:03:06  ah
20:04:13  $ git push --all
20:04:13  pikhq: did you do just closures or did you do continuations too? I don't remember
20:04:16  I guess that should do it
20:04:33  Oh right, PERL
20:04:36  What is an archive/puttergetter
20:04:48  elliott: a kind of small steam ship
20:04:49  Deewiant: If it can detect a few lines of perl in a .d file I'm impressed
20:04:53  Ditto
20:05:09  Deewiant: maybe some helper script was in perl at some point?
20:05:15  Thank god, CCBI 1 is almost as messy as shiro
20:05:23  elliott: only almost?
20:05:29  Vorpal: Nope
20:05:34  Vorpal: shiro is pretty fucking messy
20:05:34  elliott: anyway, you learn a lot from your design mistakes.
20:05:43  Shiro isn't really badly designed
20:05:44  It's just a mess
20:05:55  Every individual hideous part fits together beautifully
20:06:25  https://github.com/Deewiant/CCBI/blob/1.0.20/instructions.d
20:06:27  Vorpal: Continuations already exist in POSIX 2001.
20:06:29  I like the alignment, Deewiant
20:06:34  elliott: right. Well I did rewrite large parts of cfunge. I was too lazy to start again from the beginning. But certainly some code does need cleaning up. Mostly i and o code (eww the o code) and some of the stack-stack code
20:06:42  pikhq: ah you used those?
20:06:48  No, I had no need.
20:07:07  Vorpal: Shiro's cleanup needs to be: Fungespace fungespace fungespace; making everything abstract and separate; the end.
20:07:22  pikhq: not really continuations in the sense of call/cc though. Not quite as versatile if you mean setcontext/getcontext. Or do you mean something else I'm not aware of?
20:07:33  Deewiant: Oh my God, you did Minifunge?
20:07:42  Yep
20:07:48  Deewiant: How painful is it
20:07:50  Deewiant: does ccbi2 have minifunge?
20:07:52  No
20:07:53  Nope
20:07:57  Deewiant: why not?
20:08:07  Conflicting standards, haven't got around to it
20:08:20  ah
20:08:22  Vorpal: setcontext et al. is more flexible than you think.
20:08:43  Deewiant: How painful :P
20:08:48  I must implement EVERY FINGERPRINT TOTALLY PORTABLY
20:08:56  I can't remember
20:09:09  With my new system it should be easy, like MVRS
20:09:14  But haven't got around to it so dunno
20:09:23  You do MVRS?
20:09:31  No, haven't got around to that either
20:09:34  lol
20:09:35  Vorpal: Still: no, I didn't do anything further. If you really want lambda-based continuations, just do CPS.
20:09:38  What's your new system
20:09:49  pikhq: hm
20:10:32  pikhq: sadly POSIX.1-2008 removed setcontext et al.
20:10:34  very sad
20:10:54  Yup.
20:10:55  "POSIX.1-2008 removes the specification of getcontext(), citing portability issues, and recommending that applications be rewritten to use POSIX threads instead."
20:11:13  heh, cmake spells endif and else as endif() and else()
20:12:29  olsner: yes cmake is quite terrible. Anyway those are there because originally you had to *repeat the condition from the if() in there*
20:12:35  elliott: FungeMachine instead of globals, essentially
20:12:42  Vorpal: lol
20:12:44  olsner: not repeating it verbatim was a syntax error.
20:13:17  Deewiant: Lol, people who use globals
20:14:13  well cfunge isn't going to do anything but one funge space easily. It is globals. And I know you are going to laugh at the reason. It was faster on 32-bit x86 to not pass around the funge space pointer everywhere. Because 32-bit x86 sucks.
20:14:21  as in statistically significant.
20:14:25  Mycology's up
20:14:38  Deewiant: Whu
20:14:42  Deewiant: new version?
20:14:44  Oh, github
20:14:46  No, hub
20:14:46  ah
20:14:59  Deewiant: Your capitalisation disgusts me to an incomprehensible degree
20:15:07  Tough
20:15:10  It's worse than death
20:15:10  elliott: ?
20:15:36  Fungicide too ([F]ungicide)
20:15:41  2011-02-07    - Make the 1k[ error message not rely on stringmode having
20:15:42                  working spaces.
20:15:45  Was that because of myoutput
20:15:50  Maybe
20:16:32  You should fix the bug where I have a weird extra y output :P
20:16:44  elliott: uh, that is your bug
20:17:02  GOOD: 'yY reflected
20:17:02  yROMA unloaded.
20:17:08  There's no possible way that y could be output; his bug.
20:18:25  /usr/include/x86_64-linux-gnu/sys/ucontext.h:139:5: error: unknown type name ‘stack_t’
20:18:27  [f]ungify
20:18:28  Fuck you GNU.
20:19:04  pikhq: ISTR you'd be the guy to ask: what's the smallest more or less fully functional libc in terms of LOC
20:19:20  Deewiant: Define "fully functional".
20:19:37  The necessities of C99
20:19:41  musl
20:19:50  musl
20:19:52 -!- KingOfKarlsruhe has joined.
20:20:02  dietlibc is probably shorter but dietlibc is so shitty uou have no idea.
20:20:06  Cool, thanks
20:20:11   /usr/include/x86_64-linux-gnu/sys/ucontext.h:139:5: error: unknown type name ‘stack_t’ <-- eh?
20:20:27  Deewiant: P.S. I pioneered miniature Linuxing 'round these parts >:|
20:20:59  Whatever, the GNU complaint just reminded me that he'd been talking about libc's at some point
20:21:07  pikhq: where is stack_t defined?
20:21:12  not in that file certainly
20:21:35  Vorpal: ucontext.h should define stack_t.
20:21:49  pikhq: yeah that file is quite useless
20:22:13  pikhq: it can't possibly be used even.
20:22:31  compiler can't know size of stack_t
20:22:36  pikhq: anyway it is obvious: report the bug
20:22:39  *sigh*
20:22:45  It works with _GNU_SOURCE
20:22:49  pikhq: what
20:23:06  pikhq: why is that
20:23:34  it should work with _POSIX_C_SOURCE=200112L
20:24:52  Yes.
20:25:15  Oh, wait, it needs XOPEN.
20:25:19  ah
20:25:35  well that is less annoying
20:42:57 -!- NihilistDandy has joined.
20:43:42  hi
20:52:43 -!- impomatic has joined.
20:52:52 -!- monqy has joined.
20:59:12 -!- impomatic has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]).
20:59:57 -!- elliott has quit (Ping timeout: 258 seconds).
21:03:46 -!- Taneb has joined.
21:07:38  Man, SMBC really hates people with humanities degrees.
21:09:03 -!- Taneb has quit (Quit: Goodbye).
21:10:24 -!- FireFly has quit (Quit: FireFly).
21:23:28  Who doesn't?
21:37:34  help how do I interrupt an uninterruptable process?
21:37:42  You turn off the computer.
21:37:43  kill kill kill kill kill
21:38:17  seems to be stuck on "encryptfs_init_persistent_file"
21:38:24  that's the waiting channel
21:39:17  gaargh
21:39:26  i want to code something interesting
21:39:55  code something will kill this process plz.
21:40:47  nooga: you could write a nice tutorial, how to write oop code with plain C
21:41:02  s/oop/functional/
21:41:51  no oop
21:42:09  functional
21:42:16  oop is boring
21:42:17  grrrrr!!!!
21:42:19  >_>
21:42:25 * CakeProphet mans the axes and pitchforks
21:46:03 -!- oerjan has joined.
21:55:11 -!- Lymee has quit (Ping timeout: 245 seconds).
21:58:39 * Phantom_Hoover → sleep
21:58:40 -!- Phantom_Hoover has quit (Quit: Leaving).
22:08:27 -!- sllide has quit (Ping timeout: 252 seconds).
22:21:56 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.1/20110830092941]).
22:45:37 -!- augur has quit (Remote host closed the connection).
23:02:21 -!- Patashu has joined.
23:25:27 -!- nooga has quit (Ping timeout: 252 seconds).
23:30:59 -!- azaq23 has quit (Quit: Leaving.).
23:52:36 -!- kwertii has quit (Quit: bye).

2011-09-06:

00:02:26 -!- quintopia has quit (Ping timeout: 240 seconds).
00:07:56 -!- quintopia has joined.
00:07:56 -!- quintopia has quit (Changing host).
00:07:56 -!- quintopia has joined.
00:18:19 -!- Lymee has joined.
00:18:19 -!- Lymee has quit (Changing host).
00:18:19 -!- Lymee has joined.
00:20:18  Why does  :type (>>= either (const mzero) return)  work but when I try to use the "let" command in GHCi it is error?
00:20:48  what is the line producing the error, and the error itself
00:21:46  If I type that without the word ":type" before it, it results in "Ambiguous type variable" error. It does the same if I assign it using let, and even if I do specify the type on there it does the same thing
00:23:02  zzo38: that sounds like the monomorphism restriction
00:23:09  Ambiguous type variable `m0' in the constraints: (MonadPlus m0) arising from a use of `mzero' at :1:33-37 (Monad m0) arising from a use of `return' at :1:40-45 Probable fix: add a type signature that fixes these type variable(s) In the first argument of `const', namely `mzero'
00:23:19  .....
00:23:19  um
00:23:22  hi
00:23:27  :t (>>= either (const mzero) return)
00:23:28  forall (m :: * -> *) a a1. (MonadPlus m) => m (Either a1 a) -> m a
00:23:42  I just benchmarked lua
00:23:49  x^2 takes ~660 cycles
00:23:55  x*x takes ~1680
00:23:55  oerjan: But sometimes resulting from that restriction it says it is monomorphism restriction. But this time it does not say that. I will try it with turning off monomorphism and see if it work
00:23:56  wth
00:24:34  tiffany: Maybe it requires extra cycles retrieving variable "x" and it does not optimize that.
00:25:34 -!- augur has joined.
00:25:41  Yes; it does work if I turn off monomorphism restriction.
00:26:11 -!- ive has joined.
00:26:36  the only time I've had to turn off MR is when I had a configuration module with numbers in it.
00:26:46  as they are not monomorphic by default.
00:27:54  zzo38: i think the monomorphism restriction is particularly annoying when you are using pointfree definitions such as the above
00:28:14  let f x = x >>= either (const mzero) return   would not be hit by it
00:29:10  Well, I am using GHCi; does that make a difference? When writing a code in a .lhs file I will always specify the type in a separate line.
00:29:23  zzo38: maybe the different error message is becaus m0 is a type constructor variable, not a simple type variable which can be defaulted.
00:29:29  *because
00:29:35  (just guessing on that)
00:30:13  zzo38: yes, the monomorphism restriction can be removed in most cases by adding a type signature, or by making a function have explicit arguments.
00:31:24  I always specify a type signature (although there might be some cases in which the definitions are made up by macros or other stuff so that I do not write a type signature), but in GHCi it cannot do that.
00:31:30  zzo38: you _can_ do that with ghci too i think, a let can take a type signature as well
00:31:41  OK
00:32:22  @let test1 = (>>= either (const mzero) return); test1 :: (MonadPlus m) => m (Either a1 a) -> m a
00:32:24   Defined.
00:32:39  hm i guess that does not really prove anything
00:32:41  :t test1
00:32:42  forall (m :: * -> *) a1 a. (MonadPlus m) => m (Either a1 a) -> m a
00:32:55  but that's the syntax anyway
00:32:57  I still like to turn off monomorphism restriction though, since it allows making declarations by macro or Template Haskell or whatever else it is
00:33:13  \/win 4
00:33:32  zzo38: yes, many people think it is annoying and it is often debated.  i think it may even be turned off by default in a future ghc.
00:33:58  oerjan: I don't care since it can still be turned off using -X or a LANGUAGE pragma
00:34:22  Some people might want monomorphism restriction.
00:34:47  yeah
00:41:11 -!- augur has quit (Remote host closed the connection).
00:48:15 -!- pikhq_ has joined.
00:51:23 -!- pikhq has quit (Ping timeout: 258 seconds).
00:57:39 -!- tiffany has changed nick to tiffany|away.
01:37:08 -!- sebbu2 has joined.
01:37:08 -!- sebbu2 has quit (Changing host).
01:37:09 -!- sebbu2 has joined.
01:40:23 -!- sebbu has quit (Ping timeout: 240 seconds).
01:59:30 -!- tswett has joined.
01:59:36  And it's going to have 376 different commands.
01:59:45  Won't that be awesome?
02:00:36  What is it?
02:00:40  Yes, but is the bicycle included?
02:00:45  What will have 374 different commands?
02:01:02  The bicycle won't be included; you'll have to build it yourself.
02:01:12  darn
02:01:19  "It" is Smokefly, that game that's still utterly in the planning stage.
02:01:28  It's, like.
02:01:35 * tswett draws the planning stage, and points at it.
02:01:36  It's here.
02:01:55  even the planning stage is in the planning stage
02:02:12  Any other description  than just those things?
02:02:18  Precisely.  I haven't figured out how I'm going to plan it yet.
02:03:28  > iterate ((`mod`1000).(^2)) 2
02:03:30    [2,4,16,256,536,296,616,456,936,96,216,656,336,896,816,856,736,696,416,56,1...
02:03:45  Okay, okay.  Smokefly.  It's a game where there's you, and there's the world.  You can use materials, tools, and buildings to create other materials, tools, and buildings.
02:04:03  > iterate ((`mod`1000).(^2)) 8
02:04:05    [8,64,96,216,656,336,896,816,856,736,696,416,56,136,496,16,256,536,296,616,...
02:04:19  > iterate ((`mod`1000).(^2)) 32
02:04:21    [32,24,576,776,176,976,576,776,176,976,576,776,176,976,576,776,176,976,576,...
02:05:00  > iterate ((`mod`1000).(^2)) 376
02:05:02    [376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,37...
02:05:14  Yay!
02:05:19  i knew there was something about that number
02:05:37  That's not the thing about it, though.  There's a good reason to have 376 commands.
02:05:50  _two_ good reasons
02:05:57  Right, right.
02:06:07  > 376%4
02:06:09    94 % 1
02:06:17  > 94%2
02:06:19    47 % 1
02:06:42  See?
02:07:16  8 times a prime?
02:07:27  That's a very important prime.
02:07:42  ...ok
02:08:10  It is, you see, the number of printable character keys on a US keyboard.
02:08:35  what.
02:09:20  ~!@#$%^&*()_+`1234567890-=qwertyuiop[]\QWERTYUIOP{}|asdfghjkl;'ASDFGHJKL:"zxcvbnm,./ZXCVBNM<>? disagrees with you
02:09:21  ...it's a conspiracy!
02:09:37  coppro: do you have separate keys for all those?
02:09:50  tswett: keys or key combinations
02:09:57  Keys.
02:10:00  oh
02:10:05  a US keyboard has just over 100
02:10:23  Those are not all printable character keys.
02:10:32  do you mean graphing characters?
02:10:33  F6, for example, is not a printable character.  Nor is tab.
02:10:41  > [n | n<-[0..999], n*n `mod` 1000 == n]
02:10:42    [0,1,376,625]
02:10:49  Granted, the number pad has some extras.
02:10:57  I think F6 might not be a character while Tab is
02:11:26  > [n | n<-[0..9999], n*n `mod` 10000 == n]
02:11:27    [0,1,625,9376]
02:12:38  i guess it's probably obvious if you do (mod 2^k) and (mod 5^k) separately
02:13:44  n*(n-1) === 0 (mod p^k)
02:14:16  => n === 0 or n===1 (mod p^k)
02:16:03  (using that gcd (n,n-1) == 1 and the modulus is a prime power)
02:18:06  so the 8 then, is for combinations of shift/ctrl/alt or the like?
02:18:53  tswett: ^
02:19:06  Yep.
02:19:20  Sgeo: tab is a character, but it's not printable.
02:19:23  For some reason.
02:19:48  it doesn't have a fixed width
02:21:07  > [n | n<-[0..59], n*n `mod` 60 == n] -- i predict 8 elements
02:21:08    [0,1,16,21,25,36,40,45]
02:28:18 -!- Guardric has joined.
02:51:15  Hmm
02:51:22  Isn't \n decimal 10?
02:51:41 * Sgeo figured out why Ctrl-Shift-u-A works
02:51:46  
02:51:49  પ
02:52:06  
02:56:03  Sgeo: istr it may be OS-dependent
02:57:04  also, that it's always one char, even on OS'es that use CRLF
02:57:21  (being converted for text files)
02:59:11  I think \n is always one byte (in C), although it may be converted when reading/writing
03:01:33  !c print("%d\n", '\n'); /* 10 on linux, of course */
03:01:38  Does not compile.
03:01:49  er
03:01:52  !c printf("%d\n", '\n'); /* 10 on linux, of course */
03:01:54  10
03:02:38  \n is always 10
03:02:45  > '\n
03:02:46    :
03:02:46       unexpected end-of-file in string/character literal...
03:02:49  > ord '\n'
03:02:49    10
03:03:10  copumpkin: i vaguely thought old MacOS used 13, or something
03:03:19  > ord '\r'
03:03:19    13
03:04:32  Can a Turing machine's tape be bounded on one end instead of indefinitely extensible in both directions?
03:05:20  Certainly.
03:05:25  there's a 1 to 1 correspondence between the integers and the naturals
03:05:26  so I'd assume so
03:05:40  It can even be Universal with such a tape.
03:06:09  Can the tape also contain only 0s and 1s and still be universal?
03:06:14  yes.
03:06:22  copumpkin: \n is not always 10.
03:06:40  copumpkin: C makes no statement about the character set.
03:06:44  copumpkin: Nor does POSIX.
03:07:18  Of course, in *practice*, nobody uses anything but ASCII supersets.
03:08:13  http://en.wikipedia.org/wiki/Newline#In_programming_languages
03:08:33  The Turing machine Wiki article mentioned that "In some models the tape has a left end marked with a special symbol; the tape extends or is indefinitely extensible to the right" which made me wonder if a "special symbol" was truly necessary.
03:09:52  It's actually perfectly permissible for stdio to do text translation on POSIX, I think.
03:10:21 -!- copumpkin has quit (Ping timeout: 240 seconds).
03:10:46 -!- copumpkin has joined.
03:11:45  Guardric: well brainfuck is essentially a weirdly encoded turing machine, and needs no special symbol, although it may crash if you go off the left end
03:12:38  see boolfuck, which is TC with just 0 and 1
03:12:45  pikhq_: C makes a few statements, namely: 1) NUL is 0. 2) 0-9 are consecutive
03:13:25  coppro: Ah, right.
03:13:28  Yeah, I know about both of those languages, and I actually wrote my own smallfuck interpreter in Java.
03:13:46  smallfuck is not tc though, iirc
03:13:51  coppro: And that there exist certain characters.
03:13:59  The main reason why I'm asking is because I'm interested in how simple you can make a language or machine while still being Turing complete.
03:15:14  oerjan, I believe smallfuck is Turing-complete because I/O can be memory mapped.
03:15:54  Guardric: urk
03:16:27  smallfuck has a limited tape, that's why it's not tc
03:17:24  Ah, I see. Have you heard of BitChanger?
03:20:04  i must have
03:20:27  it did not leave much of an impression
03:21:36  for ultimate simplicity, see Bitwise Cyclic Tag
03:22:00  It combines the > and @ operators to form the } operator
03:22:10  Guardric: I/O is not necessary for Turing completeness.
03:22:17  Brainfuck is TC without . and ,
03:22:25  see also P''
03:27:19  BCT looks very interesting. The esolang article says 0 deletes the leftmost data-bit - is that equivalent to the act of shifting all symbols to the left, causing the leftmost data-bit to be overwritten?
03:29:10  well yes, assuming you delete the last one instead...
03:33:20 -!- MDude has changed nick to MSleep.
03:34:57  Oh, the output of a BCT program is the sequence of deleted bits?
03:34:59  other minimal stuff for which i'm particularly biased: /// (Slashes), Underload (just the :()^ commands), and brainfuck with 3 unbounded cells.
03:35:39  and then there's Iota and Jot
03:35:59  (and SKI calculus in general)
03:36:02  Awesome, what does 3 unbounded cells for brainfuck mean?
03:36:24  that the tape has just 3 cells, but the cell values are unbounded integers
03:36:44  I would really like to learn how Iota and Jot operate, but unfortunately I cannot comprehend the explanations.
03:36:55  i should also mention minsky machines with 2 registers, which inspired it
03:36:56  Is that Turing-complete?
03:37:10  all the things i mentioned now are tc
03:37:50  oh and of course fractran.
03:37:54  That's surprising to me
03:38:37  the 3-cell part?  anyhow the proof is in the Collatz function wiki article
03:39:06  or Iota and Jot?
03:39:20  The 3-cell Turing-complete
03:39:31  What's the difference between Iota and Jot
03:39:43  those are just different encodings of SKI calculus
03:40:15  Do they operate on a tape of binary numbers?
03:40:39  no, they are functions from functions to functions.
03:41:05  or well, what you do is reduce them to minimal form
03:41:53  SKI calculus is again used by encoding lambda calculus in it
03:42:03  How do they compute things then? I thought you need a way to get the output of the calculation
03:42:15  david madore's unlambda page has a nice explanation of stuff
03:42:42  well there are many ways of encoding I/O.  lazy-k has one such.
03:43:15  you encode input as a function, apply the program function to it, and get a function which encodes the output
03:44:12  Strange... I can't even begin to understand how it works
03:45:11  well for the input, it is encoded as a list of bytes terminated by 256 iirc.  and then you need to know how to encode lists, and bytes.
03:45:45  bytes are encoded as "church numerals"
03:46:22  lists are encoded as pairs of first element, then rest of list.  then you need to encode pairs...
03:46:29  but it all bottoms out in the end.
03:46:33  wow
03:50:11  What do you think is the most minimalistic of these languages? (brainfuck, BCT, Iota, Jot, Underload...)
03:50:23  Depends how you define minimalistic
03:50:34  But probably iota or jot
03:50:39  Since they have 1-2 instructions
03:53:15  /// also needs just 2 ;)
03:54:54  Is it possible to have a Turing-complete machine which operates on a left-bounded binary tape with memory mapped I/O and instructions?
03:55:39  Where output is merely the tape's contents after the machine has terminated
03:55:48  almost certainly.  there might even be one already in our Category:Brainfuck derivatives
03:56:00  oh wait
03:56:20  I've been looking around for days and the closest I've come is BitChanger, and now perhaps BCT
03:56:30  Guardric: um, by memory mapped, you mean that input is just the initial tape, and output is just the final tape?
03:56:54  i think you have just described the usual turing machine model.
03:56:54  Yes, and the instructions are also on the tape initially
03:57:02  really?
03:57:05  oh instructions...
03:57:25  well, you can do that too, it's called a universal turing machine
03:58:02  (you have a turing machine which interprets the beginning of its tape as the instructions for any other turing machine)
03:58:54  That sounds right, sweet
03:59:13  > filterM (const [True, False]) "rain "
03:59:14    ["rain ","rain","rai ","rai","ran ","ran","ra ","ra","rin ","rin","ri ","ri...
03:59:28  > filterM (const [True, False]) "rain"
03:59:28    ["rain","rai","ran","ra","rin","ri","rn","r","ain","ai","an","a","in","i","...
03:59:48  I love that little trick.
04:00:35  oerjan, I have a hard time fully understanding how the Universal Turing machine works from Wikipedia's article
04:00:46  It's mainly the action table that trips me up
04:01:03  it's easy to understand that it CAN work - look at eval() in python for instance
04:02:42  !perl /(?{`perl -e "eval {print 2}"`})/  #wheeee
04:03:00  !sh perl -v
04:03:09  hmm
04:04:06  Guardric: it's a rather complicated thing, i'd not worry about not understanding it.  but it's essentially an interpreter written in the language of turing machines
04:04:31  I'm guessing there's no perl in the egobot sandbox.
04:04:49  !perl print "oh?"
04:04:50  oh?
04:05:00  I mean from bash.
04:05:09  !sh which perl
04:05:10  ​/usr/bin/perl
04:05:16  ah nevermind I see.
04:05:17  tsk tsk
04:05:25  !perl /(?{print `perl -e "eval {print 2}"`})/  #wheeee
04:05:26  2
04:05:41  oerjan, what about a regular Turing machine? What's the difference between the two?
04:06:15  I believe they are the same thing, but the universal Turing machine is just a formalism to describe a particular kind of turing machine?
04:06:25  Guardric: a regular turing machine has an arbitrary instruction set, while a universal one has an instruction set that allows it to simulate any other turing machine
04:06:31  a univeral turing machine is just a specifically coded turing machine
04:07:02  by "instruction set", i mean the same thing as an "action table"
04:07:36  Hmm, I don't understand action tables, and what is meant by states
04:07:53  A state determines your current behaviour and which states you'll transistion into next based on what you see
04:07:55  I understand how languages like brainfuck work, but I guess they're a far cry from Turing machines
04:08:05  not really.
04:08:06  Guardric: a turing machine has a head, which is in a state, and at a position of the tape
04:08:52  for each possible state, and each possible symbol on the tape, the action table tells the TM what to do next
04:09:24  the action table + state is basically equivalent to bf program + position in program
04:09:43  so there are (# of states) * (# of possible symbols) entries in the action table?
04:09:51  yep
04:10:24  cartesian product, bitches.
04:10:31  represent.
04:10:54  the equivalence is not _entirely_ two-way, but you can convert a bf program with bounded cell size into a turing machine action table
04:11:44  except output is meaningless for a turing machine, I believe.
04:11:48  one state per program position, one symbol per cell possibility
04:11:56  ah yes.  ignore . and ,
04:12:26  So the bf program pointer and cell pointer define the state?
04:13:21  and the state of every cell
04:13:30  no, the cell pointer is different, that corresponds to tape position
04:13:40  Wait, I mean: Does (current program command + current cell value) = state?
04:13:43  which is basically exactly the same thing for bf as for tm's
04:13:52  no, just current program command
04:14:41  Ugh, sorry I'm not getting this >.<
04:14:48  current program command, current cell value, current cell pointer  vs. current state, current tape symbol, current tape position
04:15:48  Well, a bf interpreter knows what to do next if you give it the current command and current tape symbol, right?
04:16:06  yes
04:16:07  yup. it just looks at what the symbol is (and the contents under the tape pointer)
04:16:13  and it's a trivial decision
04:16:48 -!- oklopol has joined.
04:17:16  OK cool, let me guess what a smallfuck (binary tape) action table would look like...
04:18:03 -!- CakeProphet has quit (Ping timeout: 252 seconds).
04:18:39  (Command, current tape symbol) Action
04:18:53  (>, irrelevant) Move cell pointer right
04:19:00  (<, irrelevant) Move cell pointer left
04:19:10  (*, irrelevant) Flip bit
04:19:21  Guardric: note that for a turing machine the action includes what state to go to next
04:19:30  which you'll need for [ and ]
04:19:49  * does care about the cell's letter, it has to turn 0 to 1 and 1 to 0
04:19:53  ([, 0) Jump past matching ] if current cell is 0
04:20:20  ([, 1) Do nothing, meaning just move to the next instruction
04:20:30  (], 0) Do nothing
04:20:37  (], 1) Jump back to matching [
04:21:02  Guardric: also the action table needs to have different entries for identical commands at different points in the bf program
04:21:19  really? how would that work?
04:21:35  What do you mean by different points in the bf program
04:21:47  encode every byte of the brainfuck derivative program as a state from 1 to length
04:21:52  every state points towards the next
04:22:01  EXCEPT ]s which point towards the next OR their corresponding ['s number
04:23:40  I'm looking at the Universal Turing machine Wiki page, " If we denote by (m, n) the class of UTMs with m states and n symbols the following tuples have been found: (15, 2), (9, 3), (6, 4), (5, 5), (4, 6), (3, 9), and (2, 18)."
04:24:05  If I desire a binary tape, that means 15 states are needed?
04:24:35  Guardric: look at the Turing machine page instead, that universal page assumes you already know it
04:25:12  oh hm
04:25:47 -!- Taneb|Kindle has joined.
04:25:51  Guardric: probably
04:25:56  Hello
04:26:13  I am kindled again
04:26:22  hi i thought you'd finished your vacation
04:26:49  Yeah but it is early and I don't wat to turn on th computer
04:27:09  Because it is next to my parents' room
04:27:21  Hmm, so if you have @<>[] commands, you need 7 states? 1 for each @<> and 2 for [ and ]?
04:27:32  And my laptop is out of action
04:27:44  Guardric: i told you, you need one state for each position in the program
04:28:05  So if the program is 300 commands long, you need 300 states?
04:28:11  yep
04:28:21  although you can probably compress it a bit
04:28:27  What are we talking about?
04:28:41  since a tm can do things in 1 step that a bf program needs several for
04:28:43  what if the machine doesn't know how long the program is initially?
04:29:14  Guardric: oh the _universal_ tm does not have states dependent on the bf program
04:29:39  a tm encoded directly from the bf program would
04:29:42  think about how the java virtual machine runs a java program without being coded for it
04:31:43  the universal tm would need to encode the states of the tm it simulates in the tape instead
04:32:25  I'm so confused...
04:32:48  Guardric: a universal tm is essentially an interpreter for tm's
04:33:09  Written as a Tm
04:33:15  Heh, I don't understand that at all =(
04:33:17  like a java interpreter in java would interpret java programs
04:33:31  Guardric: do you understand how interpreters work, in general?
04:33:50  I'd like to think I do, I've written a smallfuck interpreter in Java today
04:34:06  now let's say you were writing a java interpreter in java
04:36:04  let's say it had a class F, and that the program you wanted to run _also_ had a class F.
04:36:43  then you wouldn't want to confuse them.  so you would implement the class F in the program you run as something completely different from your original class F.
04:37:22  in the same way, when a universal turing machine interprets a state in the tm it simulates, it would not want to confuse it with its own states.
04:37:49  it would represent it as something on the tape instead
04:38:20  (since, apart from its states which it needs to use for its own purposes, the tape is the only place it can store things)
04:40:04  I really appreciate you explaining so much for me, but I'm sorry to say that I just don't get it. Maybe if we start from a bf or sf perspective, and work from there?
04:40:09  I think the question I need to ask is: Is is possible to encode a bf or sf program on the tape?
04:40:18  certainly
04:40:33  in fact if you have 9 symbols, it's quite easy :P
04:40:39  (1 extra to mark the end)
04:41:25  OK, let's consider a bf machine like so: the first cell of the tape is initially set to n which is the length of the bf program to be executed
04:41:55  why not just encode the whole program in that first cell?
04:42:04  Guardric: er, for turing machines you only a _finite_ set of symbols
04:42:10  *you have
04:42:22  you cannot encode an arbitrary length in a single cell then
04:42:59  you could write the length in the initial cells in binary, though
04:43:00  my noob sense is tingling
04:43:00  Then cells 2 onward contain the program you wish to execute (cell #2 to 2 + n I think)
04:43:23 * oklopol runs away from angry swat
04:43:33  Guardric: i think it would be easier to have just an end marker, no need to store the length
04:44:24  OK then, say the commands +-<>[] are encoded as the numbers 1 through 6, and the end of the program is marked by a 0
04:44:39  yeah
04:44:59  Fun fact: there is a countably infinite number of well-defined algorithms
04:44:59 -!- CakeProphet has joined.
04:44:59 -!- CakeProphet has quit (Changing host).
04:44:59 -!- CakeProphet has joined.
04:45:00  After that 0 comes input, the end of which is also marked by a 0
04:45:13  Taneb|Kindle: did you know 1+2=3?
04:45:26  Guardric: sounds good
04:45:53  oklopol:I have added that one to my list
04:46:00  except what if input has 0's :O
04:46:03  so the value in an input cell can be in the range 1 to # of symbols
04:46:17  OH NO
04:46:23  Where # is finite
04:46:33  Yes, # of symbols is finite
04:46:34  oklopol: well bf often does eof=0 anyway
04:46:41  oerjan: nooooooo
04:47:04  Now, after this second 0 is free-roam area for the machine to do its work
04:47:15  oerjan, I think I am in need of a swat but I cannot remember why
04:47:22  if it's a ubf, i would'be thought there are a constant 256 symbols
04:48:29  Not necassarily
04:48:50  What would the tape look like if I want the program to be "+>+" and the input to be null and the output to be "11"?
04:48:56  yes necessarily
04:49:35  1 4 1 0 0
04:49:51  There is a minimum of two oklpopol
04:49:57  why are you spoonfeeding him
04:50:13  oh hm
04:50:21  oerjan, precisely what I was thinking. Now, could you take me through the execution steps?
04:50:35  you can't execute yet
04:50:43  Do you know how to invent Golf-Haskell?
04:50:46  Because spoonfeed is the longest word in the english language with all its letters in reverse alphabetical order
04:50:52  you don't know where the head is
04:50:54  Guardric: there needs to be some temporary storage as well
04:51:08  oerjan, what do you mean?
04:51:37  Guardric: or wait hm maybe not
04:51:52  Taneb|Kindle: are you sure
04:52:05  Taneb|Kindle: O, I didn't notice that. But now I can see it is in fact in reverse alphabetical order
04:52:08  fairly confident
04:52:27  It is nine letter long but I do not know if there is longer word having that property.
04:52:32  Guardric: first i would shift every right so there is room to put markers on the tape for current bf program position and current bf tape position
04:52:37  *everything
04:52:50  GWR said so
04:52:56  oerjan, I understand
04:53:17  oerjan, let's say the tape starts out that way, 0014100
04:54:05  you only need one zero
04:54:11  in the beginning
04:54:27  oklopol: probably
04:54:47  hmm well true, i'm not sure
04:55:08  better have some elbow room, since bf is insane
04:55:29  although you could also use the zeros after the tape...
04:55:58  fastest eva
04:56:35  I wonder if Uniquode as-is is Turing complete
04:56:44  oerjan, if the number of symbols is finite, would that mean that the amount of accessible cells is finite?
04:56:54  Guardric: no.
04:56:58  [>] will eventually reach every cell
04:57:21  yeah right
04:57:31  [>+]
04:57:35  no
04:57:41  noobs
04:57:44  :(
04:57:45  i'm gonna go
04:57:56  :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
04:58:26  but if you use the first cell to hold the value of the current cell pointer...?
04:58:33  Patashu yours would stop on the first zero cell
04:58:35  Guardric: no you don't.
04:58:38  shh
04:58:42  Guardric: don't do that
04:58:55  you use a 0 _in_ the tape at the spot for the current cell pointer
04:58:56  not in bf
04:59:13  and then similarly as with input, add 1 to the actual cell values
04:59:58  wait what?
05:00:18 -!- Taneb|Kindle has quit (Quit: Kindle browser needs multiple tabs).
05:00:19  Guardric: you said input could be from 1 to max symbols
05:00:31  so it's reasonable to encode bf tape the same way
05:00:33  Insert a 0 after the current command cell?
05:01:40  oerjan, I think I'm getting what you're saying... Keep going with the execution
05:01:56  so first you'd shift everything over two cells?
05:02:06  Guardric: 01410000.  the first 0 is the initial bf program pointer, the second is end of program, the third is end of input, the fourth is current bf tape spot, the fifth is end of bf tape so far
05:02:36  i think that should be enough room for things
05:02:44 -!- ive has quit (Quit: leaving).
05:03:25  so we start at the first 0.  go right, look at the first command.  it's a +.
05:04:13  turn it into 0.  go left, turn that into 1 (+) instead.
05:05:09  10410000 and we still need to actually _perform_ the +.  go right to the fourth 0, which represents the bf tape pointer.
05:06:38  go right, note there is a 0 there too, representing end of tape.  to prolong the tape: turn that into 2, go right beyond tape, make a 0.
05:06:51  104100020
05:07:07  (the 2 represents a bf 1 cell)
05:07:32  go left again to the first 0.  you are now ready to perform another command.
05:08:11  as you can see this is verbose, even though i've already summarized many steps of seeking to 0's
05:08:15 -!- darth has joined.
05:09:04 -!- darth has left.
05:09:25  for the 4 (>) instruction we again swap it with the previous 0, seek to the fourth 0, and now swap _that_ with the 2.
05:09:43  140100200
05:10:31  then go back to the first 0 again.  the final 1 (+) proceeds much like the first and we end up with 141002020.
05:10:52  at which point we detect that the first 0 has reached the second, so the program ends.
05:11:14 -!- Guardric has quit (*.net *.split).
05:11:14 -!- olsner has quit (*.net *.split).
05:11:23  gah
05:11:27 -!- Guardric has joined.
05:11:31  typical :P
05:11:34  oh
05:11:36  What just happened...
05:11:45  Guardric: what was the last line you saw?
05:11:46  I got disconnected for some reason
05:11:59  go left again to the first 0.  you are now ready to perform another command.
05:12:04  argh
05:12:24   as you can see this is verbose, even though i've already summarized many steps of seeking to 0's
05:12:24  * darth (631fe5bc@gateway/web/freenode/ip.99.31.229.188) has joined #esoteric
05:12:24  * darth (631fe5bc@gateway/web/freenode/ip.99.31.229.188) has left #esoteric
05:12:24   for the 4 (>) instruction we again swap it with the previous 0, seek to the fourth 0, and now swap _that_ with the 2.
05:12:24   140100200
05:12:26   then go back to the first 0 again.  the final 1 (+) proceeds much like the first and we end up with 141002020.
05:12:29   at which point we detect that the first 0 has reached the second, so the program ends.
05:12:31  * Guardric has quit (*.net *.split)
05:12:33  * olsner has quit (*.net *.split)
05:12:48 * Sgeo feels no guilt
05:12:56 -!- olsner has joined.
05:13:04  Guardric: on irc, netsplits happen, that's just life.
05:13:46  Ah ok, well thank you very much for stepping through that simple program
05:14:34  Guardric: this should work nicely for +-<>.  i think it _may_ be possible to use it for [] as well, but it needs some thought for the [] matching seeking
05:14:51  Out of curiosity, how would this work with a binary tape? You would no longer be able to encode integers in a single cell
05:15:10  Guardric: well as i said a tm has finite number of symbols anyway
05:15:52  but in any case, if you want to simulate 256 symbols with a binary tm, just write them down in binary
05:16:37  tm's actually handle that easier than bf, since they can always remember which bit they're at
05:18:14  if you _do_ want unbounded cells, then you need to find some way to encode them.  the simplest is unary, just do 0's separated by number of 1's.  this does mean you may have to shift the entire tape to increment/decrement things, though
05:19:01  Whoa
05:20:24  but having to shift the entire tape to handle arbitrary data is a known problem for bf with bounded cells anyway
05:20:36  (when programming _in_ bf)
05:21:36  Gotcha
05:24:40 -!- Taneb has joined.
05:24:52  Hello
05:26:27  Would it be incorrect to understand a von Neumman machine as a combination of a quine and a self interpreter?
05:27:09  sounds about right
05:27:19  applies to life in general...
05:38:51  Life's programmer is horrible. I mean, it uses a cheating quine! And that's horrible!
05:39:25  what, cheating?
05:40:43  Why does Haskell sometimes change the type of a function I have defined and specified the type?
05:40:55  !userinterps
05:40:55  ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph gregor hello id insanetemp jethro kraut lperl lsh map num numberwang ook pansy pi pikhq pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez wc yodawg
05:41:12  !svedeesh Wow today is a lovely day.
05:41:12  Fuu toodey is a looffely dey.  Bork Bork Bork!  Bork Bork Bork!  Bork Bork Bork!
05:41:25  zzo38: how so?
05:41:26  oerjan, thanks for all your help, I will be back tomorrow probably =)
05:41:51  you're welcome :)
05:41:55 -!- Guardric has quit (Quit: Leaving).
05:42:07  Something else is also wrong; perhaps I am doing something wrong.
05:42:39  I tried to define "instance Ord t => MonadX Set t" but it says it cannot deduce (Ord b)
05:43:06  hm, needs more context
05:44:00  Don't you need a ->?
05:44:08  i would guess you are somehow mixing MonadX Set t 's with MonadX Set b
05:44:14  I put:  bindX :: (MonadX m b, MonadX m (m a), MonadX m a) => m b -> (b -> m a) -> m a; bindX x f = joinX (fmapX f x);  but somehow it changed the type to   Monad m => m b -> (b -> m a) -> m a  but it seems it won't do that if there is more than one instance, so I guess it is OK
05:44:32  Taneb: not if MonadX is a multiparameter typeclass
05:44:51  I have much to learn
05:45:00  oerjan: The error is on this definition:   fmapX = Data.Set.map;   (it doesn't mention "b" at all.)
05:46:12  zzo38: does your MonadX have any functional dependency from Set to t?  otherwise it might not know that you are using it at type t
05:46:34  O, that is what is wrong. How do you make functional dependency?
05:46:42  What does functional dependency mean?
05:46:51  class MonadX m t | m -> t where
05:48:05  No, I still get the same problem, even after I added the functional dependency and the LANGUAGE pragmas FunctionalDependencies and UndecidableInstances.
05:48:07  er, m might not be the best letter there, but anyhow.
05:48:25  What does functional dependencies means anyways?
05:48:49  oerjan: Whatever; as long as it is not the same as the other letter it should work
05:50:59  zzo38: normally you cannot deduce from an instance MonadX A B  that there is not a different instance MonadX A C, which leads to problems selecting an instance if your function or similar only uses the A type
05:51:26  But the "B" in this example is a variable.
05:52:05  yes, but the point is that b could be _any_ type that happened to have such an instance
05:52:42  and without a functional dependency it cannot deduce that it's the same as you want
05:53:17  But the same error even with functional dependency
05:53:34  oh btw i see that you cannot use a f.d. on MonadX since you _do_ want to use it with more than one b per m
05:53:51  Yes
05:54:17  wait you said it changed the type to Monad m => m b -> (b -> m a) -> m a
05:54:29  that's weird, must be something different
05:54:38  hm...
05:54:49  I think the reason it doesn't work is that it ignores constraints on datatype declarations. I read somewhere that it does that.
05:55:03  zzo38: do you happen to have an instance Monad m => MonadX m b  ? that would mess up things
05:55:27  and perhaps in that way
05:55:28  Going to learn some more Haskell
05:55:35  Cos I is Haskell newb
05:55:48  oerjan: Yes I do; but it only changes the type to that if that is the *only* instance. Deleting that instance does not get rid of the (Ord b) error though.
05:55:49  how much do you know
05:56:13  I'mupt to guards in LYAH
05:57:12  Actually I am just past tha
05:57:25  I am up to where IIRC
05:57:30  I wrote the Constantinople implementation in Haskell; and you can print it out if you have TeX.
05:57:53  It isn't best because it is first Haskell program I wrote.
05:58:06  zzo38: you cannot use such an instance unless you have OverlappingInstances set, i believe.
05:59:04  Some things in there could been improved, and I think the "Pointer" type is really ungeneralization of lens; lens is more generalized and does more things.
05:59:55  (I didn't know about lenses at the time I wrote that program.)
06:00:08  OK, I will try OverlappingInstances
06:00:18  :t Data.Set.map
06:00:19  forall a b. (Ord a, Ord b) => (a -> b) -> S.Set a -> S.Set b
06:00:27  No, it is still the same error.
06:00:42  zzo38: it's probably that b ^ it cannot deduce the Ord for
06:02:01  But I thought there is an instance for Ord x => Ord (Set x)
06:02:39  or wait hm, there's a b on your bindX too.  i'm confused.
06:05:38  > S.map
06:05:39    Overlapping instances for GHC.Show.Show
06:05:40                               ((a ->...
06:05:53  zzo38: oh and yes it ignores constraints on datatype declarations, although it does better in some ways if you use GADT syntax instead, iirc
06:06:03  > S.map (\x -> floor $ x / 2) (S.Set [1,2,3,4,5,6])
06:06:04    Not in scope: data constructor `S.Set'
06:06:15  although that has its own subtleties
06:07:27  > S.map (\x -> floor $ x / 2) (S.fromList [1,2,3,4,5,6])
06:07:29    fromList [0,1,2,3]
06:08:00  Woops!
06:08:06  :t div --also this
06:08:08  forall a. (Integral a) => a -> a -> a
06:08:54  > S.map $ floor . div 2 $ S.fromList [0..6]
06:08:56    No instance for (GHC.Real.RealFrac (Data.Set.Set t))
06:08:56     arising from a use ...
06:09:03  > S.map $ floor . (flip div) 2 $ S.fromList [0..6]
06:09:04    No instance for (GHC.Real.RealFrac (Data.Set.Set t))
06:09:04     arising from a use ...
06:09:18  > S.map (floor . /2) $ S.fromList [0..6]
06:09:19    : parse error on input `/'
06:09:23  > S.map (floor . (/2)) $ S.fromList [0..6]
06:09:25  > S.map (`div` 2) $ S.fromList [0..6] -- cough
06:09:26    fromList [0,1,2,3]
06:09:27    fromList [0,1,2,3]
06:09:33  Oh right
06:09:36 * Lymee facepalm
06:09:40  > S.map (floor . (/2)) $ S.fromList [0..]
06:09:41  WEEEE
06:09:44    mueval-core: Time limit exceeded
06:10:04  not overly lazy, that
06:10:22  i think it may be a tree structure, possibly
06:10:39  it is iirc
06:10:45  On to recursion
06:11:03  Taneb: but first, recursion!
06:12:24  oerjan: bindX is not a class member though; the class members are unitX, joinX, and fmapX. bindX is outside.
06:12:35  aha
06:13:05  But that has nothing to do with the problem I have. I think the problem has to do with ignoring constraints on datatype declarations.
06:14:07  Maybe I cannot fix this program until they fix that problem in GHC.
06:14:57  @pl \x foldr (||) $ map (\y -> (x `mod` y) == 0) [2..x]
06:14:58  (line 1, column 11):
06:14:58  unexpected "|"
06:14:58  expecting pattern
06:15:13  @pl \x foldr (---) $ map (\y -> (x `mod` y) == 0) [2..x]
06:15:14  (line 1, column 53):
06:15:14  unexpected end of input
06:15:15  expecting pattern
06:15:18  @pl \x foldr (~) $ map (\y -> (x `mod` y) == 0) [2..x]
06:15:19  (line 1, column 11):
06:15:19  unexpected "~"
06:15:19  expecting pattern
06:15:27  @pl \x -> foldr (||) $ map (\y -> (x `mod` y) == 0) [2..x]
06:15:28  foldr (||) . ap (map . flip flip 0 . ((==) .) . mod) (enumFromTo 2)
06:15:43 -!- GreaseMonkey has joined.
06:16:29  > filter (foldr (||) . ap (map . flip flip 0 . ((==) .) . mod) (enumFromTo 2)) $ [0..500]
06:16:31    Couldn't match expected type `GHC.Bool.Bool'
06:16:31          against inferred type ...
06:16:34  :<
06:17:16  The definitions of unitX and joinX in the instance declaration do not cause the error. Only fmapX is error.
06:17:31 -!- Taneb has quit (Ping timeout: 252 seconds).
06:18:14  > filter (foldr (||) . ap (map . flip flip 0 . ((==) .) . mod) False (enumFromTo 2)) $ [0..500]
06:18:16    Couldn't match expected type `GHC.Bool.Bool'
06:18:16          against inferred type ...
06:18:33  @pl \x -> foldr (||) False $ map (\y -> (x `mod` y) == 0) [2..x]
06:18:34  foldr (||) False . ap (map . flip flip 0 . ((==) .) . mod) (enumFromTo 2)
06:18:46  > filter (foldr (||) False . ap (map . flip flip 0 . ((==) .) . mod) (enumFromTo 2)) $ [0..500]
06:18:48    [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,2...
06:19:11  Do you think this problem has to do with ignoring constraints on datatype declarations, or is the problem having to do with something else?
06:19:39  zzo38: i am afraid that they have actually decided to remove constraints on datatype definitions altogether http://www.haskell.org/pipermail/haskell-cafe/2011-June/092922.html
06:19:54  because it works so badly
06:20:02  oerjan: I have read that they have decided to remove it.
06:20:36  Although I am actually unsure whether or not constraints on datatype declarations will fix this problem, I don't know for sure. Do you know?
06:21:33  :t or -- teehee
06:21:34  [Bool] -> Bool
06:21:47  :t any
06:21:48  forall a. (a -> Bool) -> [a] -> Bool
06:22:17  Lymee: ^
06:22:32  uuu
06:23:06  Lymee: you should maybe @hoogle more :)
06:23:27  @hoogle [Bool] -> Bool
06:23:29  Prelude and :: [Bool] -> Bool
06:23:29  Prelude or :: [Bool] -> Bool
06:23:29  Data.List and :: [Bool] -> Bool
06:23:55  zzo38: what is you MonadX definition?
06:23:58  *your
06:24:24  class MonadX m a where { fmapX :: MonadX m b => (a -> b) -> m a -> m b; unitX :: a -> m a; joinX :: m (m a) -> m a; };
06:25:09  :t Data.Set.map
06:25:10  forall a b. (Ord a, Ord b) => (a -> b) -> S.Set a -> S.Set b
06:26:35  zzo38: ah right, i think it cannot deduce that the MonadX m b instance is of the same type as you are defining, so therefore cannot deduce the Ord.  i don't think it has anything to do with datatype contexts.
06:27:01  O, that is why.
06:27:11  it _does_ have to do with what i said about functional dependencies, but unfortunately you really need to not have those
06:27:20  Why can't it deduce that, though?
06:27:36  (I did remove the functional dependencies; but the error is same either way)
06:27:53  because there could be an instance MonadX Set b  completely different from your usual one
06:28:10  If I explicit forall will it work?
06:28:12  one which doesn't require Ord
06:28:27  O, OK.
06:28:50  Now I understand why.
06:29:09  But if there was such an instance, then it would be overlapping.
06:29:21  yeah
06:31:38  Well, there is another instance but it doesn't overlap if Set is not instance of Monad.
06:33:17  Is there a way to specify that an instance is final with respect to certain variables?
06:34:56  If you could do that, then it might work, because instance Ord t => MonadX Set t is final with respect to t meaning there can be no other instances of form MonadX Set t
06:38:03  i don't know
06:44:06  It might work if Ord is the constraint of the class instead of the instance, but that beats the purpose. But you might be able to have that without beating the purpose if you have the & kind I proposed (note I changed my proposals from what it was before)
06:46:44 -!- Taneb has joined.
06:47:26  Then you could have   class (c a, c (m a)) => MonadX (c :: * -> &) (m :: * -> *) (a :: *)
06:48:52  Do you expect this to work, if it were implemented?
06:49:29  (That is, c is a class of concrete types, m is a monadic (nonconcrete) type, and a is a concrete type.)
06:50:09  what is &?
06:51:05  & means (x -> &) is the kind for classes of type of kind x
06:51:52  what
06:51:54  (I used [x] at first in my proposal, but after reading some more stuff and other people told me some stuff, I realized [x] is no good and (x -> &) is good)
06:52:48  coppro: Well, if you put   c a => .....   then what kind is c supposed to be? That is what I have tried to describe; it can be used in constraints.
06:53:18  C is *->*
06:53:20  err, c
06:53:26  c a is *
06:53:44  No, c has to be a class, I think
06:54:20  a 1-adic typeclass is * -> *
06:54:27  a 2-adic typeclass is * -> * -> * and so on
06:55:30  I suppose you could have classes of kind & by itself which could be used if you are writing a module using functions from a nonexistent module (currently you use hs-boot but this might work too, although I am unsure)
06:55:42  coppro: O, is that how it works?
06:55:58  zzo38: * means "a concrete type"
06:56:01  If I type in   :kind Eq   in GHCi it is error.
06:56:09  so * -> * is a function taking a type, producing a type
06:56:21  coppro: I know that.
06:56:38  oh wait...
06:56:40  nvm I am dumb
06:56:41  But a class is not a type
06:56:43  yeah
06:56:47  it's 3 am
06:56:49  I am le tired
06:58:58 -!- GreaseMonkey has quit (Quit: The Other Game).
07:00:11  zzo38: i am wondering if a GADT like data HasOrd :: * -> * where HasOrd :: Ord a => a -> HasOrd a  might work a bit like your c above
07:00:13  If you allowed more-notation across modules, you could even have it import datatypes that are not defined yet, and use classes to import functions that are not defined yet. And then it would work even without hs-boot
07:00:55  (no guarantees though, there are some problems with combining GADT values i think)
07:01:22  oerjan: I think that only constraints the constructor though.
07:04:16  zzo38: maybe but GADT's _does_ give a little more out than just that
07:04:53  hm argh i guess it only works if you have a particular value to unwrap though
07:05:03  fmapX might be too much for it
07:06:37  huh i wonder if you could define an Ord instance for HasOrd a
07:07:38  instance Ord (HasOrd a) where compare (HasOrd x) (HasOrd y) = compare x y  oh hm that won't work
07:08:02  it doesn't say which one to get the instance from
07:09:16  Yes; that is what I was thinking of, why I said it is wrong.
07:09:16  instance Ord (HasOrd a) where compare (HasOrd x) = let cx = compare x in \(HasOrd y) -> cx y
07:09:50  would that be enough
07:10:50  i vaguely recall ghc has trouble identifying types extracted from GADT's even when they should obviously be the same though
07:12:56  But constructors are not types.
07:13:52  !haskell {-# LANGUAGE GADT #-} data HasOrd a where { HasOrd :: Ord a => a -> HasOrd a }; instance Ord (HasOrd a) where { compare (HasOrd x) = let cx = compare x in \(HasOrd y) -> cx y }; main = print $ (HasOrd "hello" < HasOrd "world")
07:14:01  ​/tmp/input.11423.hs:1:13: unsupported extension: GADT
07:14:07  :(
07:14:26  I think you need "GADTs"
07:14:31  !haskell {-# LANGUAGE GADTs #-} data HasOrd a where { HasOrd :: Ord a => a -> HasOrd a }; instance Ord (HasOrd a) where { compare (HasOrd x) = let cx = compare x in \(HasOrd y) -> cx y }; main = print $ (HasOrd "hello" < HasOrd "world")
07:14:33 -!- nooga has joined.
07:14:34  At least that is what works on my computer
07:16:30  maf
07:16:59  !haskell {-# LANGUAGE GADTs #-} data HasOrd a where { HasOrd :: Ord a => a -> HasOrd a }; instance Ord (HasOrd a) where { compare (HasOrd x) = (let cx = compare x in \(HasOrd y) -> cx y) }; main = print $ (HasOrd "hello" < HasOrd "world")
07:17:21  09:17 =EgoBot> syntax error at /tmp/input.23875 line 1, near "}}"
07:17:32  where the heck is the }} D:
07:17:50  obviously layout-inserted, but _where_?
07:19:01  Don't use layout mode if it confuses you!
07:19:24  Use the explicitly "module" command to turn off layout mode for the entire module
07:19:43  !haskell {-# LANGUAGE GADTs #-} module Main where { data HasOrd a where { HasOrd :: Ord a => a -> HasOrd a }; instance Ord (HasOrd a) where { compare (HasOrd x) = (let cx = compare x in \(HasOrd y) -> cx y) }; main = print $ (HasOrd "hello" < HasOrd "world") }
07:19:57  ok that helped
07:20:21  oh darn Ord has superclasses
07:20:30  @src Ord
07:20:31  class  (Eq a) => Ord a  where
07:20:31      compare      :: a -> a -> Ordering
07:20:31      (<), (<=), (>), (>=) :: a -> a -> Bool
07:20:31      max, min         :: a -> a -> a
07:20:35  @src Eq
07:20:36  class  Eq a  where
07:20:36      (==), (/=)   :: a -> a -> Bool
07:20:44  wait definitely not Show
07:22:55  !haskell {-# LANGUAGE GADTs #-} module Main where { data HasEq a where { HasEq :: Eq a => a -> HasEq a }; instance Eq (HasEq a) where { (==) (HasEq x) = (let ex = (==) x in \(HasEq y) -> ex y) }; main = print $ (HasEq "hello" == HasEq "world") }
07:23:00  False
07:23:03  yay
07:23:18  !haskell {-# LANGUAGE GADTs #-} module Main where { data HasEq a where { HasEq :: Eq a => a -> HasEq a }; instance Eq (HasEq a) where { (==) (HasEq x) = (let ex = (==) x in \(HasEq y) -> ex y) }; main = print $ (HasEq "hello" == HasEq "hello") }
07:23:23  True
07:23:43  ok so that worked.  at least in EgoBot's version.
07:25:41  On the wall, I have the picture of creature with one eye and uncountable tentacles. Not because there is too many to count; it is because the artist draw the picture to make it difficult.
07:25:52  heh
07:27:02  (Nobody has ever been able to count as far as I know. Different people try, and get various different answers, but not certain.)
07:32:16 -!- nooga has quit (Ping timeout: 245 seconds).
07:32:28  elliott, Phantom_Hoover, CakeProphet, Homestuck update.
07:32:40  And Taneb
07:32:44  [S]?
07:33:19 -!- zzo38 has changed nick to Homestuck_update.
07:33:21  You rang?
07:33:22 -!- Homestuck_update has quit (Quit: Homestuck_update).
07:34:54  So... Jail Break and by extension Problem Sleuth take place on LOLAF?
07:35:00  *LOFAF
07:35:56  I don't remember if I read Jail Break
07:42:38 -!- oerjan has quit (Quit: Good night).
07:43:15  elliott, Phantom_Hoover, CakeProphet, Taneb, Homestuck news update.
07:55:31  Just got my timetable for THE NEXT ACADEMIC YEAR
07:55:49  Monday: Further Ma, Further Ma, Latin, , Mathematics
07:56:46  Tuesday: Ancient Hi/ ,Mathematics/ , , Further Ma/Latin, Latin
07:57:08  Wednesday: Tutorial, Further Ma, Mathermatics, , Ancient Hi
07:57:24  I'm guessing Ancient Hi is Ave or something
07:57:47  Thursday: Mathematics, , Ancient Hi, ,
07:58:06  Friday: Latin, Ancient Hi, Further Ma, Mathematics,
08:17:46 -!- Taneb has changed nick to TanebAFK.
08:36:58 -!- TanebAFK has changed nick to Taneb.
08:37:07  Didn't actually go AFK at all
08:45:29 -!- sebbu2 has changed nick to sebbu.
08:55:15 -!- nooga has joined.
08:55:48 -!- azaq23 has joined.
09:26:36  whats ancient hi?
09:31:12  "ave"
09:34:17  whats ave?
09:34:31  A greeting in Latin
09:34:43  ahh... so its a latin class
09:34:53  No, ancient history
09:35:07  is that like ave maria?
09:35:19  Perhaps
09:35:24  But more like ave ceasar
09:35:29  maybe i saw ave in asterix comics
09:35:48  i knew it sounded familiar
09:35:54  It was in quite a lot
09:59:48  The Uniquode program +)......)M.()#)."(......)).... does nothing in an intersting way
10:00:28 -!- Taneb has quit (Quit: Goodbye).
10:02:43 -!- nooga has quit (Ping timeout: 252 seconds).
10:08:23 -!- CakeProphet has quit (Ping timeout: 268 seconds).
10:34:51 -!- CakeProphet has joined.
10:34:52 -!- CakeProphet has quit (Changing host).
10:34:52 -!- CakeProphet has joined.
10:43:26 -!- Taneb has joined.
10:48:07 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
10:49:31 -!- monqy has quit (Quit: hello).
10:50:25  I think that someone should try to make an esolang contest again
11:13:12  Ah, Toshiba tech support hold music
11:23:07 -!- nooga has joined.
11:35:09 -!- nooga has quit (Ping timeout: 276 seconds).
11:40:14 -!- azaq23 has left ("Leaving.").
11:40:32 -!- azaq23 has joined.
11:43:49 -!- nooga has joined.
11:50:44 -!- Phantom_Hoover has joined.
11:58:48  VBefunge-93 is going well
11:59:50  Déjà vu
12:00:08 -!- GuestIceKovu has joined.
12:00:18  Or it would be going well if I could actually open it
12:00:37 -!- Slereah has quit (Ping timeout: 268 seconds).
12:04:16  huh
12:04:25  Visual like Basic?
12:05:48 -!- GuestIceKovu has changed nick to Slereah.
12:08:13 -!- Taneb has quit (Ping timeout: 260 seconds).
12:12:37 -!- NihilistDandy has quit (Read error: Operation timed out).
12:44:02 -!- nooga has quit (Ping timeout: 264 seconds).
12:49:19 -!- boily has joined.
12:51:20  !delinterp Gregor
12:51:21  ​That interpreter doesn't exist!
12:51:25  >_>
12:51:29  !userinterps
12:51:30  ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph gregor hello id insanetemp jethro kraut lperl lsh map num numberwang ook pansy pi pikhq pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez wc yodawg
12:51:36  !delinterp gregor
12:51:36  ​Interpreter gregor deleted.
12:51:52  I'm tired of getting poinged every time somebody types !userinterps :P
12:55:51  What did it do?
12:56:24   Visual like Basic?
12:56:33  Yes, in the sense of not being visual at all.
13:01:53  fizzie: Injected ſ's and þ's.
13:03:35  !pansy hello
13:03:36  hello
13:03:46  !pansy OK, what does this one do?
13:03:46  OK, what doezth thith one do?
13:04:17  !pansy Lisps? How many text transformers do we even have?
13:04:17  Lithpth? How many tektht tranthformerth do we even have?
13:06:15 -!- derdon has joined.
13:15:15 -!- hiato has joined.
13:30:50 -!- azaq231 has joined.
13:32:06 -!- azaq23 has quit (Ping timeout: 260 seconds).
13:46:04 -!- IRCReaderBOT has joined.
13:46:06 -!- IRCReaderBOT has quit (Excess Flood).
13:52:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:00:10 -!- sllide has joined.
14:01:38 -!- nooga has joined.
14:05:17 -!- derrik has joined.
14:08:21 -!- derrik has quit (Client Quit).
14:08:42 -!- derrik has joined.
14:13:32 -!- derrik has quit (Ping timeout: 245 seconds).
14:17:29 -!- nooga_ has joined.
14:20:06 -!- nooga has quit (Ping timeout: 246 seconds).
14:30:10 -!- copumpkin has joined.
14:31:02 -!- NihilistDandy has joined.
14:34:22 -!- augur has joined.
14:37:42 -!- NihilistDandy has quit (Ping timeout: 240 seconds).
14:41:29 -!- NihilistDandy has joined.
14:45:12 -!- pumpkin has joined.
14:46:01 -!- copumpkin has quit (Ping timeout: 258 seconds).
14:46:42 -!- azaq23 has joined.
14:48:22 -!- azaq231 has quit (Ping timeout: 268 seconds).
14:52:46 -!- NihilistDandy has quit (Ping timeout: 252 seconds).
14:57:23 -!- pumpkin has changed nick to copumpkin.
15:10:57 -!- NihilistDandy has joined.
15:14:39 -!- Guardric has joined.
15:26:27 -!- NihilistDandy has quit (Ping timeout: 245 seconds).
15:47:10 -!- elliott has joined.
15:49:17  helo
15:49:17  elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
15:49:46  I asked David Morgan-Mar two questions about Chef, though he hasn't answered so far. Is there a possibility someone here could answer them?
15:50:24  http://bpaste.net/show/yruvHzWwMQvfLeLH7XYx/
15:53:09  I think there are implementations of Chef you could check against
15:53:14  at least to see what everyone else thinks
15:53:37  oh gawd, esolangs.org has that annoying everydns thing
15:55:43  elliott: I don't think so.
15:56:20  huh, really?
15:56:34  looks like there's a perl one which is apparently buggy
15:57:09  derdon: Well, the spec is ambiguous; you have two options: wait until DMM responds, or make up your own interpretation and assure everyone it's standard :)
15:57:52  elliott: I could start with #2 and adopt it after I got the response from the holy David
15:58:31  derdon: You could suggest your interpretations to him; there's a good chance he'll just say "that sounds good" :P
15:59:05  derdon: If you write a test suite for Chef interpreters in Chef everyone will treat your interpretation as word of god, even the language creator. (Proof: Mycology.)
15:59:08  elliott: you see the complete mail in the paste. I already shared my thoughts there
15:59:25  I skimmed it :P
15:59:37 -!- augur has quit (Remote host closed the connection).
16:08:21  "Please read Documentation/SubmittingPatches - you must write a proper commit message, add a Signed-Off-By line, and submit to the linux kernel mailing list, CCing the affected maintainers (ie, not Linus in most cases)."
16:08:22  "can you please point me at some url where I can read that submitting patches documentation? thanks!"
16:08:36  pikhq_: putting the kernel on github: mistake of the century
16:09:13  you could have seen that coming
16:10:12  Maybe Linus is doing it for cheap laughs?
16:10:20  (Note: Probably not actually true.)
16:11:34  https://github.com/torvalds/linux/pull/6
16:11:38  This is literally the stupidest thing ever.
16:15:38 -!- MSleep has changed nick to MDude.
16:16:10  fizzie: Does SCKE have specs?
16:16:14   pikhq_: putting the kernel on github: mistake of the century <-- they did what?
16:16:31  Vorpal: http://github.com/torvalds/linux
16:16:37  elliott: why
16:16:46  kernel.org is down so Linus put it on GitHub. He likes it apart from the issues and pull requests, which he hates.
16:16:55  (Because everyone is submitting crap.)
16:16:57  ah
16:17:02  So, basically he likes it as a nicer gitweb.
16:17:04  can't you turn that off
16:17:25  Vorpal: Issues yes, pull requests apparently not although I swear you used to be able to
16:17:31  He's basically just ignoring them. :p
16:17:35  Obviously, the issues and pull requests he's not going to use at all.
16:17:37  pikhq_: Well, + host.
16:17:40  lkml has that covered.
16:17:41  More like a nicer repo.or.cz :P
16:19:52 -!- boily has quit (Ping timeout: 276 seconds).
16:20:57 -!- boily has joined.
16:21:16 -!- augur has joined.
16:21:26 -!- Guardric has quit (Quit: Leaving).
16:24:39 -!- Guardric has joined.
16:27:07 -!- ais523 has joined.
16:28:35  back
16:28:49  elliott: I guess to Torvalds the pull request is an issue then
16:29:15  was that meant to be a joke
16:29:23  elliott: no a pun.
16:29:31  because oerjan wasn't here
16:29:36  vorpal "puns arent jokes" vorpal
16:29:51  elliott: yes, it was meant to be lame
16:30:11 * derdon chuckled
16:42:23 -!- nooga_ has quit (Ping timeout: 260 seconds).
16:44:09  I like how I have exactly one function left in Shiro that feels like it belongs in a Utils module.
16:44:16  And nowhere else.
16:44:33  elliott: YOU HAVE ABANDONED #plof
16:44:52  Not any more
16:45:06  elliott: what is that function?
16:45:09  or at least, what does it do?
16:45:13  ais523:
16:45:14  -- doesn't really belong here, but oh well
16:45:15  makeFingerprint :: String -> Shiro [(FPIns, Shiro ())] -> Fingerprint
16:45:15  makeFingerprint = Fingerprint . packName
16:45:25  It can't go in Types.hs as a "smart constructor" type thing because packName is in Shiro.Value.
16:45:34  heh, Vorpal is still in #feather-lang
16:45:41  if I make progress on Feather, it'll be announced there first!
16:45:50  I can either move packName and packValues into Shiro.Types and put makeFingerprint in there too, or just deal with it being in Shiro.Value or Shiro.Monad.
16:46:37  ah, hmm
16:46:45  so it's Shiro-related utils, not general utils
16:46:58  That's what Shiro.Utils is :P
16:47:00  Or, was
16:47:06  I eliminated it just minutes before adding makeFingerprint
16:47:16  which I tend to have a bunch of in any nontrivial program
16:47:24  I could make Fingerprint.hs like I used to have
16:47:24  in a functional language
16:47:34  But it'd contain exactly one function
16:47:43  reimplementing things is often faster than looking up the standard library
16:47:44  ais523: That's because you haven't heard of looking for things in the libraries
16:47:53  elliott: I can reimplement them in a few seconds
16:47:58  it takes longer than that to look for them
16:48:04  ais523: So can I, but I have the arcane knowledge known as "knowing why that's idiotic"
16:48:09  Am I a bad person for hating people who drone on about how beautiful Euler's identity is?
16:48:16  (The answer is no.)
16:51:11 -!- NihilistDandy has joined.
16:52:39 -!- FireFly has joined.
16:53:21  euler's identity is not as beautiful as euler's identity for TAU
16:54:49 -!- calamari has joined.
17:01:54  Phantom_Hoover is torturing puppies help
17:06:09  The third puppy just got shot in the head instantly.
17:06:45  Well, OK then.
17:06:48  That's clearly not torture.
17:07:07  ais523: hmm, I think I'll just move packValues/packName/makeFingerprint into Types.hs
17:08:03  This does it, I'm sending Gregor in instead.
17:08:14  Gregor: enjoy
17:09:27  I(0gnirts -- addr)Convert an ascii ip address to a 32 bit address
17:09:35  Really? Just IP? No DNS?
17:09:47  I guess that's why fungot uses an IP.
17:09:48  elliott: mr president, commissioner, i fully accept that description when it comes to human rights. yes, with an average fat content of chocolate, and we are using double standards! we all know that under present legislation and also in relation to standardization bodies. if i do not want.
17:09:51  But c'mon, surely everyone uses gethostbyname.
17:11:04  Or, hmm
17:13:52 -!- calamari has quit (Quit: Leaving).
17:14:31  OK, this does it, I'm sending him in.
17:14:57  getaddrinfo
17:15:35  Three volleys of crossbow fire later, he's right next to the first marksman with no injuries.
17:15:37  Gregor: w/e, "modern" mr.
17:16:00  Well, that's certainly a sentence.
17:16:21  U/r like, with it's;;;; unbelievebveable....
17:16:30  Gregor, OK, you're now lying with a spinal injury just outside crossbow range.
17:16:37  me too
17:16:54  AI_NUMERICSERV
17:16:54  The ServiceName argument must be a port number in string form, and service name lookups will not be attempted.
17:16:54  ah
17:17:14   if I make progress on Feather, it'll be announced there first! <-- yay!
17:17:31  not likely to happen though
17:17:32  note: a false statement implies anything
17:17:38 -!- augur has quit (Remote host closed the connection).
17:17:45  Thank god, I'm in the best place possible for Feather information.
17:17:46  ais523: indeed
17:17:47  Vorpal is in the worst.
17:17:53  Of course, rather than recovering Gregor, everyone just reloads the cages.
17:17:55  Also, Vorpal will never hear about Feather because he'll die right before it's released.
17:18:19  elliott: true, you are younger. Statistically you are likely to die after me.
17:18:46  no
17:18:47  gregor
17:18:48  don't
17:18:53  don't run back towards them
17:18:55  please
17:19:15  he,m
17:19:15  revenge
17:19:16  pupy
17:20:03  On the bright side, the siege is down to two marksmen.
17:20:17  ineiros died of thirst, though.
17:21:21 -!- NihilistDandy has quit (Ping timeout: 260 seconds).
17:21:49  Phantom_Hoover: What, why?
17:21:53  We have like a billion drank.
17:22:21  elliott, because he was in a cage trap after being knocked unconscious.
17:22:30  Oh.
17:22:46  ....oh ffs
17:22:51  I forgot to arm him with an axe.
17:22:59 -!- nooga has joined.
17:24:52  Fortunately, he should live.
17:26:27  Phantom_Hoover: Have you noticed that dorfs get thirsty as soon as they enter the danger room and you turn the lever.
17:26:37  Gregor does, yes.
17:26:58  I suspect this is because, as I discovered to my cost, he is quick to tire.
17:29:34  GREGOR STANDS
17:31:52  I have a distinct suspicion that even in this state he'll be able to break the siege.
17:34:01  But then sleep a lot.
17:34:08  I'm going to test this suspicion.
17:35:35  Siege broken.
17:35:52  Yaaaaaaaaaaaaaay enjoy your year.
17:38:41  I have to say, ssh imposes quite an overhead. Compared rsync over ssh to plain rsync for sending an dvd iso over gbit ethernet. Neither maxes out the network link, but with SSH I get on average 36 MB/s and with just rsync I get on average 50 MB/s. I suspect in the latter case the HDD speed of the target computer limits the performance, quite slow laptop disk, and the file is way to large to fit into RAM
17:38:41  . When just sending raw data with netcat I get much better than that. (110 MB/s)
17:40:34  bbl, going to be offline for a bit
17:41:04 -!- Vorpal has quit (Read error: Connection reset by peer).
17:41:31 -!- augur has joined.
17:47:12 -!- cheater_ has joined.
17:47:17 -!- cheater has quit (Ping timeout: 245 seconds).
17:49:37 -!- Taneb has joined.
17:51:16  Hello!
17:51:46  hi
17:51:53  How goes?
17:52:04  goingly
17:52:28  Well, VBefung-93 is nearing completion!
17:52:41  By which I mean I'm about to uncover the hardest bit
17:55:31  Hmm. That "Upgrade through every version of Windows" thing seems a bit lame. Should've started with DOS 1.0.
18:04:52  Visual Basic isn't that bad for an imperative language
18:05:32  pikhq_: ?
18:05:57  Gregor: Someone started with Windows 1.0 and upgraded it to Windows 7.
18:06:12  In how many steps?
18:06:38  My guess would be that the minimum is 1.0 -> 3.11-or-whatever -> maybe XP? -> 7
18:06:52  Gregor: In as many steps
18:07:00  It's an entertaining video :P
18:07:04  presumably it went through every consumer version
18:07:05  He keeps chastising Microsoft for losing his settings.
18:07:09  just because it could
18:07:14  lol
18:07:18  OK, I guess I want to see it :P
18:07:19  But some settings actually went through.
18:07:22  is there any hardware that all versions of Windows install on?
18:07:24  Through like three point one to the latest.
18:07:29  ais523: Yes, the VM used :P
18:07:39  hmm
18:07:44  Gregor: http://www.youtube.com/watch?v=vPnehDhGa14
18:07:48  the VM had the same virtual hardware all the time, though?
18:07:55  ais523: I believe so; it's not that hard
18:08:00  Ninety-five won't boot with too much RAM
18:08:05  But Vista will run on less
18:08:10  Although maybe not well
18:09:21  Maybe I should have @told elliott and Phantom_Hoover
18:09:33  Although you two probably know by now anyway
18:09:37  Told what?
18:09:46  Homestuck update
18:10:00  What the hell does "dim" actually mean
18:10:09  I know what it does, but what does it mean?
18:10:18  Dimensions?
18:10:21  Yep
18:10:24  Was used to define dimensions of an array
18:10:30  "Dim originally (in BASIC) stood for Dimension, as it was used to define the dimensions of an array.
18:10:30  (The original implementation of BASIC was Dartmouth BASIC, which descended from FORTRAN, where DIMENSION is spelled out.)
18:10:30  Nowadays, Dim is used to define any variable, not just arrays, so its meaning in not intuitive anymore."
18:10:34  Its meaning in not intuitive anymore.
18:10:42  Huh
18:10:48  It's like the word Domino
18:10:50  Then types got added.
18:11:01  But not tuples
18:11:11  At least not in 2005
18:14:19  If I were doing Befunge-98 I would define them
18:15:26  Gregor: 1.0 -> 2.0 -> 3.0 -> 3.1 -> 95 -> 98 -> 98 SE -> 2000 -> XP -> Vista -> 7
18:15:39  No 3.11 Windows for Workgroups???
18:15:45  No ME?
18:15:53  Nor NT?
18:16:03  Welll, NT was never a "consumer" OS.
18:16:06  Neither was 2000, really.
18:16:27  There was a fork in upgrade paths: he could've done 98 SE -> ME -> XP or 98 SE -> 2000 -> XP.
18:16:30  Maybe he chose 98SE -> 2000 since that's the worst possible 9x->NT switchover :P
18:16:58  Gregor: Me NEVER HAPPENED.
18:17:01  One day I may try to get my old 98 (dunno if SE or not) up working again
18:17:01  2000 was the most consumer of the NT line.
18:17:18  Oh, yeah. He did this from physical media that he actually owned.
18:17:20  It works fine, but I can't use a mouse and it has no internet
18:17:43  Does anyone know a valid IP address that does NOT have any host there?
18:18:02  Define "valid".
18:18:19  Valid.
18:18:27  240.0.0.1
18:18:57  'Sat reserved or something?
18:19:10  Yeah, it's the first address in class E.
18:20:25  Deewiant: In SOCK's I, one interprets the unsigned address as if it were signed, yes?
18:20:52  Would've been pretty awesome if he used Win 3.2.
18:21:49  Though. It may not have supported an upgrade: it *was* the first release in Mandarin with Simplified Chinese.
18:23:31  Also a shame he didn't install Win32s.
18:28:12  elliott: 192.168.whatever numbers aren't on your network
18:28:44  240/8 is only dubiously valid, most routers refuse to believe it exists (which is why the rules haven't been changed to make it allocatable)
18:29:11  elliott: also, arguably, 1.2.3.4; there was a host there for a while, but it was taken down again after it was DDOSed to oblivion
18:29:12  Well, routing is irrelevant
18:29:20  I'm just converting string addresses to integers
18:31:19  Shiro/Fingerprints/SOCK.hs:13:9:
18:31:20      Ambiguous occurrence `accept'
18:31:20      It could refer to either `Shiro.Fingerprints.SOCK.accept',
18:31:21                               defined at Shiro/Fingerprints/SOCK.hs:34:1
18:31:23                            or `Network.Socket.accept',
18:31:25                               imported from Network.Socket at Shiro/Fingerprints/SOCK.hs:7:1-21
18:31:27  This could be problematic
18:33:05  I *just* (like, last week) saw a hotel use 1.1.1.1 for the login-to-our-network autoredirect thingamajikc.
18:33:17  Same, actually
18:34:28  192.0.2.0/24 is sometimes-working "sort-of valid but doesn't have any hosts" network. ("Assigned as "TEST-NET" for use solely in documentation and example source code and should not be used publicly.")
18:35:42  (There are two other TEST-NETs too.)
18:38:20  elliott: just qualify it?
18:39:19  ais523: You should never have clashing names ever.
18:39:25  It should be an error, really.
18:39:33  fizzie: Oi, SCKE specs, where eb they.
18:39:36  be
18:39:50  elliott: It doesn't really have any, I don't think. "Sowwy."
18:40:00  fizzie: Does it have... a list of instructions?
18:40:02  Anything?
18:40:53  Well, H and P. I don't really know how anyone even found out about SCKE.
18:41:00  Maybe I wrote something.
18:41:13  fizzie: What does H does, what does P do
18:41:19  http://packages.python.org/PyFunge/fingerprint/SCKE.html  <- good enough.
18:41:51  s/does/do/
18:41:54  Except only the second one
18:42:12  fizzie: Doesn't P require me to keep my own buffer...
18:42:48  Well, I don't know. It's basically a poll()/select() for input.
18:43:11  http://p.zem.fi/54wi <-- here seems to be how I "documented" them.
18:43:18  (Awaysh-woosh.)
18:43:19  Except select() and poll() block.
18:43:49  Not with a zero timeout.
18:43:54  Oh.
18:43:57  That could work.
18:44:06  Now to find out how to get GHC to do that.
18:44:58  Salivili hippit tupput tappyt appyt tipput hilijalleen.
18:45:06  SCKE support - the most pointless thing ever? (I don't think anyone uses it, not even fungot's "configuration header".)
18:45:07  fizzie: mr president, the austrian national library. we have a lot to say about the mass unemployed, the mass media, so that they are the only feasible way of helping the peace process.
18:46:33  ^modes
18:46:39  ^style
18:46:39  What is that fungot command ...
18:46:39  Available: agora alice c64 ct darwin discworld europarl* ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
18:46:40  Gregor: mr president, i voted for the katiforis report. then in fnord. the problem with the take-up of new technology and its link to growth and employment. those in sweden who find themselves without any rights and further swell the ranks of the trade unions for the european parliament on strengthening environmental integration within community energy policy.
18:46:42  Ah, style.
18:46:42  fizzie: Um, fungot uses SCKE, no
18:46:43  elliott: mr president, it is there and what took place between the executives on the one hand, the interests of economists converge with those of their own. as everyone knows, this is making it possible to bring the date of their approval and decided that account must be taken into account.
18:46:43  ?
18:46:50  elliott: No, it just loads it. :p
18:46:57  fizzie: I...
18:47:00  ^style wp
18:47:01  Selected style: wp (1/256th of all Wikipedia "Talk:" namespace pages)
18:47:13  fungot: Tell me about neutral viewpoints.
18:47:14  Gregor: " on the internet. i've listened to the radio interview and added some additional links. i can check if one of her parents was a fnord catholic fnord who, according to the fnord
18:47:18  fizzie: I like how it requires you to use an IP while loading and not using a fingerprint that lets you use domains too.
18:47:47  "i can check if one of her parents was a fnord catholic fnord who, according to the fnord" [citation needed]
18:47:59  elliott: See, it didn't originally use SCKE at all, thus the IP requirement; then I added SCKE as a prelude for that HTTP support (for ^bf/^ul/^def) but that never happened.
18:48:04  (Okay, now really away.)
18:49:00  Are any of the Fungies Unicode-safe?
18:49:22  Gregor: Define Unicode-safe
18:49:30  A Funge program is raw binary data
18:49:34  So is Fungespace
18:49:45  What do you want, a file/console reader that decodes from an encoding?
18:50:04  That would be doable, as a fingerprint, but I don't know of any.
18:50:09  No, I wanted code written in Unicode, so that it wouldn't hop left and right improperly if I happened to start my line with a goat.
18:50:31  I mean, I don't actually /want/ that, I was just curious if any existed.
18:51:21  I think Vorpal's efunge or whatever might do that, but only he thinks the standard can be read in a torturous enough way to make that allowable.
18:51:26  Gregor: If you store it in UTF-thirty-two, everything will work fine.
18:51:29  Or, wait, no, it won't.
18:51:40  But you /could/ provide an alternate fungespace loading that took it like that or any encoding.
18:51:43  Only if \x00 is no-op :P
18:51:46  But it wouldn't be the standard's defined entry-point.
18:51:55  Gregor: Invalid instructions reflect.
18:52:03  There are no non-printable-ASCII instructions by default.
18:52:06  Apart from space.
18:52:13  Right. Womp womp.
18:52:21   elliott: and why do you want to check if there's data without retrieving any?
18:52:26  STOP TELLING ME IT'S A BAD IDEA OMG BLAME FIZZIE
18:58:20  Yeah, the P wasn't really that well thought of a thing.
18:59:46  I've finally started on my write-assembly-in-haskell project, have gotten about as far as "instance MonadFix"
19:01:12  olsner: Making it so that the type system catches e.g. mov in the wrong order?
19:01:17  (Like "mov 0 eax" rather than "mov eax 0".)
19:01:43  btw, all my trouble with my OS not working earlier were either due to nasm miscompiling it, or to some build script malfunction
19:01:55  nasm /miscompiling/?
19:02:17  fizzie: Ouch, SCKE will be hard.
19:02:34  fizzie: Not only do I have to bind to select() with the FFI, but I need to read SOCK's state somehow...
19:02:53  elliott: Really, maybe you should just opt for proper NSCK support.
19:03:03  Is NSCK even a thing?
19:03:11  Probably not.
19:03:23  That's not an answer.
19:04:30  I did promise I'd upgrade fungot to use it if it made sense, but I don't think it really got finalized. Certainly not implemented anywhere.
19:04:31  fizzie: duke university fnord bln fnord fnord fnord fnord supuser fnord 16:34, 9 may 2005 ( utc)
19:04:41  Oh, is it another Vorpal non-fingerprint?
19:04:59  Hmm, how the heck to name these functions to avoid clashes.
19:05:39  I had the same code on both computers, but it compiled into something that worked and something that didn't ... but 'make' said it was up-to-date on both of them... so, obviously nasm miscompiled it on one of my computers :)
19:07:10  nah, probably I switched branches and got the sources updated to an older timestamp, which made the binary newer, or something along those lines
19:07:31  olsner: So are you porting your OS to Haskembly?
19:07:42  not yet, haskembly is only half done
19:07:56  olsner: When it is done.
19:08:06  elliott: When it is done.
19:08:26  cool, maybe I'll resurrect my far-superior project that did the same thing that I abandoned a while back
19:08:33  and copy your entire OS and become Windows and rule the world
19:08:34  do it
19:08:47  olsner: but seriously, you are catching "mov 0 eax" right? otherwise lolling at you
19:09:59  yes, mov (spelled $=) currently only accepts registers as targets
19:10:16  and I don't think I'll add support for assigning to constants anytime soon :P
19:11:41  mov :: (Read src, Write dst) => src -> dst -> ASM ()
19:11:42  :p
19:11:53  more or less, yes
19:12:22  (!) :: RWAddr -> Int -> RWAddr... though I guess you want the more fancy addressing modes somehow too
19:14:23  the actual type right now is ($=) :: Expr e => Reg -> e -> Asm ()
19:14:26  Something I've occasionally wondered: how does NASM decide whether to encode "mov eax, ebx" using the "mov reg32, reg/mem32" or the "mov reg/mem32, reg32" form of the instruction, and whether there's some way you can influence that.
19:14:40  fizzie: -O influences that IIRC
19:14:44  It just picks the shortest, I believe
19:14:52  But those are equally long.
19:14:55  olsner: Gross + wrong :P
19:14:58  fizzie: Flip a coin
19:15:53  elliott: ok, how so?
19:16:24  olsner: Dunno :P
19:16:26  only because Read is called Expr?
19:16:32  Definitely
19:16:35  And ASM is called Asm
19:16:42  yes, that is silly
19:16:50  What was that OMGMAGIC C compiler that was recently released (or announced as going-to-be-released) as F/OSS? SomethingPath ...
19:18:11  EKOPath?
19:18:20  That's the one!
19:18:21  Thanks
19:20:00  fizzie: You're the SOCK  expert; what the fuck is the pf argument to S
19:20:06  Can I just ignore it or do I have to store it for later connects or whatever
19:20:22  pf? protocol family? or something?
19:20:51  yeah but
19:20:54  they have values starting with PF_....
19:20:59  i only know families starting with AF_.........
19:21:13  It's pretty much the same thing.
19:21:23  It's what my socket man page calls "domain".
19:21:51  so I just use AF_ instead of PF_ ok........
19:22:30  Then why does it also take
19:22:30  pro:1=tcp
19:22:30  2=udp
19:22:36  Oh, hmm
19:23:06  Yeah, how come it takes both DGRAM/STREAM and tcp/udp
19:23:10  I thought DGRAM/STREAM _was_ tcp vs udp
19:23:51  Not necessarily; the type and protocol are independent.
19:24:11 -!- augur has quit (Remote host closed the connection).
19:24:24  Of course SOCK only does tcp/udp, soo...
19:24:26  iirc since inet only has one of each, you don't have to specify the third value to socket() and can just use 0, but other domains have more variants
19:24:41  fizzie: So I should just barf out if the protocol doesn't match the socket type and otherwise ignore it?
19:24:55  (I'll just assume this SOCK thing works *exactly* like socket())
19:25:36  elliott: Well, you could also pass the corresponding IPPROTO constants to the socket call, just to make sure.
19:26:07  socket :: Family -> SocketType -> ProtocolNumber -> IO SocketSource
19:26:07  Create a new socket using the given address family, socket type and protocol number. The address family is usually AF_INET, AF_INET6, or AF_UNIX. The socket type is usually Stream or Datagram. The protocol number is usually defaultProtocol.
19:26:19  The only defined ProtocolNumber is defaultProtocol, it's literally just a CInt.
19:26:28  Well, defaultProtocol is probably just fine too.
19:26:32 -!- tiffany|away has changed nick to tiffany.
19:26:37  If they don't define the constants.
19:26:40 -!- impomatic has joined.
19:26:44  Hi :-)
19:26:46  Has anyone got a magnetic core memory board I could borrow?
19:27:15   elliott: what is it you're actually trying to do?
19:27:27  fizzie: God, can you join #haskell and apologise and tell them to direct all such questions to you?
19:27:36   bos: code haskell lol
19:29:03  I don't think I want to join a channel as scary as #haskell; plus typing on this phone is sorta too slow.
19:29:17  olsner: So will your DSL let me say "eax $= (ebx*eax)/ecx" and have it expand out? :p
19:29:41  elliott: I hope it will
19:29:43 -!- augur has joined.
19:30:18  olsner: So will it provide register-allocated variables that spill over to the stack? :-P
19:30:21  "x <- var"
19:30:33   i see. i wonder why such an API.
19:30:33   bos: It's old and not very well thought-out; the designer admits as much :)
19:30:36   elliott: so why implement it?
19:30:38  fizzie: Help, I can't answer.
19:30:43   bos: the world runs on legacy systems
19:30:45  oh, that expression example was a bit more complicated than I bothered reading
19:30:45  Thanks sbrg
19:31:18   sbrg: but why would someone want to implement a legacy API in haskell?
19:31:20  I don't think it will do anything that requires temporaries actually
19:31:20  noooooooooo
19:31:36  olsner: What if you told that arithmetic operation which variable to clobber :P
19:32:35 -!- zzo38 has joined.
19:32:44  elliott: Just tell them it's for this COBOL system at a bank, and the legacy API is needed for the older parts to talk to the new code. (On second thought, don't.)
19:32:49  I think I figured out how to make up type level natural numbers by type families.
19:33:19  data TypeZero; data TypeSucc t;
19:33:26  that's not a type family
19:33:33  elliott: sure, you could just build a haskell function that takes some number of registers it needs ... but I imagine it to be a bit hard to build that into any random expression?
19:33:52  data family X n :: *; data instance X TypeZero = Z Int; data instance X (TypeSucc n) = S (X n) (X n);
19:34:04  type family TypePred t :: *; type instance TypePred (TypeSucc t) = t;
19:34:15  but simpler things like eax $= 5*ebx could be rewritten into something with lea
19:34:16  olsner: I meant like (mul a b OhAndYouCanClobberEdx) X-D
19:34:28  See? It is a type family.
19:36:02  zzo38: Well, yes...
19:36:16  And it appears to work; GHCi will know the type of something like   S (S (Z 1) (Z 2)) (S (Z 3) (Z 4))
19:37:38   bos: No. Like I said, the function is wrapped around so that the program being run can use it; my program implements an interface that the program being run utilises.
19:37:38   okay, i'll stop asking about it, since i can't follow your answers.
19:37:40  fizzie: Success
19:37:48 -!- zzo38 has quit (Remote host closed the connection).
19:38:30 -!- Braber01 has joined.
19:39:28  I like how your socket question sidetracked as far as to mentioning COBOL
19:39:32  quick queston what are the f**kf**k equilvents of BrainF**k?
19:40:20  Dunno those languages, do you mean what the brainfuck instructions are in fuckfuck?
19:40:31  http://esoteric.voxelperfect.net/wiki/Fuckfuck has the details.
19:41:53  Anyway, re the earlier protocol thing, I think it might be borderline legal for socket(AF_INET, SOCK_STREAM, 0) to give you a SCTP socket or something; you already create stream SCTP sockets with socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP).
19:42:22  Hmm
19:42:34  Are the values for the IPPROTOs portable?
19:42:48  Of course not. :p
19:43:13  I would expect the "default" stream socket be TCP everywhere though.
19:43:54 -!- Braber01 has quit (Ping timeout: 252 seconds).
19:44:00  They're also somewhat portable in practice, but not guaranteedly.
19:44:25  I think I've seen a naked 6 (or whatever it was) to stand for TCP in some code.
19:44:31  fizzie: It's OK if SCKE's can-read instruction says a closed socket can read, right?
19:45:57  Probably, since the "spec" (if you can call it that) doesn't really say anything about corner cases.
19:47:53 -!- KingOfKarlsruhe has joined.
19:48:00  getprotoent("tcp")->p_proto is a bit more portable than expecting the IPPROTO_TCP constant to be defined, but I don't think Network.Socket exports getprotoent.
19:49:50  I suppose I could get that with the FFI.
19:52:18  fizzie: It sure would be convenient if S took the protocol number directly.
19:53:42 -!- NihilistDandy has joined.
19:56:36  elliott: Perhaps, but since those are not so portable... (It could use the same scheme of "protocol number or 0" though.)
19:56:56  fizzie: Well, I don't care how hard it is for the Funge coders, just for the implementors. There's more of the latter, after all.
19:57:11  A hugely oversaturated market.
19:58:17  There's the whole "the address is on top of the address family on stack" mishap that makes the technically-supported AF_UNIX rather impossible too.
19:58:58  fizzie: Oh, god.
19:59:07  How does rcfunge do it? :P
19:59:37  I don't think it does; it just assumes all addresses are single-cell values.
20:00:34  Not sure what it does to the value in the AF_UNIX case though.
20:00:38 -!- impomatic has left.
20:01:04  Such a meeeeeeeeess
20:01:50  Holy wow, rcfunge's fingerprint mechanism is
20:01:52  Interesting
20:02:03 -!- NihilistDandy has quit (Ping timeout: 246 seconds).
20:02:53  fizzie: rcfunge's sock.c includes code literally byte-identical to scke.c.
20:03:15  It... looks like SOCK includes SCKE, but SCKE exists totalyl separately too with no code reuse???
20:03:28  o.o
20:06:00  fizzie: So shungot may be working soon :P
20:06:02  elliott: Also it packs the address into a sockaddr_in always, and then just sets the .sin_family field to AF_UNIX if requested. That doesn't really... work.
20:06:08  Nice.
20:07:40  olsner: hmm, I think you want some sort of symbolic expression framework even if you don't offer that fancy stuff
20:07:44  like
20:08:01  readByte :: (Read a) => a -> ASM Word8
20:08:09  you want to be able to implement such a function
20:08:16 -!- oerjan has joined.
20:08:27  so (ASM a) should actually look something like (Writer [AsmStmt] (Symbolic a))
20:08:44  where Symbolic is an expression language over registers, integers, arithmetic, etc.
20:08:56  and it then gets flattened out to statements
20:09:48  olsner: I guess it could be done simpler but I'm not sure how, but if you can't write "Reg -> Asm Word8" then your monad is really semantically shallow
20:11:55   derdon: Well, the spec is ambiguous; you have two options: wait until DMM responds, or make up your own interpretation and assure everyone it's standard :)
20:12:14  DMM is big on people making up their own interpretations.  see: every iwc poll ever
20:12:35  (ok, _nearly_ ever)
20:12:57  olsner: And indeed, "mov" then becomes a lot simpler.
20:13:17  sadly, he is not big on having plenty of time.
20:13:21  olsner: class Read a where peek :: (Bits r) => a -> r (caller chooses size of read by instantiating r)
20:13:49  erm
20:13:52  olsner: class Read a where peek :: (Bits r) => a -> Asm r (caller chooses size of read by instantiating r)
20:13:55  olsner: class (Bits b) => Write a b | a -> b where poke :: a -> b -> Asm ()
20:13:56  Then
20:14:04  mov dst src = peek src >>= poke dst
20:14:04  that's not ... very consistent with the usual definition of Read
20:14:10  oerjan: It's a different Read
20:14:25  olsner: I think you can actually do this without any sort of symbolic expression work creeping in, compiling down to exactly what you'd expect
20:14:33  In fact, I think the symbolic thing may simply be a fragment of an ASM statement
20:16:28  I can think of three brainfuck derivatives that I believe are not bad
20:16:39  olsner: Actually that's really cool, because you can implement macros properly
20:16:50  Boolfuck and Bub because they were useful in proving languages Turing-Complete
20:16:51  Instead of needing "weird cpp style macros" and "statement macros"
20:16:59  and Ook! because it was original
20:21:40  :t tell
20:21:41  forall w (m :: * -> *). (MonadWriter w m) => w -> m ()
20:22:41 -!- kwertii has joined.
20:23:14  `addquote  elliott: mr president, commissioner, i fully accept that description when it comes to human rights. yes, with an average fat content of chocolate, and we are using double standards! we all know that under present legislation and also in relation to standardization bodies. if i do not want.
20:23:14  oerjan: i have a proposal for moving israeli settlements so the name may redirect to this page... i agree with fnord. even using the lushootseed name as equivalent to the standard norm
20:23:19  640)  elliott: mr president, commissioner, i fully accept that description when it comes to human rights. yes, with an average fat content of chocolate, and we are using double standards! we all know that under present legislation and also in relation to standardization bodies. if i do not want.
20:23:23  heh
20:24:05  and it responds with another tempting one.
20:31:13 -!- NihilistDandy has joined.
20:32:17 -!- boily has quit (Ping timeout: 245 seconds).
20:34:36   "i can check if one of her parents was a fnord catholic fnord who, according to the fnord" [citation needed]
20:34:55  i think that would be a very plausible use of fnord in the original sense
20:35:34  Goodnight
20:35:40 -!- Taneb has quit (Quit: THIRSTY).
20:37:13 -!- augur has quit (Remote host closed the connection).
20:40:36  olsner: My scribblings: http://sprunge.us/ZGhh
20:41:51  olsner: Actually, Expr shouldn't be a data family. It can just be a GADT.
20:42:07    sbrg: but why would someone want to implement a legacy API in haskell? <-- i assume this _is_ a befunge fingerprint we are talking about, any particular reason for not admitting so? :P
20:42:26  *funge-98
20:42:27  oerjan: THEY'D JUDGE ME
20:42:37  oerjan: And I'd NEVER get a function into the network package because "befunge needs it" :P
20:42:45  elliott: YOU MEAN WE'D GET ANOTHER INVASION
20:42:52  THAT TOO
20:43:04 -!- augur has joined.
20:43:05  oh i can see that might be a problem
20:44:10  i _do_ have this feeling #esoteric has become even more haskellish than usual recently
20:45:05  define haskellish
20:45:11  fortunately there is zzo38 to take horrible revenge.
20:45:54  elliott: as in, we may be discussing haskell more often than esolangs
20:46:03  well that's usual
20:46:14 -!- augur has quit (Remote host closed the connection).
20:46:17  ok, but even more than usual
20:51:46 -!- augur has joined.
20:52:20  !help
20:52:21  ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help .
20:53:08  !bf_txtgen http://esolangs.org/wiki/
20:53:26 -!- Patashu has joined.
20:53:48  !echo Are you there?
20:53:48  Are you there?
20:54:26  !bf_txtgen http://esolangs.org/wiki/
20:54:44  ​Top %: 0.1
20:55:00  that's ... not encouraging.
20:55:28  Gregor: is it just horribly overworked?
20:55:49  Uhh, not sure what happened there :P
20:55:55  !bf_txtgen hello
20:55:57  !bf_txtgen Hewwo?
20:55:58  ​57 +++++++++++++[>++++++++>+>><<<<-]>.---.+++++++..+++.>---. [197]
20:56:00  ​89 ++++++++++[>+>+++++++>++++++++++><<<<-]>>++.>+.++++++++++++++++++..--------.<---------.<. [628]
20:56:13  heh
20:56:19  What that SHOULD have done is downloaded the page from http://esolangs.org/wiki/ (which may or may not actually work) and generated the text of it.
20:56:23  !bf_txtgen http://www.google.com/
20:56:26  ​Top %: 0.1
20:56:32  Apparently that doesn't work :P
20:56:33  oh duh :P
20:56:40  ic
20:57:02  !bf_txtgen htsp://esolangs.org/wiki/
20:57:06  ​207 +++++++++++++[>++++++++>+++++++++>+++++++++>++++<<<<-]>.>-.>--.---.>++++++.-----------..<<<---.>-.>-.---.<<----.>>++.<<++++++.>.>>-.<+.<-.<.>>>+.<<+++++.>------.++.--.>.-------------------------------------. [494]
20:58:09  ^def wiki +++++++++++++[>++++++++>+++++++++>+++++++++>++++<<<<-]>.>-.>-.----.>++++++.-----------..<<<---.>-.>-.---.<<----.>>++.<<++++++.>.>>-.<+.<-.<.>>>+.<<+++++.>------.++.--.>.-------------------------------------.,[.,]
20:58:09  Usage: ^def   
20:58:15  ^def wiki bf +++++++++++++[>++++++++>+++++++++>+++++++++>++++<<<<-]>.>-.>-.----.>++++++.-----------..<<<---.>-.>-.---.<<----.>>++.<<++++++.>.>>-.<+.<-.<.>>>+.<<+++++.>------.++.--.>.-------------------------------------.,[.,]
20:58:15  Defined.
20:58:23  ^wiki Brainfuck
20:58:23  http://esolangs.org/wiki/.Brainfuck
20:58:27  oops
20:58:38  ^def wiki bf +++++++++++++[>++++++++>+++++++++>+++++++++>++++<<<<-]>.>-.>-.----.>++++++.-----------..<<<---.>-.>-.---.<<----.>>++.<<++++++.>.>>-.<+.<-.<.>>>+.<<+++++.>------.++.--.>.,[.,]
20:58:38  Defined.
20:58:42  ^wiki Brainfuck
20:58:42  http://esolangs.org/wiki/Brainfuck
20:59:41  .>-. as the way of printing two t's is not immensely encouraging :P
21:00:17  Well it *is* an evolutionary algorithm.
21:07:00  So it's an optimizing text gen? Interesting
21:08:33  except with EgoBot the optimization tends to get cut short
21:09:58  ^wiki ///
21:09:58  http://esolangs.org/wiki////
21:10:00  is esolangs.org down?
21:11:38  "You are seeing this message due to the site you are trying to view having its DNS hosted by EveryDNS."
21:11:53  EveryDNS services will be fully discontinued as of September 9th, 2011.
21:11:55 -!- augur has quit (Remote host closed the connection).
21:12:22  D:
21:12:29  esoteric.voxelperfect.net
21:12:55  the EVN address is fine
21:13:04  so presumably it's a DNS issue, especially given the content of the page
21:13:20  rly
21:13:35  That's a very dickish way of handling it.
21:13:36  I guess I'll email the owner of the domain
21:13:52  elliott: pen a strongly-worded note.
21:13:54  "Lawl we're going to MITM you"
21:14:30  Sent an email
21:15:12 -!- tiffany has quit (Ping timeout: 252 seconds).
21:16:05  wat
21:16:14  oerjan: ?
21:16:32  elliott: bad timing on my fungot definition :(
21:16:32  oerjan: i'm not sure. fnord 18:22, 24 july 2005 ( utc)
21:16:51  oerjan: ?
21:16:57  Oh
21:16:59   ^wiki ///
21:17:03  http://esoteric.voxelperfect.net/wiki/Slashes
21:17:08  oerjan: What was the wat though
21:17:09 -!- augur has joined.
21:17:15  elliott: that was the wat
21:17:26  oh
21:18:37  If I put leaq -15(%rip), %rax in my assembly file, GCC (GAS) correctly puts the address 15 bytes before the current IP into %rax. EKOPath, because it's just better, puts leaq 0(%rip), %rax into the .o file, then at link time, finds the appropriate value x such that leaq x(%rip), %rax loads the VALUE -15 into %rax. Making leaq x(%rip), %rax be a fancy way of writing mov $x, %rax for EKOPath.
21:19:07  elliott: that doesn't look good - it means whoever owns the domain isn't answering mail...
21:19:13  Gregor: rewrite it some other way? :P
21:19:15  oerjan: um does it?
21:19:30  oh hm
21:19:33  elliott: I could, but then it would be slower on compilers that aren't retarded ... plus who knows, maybe EKO will still crap all over the new way.
21:19:33  probably spamfiltered
21:19:34  ?
21:19:35  I guess?
21:19:37  elliott: that page says they have sent _several_ notifications before doing this outage stuff
21:19:50  well they could have just not got around to it yet.
21:19:57  "Migrating will only cost a $4.95 migration fee which helps us cover the cost of this new infrastructure, upgraded in preparation for this migration (you will be able to apply this fee to any future purchase made in the next 6 months on DynDNS.com as well)."
21:19:59  haha, what assholes
21:20:06  PAY OR LOSE YOUR SERVICE
21:21:08  isn't 5 dollars cheaper than getting a new dns?
21:21:29  There are several free DNS services.
21:23:03  !bf_txtgen htsp://esoteric.voxelperfect.net/wiki/
21:23:06  ​293 +++++++++++++[>+++++++++>+++++++++>++++++++>++++<<<<-]>>>.<<-.-.---.>>>++++++.-----------..<---.<--.<-.>+.>.<--.<------.>>--.>-.<<++++.>++++++++++++.<++.<----.>------------.>+.<-------.>++.<+.-.<--.>>++.>.<<+++++++++.<++.>>.>+.<+++.--------------.++.--.>.-------------------------------------. [567]
21:23:13 -!- tiffany has joined.
21:23:47  ^def wiki bf +++++++++++++[>+++++++++>+++++++++>++++++++>++++<<<<-]>>>.<<-..----.>>>++++++.-----------..<---.<--.<-.>+.>.<--.<------.>>--.>-.<<++++.>++++++++++++.<++.<----.>------------.>+.<-------.>++.<+.-.<--.>>++.>.<<+++++++++.<++.>>.>+.<+++.--------------.++.--.>.,[.,]
21:23:47  Defined.
21:23:47  Gregor: are they any /good/?
21:23:56  ^wiki Slashes
21:23:56  http://esoteric.voxelperfect.net/wiki/Slashes
21:24:27 -!- azaq23 has quit (Quit: Leaving.).
21:24:56 -!- derdon has quit (Remote host closed the connection).
21:25:02  ais523: I've used the one at afraid.org, and never had any problems with it. I used Granite Canyon a long time ago, and it was fine, but I don't know if it still is.
21:28:01  ais523: changing to esoteric.voxelperfect.net, i see our wiki has some spams on it
21:28:25  oh right, I should use EVN's RSS feed
21:30:04  thanks, I've found them now, deleting...
21:30:47  'twould be great if I could delete spam in one click from my RSS feed reader
21:30:50  elliott: I was gone for a while, but you seem to have been busy
21:31:14  olsner: indeed, i said IMPORTANT THINGS
21:31:41  Gregor: Granite Canyon?
21:32:18  elliott: Upon a quick googlin', looks like they're dead :P
21:32:30  Gregor: RIP
21:32:44  I think destinations should decide their size automatically... also, registers have a size which you can't change - can't for example move a byte into eax without using the explicit sign/zero expand opcode
21:33:08  olsner: I said more important things than that :P
21:33:18  Basically I suspect your current monad can't implement
21:33:30  readByte :: Reg -> Asm Word8
21:33:38  which restricts it a lot and makes the monad much less semantically useful
21:33:40  I read some stuff about symbolic something and then a link to a paste
21:33:43  Then I figured out how to do that and implement it
21:33:59  what is readByte supposed to do?
21:34:08  olsner: Read the byte, at runtime
21:34:17  the byte? which byte?
21:34:20  olsner: The byte in the register
21:34:31  (Assume registers are byte-sized)
21:34:46 -!- monqy has joined.
21:35:09  It has to be -> Asm Byte because you obviously can't implement (readByte >>= f) since the code doesn't "exist" at runtime, but you can do -> Asm Byte which implements all the same things
21:35:10  As shown in my paste
21:35:15  you mean like do { x <- readByte eax; do-stuff-with-x } , where x is magically the value the register had?
21:35:18  You don't really have to do any semantic work at all, it maps directly to your asm structure
21:35:25  olsner: Yes, but it's not magical :)
21:35:37  Then if you have writeByte, a mov reduces to just that
21:35:45  It means you can do a lot more with macros, and your monad is actually semantically meaningful
21:35:49  Rather than just being used for do notation
21:35:56  So then I implemented a scrap of it
21:36:37 -!- AndGregor has joined.
21:37:04  AndGregor: OrGregor
21:38:32  MedianGregor
21:39:00  man this class sure is lame.
21:44:12  elliott: so the general idea is that peek (and other stuff) returns a value describing the source operand, and then you have type families, classes and runtime checking to see if that's possible to combine with the destination operand?
21:46:00  i conclude from the feature list that Uniquode includes Feather as a subset.
21:46:10  haha
21:46:38  also i assume the caste system uses the indian characters.
21:47:16  I mentioned feather in reaction tot he "retroactive self-modification" feature a few days ago and taneb said his approach to it was actually pretty simple?? I forget/dunno how it will work though
21:47:18  olsner: there were no typeclasses necessary
21:47:22  I amended it
21:47:30  and no runtime checking for the destination operation at all, it's handeld in the type system
21:47:43  elliott: hmm, where did you amend it?
21:47:46  the runtime checking was just proving that leaving out unimpelementable things (like (==)) does not cause errors
21:47:59  olsner: next message that pinged you
21:48:11  monqy: feather _is_ pretty simple.  it's just incompatible with human brain function, is all.
21:48:36  http://sprunge.us/ZGhh is what I'm reading
21:48:41  olsner: yes
21:48:43  then I corrected it
21:48:45  on IRC
21:48:50  it can just be a simple GADT
21:49:28  right, but it still has type *classes*
21:49:38  a simple GADT and a prehistomorphic prepromorphism, et voila!
21:49:43  wait
21:49:43  olsner: so do you?
21:49:45  *zygo
21:49:56  you'll need a write typeclass too, for when you can write to memory
21:49:59  the typeclasses are really simple
21:50:09  you could eliminate them and still keep the basic idea
21:50:11  I think " olsner: there were no typeclasses necessary" was just supposed to say type families instead of classes
21:50:17  err, right
21:50:32  point is, Expr can be one GADT, no need for families at all
21:50:36  that was a bit confusing, because I saw the type families/GADT comment
21:53:03  what's to prevent you from doing something like { x <- peek eax; mov byte eax ...; mov byte ebx x; } and store the wrong x in ebx?
21:53:07  ah, that tunes.org glitch i saw the other day seems to have been temporary.
21:53:22  i.e. store eax which has now changed
21:53:47  olsner: hmm, ah, that's quite easy to fix
21:53:57  maybe peek should just be internal to your opcodes
21:54:05  no, no
21:54:10  the whole point is that peek is usable by the user
21:54:10  (11.09.04 for some reason does not show as text)
21:54:21  what for?
21:54:23  because it lets you write macros and the like far more expressively
21:54:38  you can get a Byte result out of a macro, and then put it in any register, or memory location, or anything, you desire
21:54:43  rather than having absolutely everythign return ASM ()
21:54:48  and passing in the destination
21:54:53  it's much more functional
21:55:47 -!- FireFly has quit (Quit: FireFly).
21:55:52  olsner: anyway, it's easy to fix: registers actually read a type equivalent to (Byte,Ref Bool), one reference per register, that starts out True, and any modifications to a register writes False to the Ref, and you then replace the ref (Ref (Ref Bool) :P)
21:55:58  you just need a Ref type in ASM, so just stick ST on the bottom
21:56:03  the ref is basically just "is this reference still valid"
21:56:36  olsner: but no, yeah, the whole point of this is that you can express peek, and in fact, it doesn't require any more infrastructure than you'll end up writing anyway
21:57:18  why not... mix in parameterised monads and keep track of validity in the type system?
21:57:58  probably not, at the very least I don't think I can successfully combine that with monadfix
21:58:09  olsner: sure, that's more elegant, I'm just saying you can do it without anything extra
21:58:14  I don't see why you need MonadFix
21:58:17  that'd just lead to generating infinite code
21:59:31  but yeah, this is the difference between an assembler that's way more useful than existing ones, and a bunch of glorified print statements :P
22:01:12  well, I use monadfix and recursive do notation to allow forward and backward jumps to labels
22:01:41  hmm, what does that look like?
22:02:10  do you generate all the labels, and then say "here's the label yo"
22:02:17  or do you somehow actually do a backwards reference to the haskell identifier
22:02:28  you write do rec { jmp l; ...; l <- label; } and l gets its future value
22:02:33  right
22:02:42 -!- nooga has quit (Ping timeout: 245 seconds).
22:02:55  hmm, what if you made labels local macros instead...
22:03:02  foo = label $ do { ...; jmp foo; ... }
22:03:07  that might be hard to do purely :P
22:05:34  doesn't need to be pure if it's fun :P
22:06:43  hmm, that might work
22:06:56  (label m) puts m in its internal database of labels, returns the label identifier fo it
22:06:57  for it
22:07:01  yep, that would work olsner
22:07:08  it's just the same as monadfix though basically
22:07:11  because foo would then be of an ASM type
22:07:17  adn you'd need to unpack it at use time
22:07:25  like putting foo somewhere would inline it
22:07:26  yeah
22:07:26  w/e
22:08:08  olsner: i realise my explanation of the peek stuff is rather subpar
22:09:37  is foo here supposed to be a function-like thing where other code would also jmp/call foo and expect it to be included in the program?
22:10:27  It's kind of like a macro :P
22:10:32  But yeah, it's less useful than your recursive do stuff.
22:10:40  anyway, time to sleep
22:18:02 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.1/20110830092941]).
22:22:40 -!- nooga has joined.
22:24:13 * nooga drunk
22:25:03  how unusual.
22:26:26  i just wanted to read elliott's comment
22:26:46  yep
22:28:39  when was the last time i was here drunk?
22:29:06 * Phantom_Hoover → sleep
22:29:08 -!- Phantom_Hoover has quit (Quit: Leaving).
22:29:56  it's hard to tell
22:30:00  you act like you always are
22:34:41 -!- nooga has quit (Ping timeout: 264 seconds).
23:26:06 -!- ive has joined.
23:35:20 -!- sllide has quit (Read error: Connection reset by peer).
23:41:13 * CakeProphet has been drunk once on #esoteric.
23:41:15  only once.
23:41:25  all of the other stupid shit I say is while completely sober.
23:42:36 -!- copumpkin has quit (Ping timeout: 252 seconds).
23:47:08  ​291977 ++++++++[>+++++>+++++++>++++++>+++++++<<<<-]>>++++.>>-----------------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.<+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>-.<<<++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.---------.-----------.---------------------------------------------------------------------.+++++++++
23:47:20  oerjan: congrats
23:48:58  ...wat
23:49:20  ^bf ++++++++[>+++++>+++++++>++++++>+++++++<<<<-]>>++++.>>-----------------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.<+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>-.<<<++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.---------.-----------.---------------------------------------------------------------------.
23:49:20   XD
23:49:42  I'm surprised the algorithm isn't exponential or whatever
23:50:21  Gregor: are you _sure_ EgoBot's timeout code is working right? :D
23:51:10  oh wait...
23:51:19  http://sprunge.us/gNUi Perhaps the stupidest way of outputting the first 25 numbers in the Fibonacci sequence.
23:52:14  pikhq_: meh, my continuation hack was better
23:52:14  surely there /has/ to be a stupider way than that
23:52:17  with manual stack copying
23:52:28  elliott: Mine is POSIX compliant.
23:52:28  maybe esolangs.org just went up for a moment, and EgoBot has been waiting for all this time :P
23:52:30  Continuations are really ridiculously inefficient for coroutines though :P
23:52:31  OK, that one is pretty stupid
23:52:44  (it seems to down again, but without that dns message)
23:52:50  is that pthreads it's using? or some other posix threading model?
23:53:00 -!- copumpkin has joined.
23:53:10  ais523: POSIX ucontext. It's actually straight-up continuations.
23:53:19 -!- Vorpal has joined.
23:53:28  ah, continuations disguised as threads
23:53:41  (as opposed to continuations implemented using threads, like continuation.i does)
23:53:55  It's not POSIX 2008, though.
23:53:59  (they removed it)
23:54:01  I'm still not sure how you do that, since threads are provably less powerful
23:54:05  But, lol INTERCAL
23:54:12  elliott: spawn a thread, then lock it in an infinite loop
23:54:27  ais523: yes, but you can't rewind a thread
23:54:29  they're more like forks than threads
23:54:31  a continuation has to be callable multiple times
23:54:40   I'm surprised the algorithm isn't exponential or whatever <-- well it doesn't look like it was much optimized
23:54:42  elliott: I just spawn another one
23:54:50  e.g. when it's called once, I make a second before calling the first
23:54:52  hmm
23:54:56  if it's called again, I make a third before calling the second
23:54:59  OK, yeah, that works
23:55:02  fork() is more powerful than threads, though
23:55:14  well, INTERCAL threads are more like fork()
23:55:20  right
23:55:29  only communication's via abstention status
23:55:37  also, you can rewind a thread in INTERCAL
23:55:44  I just didn't
23:56:16  MAYBE DO [...] ... DO GO BACK
23:57:09  elliott: Incidentally, bsnes uses continuations as threads. I'm amazed that manages to work at anything even vaguely resembling a decent speed.
23:57:51  Doesn't it use stack copying
23:58:18  I think it actually just changes the stack pointer.

2011-09-07:

00:00:03  pikhq_: do you mean threads as continuations?
00:00:16  either is theoretically possible, but the second seems more likely
00:00:32  I said what I meant.
00:00:43  It's not really threads.
00:00:44  It's coroutines.
00:00:46  wow
00:00:53  where did it get the continuation library from?
00:00:58  Please.
00:00:59  He wrote it.
00:01:01  "Continuations as threads" is a really stupid way to say
00:01:04  "Coroutines with stack pointer".
00:01:11  And misleading.
00:01:22  (also, for an emulator, continuations sound like a really good way to do savestates)
00:01:36  in Underlambda, you can serialise continuations to stdout if you want to
00:01:44  and later read them in and just pick up off from there
00:01:53  That's pretty close to what the savestate support is, IIRC.
00:02:03  Well.
00:02:06  High-level wise.
00:02:15  It's in C++, so low-level, it's a fuckton of painful serialisation.
00:02:30  And then deserialisation.
00:03:10  how many languages have specified that all interps must be able to do an (interp-specific) serialisation/deserialisation of any subset of the entire program state, including a continuation?
00:04:04  Interp-specific? Lame
00:04:10  It should be the program format
00:04:20  that's one possible option
00:04:32  but that would ruin a lot of possible optimizations, I think
00:04:50  program format with an extra pair of parens is what derla uses, IIRC
00:04:51  but I'm not sure
00:05:28  Fuck optimisations, platonically perfect language
00:06:17  perhaps have two serialisation options
00:06:26  an optimised one, and a portable one
00:06:35  or just require all interps to be able to do it either way
00:06:47  :t forkIO
00:06:48  Not in scope: `forkIO'
00:06:53  and have an option where they just reformat serializations rather than load them
00:07:19  @hoogle fix
00:07:19  Data.Function fix :: (a -> a) -> a
00:07:20  Control.Monad.Fix fix :: (a -> a) -> a
00:07:20  module Control.Monad.Fix
00:07:31  ais523: Surely you can encapsulate a loading of a serialisation and then serialise that program?
00:07:32  Subprograms.
00:07:46  I don't think fix is actually in Control.Monad because I have it imported in ghci and it was not in scope.
00:08:01  CakeProphet: it's in Control.Monad.Fix, if you look more carefully
00:08:03  It says Control.Monad.Fix.
00:08:13  oh hey look at that it does.
00:08:20  elliott: hmm, you could write a small program to do it
00:08:25  :m + Control.Monad.Fix
00:08:27  ...
00:08:41  especially as deserialization never immediately runs what it deserializes
00:08:44  obviously I am not mentally exhausted right now.
00:08:44  ais523: how, if loading a serialisation ajumps into it?
00:08:45  ah
00:09:02  you can add an extra ^ to jump into it, as always
00:09:12  Surely you want to clear the stack first
00:09:21  (clear) dip call
00:09:24  or provide it with an argument
00:09:34  @hoogle IO a -> IO ()
00:09:35  Foreign.Marshal.Error void :: IO a -> IO ()
00:09:35  Network withSocketsDo :: IO a -> IO a
00:09:35  Control.Exception block :: IO a -> IO a
00:09:41  actually, continuations clear the stack themselves
00:09:44  it's a simple use of ultra
00:09:50  ultra + pop clears the stack
00:09:51  Oh, it's not just a function?
00:09:52  Gross.
00:09:54  hmmm, I thought void was in Control.Monad as well.
00:10:06  elliott: it's not a function, because continuations don't return
00:10:14  ais523: Yes they do, when the program executes
00:10:16  erm
00:10:17  you can make function-like not-quite-continuations pretty easily, though
00:10:18  ais523: Yes they do, when the program terminates
00:10:25  They return to the OS
00:10:33  what, really? continuations are like goto, not like gosub
00:10:34  No reason why an underlambda program can't be the OS to another
00:10:38  all things must eventually return.
00:10:40  oh, I see what you mean there
00:10:42  except for those that don't.
00:10:46  ais523: When a program using continuations exits, does your computer explode?
00:10:50  that's interesting and I should think about it
00:10:59  elliott: no, the process quits
00:11:01  ais523: Or, alternatively: How does a CPS program terminate?
00:11:04  and that's a different sort of level from other things
00:11:08  A CPS program /takes a continuation as an argument/.
00:11:19  That's the OS.
00:11:21  Or your shell, or whatever.
00:11:29  the thing is, Underlambda isn't CPS, and doesn't assume things written in it are
00:11:30  Not being able to pass your own is a needless limitation.
00:11:42  ais523: No, but call/cc is equivalent with CPS.
00:12:16  it'd be easy enough to make continuations that were return-to-argument-on-exit rather than quit-on-exit
00:12:21  Underlambda is implemented mostly in itself
00:12:29  CakeProphet: it is, but it's a new addition
00:12:37  if you have an Underlambda interp that doesn't do continuations, you can change it to one that does with a string replace
00:12:52  ais523: Yeah, but it's gross to have continuations that you can't control the exit behaviour of in the core anyway.
00:13:15  Being able to write an "Underlambda OS" in Underlambda would IMO be very much in line with its goals.
00:13:20  it would
00:13:20  (Without writing your own interpreter.)
00:13:25  I'm reconsidering my design a bit at the moment
00:13:26  oerjan: apparently too new for my version of ghci
00:13:31  ais523: But thankfully, they don't actually need to take a continuation.
00:13:34  They just need to return.
00:13:35  in particular, what exactly c should do
00:13:44  Any program that used continuations like it did before should work, unless it has dead code at the end.
00:14:06  I'm trying to work out what would happen if you just lopped off the Q at the end
00:14:23  hmmm okay so....
00:14:29  ais523: well, you should maintain the stack
00:14:31  fix (void . forkIO)   -- fork bomb   yes?
00:14:32  at least IMO
00:14:41  so here's the basic operation: #XCx|=> X(X(x))x
00:14:43  ais523: in fact, a continuation might want to push the stack at the end of execution
00:14:51  hmm
00:14:52  what's X?
00:14:54  oh, hmm
00:14:57  anything
00:15:02  that's the rewrite rule that implements C
00:15:02  can you use special notations for your variables?
00:15:09  rather than mixing them with operations :P
00:15:26  elliott is probably my favourite boy name [/random]
00:15:27  which doesn't form continuations, but which is the basic operation that lets you implement them in user code
00:15:35  ok, umm, I have no idea how that rewrite rule works
00:15:35  tiffany: spelt like that?
00:15:40  idk
00:15:46  let me use square brackets
00:15:51  CakeProphet: the parent halts too quickly to call it that, i think
00:16:03  (also, # and | should be interpreted as ^ and $ in regexen)
00:16:15  #[X]C[x]|[X]([X]([x]))[x]
00:16:21  it's probably clearer without the brackets
00:16:45  START history 'C' rest END = history (history (rest)) rest
00:16:51  no, not history
00:16:53  stack
00:16:53  ais523: Why does the history matter?
00:16:54  Oh.
00:17:07  START stack 'C' future END = stack (stack (future)) future
00:17:14  ais523: Why not (stack future)?
00:17:15  yep
00:17:19  So you can determine the rest of program?
00:17:25  because that would automatically run future if you tried to evaluate it
00:17:28  Right.
00:17:48  fix (forever . forkIO)   -- fork bomb   yes?
00:17:59  ais523: That seems correct to me, then. When future runs off the end of the program, the continuation returns, if you called it. IMPORTANT NOTE: Any "exit program" functions have to be careful not to specify that they exit the interpreter, just the current program.
00:18:00  not entirely sure how forever :: m a -> m b
00:18:05  CakeProphet: better
00:18:16  "current program"? ouch
00:18:19  I guess b is just bottom?
00:18:24  CakeProphet: because it never returns anything, it can return any type :P
00:18:24  Well, it's not as bad as it sounds.
00:18:28  ah right.
00:18:31  ais523: The "future function" should be ((future)@), where @ basically means "in a new context".
00:18:31  I mean, such a concept doesn't exist
00:18:36  @src forever
00:18:37  Source not found. I've seen penguins that can type better than that.
00:18:37  unless you can somehow work it out using rewrite rules
00:18:42  oerjan: so then the fix is completely unecessary here. :P
00:18:44  forever = fix (>>)
00:18:44  there's no "in a new context", you manufacture the new context by hand
00:18:49  using dip, etc
00:18:57  ais523: I'm telling you to introduce one; all it does is run the program with a fresh, empty stack, then push the stack at the end as a single element.
00:19:06  CakeProphet: um no
00:19:07  The only relevant effect being that any "exit" instructions are defined to only halt the current program.
00:19:15  oerjan: oh right nevermind. lol
00:19:16  ais523: It's not the idea of a current program that's inelegant here, it's an exit instruction.
00:19:23  if that's meant to be implemented in the interp directly, it'd increase the complexity of the language by about 1000%
00:19:24  You can't just halt the program forever at any point in a more pure model.
00:19:36  ais523: I'm hinting slightly that you should have no exit program instruction.
00:19:42  yep, I get it
00:20:08  because if you envision an underlambda program in a higher context, "exit program" turns out to look something like "halt computer"
00:20:12  which is insane
00:20:26  oh, I changed the definition of C, it seems
00:20:32  it doesn't give you the whole stack, just the future
00:20:42  ah, so you have to copy the stack yourself?
00:20:43  makes sense
00:20:55  Cx => (x)x is reasonable, after all
00:21:02  as is
00:21:02  as grabbing the whole stack can be done as (~aa(n:^)~*(*)*^)n:^
00:21:05 * oerjan notes that the e function was the only function that wasn't implemented in terms of itself in his unlambda self-interpreter
00:21:11  sQx = s(s)x
00:21:12  ais523: ouch :P
00:21:22  oerjan: what does e do again?
00:21:23  elliott: that's commonly abbreviated to A
00:21:25  so it could support what elliott said
00:21:33  oh, I see
00:21:35  elliott: exit
00:21:36  elliott: exit the program
00:21:36  exit
00:21:43  what does @ do again?
00:21:45  in unlambda
00:21:47  I don't expect people to type out (~aa(n:^)~*(*)*^)n:^ every time, that's precisely why you can write A instead
00:21:50  read character
00:21:56  right
00:21:57  especially as it's a useful and commonly used operation
00:22:14  OTOH, the fact that it can be implemented in terms of more basic instructions is good as it means interps in BF or whatever don't need to implement A themselves
00:22:21  apply the argument to i or v, according to whether it was successful
00:22:27  ais523: hmm, I'm wondering how an underlambda interpreter would do preemptive multitasking
00:22:37  the opposite of A, in a sense, is ('A_~)_~('^_^A)_~'^_
00:22:56  ais523: you can't just divide programs into the first N instructions and the rest and selectively evaluate them, because (a) IO (not a huge problem), but (b) those N instructions could loop forever, or whatever
00:23:00  and lol, ~_~ '^_^
00:23:07 -!- AndGregor has quit (Ping timeout: 245 seconds).
00:23:10  A grabs the stack into a single stack element; that operation, I, runs a program in a new context
00:23:32  so really, you'd want to be able to infra a continuation and have things just work
00:23:54  yep
00:24:18  ais523: hmm, if you _do_ want exit, there's an obvious way
00:24:20  so the problem with removing the quit from the end of a continuation, is that it'd go back to the last place you called a continuation, not the last I
00:24:35  #@x| ==> (empty string)
00:24:41  ais523: you just have to redefine |, somehow
00:24:58  well, the | at the end is one of the most sacred parts of Underlambda
00:25:00  as is the # at the start
00:25:08  they are non-negotiable, and changing them will make m4 cry
00:25:42  ...underlambda is written in m4?
00:25:49  oerjan: it's written in everything
00:25:59  the only way m4 can do input is the equivalent of C's #include
00:26:14  ais523: well, what I meant was basically
00:26:16  so in order to read an Underlambda program, you change the quote marks to # and | and then include it
00:26:20  you just have to redefine how much the exit instruction erases
00:26:24  yep
00:26:32  by having an operation (foo)L that runs foo "with the | after it"
00:26:37  as in, (foo)L -> foo|
00:26:58  so, my current definition of Q as a preprocessor rule is Q/(-)S(((!(a(:^)*):^)):)~^
00:27:05  (the (-)S is there for debugging, I think)
00:27:16  and it's actually obliterating the rest of the program
00:27:28  /but/, all I need to do in order to make "new context" an instruction is to add an extra element in the moand
00:27:29  *monad
00:27:40  what is monadic about it
00:27:46  (you know the "you could have invented monads" thing? I did, several times)
00:27:50  we need to ban the word monad forever :(
00:28:00  well, take a rule like a/(-)S((a(^!^)a*a(:(^!^)a~*a~(^~!^)a~*a*~^)*(^!^))((e%)S))~^
00:28:14  basically, each command is translated into what amounts to a monad action
00:28:19 -!- AndGregor has joined.
00:28:23  where the monad is similar to Cont
00:28:32  but it allows two forms of execution: running the program, and grabbing a copy of the program
00:28:35  fair enough
00:29:29  ais523: maybe Underlambda is the language that will finally work to do an esoteric OS in... designed to be implementable anywhere, persistable state, defined in terms of a very simple core, and now perhaps with the ability to run subprograms?
00:29:33  oh, and the ((e%)S) stuff happens when you try to run a command that needs arguments on an empty stack
00:29:41  I dunno how easy it'd be to implement in assembly with no memory management, though
00:29:47  elliott: yes, although I can't think of a way to do preemptive multitasking offhand
00:29:56  ais523: yeah, that's what I was thinking about
00:30:03  how easy do you think an implementation on the bare metal would be, out of interest?
00:30:07  the problem with Underlambda is not implementing it, but implementing it efficiently
00:30:19  an implementation that works but has exponential performance is pretty trivial
00:30:22  heh
00:30:41  ais523: hmm, preemptive multitasking seems like it must be a primitive, or else it requires Greenspunning the language _itself_
00:30:49  Greenspunning?
00:30:58  ...tenth rule?
00:31:03  I think you can do it with preprocessor rules, anyway
00:31:06  elliott: aha
00:31:15  proof: you can't do "run N instructions", because of arbitrarily complicated loops within; so you need to split the loops
00:31:20  but then you have to replicate the control structure used
00:31:22  why don't you just implement Lisp /with/ Underlambda preprocessor rules?
00:31:30  mumble mumble, it requires a self-interpreter, Q.E.D.
00:31:34  ais523: I meant underlambda in underlambda
00:31:52  elliott: oh, you do that all the time, that's what the rewrite rules /are/
00:31:57  and the reason that the core is so simple
00:32:09  so that you only have a relatively small number of commands to metacircularly redefine every time
00:32:36  e.g. the language doesn't require interps to have error-checking like checking for an empty stack, but you can bolt it on after the fact if you like
00:33:07  I fear Underlambda's a little too ambitious, I keep restarting it and trying to do it right this time
00:33:14  I'm already on version 2.0 after abandoning version 1.0
00:33:50  I have a naive implementation of core+preprocessor that I'm using to check if naive implementations of core+preprocessor are enough
00:34:15  written in rather outdated Perl (as in, it's trying to work around the lack of a language feature that has since been added)
00:42:07 -!- elliott has quit (Ping timeout: 250 seconds).
00:42:58 -!- ais523 has quit (Remote host closed the connection).
00:44:41 -!- Zuu has quit (Ping timeout: 260 seconds).
00:48:37 -!- ive has quit (Ping timeout: 250 seconds).
00:49:26 -!- elliott has joined.
01:07:24 -!- AndGregor has quit (Ping timeout: 258 seconds).
01:14:27 -!- AndGregor has joined.
01:25:33  Sigh
01:25:41  fizzie: Can I blame you for SOCK?
01:25:45  I need to blame someone
01:37:58  What the hell is OOBINLINE, anyway
01:38:05  Some weird protocol thing, looks like
01:47:24 -!- copumpkin has quit (Ping timeout: 240 seconds).
01:55:24 -!- monqy has quit (*.net *.split).
01:55:24 -!- sebbu has quit (*.net *.split).
01:55:24 -!- MDude has quit (*.net *.split).
01:55:25 -!- myndzi has quit (*.net *.split).
01:56:41 -!- augur has quit (Remote host closed the connection).
01:57:01 -!- yorick has quit (Ping timeout: 260 seconds).
01:57:08 -!- yorick has joined.
01:57:26 -!- monqy has joined.
01:57:26 -!- sebbu has joined.
01:57:26 -!- MDude has joined.
01:57:26 -!- myndzi has joined.
02:10:51 -!- copumpkin has joined.
02:15:46 -!- pikhq has joined.
02:16:02 -!- pikhq_ has quit (Ping timeout: 258 seconds).
02:23:13  olsner: Hey, I just realised something
02:23:25  olsner: There's already a type-safe Haskell assembler
02:23:25 -!- AndGregor has quit (Quit: Bye).
02:23:57  Harpy
02:24:13  I dunno if it can write the machine code to disk though
02:37:14  Deewiant: Wrt SOCK, should I do input validation on popping or after everything?
02:37:19  Please tell me it's the reasonable latter
02:40:21 -!- HackEgo has quit (Read error: Connection reset by peer).
02:40:59 -!- HackEgo has joined.
02:41:39 -!- derrik has joined.
02:42:09 -!- derrik has quit (Client Quit).
02:46:38 -!- augur has joined.
03:00:37  fork fork fork
03:00:40  forkity fork fork
03:01:16  do fork while forking forks forever true.
03:01:26  what
03:02:26  I am flabbergasted that I cannot talk about forks and be appreciated for my intellectual contribution.
03:02:59  me too
03:03:19  hi
03:03:53  fork monqy while monqy
03:03:58  hi
03:04:42 -!- BeholdMyGlory has quit (Ping timeout: 240 seconds).
03:07:19 -!- BeholdMyGlory has joined.
03:07:35  while (fork());
03:09:35  Nooooooooooooooooooo
03:10:05  can someone say the digit one please
03:10:06  thanks
03:11:47  elliott: look in the topic
03:11:54  o thanks
03:12:00  there is an extra space in the topic
03:12:04  before two of the |s
03:12:05  fix plz
03:12:07  it upsets me
03:12:39 -!- Guardric has quit (Quit: Leaving).
03:12:42 -!- CakeProphet has quit (Ping timeout: 252 seconds).
03:13:24  sheesh
03:14:02  someone said there was a way to get irssi to put the topic in the command line for editing, but i've forgotten what it was
03:14:50  Ctrl+T?
03:14:52  just a guess
03:14:55 -!- oerjan has set topic: It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang  event @ Hel/Finland on 3.10.2011:  https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | 12345678 | http://codu.org/logs/_esoteric/.
03:15:07  now tab worked, i'm sure it didn't last time...
03:15:16  as in /topic?
03:15:28  Q: How do I easily edit existing topic?
03:15:28  A: /TOPIC 
03:15:28  --http://irssi.org/documentation/faq
03:16:04  no, as in /topic ... and now it _stopped_ working again
03:16:08 -!- MDude has changed nick to MSleep.
03:16:56  hm, tab completing something else made /topic tab work again
03:18:23  heh
03:18:38  BAD: R received wrong data and/or misplaced it
03:18:38  BAD: R didn't push 6
03:18:38  BAD: trying to close socket with K reflected
03:18:39  nooooo
03:20:20  well thatsbdumb
03:20:42  i didnt realize i couldnt do /top
03:21:41  quintopia: yep, that's precisely what makes it _stop_ working :(
03:21:44  Deewiant: Hey, Mycology lies
03:22:40  after i do that, typing /topic  explicitly no longer works until i complete something else
03:22:48  oerjan: i know. lets hack it and fix it!
03:23:33   ...
03:23:53  quintopia: /tope^W works XD
03:24:30  elliott: ?
03:24:31  so it does
03:24:47  i wonder if there is a patch for this already
03:24:54  have you asked in #irssi?
03:24:57  oh, so does /top
03:25:01  oerjan: re  oerjan: i know. lets hack it and fix it!
03:25:31  elliott: yeah, quintopia is so naive
03:25:55  argh this is such a bad crap
03:26:03  i know its hard to hack the pile of spaghetti called irssi
03:26:21  but i think if i had a day, i could figure it out
03:26:25  quintopia: that's not the naive part
03:26:39  what is?
03:26:48  i'm sure elliott can explain
03:26:57  no, only zzo can
03:26:59 * oerjan whistles innocently
03:27:08  ask zzo
03:27:09  i... doubt zzo38 could
03:27:19  yes he could. quintopia just wouldn't get it.
03:27:45  well then, if i wouldnt get it, then i probably shouldnt care
03:30:00  argh what the FUCk is wrong with this
03:30:02  ogkfhlmkjhlkhpv;g
03:30:28  ok maybe you're meant to... pad it ou?
03:30:29  t
03:30:30  no
03:30:34  hmmm
03:30:47  jasiodjdfoidjgoidsf
03:31:05  hi
03:31:29  GOOD: sent "Foobar" with W
03:31:29  GOOD: W pushed 6
03:31:29  GOOD: closed socket with K
03:31:29  "9\"+55<"
03:31:30  okay that's
03:31:32  not right
03:31:58  oh my cology
03:31:58  OH GOD I' MSUCH AN IDIOT.... no wait no im not
03:32:08  yeah no im not an idiot
03:32:09  yeah you are
03:32:10  but what
03:32:14  copumpkin: :'(
03:32:15  <--- crying
03:32:17  okay no
03:32:26  sorry the crying doesn't stop for anyone
03:33:12  ok i'm reading wrong
03:33:44  i want to bite this laptop for not working
03:33:55  rational adult behaviour
03:35:01  i hear biting things is a common disease among horses
03:35:12  maybe im a hors
03:37:07  "< >:#,\n | goe\n#:<\"BA\n\">:#,_\nlects\"\n\"+_v#!\n0\"+<>:\n00#vp"
03:37:07  ok th- OH WHAT IS
03:37:08  WHAT IF
03:37:12  FUCKIN'
03:37:12  VECTOR
03:37:13  SHIT
03:37:20  popVecOffset
03:37:21  BAMBLES
03:37:37  that should really be a type error somehow.
03:38:26  also mööse.  would MÖÖS be a good fingerprint name?
03:38:43  not four bytes
03:38:53  i think
03:38:56  i mean in latin-1, of course
03:39:02  ah.
03:39:06  nobody uses latin-1, oerjan
03:39:46  it's close to irssi's default CPsomething fallback.  at least it contains those characters.
03:40:22  Windows-1252?
03:40:36  cp1252
03:40:38  hmm, STRN doesn't look... so hard
03:40:49  "cp1252" is ambiguous.
03:41:02  Multiple vendors have used "code pages".
03:41:04  well it's what my irssi setting has.
03:41:20  And the registered name for the charset is Windows-1252.
03:41:24  in any case, it's latin-1 + some extras
03:41:35  It's not a strict superset of Latin-1.
03:42:08  It's a superset of the printable subset of Latin-1.
03:42:09 -!- ive has joined.
03:42:15  whatever.  everyone recommended i set my irc fallback to it, anyway.
03:42:34  pikhq: well duh, it's not like there's extra room
03:43:15  Well, presumably you IRC primarily in English and Norwegian.
03:43:31  pikhq: i had it recommended in this channel.
03:44:05  Both of which, IIRC, have Windows-1252 as the primary legacy charset.
03:44:26  it allows me to see some messages from people not properly utf-8.
03:44:47 -!- CakeProphet has joined.
03:44:48 -!- CakeProphet has quit (Changing host).
03:44:48 -!- CakeProphet has joined.
03:45:02  Yeah.
03:45:18  Shame that that's still an issue.
03:46:12  G(Va -- 0gnirts)Get string from specified position
03:46:14  oh come on, wtf?
03:46:19  fizzie: Deewiant: ?????
03:46:26 * elliott checks ccbi i guess
03:47:50  oh duh it's 0-terminated
03:55:07  > fromEnum (compare "a" "a")
03:55:09    1
03:55:12  > fromEnum (compare "a" "b")
03:55:14    0
03:55:15  > fromEnum (compare "b" "a")
03:55:16    2
03:55:20  huh
03:56:05  > [minBound .. maxBound :: Ordering]
03:56:06    [LT,EQ,GT]
03:56:46  :t compare
03:56:47  forall a. (Ord a) => a -> a -> Ordering
03:56:49  it's just the default instance
03:57:03  *derived
03:57:17  :t fromEnum
03:57:18  forall a. (Enum a) => a -> Int
03:57:19  ?hoogle find
03:57:20  Data.ByteString find :: (Word8 -> Bool) -> ByteString -> Maybe Word8
03:57:20  Data.Foldable find :: Foldable t => (a -> Bool) -> t a -> Maybe a
03:57:20  Data.List find :: (a -> Bool) -> [a] -> Maybe a
03:57:25  > compare 1 2
03:57:26  ?hoogle come on, some substring finding shit
03:57:27    LT
03:57:27  Parse error:
03:57:27    --count=20 "come on, some substring finding shit"
03:57:27                      ^
03:57:28  ?hoogle sub
03:57:29  Text.Html sub :: Html -> Html
03:57:30  Text.XHtml.Frameset sub :: Html -> Html
03:57:31  ?hoogle substr
03:57:31  Text.XHtml.Strict sub :: Html -> Html
03:57:33  Data.ByteString breakSubstring :: ByteString -> ByteString -> (ByteString, ByteString)
03:57:35  Data.ByteString.Char8 breakSubstring :: ByteString -> ByteString -> (ByteString, ByteString)
03:57:37  Data.ByteString findSubstring :: ByteString -> ByteString -> Maybe Int
03:57:37  :t isInfixOf
03:57:37  :-|
03:57:39  forall a. (Eq a) => [a] -> [a] -> Bool
03:57:39  oerjan: oh duh
03:57:51  except hmm what
03:58:02  :t isPrefixOf
03:58:04  forall a. (Eq a) => [a] -> [a] -> Bool
03:58:15  oerjan: yeah I need to find the location of it, alas
03:58:15  you might want to combine that with usual find
03:58:23  er, findIndex, then
03:58:26  :t findIndex
03:58:27  forall a. (a -> Bool) -> [a] -> Maybe Int
03:58:30  of a _substring_.
03:58:39  :t findIndex . isPrefixOf
03:58:40  forall a. (Eq a) => [a] -> [[a]] -> Maybe Int
03:58:41  I guess I can hack my own with findIndex and isPrefixOf
03:58:42  oh wait
03:58:48  by repeatedly findIndexing
03:58:52  and then taking the rest
03:58:53  :t inits
03:58:54  and then isPrefixOf
03:58:54  forall a. [a] -> [[a]]
03:58:55  um no
03:58:56  but that sounds horrible
03:58:57  yeah inits is what I said
03:58:59  erm
03:59:00  yeah inits is what I want
03:59:08  no, tails
03:59:11  er right
03:59:13  :t \s -> map ((s `isPrefixOf`) . tails)
03:59:14  forall a. (Eq a) => [[a]] -> [[a]] -> [Bool]
03:59:23  :t \s -> filter (s `isPrefixOf`) . tails
03:59:25  forall a. (Eq a) => [a] -> [a] -> [[a]]
03:59:29  :t \s -> maybeHead . filter (s `isPrefixOf`) . tails
03:59:31  Not in scope: `maybeHead'
03:59:33  oh c'mon :)
03:59:37  yeah that'll work
03:59:47  :t find (isPrefixOf ?s) . tails
03:59:48  forall a. (?s::[a], Eq a) => [a] -> Maybe [a]
03:59:57  aha
03:59:58  thanks
04:01:40  shiro: user error (Pattern match failure in do expression at Shiro/Monad.hs:206:3-8)
04:01:41  whoa
04:01:59  oh duh
04:02:29 -!- variable has quit (Read error: Connection reset by peer).
04:02:29 -!- augur_ has joined.
04:02:44 -!- augur has quit (Read error: Connection reset by peer).
04:02:57 -!- variable has joined.
04:04:06  ofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofo
04:04:06  ofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofo
04:04:07  ofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofo
04:04:11  elliott: hi
04:04:12  ofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofo
04:04:19  ofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoof
04:04:23  Deewiant what the fuck did you do
04:04:23  this sword doesn't stop
04:04:55  wat
04:05:55  Just
04:05:57  What is Deewiant even
04:06:16  Hmm
04:06:35  Ah hm ah hm
04:06:36  m
04:07:08  Aha
04:16:02  oerjan: exlcamation mark please
04:16:57  !
04:19:32  thanks
04:19:34  bit slow though
04:19:35  work on that
04:23:18 -!- Nisstyre has quit (Ping timeout: 264 seconds).
04:28:54 -!- Sgeo has quit (Read error: Connection reset by peer).
04:29:45 -!- Sgeo has joined.
04:32:12 -!- oklopol has quit (Ping timeout: 260 seconds).
04:43:31  elliott, small hiragana i please.
04:44:02  no
04:44:13  :(
04:44:34  HOW IMPOLITE
04:46:48  Lymee: ぃ
04:50:18  pikhq, you arn't elliott
04:50:28  im arent elliott
04:50:58  Lymee: 勿論!
04:52:11  こわい漢字、消えれ!
04:52:56  怖い?
04:53:12 * Lymee cries in a corner
04:53:23  good
04:53:36  どうして泣いて居る?
04:53:54  漢字がこんなに難しく無い!
04:54:38  ;.;
05:01:39 -!- augur_ has quit (Remote host closed the connection).
05:07:52  > reads "0x" :: ReadS Int
05:07:53    Couldn't match expected type `Text.ParserCombinators.ReadP.ReadS
05:07:53            ...
05:13:15  fizzie: Yo
05:13:20  fizzie: What does it mean if fungot starts off with "State bad"
05:13:21  elliott: i know i'm confused :) thank you small—preceding wikipedia:signaturesunsigned comment added by special:contributions/ 125.238.252.2125.238.252.2 ( user talk:125.238.252.2talk) 22:37, 14 december 2007 ( utc)
05:13:23  Then outputs one bytes forever
05:13:47  At least ccbi says unable to connect
05:13:57 -!- copumpkin has quit (Ping timeout: 245 seconds).
05:14:06 -!- copumpkin has joined.
05:14:52 * Sgeo mutters at B&N wanting him to pay money for a book that he assumes is in the public domain
05:15:23  Unless Nellie Bly died less than 70 years ago?
05:15:24  Digital goods: Not scarce? Value add: Something Sgeo has never heard of?
05:15:46  Sgeo: Has no idea what it means to cover costs?
05:17:47  Guess I'll download off.... Gutenberg has audobook of it but not ...
05:17:50 * Sgeo mindboggles
05:20:40  I guess reading outloud is easier than scanning and OCR in some cases?
05:21:15  And all typed editions could be under copyright
05:22:25 -!- iamcal has quit (K-Lined).
05:24:07  iamcal
05:24:08  rip
05:24:53  ewascal
05:25:45  oerjan should i an slep
05:25:52  or should i an continue to improve shiro to run fungot shungot
05:25:53  elliott: hi, i have heard akatsuki to mean both red moon and dawn. i've read that sentence ( yes, by the way. it was part of croatia, i fnord, i see plenty of reason to challenge the inclusion of the image? where's the meta information for example? user:timeshift9timeshift ( user talk:timeshift9talk) 14:14, 17 may 2006 ( utc
05:26:05  yes
05:26:07  fungot shungot
05:26:08  monqy: a couple of pandas in a zoo in rio de janeiro, a picture of one? i would have used but it certainly is the most dispassionate, and never heard it on the saggital article. i notice the image page specifies that the image is being used under wikipedia:fair usefair use but there is
05:26:41  slepathology
05:26:50  what if i spent money instead
05:26:57  is that a way to occupy time
05:27:15  slep money
05:27:20  sloney
05:27:28  etterslep
05:27:36  waht
05:27:39  hire slaves to do your slepeing
05:27:46  elliott, read MSPA until you reach the point at which you can't keep clicking to go forward
05:27:47  good
05:27:47  idea
05:27:50  to do
05:27:51  what monqy
05:27:53  said is an
05:27:55  idea that is
05:27:56  good also is
05:27:58  continuing this
05:27:59  sentence because
05:28:01  it prevensts me
05:28:02  from needing
05:28:05  to do any more thinking
05:28:07  which is good because
05:28:09  thinking causes indecision
05:28:11  and indecisiosn
05:28:12  causes
05:28:14  um
05:28:15  um
05:28:16  DEATH
05:28:17  its hapening again
05:28:44   cxvfdkznjl
05:29:54  fcg ,./
05:30:23  oerjan i killed a
05:30:26  slep
05:31:22  oerjan there is three options
05:31:23  no slep
05:31:24  a slep
05:31:26  or
05:31:27  or
05:31:29  DEATH
05:31:30  ...
05:31:31  or
05:31:32  um
05:31:34  help
05:31:49  I THINK IT IS QUITE CLEAR
05:32:22  HELP
05:32:23  HELP
05:32:23  HELPHEHL
05:32:24  EHLPEHLEHP
05:32:24  ELH
05:32:24  EPHLEHL
05:32:25  EHLE
05:32:27  HLE
05:32:29  LHE
05:32:31  HLELH
05:32:33  EHLE
05:32:35  HLEH
05:32:37  LEEH
05:32:39  EHE
05:32:41  HEPHE
05:32:45  HPE
05:32:47  HPE
05:32:49  HPE
05:32:51  HPEPHE
05:32:53  HPEHE
05:32:55  HE
05:32:57  PHE
05:32:59  HPEH
05:33:01  PEPHE
05:33:03  HPEHPEH
05:33:05  PEH
05:33:07  EHE
05:33:09  HPEP
05:33:11  EHPEH
05:33:15  EHE
05:33:17  H
05:33:19  ok wait
05:33:21  sleeping is niceb ecause in sleep there is rest and also i feel tired
05:33:23  but also
05:33:25  non slep is nice because um i dont know
05:33:27  in life there is
05:33:29  cheese?
05:34:03  hi
05:34:13  gkjnbml
05:35:23  were i you....i would probably slep...but maybe not...how tyred are you...
05:35:46  i spent ten seconds jsut staring at the keyboard because i forgot how to type
05:35:56  IF YOU DON'T SLEP YOU WILL DYE
05:36:02  well-known fact
05:36:22  This from another channel instantly reminded me of elliott:
05:36:24   hi i need to edit conf
05:36:24   my comans not wokkin
05:36:24   halp
05:36:28  me
05:36:31  fizzie: but fungot
05:36:31  elliott: this article was automatically assessed because at least one wikiproject had rated the article as stub, and the rating on other projects was brought up to stub class. user:betacommandbotbetacommandbot 14:34, 10 november 2007 ( utc)
05:36:34  fizzie: if it says bad state
05:36:37  then prints one bytes forever
05:36:37  ???
05:36:42  and if i mkdir data; touch data/fungot.dat
05:36:42  elliott: 2... ' ' who often end the night with a fnord deck.)
05:36:43  and run it
05:36:44  it just says bad state
05:36:47  and doesnt print one bytes forever
05:36:48  fizzie: could you ^save i added a ^wiki command
05:36:48  what do i do
05:36:49  to start fungot
05:36:50  elliott: in terminator 3: rise of the new zealand study:
05:36:56  ^save
05:36:56  OK.
05:37:09  thank you
05:37:15  elliott: Make a state file that has ten empty lines. (Intuitive!)
05:37:26  fizzie: im dont like you
05:37:28  why the one byte
05:37:40  also is like
05:37:41  eleven lines ok
05:37:42  That I don't know.
05:37:52  I think eleven should be fine maybe.
05:37:53  i made like eleven lines and now it is just frozen
05:37:55  ok
05:37:57  how do i make an it join
05:38:21  You should get the raw irc stuff on screen if it a work.
05:38:44  what if it a freeze....
05:39:03  Then I suppose it not a work.
05:39:12  :'(
05:39:14  how it a work
05:39:32  elliott@katia:~/Code/shiro/rsc/fungot$ ../../cabal-dev/bin/shiro fungot-load-freenode.b98
05:39:32  elliott: if the intentions are on the fnord. if you have
05:39:32  ^C
05:39:32  elliott@katia:~/Code/shiro/rsc/fungot$ ~/ccbi-2.1/ccbi fungot-load-freenode.b98
05:39:32  State bad.
05:39:33  theym
05:39:34  disagre
05:39:35  fizzie: oh uh
05:39:40  does my text mode i o stuff need to work
05:41:12  fizzie: hepl
05:42:49  oerjan: do i an fungot or an slep HELP
05:43:25  can you an fungot...
05:43:25  monqy: how do the chinese figure out their " western" board and the " aka" section are pretty shaky. i'm thinking about moving this article to that effect should be presented in a balanced way using encyclopedic language. user:wysswyss 16:38, 8 february 2007 ( utc)
05:43:55  You could try using http://p.zem.fi/fungot-dat as your statefile.
05:43:55  fizzie: i have no particular stake in this silly argument. rickk 04:54, may 23, 2006.
05:44:08  That one at least shouldn't be the bad.
05:44:30  cakporphet wuz hear
05:44:32  Also you'll get all the commands (all of them).
05:44:36  ^str 9 get
05:44:37  cakporphet wuz hear
05:44:45  $ ~/ccbi-2.1/ccbi fungot-load-freenode.b98
05:44:45  Unable to connect.
05:44:46  elliott: 20:04, december 1, 2006.
05:44:46  thats
05:44:47  not an good :(
05:44:56  did i fuck up my load script
05:44:59  v ='     <
05:45:00  im
05:45:02  change command char and things
05:45:24  but it look ok
05:45:29  why it unable connect :(
05:45:38  Freenode has also changed them IPs since some time ago, if you didn't recheck that.
05:46:08  cry
05:46:30  ok now it connect with ccbi
05:46:37  but
05:46:37  with shiro
05:46:41  just spinloop ??????????
05:46:47  could it be slow
05:46:49  or is it broken
05:46:51  i can understand slow
05:47:08  I'unno. I don't think it does very much work before connectzing.
05:47:21  crying
05:47:23  maybe i need
05:47:24  trace support
05:47:26  You could netstat that stuff or something to see if it made a sokket puppet or sumthing.
05:47:50  netstat look... not pormising
05:49:04  fizzie: : (
05:49:22  fizzie: do you rely on any undefined behaviour for STRN, maybe?
05:49:28  like
05:49:34  UNDEF: 00L leaves 0 on stack
05:49:34  UNDEF: "ooF"01-L leaves "" on stack
05:49:35  UNDEF: "ooF"101-M eats the string
05:49:35  UNDEF: "ooF"01-1M eats the string
05:49:35  UNDEF: "ooF"42M eats the string
05:49:37  that sort of thing
05:49:48  mycology says my SCKE is ok
05:49:58  my FING might be wrong, do you rely on it that early?
05:50:28  It does do some FING remapping pretty much immediately after loading, I think.
05:50:48  hmmmmmmmmmmmmmmmmmmm
05:50:52  I get all GOODs in mycology
05:50:57  just a weird "y" output
05:51:11  I may still do UNDEF STRN stuff, though not consciously. I fixed all the cases of "L with an argument longer than the string" when switching from rc/funge to cfunge, because the latter reflected on that instead of returning the whole string.
05:52:01  Hm-hm.
05:52:05  I don't think they are strictly speaking UNDEF any more, but at least Vorpal does not accept the genuinity of http://www.rcfunge98.com/rcsfingers.html IIRC.
05:52:30  Vorpal doesn't care about the spec, just Mycology results with no BADs, even if they have dubious UNDEFs.
05:52:42  Also compatibility with old CCBI versions because he nicked the code. :p
05:52:42  wrt what?
05:52:48  Shhhhhhhhh I said nothing
05:52:51  Shiro superiority four eva
05:52:58  fizzie: ?
05:52:58  fizzie: Anyway gleh.
05:53:11  Vorpal: Wrt the added clarifications in e.g. STRN.
05:53:24  fizzie: he clarified STRN? Wasn't aware.
05:53:35  I'm pretty sure we had a discussion.
05:53:41  okay then I forgot it
05:53:58  It was sneakily modified without any change notices or version numbers or anything; you didn't like that.
05:54:10  ah
05:54:17  sneaky
05:54:17  lol
05:54:34  Personally I think the addition of a section titled clarification is an affront to genuinity.
05:54:52  It does still say "other interpreters may have done this and that" in the clarifications, so it's a bit... unclear.
05:54:59  Done, past tense.
05:55:27  fizzie: So will you fix fungot if I find bugs in fungot
05:55:28  elliott: and i can't find a reliable etymology of this word is misused alot. should we say how he he came to give unless she provides him ' ' quid pro quo agreement with fnord and all, while the natural sciences generate theoretical knowledge about the
05:55:47  "Maybe."
05:56:01  fizzie: That's racist
05:56:10  Interpreterist.
05:56:35  Just True or Just False?
05:56:55  What?
05:57:10  Maybe Bool
05:57:31  "Just Nothing" sounds funny.
05:57:56  heh
05:58:25  So does "Just Right"
05:58:25  "What's that you have there? Oh, it's just... nothing."
05:58:26 * Sgeo runs
05:58:26 -!- CakeProphet has quit (Ping timeout: 246 seconds).
05:58:50  Aha, pushString is finally a bottleneck
05:58:55  I wonder why?
05:58:56  Although Just Nothing actually would presumably be seen in some programs
05:59:00  Probably STRN, but...
05:59:05  Just Right is kind of... useless
05:59:35  The bot does quite a lot of STRNing, I believe.
05:59:58  It's not really OPTOMIZED.
06:00:04  Maybe I should've written fungot in TERSE.
06:00:04  fizzie: from what i can see numerous different writing styles, from fnord. consensus on both this and the archived discussion page that if the teen is getting sexually excited ( evidenced by getting " stiffer") then it will pass.
06:00:32  ...
06:00:35  ^style
06:00:36  Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp* youtube
06:00:52  Strip Nomic?
06:00:54  "consensus" and "discussion page" are good clues.
06:00:59  strip nomic.
06:01:41  strip nomic actually exists.
06:01:53  like, it has actually been played.
06:01:59  heh. bbl, university
06:02:02  also wow
06:02:08  elliott: got a link?
06:02:16  "Preferrably one with pictures."
06:02:22  No.
06:02:35  (Well, I could ostensibly get a link, but you wouldn't be able to see it.)
06:02:39  fizzie: I would presume elliott had such a thing bookmarked
06:02:50  it is his kind of thing
06:02:56  Totally.
06:02:58  (Not really.)
06:03:13  well bbl
06:03:45  Isn't "strip nomic" just another word for all dating, though?
06:04:02  `addquote  Isn't "strip nomic" just another word for all dating, though?
06:04:04  641)  Isn't "strip nomic" just another word for all dating, though?
06:04:33  fizzie: i suspect if you treat it that way, you will find a large fraction of players quitting the game
06:20:55 -!- CakeProphet has joined.
06:20:55 -!- CakeProphet has quit (Changing host).
06:20:55 -!- CakeProphet has joined.
06:25:05 -!- Jafet has joined.
06:27:11  http://en.wikipedia.org/wiki/Turing_test#Reverse_Turing_test_and_CAPTCHA
06:27:24  okay, but what if the other computer passes a normal Turing test
06:28:27  then the computer might fail but still be intelligent.
06:28:59  and what if it passes? is it super-intelligent?
06:31:06  if I were one of the choices in a Turing test.
06:31:14  I would just spout nonsense.
06:35:19 -!- aspect has joined.
06:36:13  I think the reason Cleverbot scores so high on these kinds of tests is because most of its conversations devolve into "I'm a bot!" "No you're a bot!" ...
06:36:48  "I just said I'm a bot!" "Right, so am I."  ...
06:36:57 -!- Nisstyre has joined.
06:38:30  A Turing test is a procedure that takes a machine and returns a boolean. I've always found that a little shady.
06:39:19  how much change to you expect from a machine?
06:39:45  aspect: about 3 nok
06:42:19  well I think usually it's done statistically. Thus a percentage.
06:46:36  aspect: wat
06:46:58  oh right we're meant to say hi to newbies
06:46:59  hi aspect
06:49:08  good afternoon
06:49:50  I saw this place metioned in #haskell and got curious.  I'll try not to say anything obnoxiously stupid before I figure out what goes on here
06:49:59  oh right, people keep mentioning it in #haskell :P
06:50:05  were famouse
06:50:06  kmc: we're watching you
06:50:20  aspect: if you're completely confused http://esolangs.org/ may be enlightening
06:50:32  is it up again?
06:50:34  apparently
06:50:36  aspect: although expecting topicality is naive
06:51:17  we are always topical.  with all the topics!
06:51:34  I see the bar for "programming language" is set quite low
06:51:57  yes...
06:52:16 * aspect wonders if "asynchronous javascript" belongs on the list in honour of being another turing tarpit
06:52:44  sounds far too serious
06:53:14  ?unmtl StateT m a
06:53:15  err: `StateT m a' is not applied to enough arguments, giving `/\A. m -> a (A, m)'
06:53:19  Only to its clerics
06:53:22  ?unmtl StateT s m a
06:53:23  s -> m (a, s)
07:10:46 -!- iamcal has joined.
07:42:20 -!- kwertii has quit (Quit: bye).
08:17:50 -!- ive has quit (Quit: leaving).
09:20:25 -!- nooga has joined.
09:42:25 -!- derdon has joined.
09:42:42  I pinch the Lion to see the Launchpad
09:42:49  how bizarre
10:00:43 -!- GuestIceKovu has joined.
10:02:25 -!- Slereah has quit (Ping timeout: 240 seconds).
10:17:17 -!- azaq23 has joined.
10:25:06 -!- monqy has quit (Quit: hello).
10:34:29 -!- pikhq_ has joined.
10:34:45 -!- pikhq has quit (Ping timeout: 258 seconds).
10:44:05 -!- itidus20 has quit (Ping timeout: 258 seconds).
10:54:06 -!- MSleep has changed nick to MDude.
11:08:17 -!- oerjan has quit (Quit: Good night).
11:08:36 -!- itidus20 has joined.
11:39:14 -!- GuestIceKovu has changed nick to Slereah.
11:40:37 -!- boily has joined.
11:58:43 -!- Sgeo has quit (Ping timeout: 264 seconds).
12:02:32 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
12:08:25 -!- NihilistDandy has quit (Ping timeout: 252 seconds).
13:23:41 -!- Phantom_Hoover has joined.
13:54:47 -!- azaq231 has joined.
13:55:20 -!- azaq23 has quit (Ping timeout: 276 seconds).
13:57:32 -!- Sgeo has joined.
14:04:08  Hello, "fuck you trying to force your a/v on me"
14:12:39  adult video?
14:16:30  antivirus
14:17:41 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:22:10  Audio/video.
14:23:41  artificial virtuality
14:29:32  Aggravating verbosity.
14:32:16 -!- sebbu2 has joined.
14:32:16 -!- sebbu2 has quit (Changing host).
14:32:16 -!- sebbu2 has joined.
14:35:19 -!- sebbu has quit (Ping timeout: 264 seconds).
14:46:36 -!- copumpkin has joined.
14:47:59  Sgeo, wait, who is trying to force alternate visualisations on you?
14:51:10 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
14:51:47 -!- Taneb has joined.
14:52:13  http://www.smbc-comics.com/index.php?db=comics&id=2361
14:52:14  OK
14:52:18  This is the best SMBC ever.
14:52:44 -!- Sgeo has quit (Ping timeout: 258 seconds).
14:53:52  Hello!
14:58:30 -!- sebbu3 has joined.
15:00:48 -!- NihilistDandy has joined.
15:01:28 -!- sebbu2 has quit (Ping timeout: 245 seconds).
15:09:02 -!- FireFly has joined.
15:09:09 -!- FireFly has quit (Changing host).
15:09:09 -!- FireFly has joined.
15:14:11  @tell ais523 i have made more progress in rescuing this file system that broke earlier on, i have written a file system checker. it can be found here: https://bitbucket.org/cheater/fscheck/
15:14:11  Consider it noted.
15:26:17  Uniquode now has a part of its memory called the TEMPORAL WAYPOINT BUFFER
15:26:34  All-caps
15:26:35  what is uniquode?
15:26:43  Esolang I'm working on
15:26:45  ok
15:26:52  Uses the entire Unicode character set
15:26:56  See also UniCode
15:26:57  there should be a unicode based programming language
15:27:01  ah ok
15:27:11  I'm about to do S
15:27:12  it would make programming so much easier and so much more terse
15:27:24  It's very difficult to program in at the moment
15:27:26  especially with a special keyboard
15:27:32  i bet it would be popular in banks
15:28:07  Taneb, have you noticed that the c64 symbol set is not in unicode?
15:28:13  i find that is fairly atrocious
15:28:17  No I have not
15:28:44  Indeed, that is a tragedy
15:32:13  Each IP in UniQuode has a register that stores a surd
15:34:45 -!- azaq23 has joined.
15:35:20 -!- NihilistDandy has quit (Ping timeout: 264 seconds).
15:35:40 -!- azaq231 has quit (Ping timeout: 258 seconds).
15:36:57  I curse Apple
15:38:14 -!- NihilistDandy has joined.
15:41:26 -!- sllide has joined.
15:42:35  Bye
15:44:03  nooga: Then give it to some dumb white bitch to eat?
15:44:11  *ba-dum tish*
15:50:49  Hello
15:54:42 -!- Zuu has joined.
15:54:42 -!- Zuu has quit (Changing host).
15:54:43 -!- Zuu has joined.
15:56:45 -!- ais523 has joined.
16:29:07 -!- Sgeo has joined.
16:33:20 -!- NihilistDandy has quit (Ping timeout: 260 seconds).
16:39:48 -!- NihilistDandy has joined.
16:45:38 -!- augur has joined.
16:46:53  With Haskell's Num class, does a*b have to == b*a?
16:55:38 -!- Braber01 has joined.
16:56:51  What's a good way to memorize all the commands for Befunge?
16:57:01  With a song!
16:57:10  befunge-93 or -98?
16:57:23  -98.
16:57:35  Memorizing all fingerprints of 98 will require quite a long song.
16:58:13  all I can remember right now is ^ > < v p g and @
16:58:46  Well, + - * / % are pretty easily memorizable.
16:58:58  oh yeah i forgot about those ...
16:59:33  Damn it, now I have to make a Befunge song.
16:59:36  and 1 2 3 4 5 6 7 9 0 . ,
16:59:56  Most of them have some sort of internal logic, anyway. Like "?" is confused about where it'll go, and so on.
17:00:01  # looks like a trampoline
17:00:32  . is the integer output and , is the ascii output right?
17:01:59  Not sure what's the official logic of $ though.
17:04:10  Also 0-9a-f are quite easy. I'd just keep the "Instruction Quick Reference" cheat-sheet open until they become naturally memorized.
17:06:44  (During the process of writing something.)
17:12:32 -!- nooga has quit (Ping timeout: 246 seconds).
17:13:49 -!- ive has joined.
17:14:45 -!- Taneb has quit (Ping timeout: 260 seconds).
17:17:00 -!- nooga has joined.
17:22:58  "Apple decided to use an archaic object file format for Mac OS X, a variant of the old aout format. This format predates dynamic linking. Apparently without proper staffing, they have to reinvent lots of stuff for their obsolete object format. Had they chosen a current object formats, they could have taken more benefit of the the quality work already done within the GNU project."
17:22:59  -- http://gmplib.org/macos.html
17:23:01  :P
17:25:43 -!- nooga has quit (Ping timeout: 264 seconds).
17:31:04 -!- jcp|1 has joined.
17:31:53 -!- jcp has quit (Ping timeout: 245 seconds).
17:32:07 -!- Taneb has joined.
17:32:55 -!- jcp|other has quit (Ping timeout: 240 seconds).
17:33:48  Going to see Cowboys vs Aliens
17:34:15  Hopefully it won't be as dissapointing as Inception
17:34:40  It will be.
17:35:37  I saw a trailer of that thing. It looked slightly silly.
17:35:47  Not entirely unexpectedly.
17:36:19 -!- Taneb has quit (Remote host closed the connection).
17:36:37  (Isn't it "Cowboys & Aliens" instead of "vs"?)
17:37:42 -!- jcp has joined.
17:44:18 -!- Braber01 has quit (Remote host closed the connection).
17:46:10 -!- nooga has joined.
17:47:17 -!- NihilistDandy has quit (Ping timeout: 260 seconds).
17:48:51 -!- kmc has quit (Quit: Leaving).
17:54:17 -!- jcp has quit (Ping timeout: 260 seconds).
17:56:37 -!- jcp|1 has quit (Ping timeout: 260 seconds).
17:57:53 -!- Sgeo has quit (Ping timeout: 258 seconds).
17:59:05 -!- NihilistDandy has joined.
18:03:38 -!- NihilistDandy has quit (Ping timeout: 246 seconds).
18:06:18 -!- kmc has joined.
18:08:23 -!- jcp has joined.
18:13:12 -!- javawizard has joined.
18:16:37 -!- Braber01 has joined.
18:18:44  Hi I'm having a bit of trouble in String mode in Befunge, I've written "llaw eht no reeb fo selttob" v,>^_@ however my output is giving me btlso ero h al. either somebody didn't do their programming right , or I need to change these letters to something else.
18:20:00  The _ drops a character too.
18:20:08  The traditional print loop is >:#,_
18:20:25  oh, I'm embarssed...
18:27:34  that just gives me an Infante loop,oh wait I see what i'm doing.
18:39:56 -!- Braber01 has quit (Remote host closed the connection).
18:52:43  An infant loop.
18:53:38  Something that just keeps screaming and pooping everywhere, or so I hear.
18:55:03 -!- IROMLT00014 has joined.
18:55:27  CIaooooooooooooo
18:55:43  list
18:56:05  Hm.
18:56:11  Those are certainly words.
18:57:13 -!- IROMLT00014 has quit (Client Quit).
18:57:53  lol
18:58:39  So, is the Befunge song finished already?
18:59:07  I have a job! :(
19:01:28  10pm is no time for jobs; it's time for singing and merry-making.
19:02:34  Your time zone is LAME.
19:02:41  My time zone is BETTER because we talk AMERICAN here.
19:05:07  Gregor: oh, American is a language now?
19:05:21  Your time zone is LAME because this zone is in the FUTURE.
19:06:58  derdon: Hello Doctor Duznaut-Gedghoeks!
19:07:41  Gregor: I don't understand you but I had to laugh anyway :D
19:08:05  do you speak in your personal esolang to me?
19:08:08  I was making an attempt to spell "does not get jokes" like a name, but failed pretty spectacularly.
19:08:37  ah, now I get it
19:09:11  and well, there are really people on the internetz who think American is a language
19:09:26  and there are Americans who think Europa has a capital city :P
19:09:30  *Europe
19:10:12  well, it does, in fact it has more than one
19:10:59  Europa, on the other hand, *should* have a capital city; why isn't it colonized yet? It's, like, 2011!
19:11:20  olsner: ...
19:11:42  europa's existing inhabitants might not take kindly to colonization
19:12:39  olsner: I have the feeling that many people don't even know what that is
19:13:18  I was a bit disappointed "Europa (moon)" does not have an "in popular culture" section, but at least there's a whole separate "Jupiter's moons in fiction" article.
19:14:02  "All these worlds are yours except Europa. Attempt no landings there."
19:14:30  fizzie: I think there was a dash in there
19:14:30  ais523: You have 2 new messages. '/msg lambdabot @messages' to read them.
19:14:34  @messages
19:14:34  elliott said 1m 24d 19h 5m 48s ago: Request a copy of the wiki page "100_free_dutch_dating_sites_2008".
19:14:34  cheater_ said 4h 23s ago: i have made more progress in rescuing this file system that broke earlier on, i have written a file system checker. it can be found here: https://bitbucket.org/cheater/
19:14:34  fscheck/
19:14:52  wow, I'm getting messaged with random stuff
19:14:57  the monoliths missed their predicted arrival in 2001 though
19:15:10  olsner: *predicted discovery
19:15:26  wasn't the theory that they'd been there all the time, but the one on the moon was only discovered in 2001
19:15:35  and several other monoliths discovered later?
19:16:19  hmm, something like that yes...
19:16:42  I am not sufficiently well-versed in the prophecies
19:19:18 -!- augur has quit (Remote host closed the connection).
19:36:37  ais523, IIRC there were only like 2.
19:36:45  The moon one, and the Jupiter one.
19:36:52  Phantom_Hoover: in 3001 there were huge numbers of them
19:37:07  Phantom_Hoover: what about the earth one?
19:37:11  ais523, well sure, but that was cheating.
19:37:22  Also 3001 is terrible so it doesn't count.
19:37:32  and I think in one of the sequels, there were ones sending messages from the area around Jupiter
19:38:17 -!- derdon has quit (Remote host closed the connection).
19:38:18 -!- sebbu3 has changed nick to sebbu.
19:39:31  @messages
19:39:32  You don't have any new messages.
19:39:35  :'(
19:40:16  @messags
19:40:17  You don't have any new messages.
19:40:26  I'm surprised that worked.
19:41:21  @messitup
19:41:22  Unknown command, try @list
19:41:24  Aw. :/
19:48:15  @messapotamia
19:48:16  Unknown command, try @list
19:48:18  :(
19:48:34  @messagorkenbork
19:48:35  Unknown command, try @list
19:48:38  Huh
19:48:44  Seems to be special-cased for @messags.
19:51:08  so is there any way Ord could be used to represent the entire partial order.
19:51:18  in particular that a > bottom
20:13:37  Ideas for the "legit" JIT for Fythe:
20:13:40  1) LLVM
20:13:46  2) Turn GCC into a friggin' library HEWW YEAH
20:14:03  3) Write it myself, then complain when it's retardedly slow.
20:17:25 -!- kwertii has joined.
20:17:25  4) ... GNU lightning?
20:17:37  There aren't really any good JIT libraries, are there :P
20:22:45  Is LLVM at all usable from C?
20:24:13  It does have some C bindings.
20:24:37  Some (most?) of the non-C++ LLVM bindings are built on top of that.
20:25:57  There's that AsmJit thing if you don't mind x86/x64-only; it's probably not good either, but it's a thing.
20:26:45  Oh, and it's a C++ thing too.
20:27:10  I do mind x86/GOD-FUCKING-DAMN-IT-IT'S-NOT-X64 though.
20:27:45 -!- augur has joined.
20:27:51  For the time being I'm too happy with my template JIT to bother though :P
20:27:55  LLVM does optimization, right?
20:28:26  s/does/can do/
20:28:45  Yes.
20:29:02  Yeah, seems like LLVM is probably the best choice *shrugs*
20:29:10  It shouldn't be /too/ difficult to LLVM it ...
20:29:38  http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html has a simple llvm-c snippet if you want a quick glance at the API.
20:30:11  Oh, that's not too bad.
20:30:35  It'd be nice if there was a LLVMDoFrigginEverythingPass() :P
20:31:05  I seem to recall they do have autogenerated API docs for the C bindings too somewhere.
20:31:17  Problem is, LLVM is not exactly designed that way.
20:32:05  cat the bitcode through opt -O3
20:32:15  Its optimisation is done by a bunch of essentially independent libraries.
20:32:23  Mmm.
20:32:58  Since this will be the optimizing JIT and the fast JIT is separate, it can be almost arbitrarily slow so long as the optimizations are good stuff, so ... yeah, hm. OH WELL.
20:33:09  And, yes, you could just go out to shell if you don't care about JITing.
20:33:42  You could go out to shell even if you do care about JIT *shrugs*
20:33:54  I could generate C, write it to a pipe, compile that with GCC, read in the .o file, and call it.
20:34:04 -!- sebbu has quit (Read error: Connection reset by peer).
20:34:44  Or you could generate LLVM assembly, write it to a pipe, munge it as you feel like, read in the .o file, and call it.
20:36:40  PERFECTION
20:42:14  I wonder if there's a crazy mix of options that would cause GCC to compile a single function and output the machine code for it, not in any object file format.
20:43:01  Which would really be such an option to the assembler of course.
20:43:19  I guess you can compile then objcopy to binary ...
20:43:25  You can get binary files out of GCC; I had a small snippet that created a DOS .com file directly from a Linux non-cross GCC.
20:44:36  http://pastebin.com/eChGDKDy <- like that.
20:44:42 -!- sebbu has joined.
20:44:53  It links it with a defined-on-the-command-line .text segment location.
20:46:33  (The code in question doesn't actually work on real hardware, thanks to segment limit checks, but that's not exactly a point.)
20:46:34  --oformat, eh
20:46:49  Thanks
20:46:53  Yeah, I could use that as a JIT >: )
20:49:24  "gcc -c" + objcopy to binary would create machine code too, but it'd (I think) just drop off all relocation records of the object file.
20:50:49  I explicitly don't want relocation records.
20:50:58  (If I have any external dependencies I'm hosed anyway)
20:51:55  For non-PIC-code you might have relocation records that are related to where the code will live, though, that you'd like to have processed; linking like that will do it.
20:52:52 -!- hiato has quit (Quit: leaving).
20:53:33  "PIC code", eh. "PIN number" and so on.
20:54:35  You could possibly use something like -Wl,--defsym=foo=0x12345678 too, to define global symbols if you want to refer some data you have in memory from the C code. Though I suppose a generated cast-a-constant-to-pointer expression is just as good.
20:56:19 -!- Taneb_ has joined.
20:56:50  Hello!
20:57:08 -!- oerjan has joined.
20:57:45 -!- Taneb_ has quit (Read error: Connection reset by peer).
20:57:50  fizzie: I have all the functions that JITted code could need to call in a bank, stored in a register.
20:57:58  So, no PIC problems: )
20:57:59  *:)
20:59:15  I think GCC is allowed to stick data into your .text segment and refer to it with absolute addresses, though.
20:59:27 -!- pikhq has joined.
20:59:28  If you're not doing -fpic/-fPIC, anyway.
20:59:34 -!- sebbu2 has joined.
21:00:13 -!- sebbu has quit (Ping timeout: 245 seconds).
21:00:44  There are many reasons why this technique is illegitimate, but right now I'm trying to figure out if it could even begin to work :P
21:02:18 -!- pikhq_ has quit (Ping timeout: 252 seconds).
21:03:28  For some reason it seems to generate a bit of bullshit after the binary itself (comments and such), but other than that, working :)
21:06:18  Right, I think --oformat=binary with GNU ld will just concatenate all the sections of the resulting executable, starting from .text.
21:06:30  Seems that way.
21:06:33  Lucky text was first :P
21:06:49  IIRC "gcc -s" doesn't strip those, which is a bit silly.
21:07:01  Oh well *shrugs*
21:07:45  When polishing your particular turd, you might use a real linker script to drop those out.
21:08:28  :P
21:08:35  "-Wl,--gc-sections" might drop it. Then again, it might not.
21:09:25  Nope
21:10:56 -!- FireFly has quit (Quit: FireFly).
21:12:50  Yeah, the technique is "sound" (read: terrible)
21:13:05   gcc -x c - -pipe -march=native -mtune=native -nostdlib -Wl,--oformat=binary -O3 -o /dev/stdout <-- clearly the best
21:14:25  Oh, it even writes to /dev/stdout? I was under the impression that binutils' libbfd just plain old refuses to do that. Well, maybe it's something specific to the "binary" output format.
21:14:43  Well, I had to force it :P
21:18:36  (That is, -o - actually made a file called -, so I had to use /dev/stdout)
21:20:08  Yes, I just recall getting some "oh no you don't, that's a pipe!" warnings when trying to get -o /dev/stdout from some related tool. But maybe it was 'as' or something.
21:23:34 -!- copumpkin has quit (Ping timeout: 245 seconds).
21:24:04  .-.
21:24:11  fizzie: Idonno, worked for me *shrugs*
21:24:23  fizzie: Even with a tty it still "worked" (i.e. printed garbage to my TTY)
21:24:45  Well, maybe gcc takes care of the plumbing or something.
21:25:23  well as long as it gives a valid file descriptor it should work right?
21:25:40  Not if some tool expects it to be seekable.
21:25:55  :s
21:26:06  Though since "gcc -pipe" is supported, I suppose all the parts should be pipe-friendly.
21:26:28  Maybe it was nasm that was pipe-unfriendly instead.
21:26:41  fizzie: That wouldn't surprise me enormously.
21:31:42 -!- monqy has joined.
21:44:50 -!- Sgeo has joined.
21:46:43 * Sgeo is thinking of auditioning for Grease at the college
21:48:09   Seems to be special-cased for @messags.
21:48:40  no, it just only supports two letters of difference, and it must be unambiguous which is closest
21:49:14  @massogis
21:49:14  Unknown command, try @list
21:49:20  @massoges
21:49:20  You don't have any new messages.
21:51:06 -!- Patashu has joined.
21:51:09  @passages
21:51:10  You don't have any new messages.
21:51:15  Heh.
21:52:38  19:51:08:  so is there any way Ord could be used to represent the entire partial order.
21:52:41  19:51:18:  in particular that a > bottom
21:53:08  there is no reliable way to have a > bottom always return True, if it looks at the second argument at all
21:53:24  _some_ bottoms can be catched, but not all
21:53:35  and that is not pure code
21:53:48  @piss
21:53:48  Maybe you meant: list ping
21:53:52  :(
21:54:31  @pins
21:54:31  pong
21:54:54  @info is one that confuses people
21:54:55  is one that confuses people
21:55:10  @echo hm
21:55:11  echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net", msgCommand = "PRIVMSG", msgParams = ["#esoteric",":@echo hm"]} rest:"
21:55:11  hm"
21:56:07  @achoo
21:56:08  echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "oerjan!oerjan@sprocket.nvg.ntnu.no", msgCommand = "PRIVMSG", msgParams = ["#esoteric",":@achoo"]} rest:""
21:56:34  i guess the first word gives that away
21:59:45  @info
21:59:45  ()
21:59:59  What's that getting corrected to?
22:00:16 * oerjan cackles evilly
22:01:07 -!- Gregor-WebChatYA has joined.
22:02:05  WebChat, ya?
22:03:17  It was supposed to be WebChatYAY, but I ran out of characters :P
22:03:28  ya know
22:03:45  GregorWebChatYAY?
22:03:59  also does this mean you did not see the above...
22:04:01  @passages
22:04:02  You don't have any new messages.
22:04:26  I could logread if it's THAT important.
22:04:52  well it _was_ a logreading response to you
22:04:59  fizzie's crowning achievement.
22:05:16  important, is anything on irc important.
22:05:21  Ah
22:05:28  Yes, I'm glad to know all the @messwtfisms that work.
22:06:10  @fun 2+2
22:06:11    4
22:11:42 -!- azaq23 has quit (Quit: Leaving.).
22:13:09 -!- sllide has quit (Ping timeout: 245 seconds).
22:13:24 * Phantom_Hoover → sleep
22:13:26 -!- Phantom_Hoover has quit (Quit: Leaving).
22:16:56  @dead 42
22:16:57  Plugin `dummy' failed with: Prelude.read: no parse
22:17:00  darn
22:17:20  @dead "you blew it up! you maniacs!"
22:17:21   you blew it up! you maniacs!
22:21:45 -!- Gregor-WebChatYA has quit (Quit: Page closed).
22:22:53  I officially hate myself
22:24:05  http://pastie.org/private/woo2ngzmdcv9qpep4imjg
22:29:22 -!- nooga has quit (Ping timeout: 258 seconds).
22:31:07 -!- Slereah has quit (Ping timeout: 264 seconds).
22:31:35  why did you do this
22:31:38 -!- GuestIceKovu has joined.
22:32:18  > let range = [0,1] in replicateM 9 range -- sorry :P
22:32:19    [[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0...
22:33:10  i assume there's supposed to be something inside the inner one
22:33:54  :t Array.fromList
22:33:55  Not in scope: `Array.fromList'
22:34:13  @hoogle [a] -> (i,i) -> Array i a
22:34:14  Data.Array.IArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e
22:34:14  Data.Array.MArray newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e)
22:34:14  Data.Array.MArray newArray :: (MArray a e m, Ix i) => (i, i) -> e -> m (a i e)
22:34:16 -!- iamcal has quit (Remote host closed the connection).
22:35:27  > listArray ((1,1),(3,3)) <$> let range = [0,1] in replicateM 9 range
22:35:28    [array ((1,1),(3,3)) [((1,1),0),((1,2),0),((1,3),0),((2,1),0),((2,2),0),((2...
22:43:25 -!- copumpkin has joined.
22:46:57  Maybe calculating an equation 21^9 times isn't the way to go here
22:47:02  > 21**9
22:47:03    7.94280046581e11
22:47:04  perhaps
22:47:33  (And I can't believe I was planning on 201^9 times)
22:47:35  _could_ be
22:47:36  > 201**9
22:47:37    5.3550621652227346e20
22:47:58  I should do it in C. It'll be faster.
22:48:02  ^^joke
22:48:09  ok
22:48:53  nah, everyone knows that for _really_ huge equation loops you need FORTRAN
22:49:21  also, a supercomputer, which might be a bigger problem.
22:50:11 * Sgeo looks again at that number and wonders why it's considered huge
22:51:04  i assume that depends on how complicated each equation is.
22:51:14  determinant = a1 * b2 * c3 - a1 * b3 * c2 - a2 * b1 * c3 + a2 * b3 * c1 + a3 * b1 * c2 - a3 * b2 * c1
22:51:18  Simple
22:51:31  aha
22:51:57  you can combine some terms there
22:53:22  http://www.wolframalpha.com/input/?i=a1+*+b2+*+c3+-+a1+*+b3+*+c2+-+a2+*+b1+*+c3+%2B+a2+*+b3+*+c1+%2B+a3+*+b1+*+c2+-+a3+*+b2+*+c1+
22:53:29  wolfram alpha didn't seem to find any to combine
22:53:29 * Sgeo decides he'd rather just do random trials
22:53:57  tiffany: um that's because wolfram alpha is not trying to optimize it for calculating
22:54:06  :d
22:54:17  a1 * (b2 * c3 - b3 * c2) etc.
22:54:19  I think a million trials might be a bit more reasonable?
22:54:55  I ran 500 000 000 calculations of x*x with my lua interpreter and 500 000 000 of x^2 and x*x was 1600 cycles and x^2 was 600
22:54:57  :s
22:55:10  I remember you saying this before
22:55:11  tiffany: i saw you mentioned
22:55:25  oh
22:55:27  sorry
22:56:23  Sgeo's may be harder though for the compiler to rearrange, because floating point issues means you don't get _exactly_ the same thing
22:56:41  I'm only using integers in the loop
22:57:02  ah.  well then it might be overflow issues.
22:57:17  OK, who's going to sing the Befunge song if I write it?
22:57:20  I see Sgeo volunteering.
22:57:41 -!- iamcal has joined.
22:57:54  64bit signed ints overflow on the 97th number in the fibonacci set
22:58:01  ok
22:59:19  > drop 95 $ fix(scanl(+)0.(1:)) :: [Int]
22:59:21    [-4953053512429003327,-3659523366270331776,-8612576878699335103,61746438287...
22:59:33  ...that doesn't look 64 bit
22:59:41  o.o
22:59:54  > maxBound :: Int
22:59:55    9223372036854775807
23:00:00  > drop 95 $ fix(scanl(+)0.(1:)) :: [Int64]
23:00:03    [-4953053512429003327,-3659523366270331776,-8612576878699335103,61746438287...
23:00:06  hm
23:00:06  wat
23:00:15 -!- pikhq has quit (Read error: Operation timed out).
23:00:16  maybe it overflowed before then
23:00:31  > drop 50 $ fix(scanl(+)0.(1:)) :: [Int64]
23:00:33    [12586269025,20365011074,32951280099,53316291173,86267571272,139583862445,2...
23:01:07  > dropWhile ((>0).snd) . zip [1..] $ fix(scanl(+)0.(1:)) :: [Int64]
23:01:08    Couldn't match expected type `GHC.Int.Int64'
23:01:08          against inferred type ...
23:01:55  > dropWhile ((>0).snd) . zip [1..] $ (fix(scanl(+)0.(1:)) :: [Int64])
23:01:56 -!- pikhq has joined.
23:01:57    [(1,0),(2,1),(3,1),(4,2),(5,3),(6,5),(7,8),(8,13),(9,21),(10,34),(11,55),(1...
23:02:01  er
23:02:17  > dropWhile ((>0).snd) . drop 10 . zip [1..] $ (fix(scanl(+)0.(1:)) :: [Int64])
23:02:19    [(94,-6246583658587674878),(95,1293530146158671551),(96,-495305351242900332...
23:02:29  aha
23:02:48  I had 97 and 94 mixed up
23:02:57  I wonder where the other thing it mixed up with is
23:02:59  > drop 92 . zip [1..] $ (fix(scanl(+)0.(1:)) :: [Int64])
23:03:01    [(93,7540113804746346429),(94,-6246583658587674878),(95,1293530146158671551...
23:04:51  Ugh
23:05:04  hi
23:05:16  I should have told my professor that I predict that it's very likely that three random planes will intersect a unique point
23:05:27  Because that's what I was suspecting, and that's the result
23:07:05 -!- cheater_ has quit (Ping timeout: 260 seconds).
23:07:31 -!- pikhq_ has joined.
23:07:33 -!- pikhq has quit (Ping timeout: 260 seconds).
23:07:46  Unless there's a mistake (and I don't mean code looking like crap as a mistake) in https://gist.github.com/f3a03b13c555aa5468cb
23:09:04 -!- cheater_ has joined.
23:09:19  well yes that sounds about right.  in 3d, that is.
23:09:46  _two_ planes are likely to intersect in a line.  that line is likely to intersect another plane in a unique point.
23:10:20  where "likely" is "with probability 1" for a reasonably random selection.
23:11:04  Yeah, I was thinking something like that too
23:11:08  http://en.wikipedia.org/wiki/General_position
23:11:13  And it's more obvious when you look at 2 lines
23:11:27  What's the chance of two lines having the same slope? 0.
23:11:34  wouldn't the intersections of 3 planes be the intersection of the intersection of the 3 lines created from the intersections of each plane with each other one?
23:11:36  :s
23:11:53  tiffany: yes but those 3 lines are not independent of each other
23:12:24  I am amazingly bad at doing geometry after school
23:12:30  while the line you get from 2 independent planes is independent of the third one
23:13:24  tiffany: for example it's obvious that if _two_ of the lines intersect in a point, then the third one must too
23:13:37  because that means all three planes intersect there
23:13:48  mm
23:24:28 -!- cheater_ has quit (Ping timeout: 260 seconds).
23:32:19  see a drünk mööse http://www.dagbladet.no/2011/09/07/nyheter/dyrenes_nyheter/dyr/elg/jakt/18009987/
23:34:34 -!- ais523 has quit (Remote host closed the connection).
23:37:26  I thought of another way of thinking about it, but since variables are being multiplied by variables, it might not be correct:
23:37:42  The system would have to fall on a single 9-dimensional hyperplane in 10-dimensional space
23:38:40 -!- cheater has joined.
23:39:53  i'm not entirely convinced of that
23:39:56 * Sgeo plays with Wolfram Alpha for a bit
23:40:40  but as i don't actually really know algebraic geometry...
23:40:47  Maybe not a hyperplane, but a 9-dimensional construct of some sort?
23:41:26  that sounds more likely.
23:42:33  Given 8 variables in the 3x3 determinant equation, could you figure out what the 9th would have to be for the determinant to be 0?
23:42:50  I think that would force it to be a 9-dimensional figure
23:42:56  actually there are at least two possibilities:  the three planes don't intersect in a common point at all, and they intersect in an entire line or more (well "more" would mean they're all the same plane)
23:42:59  Wait, no, 8-dimensional/
23:43:15  oh hm
23:43:26  8-dimensional figure in 9d space
23:43:49  oh and you are not getting _all_ planes from 3 variables that way.
23:44:10  Hmm? Why not?
23:44:42  Each existent system of 3 planes should be representable in 9d space, or am I mistaken?
23:45:01  degenerate case. a*x + b*y + c*z = d is a general plane iirc, and you can remove one of a,b,c,d but only if the one you remove is _non-zero_
23:45:19  No, just planes embedded in 3d space, and it takes 6 numbers to specify each... argh I'm confused
23:46:14  4 numbers is sufficient.  and 3 would be except for the degenerate case, iirc
23:47:01  and also at least one of a,b,c must be non-zero, i think
23:47:06  So, 12d space to represent all systems of 3 planes
23:47:42  no, it's 9d, but not given by 9 variables in linear equations
23:48:00  Oh! The determinants equation doesn't specify... location of each plane
23:48:03  I .. think
23:48:08 * Sgeo is confused
23:49:09  Sgeo: you can give each plane as either a*x+b*y+c*z = 1 or as a*x+b*y+c*z = 0
23:50:14  So, 9 dimensions of continuous space and 1 discrete dimension of 2 possibilities?
23:50:27  Why am I still thinking in terms of hyperspace
23:50:36  9+1D is not intuitive to me, believe it or not
23:50:42  "discrete dimension" is not really a concept in this subject afaik
23:51:12  it's a 9d space.  it just doesn't happen to be a hyperplane.
23:51:58  What does the entity on which all systems of 3 planes that don't intersect at a point look like when embedded in the 9d space?
23:52:21  well most of it is in the = 1 part, which _is_ a hyperplane.
23:52:28  i think.
23:52:29  How can something be a hyperplane or not without being embedded in a higher space?
23:53:03  oh hm
23:53:17  I don't get how you distinguish between =1 and =0 without an additional dimension
23:53:30  Maybe my idea of dimensions is confused
23:53:56  Sgeo: yes.  dimension is an intrinsic property of a topological space.
23:54:16  if you take the union of two n-dimensional subspaces, that is still n-dimensional.
23:55:09  O.O
23:55:13 -!- Braber01 has joined.
23:55:53  um odd question, does anybody know the f**kf**k counterparts to brainf**k?
23:56:13  Braber01: you were answered last time, with a link.  is it not on the wiki page?
23:56:14  If I have two lines, and take their union, is the specification of which line somehow embeddable in the single value I'd normally need to specify my location on one line?
23:56:24 * oerjan checks
23:56:34  I can't get wiki for somereason,
23:56:54  Braber01: oh right hm.  try esoteric.voxelperfect.net
23:57:10  esolangs.org is having dns issues
23:57:28  (the dns provider is actually closing :( )
23:58:04  http://esoteric.voxelperfect.net/wiki/Fuckfuck
23:58:53 * Braber01 wonders why wiki works now, but didn't earler, oh well.

2011-09-08:

00:00:18  what oerjan said
00:01:05  Braber01: it's working with the different name.  our wiki itself is fine, but the name server provider for one of the names is closing down.
00:01:21  so you need to use the other address.
00:01:42  do you think my IP will get banned if I convert a 99 bottles bf program to what I like to call forkfork?
00:02:03  baned from 99-bottles-of-beer.net
00:02:14 -!- sebbu2 has changed nick to sebbu.
00:02:24  Sgeo: the concept of dimension as "number of variables you need to describe a shape" is not the same as topological dimension.
00:02:37  Oh
00:02:41  Braber01: i dunno
00:03:33  neither do I but at least I'll have a fun project to do over the weekend.
00:04:30  Braber01: no one will mind if you put it on our wiki, at least.  (well not for the swearing, anyhow.  there are some who have a burning hate against brainfuck derivatives.)
00:05:13  but thats only for the reason that there are so many brainfuck derivatives that even a smee hee like me knows about them
00:06:06  I think I kind of liked i-hate-your-bf-deritive-i-really-do I thought that article was pretty funny.
00:06:21  there are at least two reasons to hate brainfuck derivatives
00:06:21  Sgeo: but i think if you _really_ want to understand the concept of this as it relates to hyperplane stuff, then algebraic geometry is probably the field for it.
00:06:25  1) there are so many it's getting old
00:06:45  monqy, do you hate me.
00:06:49  2) they're typically really uncreative, just renaming the commands or adding a new command or something like that
00:06:53  Sgeo: what did you do
00:07:02  monqy, made a brainfuck derivative.
00:07:05  :'(
00:07:10  some brainfuck derivatives are good
00:07:14  but
00:07:15  it's rare
00:07:19  By appending an exclamation mark ('!') a command can be repeated, without the need to write the word again. <-- that right there is very clever indeed
00:07:45  itidus20: yeah +!!!!! is _so_ much better than ++++++ :P
00:07:47  I think zzo38 using my BF derivative is not necessarily an indicator of goodness
00:08:12  oh wait this is fuckfuck
00:08:24  so i guess it is a slight improvement
00:08:38  oerjan: but the idea is genius
00:08:43  no it's Trourettes. LOL
00:08:51  ok
00:09:23  fucking tourettes, bitches
00:11:03  itidus20: wait are you actually making a euphemism for "smeg head" :P
00:11:50  oh it's canonical
00:12:04  i don't follow red dwarf much but i saw a youtube of it the other day with that euphemism
00:13:18  i haven't exactly seen every episode either.
00:14:06  i'm no lister.. even though i consider myself quite possibly the least nerdiest in here
00:14:14  that is not saying much
00:15:10  no. no it isn't.
00:15:10  i don't think this room really attracts lister types
00:15:32  oerjan: or you can use a binary encoding so +!?! is really + followed by five copies of it
00:15:42  lifthrasiir: ooh, fancy!
00:15:58  (boob!?! in fuckfuck, of course)
00:16:09  wow.....
00:16:14  ha ha hahahaha
00:16:27  I like tits.
00:16:27  i might never look at !?!?! the same
00:16:47  . . .
00:16:50  that .. is even more genius
00:17:21  now to translate hello world into binary encoded fuck fuck
00:18:18  hello
00:19:00  hi
00:19:02  eek, an elliott
00:19:08  whats
00:19:09  goin on
00:19:14  bad thigns....
00:19:20  what
00:19:30  elliott: fuckfuck
00:19:35  oh
00:19:36  why
00:19:38  and how do i stop it
00:19:44  $ gcc
00:19:44  gcc: fatal error: no input files
00:19:44  compilation terminated.
00:19:46 -!- kwertii has quit (Quit: bye).
00:19:51  When did they change this error message???
00:20:00  It's been "gcc: no input files" for DECADES.
00:20:08  Still is on this old version
00:20:32  Gregor: maybe they discovered it had actually killed someone.
00:20:35  $ gcc
00:20:35  gcc: fatal error: no input files
00:20:36  compilation terminated.
00:20:37  weeping
00:22:00  boob!???!!! cock boob!!!?? cock boob!!? cock! boob!? cock tits!????!? cock tits!?!! cock boob!?!?!!? cock tits!!! cock boob!? cock tits!?! cock tits!!! cock tits!????!? cock tits!?!!? cock
00:22:04  great.
00:22:14  so beautiful.
00:22:20  wow.
00:22:33  so fast
00:22:53 * Braber01 is ashamed that I startted something...
00:23:29  is Uniquode still being updated?
00:23:35  ask taneb :P
00:24:50  i recall one from the list of ideas that recommends the use of chinese characters for golfing
00:25:59  Scumbag Taneb makes Uniquode;  never gets beyond 256 commands.
00:26:19  17:22:58:  "Apple decided to use an archaic object file format for Mac OS X, a variant of the old aout format. This format predates dynamic linking. Apparently without proper staffing, they have to reinvent lots of stuff for their obsolete object format. Had they chosen a current object formats, they could have taken more benefit of the the quality work already done within the GNU project."
00:26:19  17:22:59:  -- http://gmplib.org/macos.html
00:26:19  17:23:01:  :P
00:26:19  GNUUUUUUUUUUUUU
00:26:33  oerjan: no, he can still combine Uniquode with Unispace
00:27:07  eek
00:27:16  elliott: I love how unbiased that is :P
00:27:49  Gregor: You see, Apple failed to create GNU/Hurd.
00:27:54  SO THEY HAVE FAILED TERRIBLY
00:27:55  BASTARDS
00:28:19  Well, to be fair, they got close, in that they used a microkernel infrastructure, but missed pretty terribly as they put a monolithic kernel on the microkernel.
00:28:38 -!- cheater has quit (Ping timeout: 246 seconds).
00:29:09  19:48:38:  Huh
00:29:10  19:48:44:  Seems to be special-cased for @messags.
00:29:12  Gregor: It just spell-corrects.
00:29:17  ?pul \f x -> f x
00:29:18  id
00:29:18  We resolved that.
00:29:21  Gregor: That's been the standard means of using Mach.
00:29:28  I resolved it sooner, relativity-wise.
00:29:33  Sadly.
00:29:34  pikhq_: IT'S NOT THE HURD WAY
00:29:39  20:17:25:  4) ... GNU lightning?
00:29:39  20:17:37:  There aren't really any good JIT libraries, are there :P
00:29:45  HURD IS A HIRD OF UNIX-REPLACING DAEMONS
00:29:45  Gregor: GNU lightning is pretty good, so is LLVM :P
00:29:52  GNU lightning is good???
00:29:54  LLVM is better but probably harder to use.
00:29:54  The Hurd way involves not hitting 1.0 for decades.
00:29:56  Gregor: Well, it works?
00:30:19  Racket, GNU Smalltalk and CLISP use it apparently, so it can't be so terrible.
00:30:26  Huh ...
00:30:28  It's probably not very fast though.
00:30:35  That's probably almost fifteen end users.
00:30:36  "It does not provide register allocation, data-flow, and control-flow analysis, or optimization."
00:30:41  Har har har
00:30:43  :P
00:30:55  Racket and CLISP are pretty big :P
00:31:05  Also. I'm pretty sure all the work on Mach-O was done before Apple bought NeXT.
00:31:10  elliott: Yeah, I'm bein' a durp.
00:31:38  pikhq_: I was laughing at how stupid that whole paragraph was, not agreeing with it. Although it is a silly format.
00:31:54  I like the implication that writing a binutils is the HARDEST THING EVR.
00:31:55  EVER.
00:32:04  Presumably because GNU aren't very good at it.
00:32:08  X-D
00:32:08  elliott: Not writing a binutils.
00:32:11  Porting one.
00:32:28  Which *seems* to be one of the few things that's easy with GNU binutils.
00:32:48  The whole thing is based around an object format abstraction library, after all.
00:33:04  20:42:14:  I wonder if there's a crazy mix of options that would cause GCC to compile a single function and output the machine code for it, not in any object file format.
00:33:12  elliott: We found one.
00:33:14  Gregor: with -S , filtering and gas options, I suspect so
00:33:23  Gregor: But it'll be SO SLOW :P
00:33:25  No, I'm not going to implement gcc as a JIT, though I desperately want to.
00:33:40  (GNU lightning) "The available backends cover the x86, SPARC and PowerPC architectures." I hope this at least includes x86_64 ...
00:33:57  Bit silly if it didn't.
00:34:08  Gregor: Your template JIT is probably the best you'll get for Fythe without writing something better yourself, I think.
00:34:15  Noooooooooooooose
00:34:16  x86_64 is easy to target from x86-land if you're not retarded.
00:34:19  I mean, LLVM ain't exactly designed for compiling things tiny bits at a time
00:34:28  Which Fythe practically mandates :P
00:34:43  Piffle.
00:34:55  im not sure if i made a mistake converting this in notepad but: fuck boob!??? arse shag boob!!! tits butt shag cock fuck boob!!? arse shag boob!! tits butt shag boob cock boob!!? cock! boob!? cock fuck!? boob!!! arse shag boob!! tits butt shag cock fuck!? boob!??! arse shag boob!??? tits butt shag tits!? cock shag!! cock boob!? cock tits!?! cock tits!!! cock fuck! boob cock
00:34:58  Any optimisation pretty much kills that.
00:35:22  Aside from trivial ones.
00:35:28  My goal was to have fastjit be the baseline, and use something else as the optimizing JIT for oft-called functions.
00:35:32  fastjit itself ain't goin' nowhere.
00:35:38  Right.
00:35:44  I'd just write my own :P
00:35:53  But Idonwanna :P
00:35:58  Sucks to depend on two totally different JITs
00:36:02  Especially interoperability
00:36:21  SpiderMonkey has two JITs and an interpreter :P
00:36:53  Yeah, but I mean "you have to ensure LLVM works on your machine and links in and also that fastjit works on your machine" vs. "you have to check our two related JITs work on your machine"
00:37:13 -!- javawizard has quit (Read error: Operation timed out).
00:37:32  Mmmmm, fair enough, although the slow JIT ought to be optional.
00:37:40  21:53:08:  there is no reliable way to have a > bottom always return True, if it looks at the second argument at all
00:37:40  21:53:24:  _some_ bottoms can be catched, but not all
00:37:40  21:53:35:  and that is not pure code
00:37:46  oerjan: you can do a lot with unamb, mind you
00:38:07  Gregor: Shrug, it's more like one JIT that has two compilers :P
00:38:09 -!- jcp|other has joined.
00:38:46  elliott: Are you referring to SpiderMonkey?
00:39:09  Gregor: No, I'm talking about writing your own slow-JIT
00:39:17  Oh
00:39:35  Bleh :P
00:40:03  OK, time to implement my fork-to-GCC-JIT!
00:40:06 -!- jcp has quit (Ping timeout: 252 seconds).
00:40:32  AKA JWGCCGATI (Just-When-GCC-Gets-Around-To-It compilation)
00:41:02  God, don't :P
00:41:06 -!- cheater has joined.
00:41:14  Does gcc really not have a library after all these years
00:41:20  I know!
00:41:24  It's shocking!
00:41:47  Though either way it's still a traditional compiler in the sense that it writes assembly. So even with a library, it's be a slow piece of shit :P
00:41:49 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
00:41:51  *it'd be
00:42:04  I can't wait until gcc stops being a thing that anyone takes seriously.
00:42:09  ^
00:42:20  Also clang and every other piece of UNIX software.
00:42:27  Wait, that arrow didn't point in both directions.
00:42:31  Darn, I can't put wordsi nto your mouth.
00:46:43 -!- jcp has joined.
00:48:22  >v<^ make sense of that LOL.
00:48:53   oerjan: you can do a lot with unamb, mind you <-- i don't think that will help make a > bottom work
00:49:01  probably not :P
00:49:12  depends how screwy your ordering is :)
00:50:30  do I really want to plug my laptop in?
00:51:11  assuming > is still antisymmetric, a > a and a > bottom need to be different for such an a
00:51:27  Also I was wondering if you including bottom in an Ord instance, or would that require solving the halting problem?
00:51:30  a >= bottom might work only for a the unique top element
00:51:32  *could include
00:51:38  CakeProphet: that
00:51:50  's what i was saying you couldn't
00:52:10  yeah, (inf >= bottom) is perfectly doable
00:52:15  oh we're talking about something I asked a while ago?
00:52:18  okay.
00:52:20  elliott: sup, not inf
00:52:28  or wait
00:52:34  you mean infinity
00:52:35  infinite :P
00:52:37  y
00:52:39  yeah
00:52:42  im alzy
00:52:54  elliott: inf has a rather different meaning once partial orders are involved
00:53:17  although it then does need an argument
00:53:27  i know :P
00:53:30  but im alzy
00:53:47  *lazy
00:54:12  CakeProphet: i logread you, then elliott logread my response to you
00:54:57  Damnit I want a cake but I'm on weight watchers >:(
00:55:19  Braber01: some people here have lately taken to misspell things a lot on purpose
00:55:41  *reverts tO lolcats
00:55:49  *alot
00:55:56 * oerjan hugs alot
00:56:04  I has a bukkit
00:56:07  hi
00:56:30  CAN I HAS STDIO?
00:56:34  no Braber01 no
00:56:34  no
00:56:38  lolcode is banned
00:56:39  help too many #esoteric memes.
00:56:43  im agre with elliott
00:56:44  which is strange because we also frequently correct our own spelling, and sometimes other's
00:56:55  im so aggry with monqy
00:56:56  is aggry a word
00:56:59  i thought it was
00:57:07  CakeProphet: alot is not an #esoteric meme.
00:57:40  I see.
00:57:53 -!- Braber01 has quit (Quit: ZIRC 0.3 - 100% zsh, woot.).
00:57:58  ah
00:58:04  elliott: aggry beads
00:58:08  im uh
00:58:11  so upset at our loss
00:58:24  there are three words in the english language: angry, hungry and aggry.
00:58:30  me too
00:58:43  wellknownfact
00:59:11  im an oldknown fact
00:59:27  i think the misspellings were too much for Braber01
00:59:52  or the lolcode fascism
00:59:58  yes.
01:00:01  its ok we're just too brilliant
01:00:07  debugging Python is so fun
01:00:11  eventually we'll become so brilliant that _nobody_ will be able to stand being in this channel
01:00:15  not even me
01:00:24  last elliott standing
01:00:36  btw is elliott alot?  it's suspiciously close
01:00:57  bitching alot
01:01:19  waht
01:01:26  hepl
01:01:46  heelp
01:01:55  heelq
01:02:10  monqy: quantum
01:02:11  funny, it's like someone is shouting, but it's being stopped by my spelling filter
01:02:22  quantum is good
01:02:23  elliott: hi
01:02:42  hi;m
01:03:23  today, i write more shiro code for good mycology adventure aftershave cocaine racketeer
01:04:11  monqy is phantom
01:04:16  hi
01:04:31  HI
01:04:39  hows my cology
01:04:50  can shiro run fungot
01:04:51  monqy: deleting the lines " italy openly propagates irredentistic ideas even in the southern german leagues, which directs, fnord,
01:05:01  monqy: no but soon
01:05:05  i implement everything it wants just bugs???
01:05:13  bugs...
01:06:21  ugbs
01:10:17  fungot needs a Homespring style
01:10:18  Sgeo: ' ' he or she' is widespread. universal male is widespread ( though becoming less so). --user:cybbecybbe 21:10, apr 28, 2005 ( utc
01:10:28  no
01:11:47  what exactly would the data set be?
01:11:57  are there large corpii of homespring programs?
01:13:53  corpora
01:14:16  
01:17:12  I don't think a Roman would understand what that means.
01:17:21  
01:17:24  s/Roman/ancient Roman/
01:17:34 * copumpkin is a modern roman
01:17:53  lies no such thing. If you go to Rome today it is a ghost town.
01:18:16  are the friendly ghoss
01:18:59  friend ghsot, ghost firend, friendhsip ghost, friendship town
01:22:59  the place they call rome today is just an amusement park built around the vatican city and based on asterix comics
01:23:16  CakeProphet: :O
01:23:30  oerjan: it's a pretty grungy amusement park :P
01:24:00  copumpkin: well how do you explain why they made a clown into "prime minister"?
01:24:38  it's just a bit of dark grey humor
01:24:40  http://www.reddit.com/r/worldnews/comments/k1ndd/berlusconi_vows_to_leave_shitty_italy_in/c2gyesv
01:37:38  god bless haskell america
01:39:25 -!- elliott has set topic: It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011:  https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678 | http://codu.org/logs/_esoteric/.
01:41:26  god bless haskell america
01:45:59  God bless curry.
01:46:28  god bless haskell america
01:46:32  God bless
01:46:48  map (God bless) [haskell america, curry]
01:47:26 -!- GuestIceKovu has quit.
01:48:45  help xpath is dumb
01:49:15  TANK LOSER
01:49:24  tank loser friend ending
01:50:13  friends everyone
01:51:56  pork
01:52:59  oerjan: brtia odsf ks
01:53:10  wow how do people get so bad at programming
01:53:13  I don't understand at all.
01:53:15  practice
01:53:19  learning from you
01:53:50  hey at least I know when to use for loops instead of while loops.
01:56:16  whats a loop
01:56:16  hlep
01:56:45  a low-level concept used before people figured out abstraction
01:57:04  and then still used after people figured out abstraction.
01:57:53  only by irresponsible people
01:58:28  heh
02:02:51  Has anyone used Perl's XS to evaluate Perl code from C?
02:05:24  nope
02:06:43  http://search.cpan.org/dist/perl/pod/perlxstut.pod
02:06:49  http://search.cpan.org/dist/perl/pod/perlxstut.pod
02:06:53  er....
02:07:00  http://search.cpan.org/dist/perl/pod/perlxs.pod
02:07:21  have fun.
02:07:23  It's not helpful; that's showing it the other way around.
02:07:25  what do you expect from the pod people
02:07:27  IIRC The Camel book has something but I don't want to read it
02:07:40  I'm not entirely sure it would work the other way around.
02:07:44  It does.
02:07:50  You can initialise the perl interpreter from C and feed it code.
02:07:54  I just don't remember how.
02:07:56  I mean you would just want to invoke the interpreter in C right?
02:08:14  instead of using the XS stuff directly.
02:08:30  you can always read the perl source code.
02:08:36  Perl's C API is always called XS, to my knowledge.
02:08:42  Whatever the controlling process is.
02:09:33  oh wait I know how to do it.
02:09:39  system("perl ...")   :P
02:09:58  Helpful
02:11:43  #perl
02:11:57  No thanks
02:12:28  Section 21.4. Embedding Perl (Using Perl from C)
02:12:33  Now to get a hold of this
02:12:53  is that the camel book?
02:13:01  Yes.
02:13:13  OReilly - Programming Perl.pdf 4 Mb
02:13:13  Seems a bit small...
02:13:28  trap
02:13:28  trap
02:13:30  trap
02:13:39  Dude, I run a secure-ish operating system.
02:13:46  trap
02:13:54  Are you trying to be annoying?
02:14:23  Aha, here's some info.
02:16:57  He's not using Adobe reader.
02:17:20  http://search.cpan.org/~jesse/perl-5.14.1/pod/perlembed.pod oh this is useful
02:17:44  oh, heh, this has more information than the camel book sample
02:17:47          PERL_SYS_INIT3(&argc,&argv,&env);
02:17:47  lol
02:19:08  http://perldoc.perl.org/perlembed.html same thing I believe
02:19:17  /usr/lib/perl/5.10/CORE/perl.h oh dear god
02:19:22  ...yep
02:19:22  look at that shit
02:19:25  I've seen it.
02:19:39  oh my god it handles plan9
02:19:50  you should look at Configure
02:19:55  jesus christ guys i just want to know the return type of perl_construct
02:20:09  If it makes you feel better, Configure is autogenerated by something that inspired autoconf.
02:20:20  yes but it's still ridiculous
02:20:23  ./proto.h:PERL_CALLCONV voidperl_construct(PerlInterpreter *my_perl)
02:20:23  ok good
02:20:41  "Inspired autoconf".
02:21:04  perl_construct has an inconstructible return type
02:22:01  elliott: are you being irresponsible and using loops right now?
02:22:23  no
02:22:33          Perl_sys_init3(&argc, &argv, &env);
02:22:34          Perl_sys_term();
02:22:34  ok good they're functions here
02:24:41  it looks pretty easy to call perl subroutines actually.
02:24:47  based on perlembed
02:26:03  but the example doesn't show you how to pass arguments to the subroutine.
02:26:08  just does the no argument case.
02:27:36  also http://perldoc.perl.org/perlguts.html may be of use here.
02:27:46  depending on what you're doing exactly.
02:28:01  Evaluating Perl expressions as scalars and getting the result back.
02:28:24  then yeah perlguts will show you how to convert to-from C-Perl types.
02:28:24  Preferably without maintaining any state between evaluations but it's understandable if that happens.
02:28:51  ...I would think the only way to do that would be to invoke a fresh interpreter each time.
02:28:58  probably
02:29:01  its ok
02:29:05  if state gets maintained
02:36:30 -!- derrik has joined.
02:47:21 -!- sebbu2 has joined.
02:47:21 -!- sebbu2 has quit (Changing host).
02:47:21 -!- sebbu2 has joined.
02:49:49 -!- sebbu has quit (Ping timeout: 245 seconds).
02:51:35  I don't care what the pythonistas say
02:51:46  I'm going to use map when I just need to apply a single function to a list.
02:52:45  They don't speak, they hiss
02:52:59 -!- augur has quit (Remote host closed the connection).
02:53:17  Jafet: oh ho
02:54:07  But functional programming is unPythonic!
02:54:23  apparently.
02:54:30  since there's such shitty support for it.
02:54:31  (just like closures, garbage collection, and everything but C! :P)
02:55:12  man, why do people like Python again?
02:55:16  You can do functional programming in Python! See? See? I mean, it's ugly, and not recommended, but why would you curse Python for something it can do?
02:55:17  /s
02:55:18  is it just because it's easy to code?
02:55:26  That's precisely why.
02:55:30  what's easy
02:55:31  help
02:55:35  It's a bit like Perl but less awful.
02:55:40 * Sgeo might be becoming an ex-Pythonista
02:55:42  snicker
02:55:54 * CakeProphet is an ex-pythonista
02:56:01  Although not sure that Ruby is much better...
02:56:03  I was never a python fanatic
02:56:11  Ruby is like Python but more awful.
02:56:16  yep
02:56:26  more?
02:56:27  Perl is the best of the three. :)
02:56:48  though not perfect by any means.
02:56:58  The implementation actually does hacks to prevent GCC from optimising their undefined behavior in undesirable ways.
02:57:07  Definitely more awful.
02:58:02  It's undefined behavior, why would it matter if it were optimized in some way? Or do you mean C's undefined behavior?
02:58:36  linux does it too; they're in good company
02:58:40  wtf? /usr/lib/libperl.so.5.10 exists, but -lperl doesn't get it?
02:59:16  Sgeo: C's.
02:59:22  Oh
02:59:27  elliott: -l only looks for .so
02:59:33  Well, aren't there other implementations?
02:59:37  pikhq_: what am I meant to do then
02:59:39 -!- derrik_ has joined.
02:59:47  ln -s?
02:59:50  hhehehe
02:59:52 -!- derrik_ has left.
02:59:59  elliott: you could rename the file. :P
03:00:04  or copy it.
03:00:09  copy is probably a better idea.
03:00:12  Also, because Perl is *blithering stupid*, you're not supposed to link it with -lperl at all.
03:00:32  personal insult to cake prohpet
03:00:49  IIRC you're supposed to query the interpreter for the path to the libperl file, and make sure to set the rpath to include the path to the libperl file.
03:00:58  "Haskell is the only language I know of where you can't tell what wheel you just reinvented..." - alpha123
03:01:08  what
03:01:11   Also, because Perl is *blithering stupid*, you're not supposed to link it with -lperl at all.
03:01:15 -!- derrik has quit (Ping timeout: 264 seconds).
03:01:15  elliott@katia:~/Code/shiro$ perl -MExtUtils::Embed -e ldopts
03:01:16  -Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/lib/perl/5.10/CORE -lperl -ldl -lm -lpthread -lc -lcrypt
03:01:17  *By default libperl.so.foo does not go in the library search path*.
03:01:23  (first comment on http://stackoverflow.com/questions/7223901/haskell-what-monad-did-i-just-reinvent)
03:01:39  Sgeo: http://timetobleed.com/the-broken-promises-of-mrireeyarv/ has information on Ruby's undefined behaviour
03:01:44  *Perl. Fucking. Hates. You.*
03:01:55  pikhq_: dude, stfu
03:02:00  the above is the documented way to do it
03:02:05  so clearly -lperl is meant to work
03:02:38  elliott: Strange, that actually cannot work on out-of-the-box Perl.
03:02:50  libperl does not install in the library search path at all.
03:03:16  ok but seriously, i'm working with ghc here, what do i need to pass to ld to link with libperl in some VAGUELY portable awy
03:03:17  way
03:03:41  Cry.
03:03:46  not helpful thx
03:04:09    ld-options: /usr/lib/libperl.so.5.10
03:04:09  this works
03:04:32  ghc + perl now that sounds like a match
03:04:40  I agree.
03:04:44  oerjan: implementing the PERL fingerprint
03:04:48  in a not sarcastic way.
03:05:53  elliott: i sincerely hope that is not required for running fungot.
03:05:53  oerjan: as i have, and it began in 57, as bryant still had his glory days ahead of him at that time.
03:06:21  hmm, eval_pv
03:06:24  man JS regex is so bad.
03:06:24  oerjan: nope
03:08:56  elliott: assuming eval_pv is how the eval operator is implemented, then you can maintain state between evals.
03:09:53  perlapi seems to seems to suggest that eval_pv is basically like eval.
03:10:05  no shit
03:10:05  ...vaguely, granted.
03:11:32  also maybe perl_construct is not very expensive so that could be used to reset state.
03:13:05  nevermind that's a bad idea. :P
03:14:05  well, maybe not: http://perldoc.perl.org/perlembed.html#Maintaining-multiple-interpreter-instances
03:14:34  perl_destruct resets everything.
03:16:27  ...Python makes me hate exceptions.
03:17:51  Python makes me hate lots of things.  Usually myself, for forgetting how much I hate it in between uses
03:18:19  I think I'm using some stupid Ruby IDE just for the editor
03:18:33  Erm, editor component
03:18:57  I should probably get an IDE for Python as python-mode in emacs is especially not so great with indents.
03:19:29  :/ how difficult could it be to do the right thing with indentation in Python?
03:19:46  well it's just dedenting takes more keystrokes than I would like, basically.
03:21:07  spamming tab a bunch basically cycles through all of the possible indent levels, starting with the highest level
03:21:32  don't you just write some elisp to fix that?
03:21:47  ...well, if I had the time to learn how, sure.
03:21:54  not at the moment though.
03:21:56  like in vim we might use a macro or a :noremap
03:22:15  usually a backspace does the right thing, but not always.
03:22:21  see, as a vim user I long for the cleanliness of elisp
03:22:48  Gah
03:23:02  maybe Zimbu deserves a place in the esolang hall of fame
03:23:05  I was hoping to just pass a bunch of numbers to some google API in a URL to get a nice pretty chart
03:24:01  Do you have to free SVs after using them?
03:24:38  I would think so.
03:24:42  Or will destroying a Perl interpreter do that?
03:24:49  The example doesn't free the result of eval_pv.
03:25:02  hmmm... freeing the interpreter would probably do that, yes.
03:25:10  ....I base this on... nothing.
03:25:16  other than it makes sense.
03:25:46  cur_value = rand
03:25:56  I can't help but thinking how... nonsensical that looks
03:26:03  what is that?
03:26:17  Giving cur_value a random value between 0 and 1
03:26:20  in Ruby
03:26:23  no I mean what lang-- oh okay
03:26:43  well, that makes sense to me, but only because that's exactly what perl does. :P
03:27:08  except 1 is not included.
03:27:26  if you want 0 or 1 in Perl you'd write int(rand(2))
03:27:30  Erm, didn't mean to imply it's included in Ruby
03:27:49  Just that... my Python instincts are yelling at me that I'm just storing the rand function in cur_value
03:27:54  heh
03:28:16  higher-order functions? that's nonsense.
03:28:31  use references, or, uh, Ruby uses symbols or someting right?
03:28:34  or just blocks
03:30:28  method(:rand) works, and I think there's syntax sugar for that
03:31:02  I think in most "higher-order functions" you'd pass a block that does the calling.
03:31:50  in Perl it would be \rand
03:32:45  gah, eval_pv is too limited
03:32:54  or hmm
03:33:00  you want arbitrary statements?
03:33:15  I need to specify that I want a scalar result
03:33:20  oh hmm
03:33:22  that's default
03:33:22  ok then
03:33:31  eval_sv maybe?
03:33:37  nah, eval_pv is ok
03:35:26  so it always forces scalar? What if you wanted an AV or HV?
03:36:16  (((x)->sv_flags & (0x00000400)) == 0x00000400 ? ((x)->sv_u.svu_pv) : Perl_sv_2pv_flags(my_perl, x,0,2))
03:36:17  my god
03:36:22  CakeProphet: then you need eval_sv i guess
03:36:53  hmm, SvPVX is ((x)->sv_u.svu_pv)
03:36:54  er.... is there no constant for 0x00000400?
03:37:23  that's cpp output dude
03:37:32  oh nevermind...
03:37:39  sv_pvbyten_force
03:37:39  The backend for the SvPVbytex_force macro. Always use the macro instead.
03:37:41  I thought that was your actual code. :P
03:37:41  what if i didn't ;) ;) ;)
03:37:53  (I should really write C glue for this but I DO WHAT I WANT)
03:38:06  how naughty.
03:39:47  http://perldoc.perl.org/perlcall.html
03:39:50  is this useful perhaps?
03:40:39  oh no.
03:40:40 -!- MDude has changed nick to MSleep.
03:40:51  that's the opposite of what you're doing.
03:41:49  dist/build/shiro/shiro-tmp/Shiro/Fingerprints/PERL.o: In function `s2Lr_info':
03:41:49  (.text+0xac): undefined reference to `eval_pv'
03:41:50  dist/build/shiro/shiro-tmp/Shiro/Fingerprints/PERL.o: In function `s2MP_info':
03:41:50  (.text+0x224): undefined reference to `sv_pv'
03:41:50  ugh
03:42:26  oh, it's Perl_eval_pv
03:42:27  fucking macros
03:43:02  the api docs mention that perl_eval_pv is deperecated, btw.
03:43:06  #define SvPV_nolen(sv) \
03:43:06      ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
03:43:06       ? SvPVX(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC))
03:43:08  s i g h
03:43:10  spelled correctly.
03:43:10  CakeProphet: capital letter
03:43:17  Perl vs perl
03:43:27  ah okay.
03:43:44  sv_nv
03:43:44  A private implementation of the SvNVx macro for compilers which can't cope with complex macro expressions. Always use the macro instead.
03:43:45  hmmm
03:44:17  so what are you doing with these fingerprints exactly?
03:44:33  implementing them
03:44:49  right but for what purpose do they serve?
03:44:58  to be implemented
03:45:00  they are specifications
03:45:25  o_O? okay. not following. oh well
03:46:33  http://catseye.tc/projects/funge98/library/PERL.html
03:46:40  (might need to view source to read)
03:46:54  it exists, CCBI implements it, cfunge implements it, Mycology tests it. so I implement it.
03:48:04  CakeProphet: does this answer your question?
03:48:04  oh okay
03:48:07  yep.
03:48:15  UNDEF: S claims that Perl is already loaded
03:48:15  Segmentation fault
03:48:16  oh good.
03:49:12  gdb?
03:50:08  on a Haskell program? lol
03:50:15  ....oh
03:50:23  right.
03:51:12  this perl.hmtl isn't quite workinge...
03:51:16  how does one debug FFI functions then?
03:51:23  yeah view source to see the whole thing.
03:52:11  CakeProphet: badly
03:52:24  oh good.
03:52:27  why does f98 have perl ffi
03:52:35  monqy: because someone wrote it
03:53:08  like.. is it not possible to set a breakpoint in your C?
03:53:18  or see a stack trace?
03:53:21  CakeProphet: I have no C.
03:53:38  >_>?
03:53:47  That is not a question.
03:53:51  At least, not a coherent one.
03:54:15  I thought you were using C to interface the perl interpreter to GHC/Haskell.
03:54:27  No, I'm using the FFI.
03:54:33  > let (n!) = product [1..n] in (10!)
03:54:34    : Parse error in pattern
03:54:44  :(
03:54:48  oerjan: that's obviously bunk syntax...
03:54:49  elliott: oh, so that doesn't involve writing actual C code?
03:54:52  > let (!) n = product [1..n] in (10!)
03:54:54    3628800
03:54:54  > let (!) n = product [1..n] in (10!)
03:54:55    3628800
03:54:57  :D
03:55:00  CakeProphet: no
03:55:07  foreign import ccall "perl.h perl_alloc" c_perl_alloc :: IO (Ptr CPerlInterpreter)
03:55:07  foreign import ccall "perl.h perl_construct" c_perl_construct :: Ptr CPerlInterpreter -> IO ()
03:55:07  foreign import ccall "perl.h &perl_destruct" p_perl_destruct :: FunPtr (Ptr CPerlInterpreter -> IO CInt)
03:55:07  foreign import ccall "perl.h &perl_free" p_perl_free :: FunPtr (Ptr CPerlInterpreter -> IO ())
03:55:07  ec.
03:55:08  etc.
03:55:24  oh that's uh... fun looking.
03:55:24  elliott: i was checking if ghc supported it, though, i saw a question on stackoverflow
03:55:38  oerjan: neat.
03:56:05  i knew about the _using_ it like (10!) but i was not sure if the extension allowed defining it that way too
03:56:12  (apparently not)
03:56:23  I did not know that GHC supported postfix
03:56:34  it's a flag
03:56:39  unary postfix, that is.
03:56:58  or is it n-ary because that would be sweet...
03:57:04  using it like that is obviously standard haskell.
03:57:06  it's a minor adjustment to section syntax
03:57:15  elliott: obviously
03:57:38  elliott: not quite, standard haskell wants (10!) to have a function type
03:57:50  oerjan: huh, it does?
03:57:51  because it desugars to (\x -> 10 ! x)
03:57:56  well that's just an overly draconian standard :P
03:58:11  well, so ghc relaxes it.
03:58:16  right
03:58:21  Binary Searches should not be going that far off the rails!
03:58:36  wat
03:59:09  MY GOAL WITH THIS BINARY SEARCH IS NOT TO FIND THE AVERAGE BETWEEN MY INITIAL BOUNDARIES FOR THIS SEARCH
03:59:13 * Sgeo decides to bug hunt
03:59:23  I SEE.
03:59:44  You should re-evaluate your goals
03:59:52  (his goal is to find a life partner)
04:00:11  (it could be you jafet)
04:00:16  hm (!10) desugars to (\x -> x ! 10) which is the same as flip (!) 10
04:00:19  :t flip
04:00:20  forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
04:00:36  so what if it used caleskell flip...
04:01:04  this is not necessarily that much of an improvement.
04:01:07  for some reason my parser enters an infinite loop, but I am not sure what is causing it.
04:01:16  I thought it was binary operators but apparently not.
04:01:18  CakeProphet: left recursion
04:01:21  The distribution looks skewed, as I expect
04:01:24  (always a good guess)
04:01:37  Then again, I can't tell whether a distribution is skewed
04:02:22  oerjan: thats where the first alternative is recursive and descends infinitely before the simpler terms are ever checks, right?
04:02:25  yeah, it's not that.
04:02:29  *checked
04:03:16  well, it could be, since I didn't actually implement the binary operator code.
04:03:38  !@#$
04:03:38  just calling a helper function, similar to the one Parsec has.
04:03:44  Stupid auto-return
04:03:53  cakyep
04:03:55  I auto-returned the result of resetting the simulation
04:03:57  er
04:04:03  CakeProphet: yep
04:04:04  lol
04:04:10  cakyep
04:04:12  NO TAB COMPLETE FOR YOU
04:04:40  D:
04:04:52  Sgeo: what's wrong with that exactly?
04:05:11  I wasn't getting the results of the simulation
04:05:24  Instead getting the "result" of a freshly reset simulation
04:05:50  I don't really understand, if you anted the simulation you could just explicitly return...
04:05:52  Maybe I shouldn't be resetting it in the same method that returns the result
04:05:54  +w
04:06:08  Yes, but I didn't see that I messed it up
04:06:22  @hoogle expressionParser
04:06:23  Text.Parsec.Expr buildExpressionParser :: Stream s m t => OperatorTable s u m a -> ParsecT s u m a -> ParsecT s u m a
04:06:23  Text.ParserCombinators.Parsec.Expr buildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a
04:06:41  Sgeo: oh you're still thinking in Python where assignment doesn't result in anything or whatever, maybe?
04:06:57  I don't... think so
04:07:28  CakeProphet: you're not doing the equivalent of expression = buildExpressionParser table expression, are you?  because that i think would infinitely recurse iirc what that means
04:07:49  yes that's pretty much what I'm doing.
04:08:11  though it may be implemented differently.
04:08:38  well, no.
04:08:40  not quite
04:08:49  I am not recursively evaluating expression
04:08:53  I'll show you.
04:09:17  ok :P
04:09:34  because that would have been an error
04:17:00  dear perl api an ultimatum
04:17:03  work or i will an kills you
04:17:05  oh hm
04:17:11  maybe i fail to keep the reference around
04:20:05  why ;m this no work
04:21:32 -!- Jafet has quit (Quit: Leaving.).
04:22:38  oh well/ me scraps it for now
04:22:41  oops i cant type :(
04:29:20  oops
04:34:07  oops
04:42:11  ...wat. operator.__and__ apparently cannot and Nones
04:42:17  but None and None works fine.
04:42:59  oh wait I think __and__ is bitwise.
04:43:09  except it's not doing bitwise and...
04:43:29  oh nevermind it is.
04:43:49  > Nothing .&. Nothing
04:43:50    No instance for (Data.Bits.Bits (Data.Maybe.Maybe a))
04:43:50     arising from a use...
04:44:27  boolean and is operator.and_
04:44:34  you sure are confusing operator lib.
04:46:50  dammit theatress,f
04:47:34  {0.0...0.1=>5, 0.1...0.2=>72, 0.2...0.3=>76, 0.3...0.4=>158, 0.4...0.5=>194, 0.5
04:47:34  ...0.6=>187, 0.6...0.7=>148, 0.7...0.8=>89, 0.8...0.9=>64, 0.9...1.0=>7}
04:47:37 -!- augur has joined.
04:47:50  There's no way to just paste those results into some Google thingy and see what it looks like, is there?
04:48:23  maybe i should implement MODE, the most painful fingerprint EVR
04:48:24  EVER
04:48:27  Although I guess it looks very bell curve-y
04:48:43  CakeProphet: view-source:http://catseye.tc/projects/funge98/library/MODE.html look at this shit
04:48:53  The Q "Toggle Queuemode" instruction toggles an internal flag called
04:48:53  queuemode.  When queuemode is active, cells are popped off the
04:48:53  stack from the bottom instead of the top.

04:49:02 YES GREAT I LOVE FINGERPRINTS THAT JUST CHANGE THE ENTIRE SEMANTICS OF THE LANGUAGE 04:49:11 lolwat 04:49:29 ALMOST AS GREAT AS TRDS 04:50:00 use feature 'say switch'; 04:50:11 except now befunge and more obfuscated! 04:50:18 or... whatever funge-98 is 04:50:28 a family of languages 04:51:09 -!- Jafet has joined. 04:51:20 do you currently have a system that allows you to make huge changes to language semantics like that? 04:51:24 nope 04:51:31 i just need to abstract out push/pop but sodjfsdjfoi 04:51:32 I know in Haskell this requires a bit of forethought. 04:51:40 nah, I can easily do it 04:51:44 TRDS will be way harder 04:51:48 MVRS probably even moreso 04:51:56 FNGR will be annoying too 04:51:56 !wacro 04:51:59 SAR 04:52:02 what about SAR? 04:52:04 TRDS is time travel 04:52:06 http://www.rcfunge98.com/rcsfingers.html#TRDS 04:52:21 MVRS is multiverse, basically a bunch of fungespaces that shit runs in, http://www.rcfunge98.com/rcsfingers.html#MVRS 04:52:33 and FNGR is just a "switch around loaded fingerprint instructions and shit" fingerprint 04:52:33 BUT 04:52:39 it assumes the wrong semantics for fingerprints 04:52:44 fingerprints push each instruction, not the fingerprint as a whole 04:52:57 so basically you have to change the entire fingerprint push/pop system when FNGR is loaded 04:52:57 maybe you just like 04:52:59 not implement those. 04:52:59 and fix it on unload 04:53:11 CakeProphet: there are programs using them, Mycology tests most of them 04:54:05 oh I see. 04:54:10 what do you see 04:54:24 I see that you want your implementation to be complete, basically. 04:54:41 it could be worse, I need to implement WIND portably 04:54:49 hmm, actually that's not so hard 04:54:52 ....portably? 04:54:57 that sounds like an oxymoron. 04:55:00 what will be harder to implement portably 04:55:01 is 04:55:04 Why is what I thought would be a weird distribution normal? 04:55:08 "portable windows extensions" 04:55:11 Or at least, it looks normal at a glance 04:55:15 "MSGQ"0x44d534751SysV IPC Message Queues(RCS) 04:55:15 "SMEM"0x534d454dSysV IPC Shared Memory(RCS) 04:55:15 "SMPH"0x534d5048SysV IPC Semaphores(RCS) 04:55:21 those will be hard to do portably. 04:55:25 "UNIX"0x554e4958Some Unix access functions(RCS) 04:55:26 as will this. 04:55:29 but i shall. 04:55:43 I'm sure there's /some/ Windows API to switch user 04:56:16 you should use your perl interpreter for REXP 04:56:29 nah, it's obviously meant to be posix regexps I think 04:56:32 instead of PCRE which is lame. 04:56:37 or posix regexps which is even more lame. 04:56:44 but okay. 04:56:49 STANDARDS COMPLIANCE IS GOOD 04:56:51 rcfunge fingerprints may suck but I'm not going to misimplement them just to be better 04:57:06 "FORK" 0x4464F524B 04:57:06 T( -- pid flg)Fork new process 04:57:06 can't wait to do this portably mmm 04:57:18 it's not that bad since i can just like serialise state and spawn but still 04:57:24 well doesn't Haskell do forks portably? 04:57:32 *GHC 04:57:32 not _that_ kind of fork. 04:57:39 doing fork() on Windows is basically impossible 04:57:45 but spawning a process works 04:59:13 do you already have SUBR? 04:59:35 ....ew FOBJ 04:59:44 -!- augur has quit (Remote host closed the connection). 04:59:47 I don't have SUBR yet, no. 05:00:17 http://www.rcfunge98.com/rcsfingers.html#MACR 05:00:18 fuck my life 05:31:05 Hey, people of #esoteric, here's a language for you: http://timmaxwell.org/pages/monad-embed/index.html 05:31:28 People of #esoteric who are not elliott, feel free to give the author feedback. 05:31:36 Gosh! I have never seen that page before in my life! 05:32:57 a new way of using monads, eh? 05:38:46 shachaf: I see you don't want right-by-definition feedback. 05:38:50 :P 05:39:03 pikhq_: ? 05:39:21 shachaf: All of elliott's opinions are right, by definition. 05:39:29 Oh. 05:39:53 pikhq_: I didn't say elliott shouldn't give feedback. 05:40:03 In fact, I already told him to do so, in another channel. 05:40:14 I am the Keeper of the Right. 05:40:15 Asking twice seemed silly. 05:40:19 Nobody else may have the Right. 05:40:47 > Right now 05:40:49 Right now 05:41:03 :t now 05:41:04 Not in scope: `now' 05:41:09 > now 05:41:10 -!- ive has quit (Quit: leaving). 05:41:10 Not in scope: `now' 05:41:17 :( 05:41:27 "When C++ is your hammer, every problem looks like your thumb. 05:41:27 " 05:41:44 > now 05:41:45 Not in scope: `now' 05:41:48 > now 05:41:50 Not in scope: `now' 05:41:54 shachaf ruined everything 05:41:54 monqy: shachaf is a shameless cheater 05:42:22 oerjan: Excuse me? 05:42:25 I am now cheater. 05:42:29 ...Not. 05:42:32 I'm *not* cheater. 05:42:38 PROVE IT 05:42:38 Ugh, he's going to get highlighted now. 05:42:59 shachaf: that is... a problem? 05:43:06 sha​chef 05:43:17 Sounds like a problem to me. 05:43:46 This channel is actually for esoteric people, not esoteri languages, right? 05:43:51 That would explain the assortment you've got in ehre. 05:43:55 shachaf: fouwf avkugefreølevf abekh 05:44:07 shachaf: That's an unfortunate result of the latter. 05:44:13 Well, sometimes unfortunate. 05:44:37 can someone enlighten me as to the difference between /usr/lib and /usr/local/lib? 05:44:46 CakeProphet: Former is OS, latter is system. 05:44:48 yes, there is a local in there 05:44:55 OS manages former, system administrator latter. 05:45:05 ah okay. 05:45:05 also an extra /, although its position is ambiguous. 05:45:10 so then apt-get installs to /usr/lib? 05:45:16 or? 05:45:18 not? 05:45:18 Yes. 05:45:21 okay. 05:45:31 hm strictly speaking it could be an extra ocal/l 05:45:35 The latter is for diet versions of libraries. (lo-cal, yo see.) 05:45:51 ..... 05:45:58 these jokes are so bad. 05:46:18 CakeProphet: They're like the Power Glove. 05:46:26 (It is SO BAD.) 05:47:57 or perhaps the _second_ l is the original, making it an extra loca and /l 05:48:48 but there is no doubt as to who the original pedant-for-hire of #esoteric is 05:49:01 quintopia: wait, who? 05:49:25 and also, why haven't i been paid 05:49:41 oerjan: you, of course. you would never miss an opportunity to state the obvious for humor value, and then discourse about it for ten more minutes 05:49:50 and you are paid 05:49:52 in silent yuks 05:50:01 (and occasional real ones from gregor) 05:50:07 puns =/= pedantry 05:50:21 stating the obvious =/= puns 05:50:32 don't like it, leave 05:50:39 that's a really weird smiley you guys use 05:50:44 yeah 05:50:49 we're frowning in both directions 05:50:50 simultaneously 05:50:55 it's due to our hyper-dimensional nature 05:50:59 thats no frown 05:51:05 thats how i smile 05:51:08 ever since the stroke 05:52:07 i did not know strokes could do that 05:53:05 oerjan: Maybe it was a... keystroke? 05:53:21 a key event, ok 05:53:52 no, i mean, ever since that awful billy squier song came out, i've been unable to truly smile 05:54:11 fizzie: How's jitfunge :P 05:54:13 oh. good like i have no idea what song you are referring too, then. 05:54:25 ew, grammr 05:54:29 and spling 05:54:36 grandma and spelunking 05:54:41 a novel 05:54:53 that sounds like it could be readable 05:55:00 I am now cheater. < NOOOOOOOOOOOOOoooooooooooooooooooooooooooooooooooooooooooooooo 05:55:01 cheater: You have 1 new message. '/msg lambdabot @messages' to read it. 05:55:17 shachaf would make a nicer cheater than the one we have now. 05:55:21 Can we apply for a transfer? 05:55:33 surely someone here remembers that song...it was on the small soldiers soundtrack...surely someone remembers that movie...it was probably worse than the son 05:55:34 Oh, there's a spider here. Hi spider. 05:55:36 g 05:55:37 but brain transfers are so complicated 05:55:50 quintopia: wow i think i remember small soldiers........ 05:55:51 you cannot. 05:55:53 yes i do 05:55:56 elliott: Sorry, I'm deeply embedded in #haskell-blah as my off-topic channel of choice. 05:55:59 Sadly cheater is in there too. 05:56:12 "sadly" 05:56:18 shachaf: He's quieter in here. Just sayin', we have benefits. 05:56:25 And a great retirement plan, too. 05:56:36 elliott: On the other hand you talk about esoteric languages all the time. 05:56:40 elliott: you remember it existing or you remember the movie itself? if the latter, my many condolences. 05:56:45 elliott: In #haskell-blah, C++ is considered an esolang. 05:56:45 shachaf: That... 05:56:52 shachaf: Where on earth did you get the perception that we tend to be on-topic? 05:56:58 Apart from my Shiro babbling which is more about the Haskell. 05:57:10 quintopia: A little bit of both. 05:58:24 is haskell-blah good 05:58:50 It lacks the Holder of the Rightness. 05:59:04 worst chanel 06:02:04 * shachaf wonders if #esoteric-blah etnds to talk about esoteric languages. 06:02:18 #esoteric-blah is usually used for botspam. 06:02:21 Or at least it was, years ago. 06:02:37 -ChanServ- 1 freenode-staff +voOtsriRfAF [modified 2 years, 12 weeks, 4 days, 20:53:47 ago] 06:02:40 Also freenode stole it off me? 06:02:43 Jerks. 06:03:20 Your nick has only been registered for shachaf: Yes, because I only got it back then. 06:03:58 elliott: i think #esoteric was changed to freenode-staff too 06:04:00 shachaf: he has been named "elliott" for like 16 some-odd years though. fun fact. 06:04:09 shachaf: Previously I had it for ages, then someone managed to steal it off me (with some kind of bot, said the freenode staffer; I'm not sure I buy that). 06:04:22 But now it is back to its rightful owner, me. 06:04:29 All other elliotts can just suffer. 06:04:35 cable 06:04:36 i miss alise 06:04:39 elliottt 06:04:39 Not elliottt! 06:04:44 Elliotttttttttttttttttttttttttttttttttttttttt. 06:04:47 That's me. 06:04:50 elliottt is the best of all the elliots. 06:04:52 elliotttcable 06:05:05 I wonder whether I should try and sell this to elliotttcable again. 06:05:08 are there any other elliottts 06:05:09 He seemed quite willing to buy. 06:05:19 He didn't seem to like the sound of five hundred dollars though. 06:05:48 Ask for bitcoins. 06:05:54 It's the way of the future. 06:06:08 I'm not sure his political leanings are aligned with that. 06:06:09 65 btc 06:06:32 (Though I certainly don't claim to understand the American right-wing.) 06:08:06 I wonder who the richest bitcoiner is, in terms of bitcoins. 06:08:15 That should be calculable from the public data, I think. 06:10:04 Also: Does nobody care about any actually interesting alternative currencies now that Bitcoin is so big? I haven't seen anyone mention Ripple in years. 06:11:44 #haskell-blah is working on implementing one 06:12:06 I'm sure it'll do wonderfully. 06:12:11 Ŧ 06:13:28 so bitcoin is not actually interesting? i think "catching on enough to work" is damn interesting. 06:14:22 FSVO work. Anyway, it's essentially a digital gold standard, which is incredibly boring. 06:14:55 "Everyone agrees that this scarce but useless resource is incredibly valuable, feels smugly superior over fiat currencies for all eternity" is a yawn-inducing story. 06:17:15 the only reason i yawned is because you used the word yawn and seeing yawn in a sentence when you are in a yawny mood is automagically yawn-inducing despite the story actually being pretty cool and not boring at all yawn. 06:18:26 So how do bitcoins fit into your post-apocalyptic libertarian paradise? 06:19:29 i'm going to collect a whole bunch of them and bury them on a private island where i will become benevolent dictator of Zombie-Free Land 06:19:55 so called because it will the be the only place free of zombies 06:26:55 -!- sllide has joined. 06:33:45 ?hoogle [a] -> ([a], a) 06:33:46 Numeric floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int) 06:33:50 hmph :P 06:33:57 oerjan: what's a nice way of (init xs, last xs) 06:34:00 (nice = fast) 06:34:32 i'm not convinced there is a faster one 06:34:42 oerjan: um not scanning the list twice? 06:35:13 hm 06:35:17 foo [x] = ([], x); foo (x:xs) = let (xs',y) = foo xs in (x:xs',y) 06:35:18 that's ugly though 06:36:06 actually it's (reverse (init xs), last xs) but I doubt that can be optimised more 06:36:19 foo [x] = ([], x); foo (x:xs) = let (xs',y) = foo xs in (xs'++[x],y) 06:36:56 elliott: um of course that can duh 06:37:09 how? 06:37:11 (reverse (init xs), last xs) is tail recursive 06:37:23 um hmm 06:37:25 it is? 06:37:32 hmm 06:37:44 oh right 06:37:46 -!- Patashu has joined. 06:38:11 foo l = foo' l []; foo' [x] r = (r, x); foo' (x:xs) r = foo' xs (x:r) 06:38:20 right 06:38:58 there we go 06:42:08 oerjan: now design me a more efficient stack structure :) 06:42:11 s/:)/>:)/ 06:42:15 typo :D 06:43:38 oerjan: now design me a more efficient stack structure :) <-- there is an oxymoron in that sentence somewhere 06:44:25 wat, howso 06:44:42 implementing funge98 sounds painful, a thing i do not want to do 06:44:48 oerjan and design maybe 06:45:05 olsner: also, efficient 06:45:08 maybe i would be fine with implement an old befunge,,, one without pain,, 06:45:35 oerjan: but my current one is so lame :( 06:45:44 data StackElems = (:-) {-# UNPACK #-} !Value StackElems deriving (Show) 06:45:44 it's literally just a micro-optimised stream type 06:45:53 well plus a length field 06:46:01 so i can know how many real values are present 06:46:06 elliott: NOT MY FIELD OF EXPERTISE 06:46:09 oerjan: :'( 06:46:10 :'( 06:46:17 I should probably try Data.Sequence 06:46:23 but I dunno 06:46:30 it doesn't seem like it'd be a massive benefit 06:46:56 > let f = span (not . null . tail) . filter (not . null) . tails; g x = let (a,b) = f x in (head <$> a, head . head $ b) in g [1,2,3,4,5] 06:46:58 ([1,2,3,4],5) 06:47:05 I'm sure that's the efficientest. 06:47:35 fizzie's writing completely point-free functions; is he off the: deep end? Experts disagree. 06:47:45 But the prevailing opinion is that he has no: hope now. 06:47:56 And that his indoctrination is: complete. 06:47:59 Am I doing the colont hing right? 06:48:02 Colont hing. 06:48:07 my name 06:52:31 -!- GreaseMonkey has joined. 06:59:36 -!- Patashu has quit (Ping timeout: 252 seconds). 07:07:13 Actually now that I look at it, maybe it could be a bit more pointless. 07:07:15 > let f = ((head <$>) *** head . head) . break (null . tail) . tails; in f [1,2,3,4,5] 07:07:17 ([1,2,3,4],5) 07:07:36 fizzie: Nnh, but, arrows. 07:14:45 @hoogle (a -> b) -> (c -> d) -> (a,c) -> (b,d) 07:14:46 Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 07:14:56 What an obvious place for it. 07:15:08 Also that's one angry-looking operator. 07:15:13 :t (***) 07:15:14 forall (a :: * -> * -> *) b c b' c'. (Arrow a) => a b c -> a b' c' -> a (b, b') (c, c') 07:15:26 I mean, it's an okay operator, for functions. 07:16:46 are (|||) or (+++) ever useful 07:16:51 duno 07:17:01 :t (|||) 07:17:02 forall (a :: * -> * -> *) b d c. (ArrowChoice a) => a b d -> a c d -> a (Either b c) d 07:17:08 :t (+++) 07:17:09 forall (a :: * -> * -> *) b c b' c'. (ArrowChoice a) => a b c -> a b' c' -> a (Either b b') (Either c c') 07:17:57 -!- sllide has quit (Read error: Connection reset by peer). 07:18:05 I can sort of imagine them being useful 07:18:11 for functions of course 07:18:57 :t either 07:18:59 forall a c b. (a -> c) -> (b -> c) -> Either a b -> c 07:19:19 for functions, ||| is either it seems 07:20:15 oh right 07:20:24 either is useful 07:20:37 back to only imagining about +++ 07:25:01 hmm, this could surely be expressed more nicely... 07:25:38 now im couriuos 07:25:43 monqy: ? 07:25:48 curiosyu 07:25:52 about what is it 07:26:02 oh 07:26:23 I'm just trying to express a really simple game in FRP, and I have this really unsatisfying expression of gravity that depends on a game tick event 07:26:48 player :: Vec -> Behavior Player 07:26:49 player pos = accumB (Player pos (0,0)) (gravity <$ tick) 07:26:49 where gravity (Test p v) = Test (p .+. v) (v .+. (0,1)) 07:26:56 and i'm just thinking......can this be done.......more elgelgantly..... 07:27:05 s/Test/Player/ 07:27:37 * oerjan learns something surprising about the andromeda galaxy http://spluch.blogspot.com/2007/01/size-comparison-of-andromeda-galaxy-and.html 07:28:12 monqy: +++ is sort of dual to *** 07:28:21 yeah 07:28:38 but I'v enever had to do anything like that to eithers 07:28:46 so it is all up to imagineation 07:29:40 oerjan: wow, that's cool 07:29:51 i wish it was easily visible 07:30:01 now i want to see it :( 07:31:36 almost as cool as frogs 07:32:30 i want frogs in my night sky 07:37:09 frp is am hards 07:38:10 i wish i knew frp ;_; i a,m try frp soonbut finishing other thigns first 07:40:48 wow, operator has no logical and. 07:40:54 both __and__ and and_ are bitwise. 07:41:19 player :: Vec -> Discrete Player 07:41:19 player initialPos = Player <$> pos <*> vel 07:41:20 where pos = accumD initialPos ((.+.) <$> changes vel) 07:41:20 vel = accumD (0,0) (collision $> (.+. (0,1))) 07:41:20 collision = (/= (9,9)) <$> changes pos 07:41:20 ok this is starting to get better... 07:41:29 I guess it needs to take a list of things it can collide with... 07:42:37 CakeProphet: hi what 07:42:51 monqy: just me trying to write functional code in Python. 07:42:57 :t none 07:42:58 and finding that it is not well supported 07:42:58 Not in scope: `none' 07:42:59 :t any 07:43:01 forall a. (a -> Bool) -> [a] -> Bool 07:43:13 ?pl all . map not 07:43:14 all . map not 07:43:16 oh hm 07:46:35 :t all . (not .) 07:46:36 would none be something like (fmap (fmap not) any) 07:46:36 forall a. (a -> Bool) -> [a] -> Bool 07:47:27 player :: Vec -> Discrete Vec -> Discrete Entity 07:47:27 player initialPos collider = Entity <$> pos <*> vel 07:47:27 where pos = accumD initialPos ((.+.) <$> changes vel) 07:47:27 vel = accumD (0,0) (changes falling $> (.+. (0,1))) 07:47:28 falling = 07:47:30 (\p q -> p .-. (0,1) /= q) 07:47:32 <$> pos 07:47:34 <*> collider 07:47:36 this looks right but is wrong :( 07:48:10 what is this code for? 07:48:20 game 07:48:27 "a really simple game" - elipt 07:48:41 - a few minutes ago 07:48:43 similar to the one we were discussing before? 07:48:43 - monqy 07:48:49 no 07:48:57 oh okay. 07:49:09 THERE ARE ENTITIES SO I WAS SUSPICIOUS. 07:49:19 whats entity 07:49:21 I am suspicious of things so vaguely named. 07:50:00 eek, an entity in the channel 07:50:06 oh no 07:51:56 madnir 07:58:09 -!- oerjan has quit (Quit: Bye!). 07:58:26 rip oerjan 07:58:28 died as he lived 07:58:30 fighting crime 08:14:03 -!- nooga has joined. 08:23:46 you know a library has bad code when I can rewrite it to be faster. 08:30:30 uh, is there even such a thing as a left-associative prefix unary operator? 08:30:55 !!x as right associative = !(!(x)) 08:30:59 !!x as left associative = ??? 08:31:16 (!(!x)) same thing. 08:31:41 !!x isn't necessarily equal to x. 08:31:47 C is intuitionistic! 08:31:56 ..I make no mention of what ! is 08:32:04 but yes, that's true. 08:32:13 No, just referring to a #haskell discussion. 08:32:24 oh yes of course. 08:32:38 It's like a #haskell away from #haskell in here. 08:32:43 God bless haskell america. 08:33:12 @localtime elliott 08:33:13 Local time for elliott is Thu Sep 8 09:34:00 08:33:19 What a silly command. 08:33:21 Is that your localtime? 08:33:30 The class method [...] mentions none of the type variables of the class [...] When checking the class method: [...] In the class declaration for [...] ;________; 08:33:36 I'm... not sure how much I trust this computer's clock. 08:33:41 @localtime 08:33:45 Local time for monqy is Thu Sep 8 01:35:07 2011 08:33:46 @localtime lambdabot 08:33:47 I live on the internet, do you expect me to have a local time? 08:33:53 How rude. 08:34:18 @localtime EgoBot 08:36:17 Car Crush II is a thrilling high speed 2-D driving 08:36:17 game. This game has got new concepts and ideas. Again made in QBASIC and DirectQB. You have to drive through an extremely challenging track and play well enough to achieve a high score. Enemy cars in the game are extremely dangerous. They will try to slam into your car and inflict serious damages, so be a bit careful. 08:36:31 sounds extreme 08:36:38 and u 08:36:38 "be a bit careful" is definitely the best part. 08:36:38 h 08:36:40 thrilling 08:36:46 Not too careful. Just a bit. 08:37:37 so i'm considering using not using a typeclass for this thing but I'm afraid it would get messier 08:37:42 what is the thing 08:37:55 typeclasses are never the answer don't do it n;o 08:38:02 (Typeclasses are sometimes the ansewr.) 08:38:22 it would probably be better to use a normal record but...mess... 08:38:30 what is it 08:39:14 i want multiple ui ends for a thing and the signature is right now a typeclass 08:39:41 today on esoteric: monqy attempts to be as vague as possible so that nobody can help him 08:39:48 exactly 08:40:05 would you have to create a new dummy type just so you can make an instance 08:40:06 like 08:40:08 data Gtk 08:40:10 instance UI Gtk where ... 08:40:14 yes that's what i'm doing right now 08:40:17 yeah no 08:40:19 make it a record 08:40:25 is there any way to clean it up 08:40:29 make it a record 08:40:32 i mean 08:40:34 clean record 08:40:39 how is it not clean 08:42:08 hard to describe :( 08:43:06 monqy: show class 08:43:44 its incomplete :( I'm just worried about having to pass the record around everywhere in the cases where the type system would do it if it's a class?? 08:43:54 like theres 08:43:59 the first three lines 08:44:00 class UI a where type Key a :: * getKey :: IO (Key a) 08:44:04 oh no it got condensed 08:44:07 into one line 08:44:10 when i pasted it 08:44:26 monqy: since you have to do 08:44:28 data Gtk 08:44:33 instance UI Gtk where ... 08:44:39 monqy: you would have to pass around the dummy Gtk value _anyway_ 08:45:01 what's with the Key thing though, sounds like you could eliminate that 08:45:32 the next line might explain it 08:45:33 a bit 08:45:36 keyToCommand :: Key a -> Command 08:46:02 e.g. hscurses represents keys differently than gtk?? 08:46:09 * elliott diagnoses you with overcomplicating it syndrome 08:46:12 :( 08:46:16 what should i do help 08:46:20 since you can't examine values of (Key a) except via the other methods 08:46:23 you don't need it at all 08:46:27 for instance that class is equivalent to 08:46:33 class UI a where getKey :: IO Command 08:46:38 (note lack of "a" occurring because it's dummy) 08:46:39 so 08:46:43 data UI = UI { getKey :: IO Command } 08:46:47 obviously a key can do somewhat more maybe 08:46:58 but that's fine, just define an abstract key type that would be all the class methods taking (Key a) 08:47:05 data Key = Key { keyName :: String, keyCommand :: Command } 08:47:09 data UI = UI { getKey :: IO Key } 08:47:16 suddenly clean 08:47:51 the reason i had it that way was becuase i was afraid of the pattern (keyToCommand <$> getKey) because i am irrational fears 08:48:19 how does that help you avoid that pattern? 08:48:23 that gives you that pattern exactly 08:48:26 that's the only way to use yours 08:48:52 but yeah seriously, the point is that your library can never examine the (Key a) values, so it's identical, from your point of view, to a record that contains the results of every function you could apply to it, from the class 08:48:58 i think i was thinking defining it generally for UI a?? i'll simplify it anyway 08:49:05 and if you create that record, you'll realise that you never actually use the a in UI 08:49:09 and it can be a trivial data type 08:50:05 well there are other parts too...and i'm afraid if i simplify all of them i'll lose valauble things...or have to duplicate more code than with that example 08:50:35 ending up making the sad empty type anyway and type families 08:50:50 monqy: http://sprunge.us/gDXW 08:51:01 monqy: "lose valuable things" <-- how can you? the translation is literally an isomorphism 08:51:19 it is impossible to lose anything because everything you could do with the overcomplicated, awkward design is possible with the data type design 08:51:45 * elliott transformed a typeclass over a dummy empty type with type families into a two-element data type with no existentials in Shiro and it helped things massively 08:54:38 monqy: basically if you use the version which requires: a dummy empty data type being passed around everywhere; pointless type families; more compliacted error messages; longer code to implement a UI 08:54:41 this debug output is getting pretty furious. 08:54:57 monqy: over the identical-in-the-literally-identical-sense, simple record types that cannot possibly longer your code 08:54:58 then the bear 08:55:00 of hope 08:55:01 will be sad 08:55:03 :( 08:55:12 i;m going to use the records one don;t worry 08:55:32 right now i am just being sad about not thinking of useing more records than one; _; 08:55:33 IM WORRYING 08:55:37 THE WORRYING WILL NEVER STOP 08:55:41 typeclasses are still useful if you want other data types to interface with your code easily. 08:55:46 monqy: IT IS OK I HAD TO UNLEARN IT TOO 08:55:57 CakeProphet: That's... well, it's a sentence. 08:56:34 monqy: I think the hardest part of Haskell is forcing yourself to not try anything fancy at all ever until you try functions and data types. 08:57:15 for example, Ord is nice to have because you can just pass your types into any Ord-accepting function, instead of wrapping it in some ord structure. 08:57:44 typeclasses are not completely useless? WOW REALLY :P 08:57:57 is cakeprohpet aware of the context i suspect not..... 08:57:58 ...yes I'm just discussing HOW they are useful. :P 08:58:20 not the specific problem no. Just that you guys are talking about typeclasses and data types being isomorphic. 08:58:41 please...you have no idea what the context is at all stop... taking things we say out of context and trying to disprove them 08:58:56 .......I am not trying to disprove anything? 08:59:12 there's nothing to disprove. 08:59:29 then why are you saying 08:59:29 things 08:59:48 to like, I dunno, talk about it in detail? 09:00:01 I wasn't aware this was #esoteric-debate 09:00:03 it's funny because that wasn't what we were talking about 09:00:22 also: since when wasn't it??? 09:01:33 since always? 09:02:26 * CakeProphet does not say things on this channel with the intent of always refuting or proving someone else wrong. 09:05:09 in any case, elliott mentioned that typeclasses can be translated to ADT and that in many cases it simplifies the design. I was providing an example of where the opposite is true. That's... pretty much all. 09:05:16 i never mentioned that sorry 09:05:20 i was talking about one specific case 09:05:26 exists =/= forall 09:05:38 "in many cases" =/= forall 09:05:48 never said that 09:06:56 okay fine. 09:07:29 I guess I shouldn't bother. 09:11:57 -!- CakeProphet has set topic: intelectrical property | It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678 | http://codu.org/logs/_esoteric/. 09:12:05 why is 9 and 0 excluded from the number list? 09:12:18 unnecessary 09:12:48 who needs them 09:13:05 I assume the reason they're up there is because elliott's number keys are broken. 09:13:25 but maybe 9 and 0 work fine. 09:13:35 they do 09:13:43 why doesn't 0 on the left of 1 anyway 09:13:46 this has bugged me forever 09:14:11 -!- ais523 has joined. 09:14:14 -!- ais523 has quit (Changing host). 09:14:14 -!- ais523 has joined. 09:14:19 * CakeProphet never uses the numpad 09:14:22 what 09:14:25 neither do I 09:14:27 how is it relevant 09:14:33 maybe if I were like an accountant or something 09:14:37 and punched in numbers all day. 09:14:39 to a spreadsheet 09:14:41 then I might adopt it. 09:15:08 that sounds like hell 09:15:40 -!- Patashu has joined. 09:15:42 it's not too different from what programmers do... 09:15:54 it's not too different from what programmers like you do, maybe 09:16:01 except we have to think about what we're typing. 09:16:22 thinking a smaller difference than typing is a similarity 09:16:27 the wonderful world of hell 09:17:42 elliott: I'm not really sure that makes any sense, but I don't really appreciate it either. 09:18:30 Well, if you think programming is like that, you can't be doing very interesting programming. 09:18:51 it's similar in that you are confined to one place typing for hours 09:18:55 is basically what I was saying. 09:19:28 but that's not the hellish part 09:19:30 programming is interesting. why else would I be here? 09:20:02 programming is usually fairly awful, things not doing what I want them to do 09:20:12 monqy: programming can be its own special hell. :) 09:20:30 that's when people make me do things I don't want to do 09:20:38 right. 09:20:59 people intentionally vague, _perhaps not vague enough_ 09:21:05 but if you have a degree of pain tolerance, then even that sort of programming can be enjoyable. 09:21:13 ahahahah no 09:21:47 have fun making money then... 09:21:58 I'm scared of that 09:22:11 it's really not so bad, you just can't be so stingy. :P 09:22:24 I guess there might be a sort of joy in some cases, but it is a very bad joy 09:22:50 there's always academia I suppose. 09:23:11 if you have the money or the welfare state for that. 09:23:22 academia scares me too 09:23:39 why's that? 09:23:43 reasons 09:23:48 ah. 09:24:26 monqy: well, then there's always doing something amazing that makes you rich or at least somewhat well-off. 09:24:33 better start now. 09:24:44 whats amazing 09:24:54 ...if I knew I would be working on it. :P 09:27:24 monqy: well if you go into academia you could always design a language or something. 09:27:35 instant money 09:27:42 well, sure. 09:27:47 enough money to live off of. 09:27:50 would it be a good language 09:27:58 I dunno, would it? 09:28:03 would it be new and exciting and fresh 09:28:13 presumably 09:28:23 would it solve problems 09:28:23 the idea with academia is that you produce original research. 09:28:35 I'm afraid of not being cool enough for that 09:28:53 I'm also afraid of parts of academia that aren't that 09:29:00 if you know of something that makes you think 'surely there's a better way!' 09:29:01 DON'T YOU SEE? YOUR FEAR IS WHAT SHACKLES YOU, SIR. 09:29:05 and you feel strongly about it 09:29:06 go into academia 09:29:16 now i have to go into academia 09:29:40 well it's that develop practical software of some kind. 09:29:43 +or 09:29:58 or find a different source of income and program as a hobby. 09:30:24 everything is terrible 09:30:30 nah 09:30:36 maybe i will make a living off of being dead 09:30:48 ..... 09:31:14 maybe this guy will allow me to use him as a reference, so that I can get a better paying job. 09:31:23 instead of my current zero work experience state. 09:31:41 work experience terrifies me 09:32:01 you can use open source experience on a resume, if you're worried about how to get started. 09:32:17 or freelance work, which is the route I'm going. 09:38:37 Yo elliawtt, I heard u mad, so I put all the things in your things, so u can mad while u mad? 09:40:01 shachaf: It's ok; now _you_ hate yourself. 09:40:23 elliott: No, as a matter of fact, I'm rather pleased with myself. 09:40:37 For now, maybe. 09:40:45 ...I suppose that's not strictly disjoin from self-hatred. 09:40:51 But eventually, you will feel the virus inside you. You will realise the horror you have caused. 09:40:52 Endohatred. 09:41:01 And it will evaporate your sense of self-worth. 09:41:07 u mad? 09:41:11 Or at least this is what _should_ happen to people who say u mad. 09:41:23 u mad! 09:41:29 Wow, you're right. It's happening already. 09:41:33 'u mad' is possibly the worst internet meme 09:42:03 unless someone knows of a meme more engineered towards debate ending 09:42:07 /poisoning 09:42:21 u mad? 09:42:38 a little 09:42:39 * shachaf realizes he's brought himself down to cheater's level. 09:42:41 * shachaf mad 09:42:48 shachaf, u mad? 09:43:19 shachaf: Enjoy your self-destruction. 09:43:25 u mad? 09:43:31 AARGH IT'S SPREAD 09:43:34 * shachaf will take elliott down with him. 09:43:42 * cheater burns corpses 09:43:45 WE ALL MAD 09:43:47 WE ALL MAD!!! 09:43:49 * shachaf mad, I tell you, mad! 09:43:50 no u 09:43:55 NO U 09:44:18 < totally not mad. you sai i'm mad? u mad? aargghhgh 09:44:25 elliott: What's your localtime? 09:44:33 shachaf: mad:mad 09:44:41 Mad mad mad mad, u, mad u, mad mad. 09:44:41 +MAD,)) 09:44:45 +MAD,00. 09:45:26 Well, we're reaching new heights of discourse here. 09:45:35 If height is measured by seeing how low something's sunk. 09:45:40 thank you shachaf for this interesting experience. 09:46:07 Universal mutually assured destruction. 09:46:18 u mad? 09:46:34 * cheater fights the urge. 09:46:47 hi 09:46:49 i'm back from 09:46:51 I wonder if there's a meme so bad that it literally does cause complete mental breakdown in anyone who uses it, but spreads so rapidly that they use it anyway. 09:46:52 not paying attention 09:46:57 @trollcoins shachaf +50 09:46:58 Unknown command, try @list 09:46:59 (Oblig. joke answer: religion) 09:47:08 hyuk 09:47:19 -!- Jafet has quit (Ping timeout: 245 seconds). 09:47:24 elliott: That depends on what you call "mental breakdown". 09:47:26 elliott, iphone 09:47:38 Religion is in many ways beneficial to its host. 09:47:49 Note the "joke" part of "oblig. joke answer" :P 09:48:01 -!- Jafet has joined. 09:48:02 religion does wonders in activating the placebo effect 09:48:20 Hello ais523, u mad this fine day? 09:48:23 elliott: hey I disagree with your very serious answer. 09:48:23 Oh god it's unstoppable. 09:48:32 It's like a rash. I must rip off all my skin. 09:48:33 as well as in unifying the masses by limiting their potential severely 09:48:37 incidentally, there was an experiment recently in which people with irritable bowel syndrome were given placebos, and told they were placebos but would work anyway 09:48:40 and they did indeed work anyway 09:48:49 haha 09:48:54 elliott: maybe this...is your answer... 09:48:57 I love the placebo effect 09:49:12 the scientists running the experiment were pretty surprised 09:49:18 ais523, irritable bowel has a strong psychological element though 09:49:19 perhaps the participants just didn't know what a placebo was 09:49:20 ais523: Did they test this by using a control group and giving them placebos? 09:49:21 I wish the placebo effect worked for really useful things. 09:49:25 shachaf: Hahaha 09:49:28 cheater: it does, that's why they were testing on that 09:49:31 it's not like it would cure a bacterial infection i think 09:49:35 Like, curing cancer by placebo. 09:49:38 That would be really useful. 09:49:40 shachaf: tests /of/ the placebo effect typically are compared to not using anything at all 09:49:41 elliott: perhaps one could treat air as a placebo 09:49:53 CakeProphet: One could do that, if one were trying to make no sense at all. 09:49:55 elliott: and then breathing automatically invokes a placebo effect of whatever desired. 09:50:02 ais523: Note the "joke" part of elliott's "oblig. joke answer" above. 09:50:05 i'm sure you've you seen children in africa with stomachs full of air 09:50:14 shachaf: Does that enable joke mode for the rest of eternity? 09:50:21 elliott: Just for this channel. 09:50:25 So no harm done. 09:50:25 shachaf: I'm not discussing elliott's answer 09:50:28 Well, that's been on since the start. 09:50:31 ais523: Nor am I. 09:50:43 Hey, you're ais523 from #nethack. 09:50:50 No, really? 09:50:51 i have a leftover slicehost VPS. can i use it to run DF? 09:50:53 so the fact that elliott made a joke doesn't cause everything said after that in the channel to be humour value only 09:50:56 There's so many ais523s going around. 09:51:02 elliott: it makes just as much sense as a sugar pill creating a placebo effect... 09:51:07 I saw an ais523 over there too 09:51:09 that way 09:51:14 Do you know toft? 09:51:16 * shachaf knows toft. 09:51:20 shachaf: luckily both channels are on Freenode, so it's kind-of easy to verify I'm the same ais523 in each case 09:51:22 german author 09:51:23 -!- derdon has joined. 09:51:27 and I know of toft, but haven't interacted with him/her much 09:51:36 Oh. 09:52:25 At any rate, I, too, was making a joke. 09:52:33 preflex isn't in this channel. :-( 09:52:39 * shachaf mad 09:52:52 Nor is mauke. Get him back. 09:52:53 They used to be. 09:52:55 elliott: hey, I think shachaf may be someone who can be placed in a channel with both you and Vorpal and all three of you won't get each other's jokes 09:52:57 Does preflex follow mauke around everywhere? 09:52:59 Like a pet. 09:53:06 An IRC pet bot. That's adorable. 09:53:17 * ais523 pats fungot on the head 09:53:17 ais523: 6. as seen above, any attempt to insert them. user:thatsothatso 01:29, 18 september 2006 ( utc 09:53:31 I used to have a pet bot, but then it died, because i killed it 09:53:32 hmm, looks like it's in wikipedia mode 09:53:33 fungot's chained to a stick because of its volatile nature. 09:53:33 elliott: it has come under criticism for it. --user:ghcoolghcool 06:15, 28 november 2007 ( utc))) 09:53:40 That stick is #esoteric. 09:53:48 isn't fungot in other channels too 09:53:49 monqy: there seems to be about wilson, but there are many points worth mentioning that eisenhower was facing fnord that november and wanted everything looking smooth and fnord. i have created the universe. though buddhas are skillful in helping all fnord beings, their power is limited by the fnord and the fnord. 09:53:59 monqy: if only there were some way to check. 09:54:03 haha, the sigs don't get fnorded? 09:54:11 presumably because they're repeated so much 09:54:21 ^style europarl 09:54:21 Selected style: europarl (European Parliament speeches during approx. 1996-2006) 09:54:25 I think fungot is in #scheme? I remember I visited there and fungot was therE?? 09:54:25 monqy: unfair practice occurs when an airline that has made the european parliament around two years ago, the sequence of responses is correct. 09:54:26 ais523: Who's Vorpal? 09:54:37 channels : #esoteric 09:54:42 shachaf: A monster... of boringness... and despair. 09:54:43 monqy: not currently 09:54:44 whois doesn't work like that 09:54:44 someone who typically idles in this channel 09:54:47 although he isn't here atm 09:54:48 Or that, yes. 09:54:56 CakeProphet: whois doesn't work like that here 09:55:09 oh, hmmm... 09:55:11 indeed not. 09:55:12 elliott and Vorpal are known for not understanding the other's brand of humour 09:55:21 I _understand_ Vorpal's, it just isn't funny. 09:55:23 monqy: I recall previous times whois would show me all channels. 09:55:25 Vorpal is the one who goes eh a lot. :p 09:55:28 elliott: Example? 09:55:35 do I go eh a lot 09:55:40 eh. 09:55:47 shachaf: I, um, do you know AnMaster? I am really having trouble explaining Vorpal, I mean, a priori. 09:55:53 elliott: It sounds to me like u just mad 09:56:00 I just the maddest. 09:56:08 dead 09:56:09 * shachaf is not familiar with AnMaster 09:56:14 * CakeProphet has the best humor of all. 09:56:16 Darn, so you don't know him at all. 09:56:24 You will just have to... imagine. 09:56:30 i have the humour trohpy 09:56:32 ais523: Explain Vorpal to shachaf or he might mad. 09:56:40 elliott: I tried 09:56:42 elliott: You ought to go to sleep. 09:56:46 "good at jkoe" 09:57:02 "good at jkoe" is a good motto. 09:57:08 Is it a motto? I'm not sure what it is. 09:57:08 Good at jkoe and doesn't afraid of anything? 09:57:18 thats me 09:57:26 it says so on my the humour trohpy 09:57:40 I think Vorpal is a pretty cool guy. eh tells jokes and doesn't afraid of anything. 09:58:08 * shachaf hates jokes. 09:58:11 Is that a good start> 09:58:14 s/.$/?/ 09:58:33 shachaf: Sounds like u might be a tad mad. 09:58:47 This is really quite liberating, just being a horrible person. 09:58:53 elliott: Go to sleep. 09:59:01 * shachaf assumes elliott lives in EDT. 09:59:09 I'm horrible in my own special way, or maybe someone else's way too, I haven't bothered to check 09:59:16 Assumptions are great things. 09:59:27 * CakeProphet lives in EDT and NEEDS NO SLEEP 09:59:29 no such thing. 09:59:43 6 AM is afternoon for me. 09:59:54 What even _are_ timezones, anyway? 10:00:02 standards. 10:00:03 I ask the questions on everyone's minds. 10:00:08 You know that yellow blob in the sky? 10:00:19 * shachaf worries that he's using words unfamiliar to elliott. 10:00:26 You mean... eggs? 10:00:31 Right. Eggs. 10:00:38 Okay, eggs. 10:00:57 how do ehggs in the sky 10:01:03 is that how where you live works 10:01:08 Just the yolks, yo. 10:01:30 So egg yolks float around in the sky, and sometimes they disappear. 10:01:37 When they disappear, we call that "breakfast" or "morning". 10:01:44 Yes. I have, at times, been sufficiently sleep-deprived to imagine such things. 10:01:46 Then we're awake until they come back. 10:01:53 Thank god for the great frying pan in the sky. 10:01:55 And that's what a time zone is. 10:01:58 I tend not to hallucinate 10:02:11 * shachaf hallucinates lovely classical music when he's tired. 10:02:21 maybe I just haven't deprived myself enough 10:02:37 yop\\\ 10:02:39 I suggest fasting. 10:02:43 Also, slowing. 10:02:44 good idea 10:03:10 !wacro 3 5 10:03:12 MCW 10:03:15 wacro 10:03:27 miserable crummy wacro 10:03:45 MCW is a perfectly believable acronym. 10:03:45 Now that I know how to use Perl's C API, maybe I'll make mcmap use it as its embedded language. 10:03:46 Note: I won't. 10:04:04 elliott: you definitely should. 10:04:27 And because you won't what you should, you are unethical. 10:04:36 I won't what I should 10:04:43 correct. 10:05:19 elliott: You should come to #haskell-blah, yo. 10:05:26 We make fun of people who aren't us. 10:05:37 sounds like a cool place 10:05:45 Hmm, the last time I did that cheater got banned. 10:05:48 Sure, I'll give it a shot. 10:05:48 the only moral tribalism is my tribalism 10:06:03 banned????? 10:06:13 :o 10:06:17 were you naughty 10:06:22 :'( 10:06:33 monqy: Yes, I was so naughty that they banned someone who isn't me. 10:06:42 Whereby they I mean oerjan. 10:06:52 oh I misread 10:06:57 maybe you can ban cheater again 10:07:05 elliott has been established to be naughty from his lack of regard for Perl's C API suggestions to use macros in place of direct function calls. 10:07:12 shameful and tasteless, honestly. 10:07:20 @quote monochrom 10:07:21 monochrom says: The Three Laws of Types. (1) Must protect programmer. (2) Must obey programmer, when not in conflict with (1). (3) Must protect computer, when not in conflict with (1) or (2). 10:07:32 @quote monochrom 10:07:33 monochrom says: "Monad is about computation." "Our company is about synergy." "iPod is about coolness." Godawful postmodernism nothingness. 10:07:56 elliott: Next step is to /part #esoteric. 10:07:58 @quote monochrom 10:07:59 monochrom says: Don't wrap your head around haskell. Immerse! Wrap haskell around your head. 10:08:02 @quote monochrom 10:08:02 wow my company is about synergy too 10:08:02 monochrom says: premature generality is the root of OOP 10:08:08 @quote monochrom 10:08:08 monochrom says: just add #! /usr/bin/runghc to your haskell file. then type errors occur at runtime only. 10:08:17 Hah. 10:08:21 shachaf: But that's a bad step. 10:08:27 @quote elliott 10:08:28 elliott says: Top universities now employ people to watch infomercials all day to find the latest mysteries. 10:08:31 @quote elliott 10:08:32 * shachaf guarantees less mad 10:08:32 elliott says: i'm here to prove theorems and compile code and I'm all out of code 10:08:35 @quote elliott 10:08:36 elliott says: Only two things in the universe are certain: Death, and two of the libraries you've decided to use taking different types of ByteString. 10:08:37 @quote elliott 10:08:38 elliott says: Only two things in the universe are certain: Death, and two of the libraries you've decided to use taking different types of ByteString. 10:08:39 Ahhh, ego. 10:08:50 @quote monqy 10:08:51 No quotes match. My pet ferret can type better than you! 10:08:53 * shachaf regularly @forgets his quotes from lambdabot. 10:09:04 @quote shachaf 10:09:05 shachaf says: boost::lambda: The ultimate error message. 10:09:10 `quote 10:09:14 555) fizzie: i, myself, will bring an end to all. 10:09:15 ?remember shachaf * shachaf regularly @forgets his quotes from lambdabot. 10:09:15 Okay. 10:09:26 @forget shachaf * shachaf regularly @forgets his quotes from lambdabot. 10:09:26 Done. 10:09:33 `quote gaping 10:09:35 Neat. Orderly. Very well. 10:09:36 617) Deewiant: How do you go through life without seeing at least one gaping anus, that's what I want to know 10:09:45 CakeProphet: Hey, it's a legitimate query. 10:10:17 is haskell-blah being a good place I'm tempted to join 10:10:37 elliott: of course it is. 10:10:46 monqy: Only if you like Haskell and simultaneously have no desire to talk about it. 10:11:02 wow that suits me perfectly. 10:11:13 me too 10:12:17 Wow, I can't believe I missed an opportunity there. 10:12:24 Yo elliawtt, I hird u mad, so I put all the things in your things, so u can mad while u mad? 10:12:30 :| 10:12:49 u not even mad serious jelly? 10:13:02 I see your conditions only continue to deteriorate. 10:13:09 Soon u will so mad that there will be nothing but the mad. 10:13:17 forever mad. 10:13:21 Aargh. 10:13:25 :) 10:13:43 -!- itidus20 has quit (Ping timeout: 260 seconds). 10:13:44 i'm furious 10:14:12 I am great sad that itidus20 as parted. 10:14:50 If 4chan never existed, would the internet be notably different? 10:15:13 there is no such thing as internet without 4chan. 10:15:20 if there were no 4chan then something else would have taken its place. 10:15:26 That's what I assumed 10:16:23 apparenty I can magically make things true by saying them. 10:16:24 You think this is a botiecall?? 10:16:33 ..... 10:16:33 When i get kinky, i have been known to engage in watersports... Does that turn you on as well? 10:16:50 Oh murr 10:16:51 i hate it when i get stuck with chatting with a bot! 10:17:06 i;m cant stop laughign 10:17:07 stop what? 10:17:34 Hey elliott, me and lambdabot need some alone time together... Eyebrow waggle, eyebrow waggle 10:17:45 Thank god for /query 10:18:07 @hoogle a -> a -> a -> a 10:18:08 Network.BufferType buf_append :: BufferOp a -> a -> a -> a 10:18:08 Language.Haskell.TH CondE :: Exp -> Exp -> Exp -> Exp 10:18:08 Language.Haskell.TH.Syntax CondE :: Exp -> Exp -> Exp -> Exp 10:18:22 @hoogle a -> a -> a -> a -> a 10:18:23 Text.Regex.Base.RegexLike MR :: a -> a -> a -> [a] -> Array Int a -> MatchResult a 10:18:23 Text.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String 10:18:23 Text.ParserCombinators.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String 10:18:41 never enough parameters! 10:20:43 @hoogle a -> a -> a -> a -> a -> a 10:20:44 Text.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String 10:20:44 Text.ParserCombinators.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String 10:20:44 Control.Monad liftM5 :: Monad m => (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r 10:20:57 are you looking for something 10:21:05 I don't like these approximate types. 10:21:07 that hoogle gives. 10:21:22 :t undefined :: a -> a -> a -> a -> a -> a 10:21:23 forall a. a -> a -> a -> a -> a -> a 10:21:37 CakeProphet: those are the whole point of hoogle 10:22:09 elliott: to give you answers that don't match what you're looking for? 10:22:24 because you really wany a -> a -> a -> a -> a -> a 10:22:29 where wany means want 10:22:50 yes, if I didn't I'd type a -> b -> c -> d -> e -> f 10:23:12 no you don't 10:23:17 nobody wants a -> a -> a -> a -> a -> a 10:23:28 that's not even the point though. 10:23:44 who cares the point is bad 10:24:14 the most matchy appear at the top 10:24:40 there's really not much of a difference at all except now you can enter things that are like but not exactly the types you want? 10:24:48 where now is hoogle 10:24:51 I suppose. 10:25:26 ?hoogle (a -> b -> c) -> (a -> b) -> a -> c 10:25:27 Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c 10:25:27 Data.Data gmapQl :: Data a => (r -> r' -> r) -> r -> (d -> r') -> a -> r 10:25:28 Control.Parallel.Strategies parZipWith :: Strategy c -> (a -> b -> c) -> [a] -> [b] -> [c] 10:25:34 Darn, it didn't find ap :P 10:26:13 I wouldn't expect it to. 10:26:52 Why not 10:27:07 because that's not the type of ap. 10:27:17 :t ap :: (a -> b -> c) -> (a -> b) -> a -> c 10:27:19 forall a b c. (a -> b -> c) -> (a -> b) -> a -> c 10:27:22 :t ap 10:27:23 forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b 10:27:45 CakeProphet: ap meets that type very well, thank you very much. 10:27:52 :t ap (undefined :: a -> b -> c) 10:27:54 forall a a1 b. (a -> a1) -> a -> b 10:29:00 @hoogle m (a -> b) -> m a -> m b 10:29:00 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 10:29:00 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 10:29:00 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 10:29:22 hmmm... 10:29:30 I suppose it /should/ show ap. 10:29:45 as you may not always know what you're looking for. 10:29:56 and be really specific when you want something general. 10:30:32 s/know/know the type of/ 10:30:42 obviously you don't know what you're looking for because you're searching for it. :P 10:34:01 fungot 10:34:03 CakeProphet: madam president, regarding the report by mr rosado fernandes, and in order to restore national control in europe of an industrial strategy for europe'. those who oppose it, when the system was greatly improved in 1999 when the revised system was adopted by the european commission' s proposal, a motion for resolution we now have between mr cox and mr david martin. it leaves parliament in a single market, the europea 10:35:07 the europea 10:35:33 -!- Jafet has quit (Quit: Leaving.). 10:51:32 -!- CakeProphet has changed nick to dons. 10:51:42 -!- dons has changed nick to CakeProphet. 10:53:35 -!- elliott has changed nick to totallyNotAScam. 10:53:40 -!- totallyNotAScam has changed nick to elliott. 10:54:41 -!- CakeProphet has changed nick to BritneySpears14. 10:55:40 -!- BritneySpears14 has changed nick to CakeProphet. 10:57:10 -!- brisingr has joined. 10:57:14 Nooooooo. 10:57:14 hi 10:57:16 Okay fine you can stay. 10:57:25 -!- itidus20 has joined. 10:57:28 hi 10:57:31 itidus20: weeeee 10:57:44 fungot: hi 10:57:45 CakeProphet: i voted against the lannoye report gives a generally favourable verdict on two commission communications, seeking to migrate from one country to another. in any event, we in this parliament is ensuring that work is taxed less and the more developed agricultural areas rather than face paralysis and stagnation at the hands of the council. 10:57:49 hi 10:58:55 ^ ff7 10:58:58 ^style ff7 10:58:58 Not found. 10:59:00 ^style ff7 10:59:00 Selected style: ff7 (Full script of the game Final Fantasy VII) 10:59:01 I have a limited comprehension of the underlying context of the inception of this particular channel 10:59:13 fungot: that sword 10:59:13 CakeProphet: you the truth, i did work for cheap! i've had a way to get tattoos. is that all? 10:59:30 brisingr: http://esolangs.org/wiki/ 10:59:34 uggh wait 10:59:37 http://esoteric.voxelperfect.net/wiki/Main_Page 10:59:41 stupid dns 10:59:46 is dns still happening 11:00:00 poor esolangs.org 11:00:19 oh so #esoteric is language esoteric not general esoterism 11:00:30 cool 11:00:45 brisingr: we get a lot of people looking for the latter 11:00:53 they tend to get quite upset somehow 11:01:00 except for some of them 11:02:13 anyone here played trainyard? it would make an awesome esoteric language 11:02:37 I know there are tons already with 2d movement 11:03:15 never heard of trainyard. what's special about it? 11:03:50 it's a game involving 2d movement of the trains with tracks and all 11:04:15 the fun part is where you have max 2 tracks per unit square and they automatically change every time a train passes 11:04:25 you can make counter loops and stuff, theoretically 11:04:28 mmm 11:04:48 :t Data.Map.lookupWithDefault 11:04:50 Not in scope: `Data.Map.lookupWithDefault' 11:04:56 ?hoogle lookupWithDefault 11:04:56 No results found 11:04:59 Oh pleae. 11:05:01 please. 11:05:03 elliott: I believe it's M? 11:05:07 or something like that. 11:05:10 :t M.lookupWithDefault 11:05:11 elliott: findWithDefault 11:05:12 Couldn't find qualified module. 11:05:16 :t Data.Map.findWithDefault 11:05:18 forall a k. (Ord k) => a -> k -> M.Map k a -> a 11:05:18 Deewiant: Thanks. 11:05:31 -!- GreaseMonkey has quit (Quit: The Other Game). 11:10:12 -!- derrik has joined. 11:10:25 -!- derrik has quit (Client Quit). 11:10:51 -!- derrik has joined. 11:14:37 shachaf: Go to sleep. 11:14:43 elliott: goto sleep; 11:14:47 COME FROM SLEEP 11:14:54 Digusting. 11:14:59 Digusting indeed. 11:15:06 Of all the places to go to after SLEEP, this channel is one of the worst. 11:15:19 Says the guy who hangs out in #haskell-blah of all places. 11:17:44 so #esoteric is like a secondary #haskell-blah 11:18:23 from my perspective it's the other way around 11:18:38 These statements are true as of approximately half an hour ago when we all invaded there. 11:18:50 Also we keep getting people from #haskell. 11:19:04 But #haskell doesn't have, uh, ais523. And oerjan. And oerjan wrote most of the Haskell report by himself! 11:19:12 In fact, most refer to him as the TRUE father of Haskell. 11:19:24 For small values of "most". 11:19:39 Those typo fixes were crucial, Deewiant. 11:19:40 Crucial. 11:19:42 monqy: #haskell is like a secondary #esoteric-blah? 11:19:50 ais523: sure 11:20:01 I haven't actually been in #esoteric-blah for a while 11:20:05 what's it like there nowadays? 11:20:12 The best. 11:20:17 it became mostly useless when pastebins were invented and bsmnt_bot disappeared 11:20:28 "pastebins were invented" XD 11:20:37 although I love the concept of a channel whose main purpose is for thousand-line pastes 11:20:50 what was bsmnt bot 11:21:07 a bot that ran arbitrary Python 11:21:12 with some sort of complex sandboxing 11:22:08 what happened to bsmntbombdood anyway? 11:22:31 -NickServ- Last seen : Aug 06 23:37:08 2011 (4 weeks, 4 days, 11:45:55 ago) 11:22:41 he comes here occasionally 11:22:46 last time as subleq for a second or two 11:23:15 ah, aha, different nick, I was wondering about that 11:23:30 also, Slashdot just published a headline saying that Linux games run faster via an emulation layer on BSD 11:23:43 I don't know, or really care, if it's true or not 11:23:45 Slashdot published articles? 11:23:49 Has Netcraft confirmed it? 11:23:51 but it seems like such a beautifully pointless thing to measure 11:23:56 elliott: nope, Phoronix 11:24:02 Not good enough. 11:24:19 In Soviet Russia, ... 11:24:20 oh, the project gutenberg founder died 11:24:22 * shachaf can't go on. 11:24:26 * shachaf too mad 11:24:30 shachaf: Netcraft confirms u mad? 11:24:38 04:25:41 < elliott> oh, the project gutenberg founder died 11:24:38 04:25:42 * shachaf can't go on. 11:24:40 :'( 11:34:13 -!- monqy has quit (Quit: hello). 11:35:07 -!- brisingr has quit (Quit: haskell is asking me on a date). 11:42:51 https://github.com/ivmai/bdwgc/commit/5abff1068fcfb3234295021a635ea5167404a10b 11:42:59 Gregor: How long has Boehm GC been developed without -Wall... 11:45:00 -!- sebbu2 has changed nick to sebbu. 11:46:52 "Developed without -Wall" is not the same as "Having -Wall in configure.ac", which is just a bad option altogether. 11:47:18 (Rather, "developed without -Wall" is not the same as "NOT having -Wall in configure.ac") 11:48:37 Yeah OK :P 11:48:41 What's just a bad option altogether? 11:49:57 -!- derrik has quit (Ping timeout: 264 seconds). 11:50:55 Having -Wall in your configure.ac 11:51:16 Considering that they add new and usually-stupid warnings to every version of GCC, that's just a recipe for pointless bug reports. 11:51:22 Right 11:57:49 -!- sllide has joined. 12:05:27 Warning: Code insufficiently discombobulated. Consult with your physician before compiling. Thank you. 12:08:03 -!- derrik has joined. 12:08:15 -!- derrik has left. 12:12:32 -!- nooga has quit (Ping timeout: 264 seconds). 12:16:20 -!- DH____ has joined. 12:19:16 damn these noisy farmers! 12:19:38 hi DH____, you sound new 12:19:55 Hi 12:21:08 I've been here quite a bit before, but I've just set up my phone to access this channel, so in this form I am new... 12:22:54 oh, ok :) 12:23:06 what nick did you use? 12:23:08 why is your phone using Virgin Media's cable service? 12:23:08 or is it a landline phone? 12:23:16 ais523: wifi, man 12:23:39 Yes, WiFi 12:23:41 phones use wifi nowadays? 12:23:59 HTC Desire S 12:24:03 Where "nowadays" = "for several years" 12:24:04 Android 12:24:05 ais523, you're so ais523 12:24:20 Anyway... 12:24:38 elliott: the iPad was pretty much Apple realising "hey, our phones don't actually need to be phones to still do their job properly" 12:25:27 I usually use a nick of some variation upon DH or DHeadshot... 12:27:11 DH____ is the first nick you've been under from that exact hostname in here 12:27:14 The iPad is Apple taking inspiration from The Onion's parody of their products... 12:27:19 at least, while I've been in here simultaneously 12:27:52 From my phone, yes.. 12:28:11 aha: 12:28:15 logs/freenode_#esoteric.log:[Thursday, September 08, 2011] [01:17:04 pm] JoinDH____ has joined this channel (~DH____@cpc2-woki2-0-0-cust667.6-2.cable.virginmedia.com). 12:28:16 logs/freenode_#irp.log:[Sunday, July 18, 2010] [02:58:08 pm] JoinDH____ has joined this channel (~DHeadshot@cpc2-woki2-0-0-cust667.glfd.cable.ntl.com). 12:28:51 the first of those is you just joining 12:28:56 and the second is you joining #irp last year 12:29:07 amusingly, the only thing that's changed in the hostname is ntl.com to virginmedia.com 12:29:18 it seems that hostnaming structure survived the company buyout 12:29:34 Virgin bought Ntl 12:29:38 indeed 12:30:07 Sorry, ninjad 12:31:00 why are you apologising for being ninja'd? 12:31:03 most people rage instead 12:32:18 Probably my Britishness kicking in... ;) 12:32:27 heh, there are quite a few Brits here 12:32:34 (as if being with virginmedia didn't give it away in your case) 12:32:50 in fact, I suspect the channel is more than half Europeans, although I'm not certain in that 12:32:58 there are certainly an unexpectedly high number of Scandinavians here 12:33:04 I should really find a.way to mask that... 12:33:40 The virginmedia I mean... 12:33:51 go to #freenode, /nick to DHeadshot (or whatever your primary nick is) and identify, ask for an unaffilated cloak, wait half an hour to an hour for a staffer to notice 12:34:28 -!- FireFly has joined. 12:34:38 That works? 12:34:55 yep 12:35:03 Thanks! 12:35:03 that's what unaffilated cloaks are for, hiding your hostname 12:35:25 they only work if you identify and take a few seconds to kick in, though (so if you're really paranoid, don't join any channels for a few seconds after logging on) 12:37:24 -!- DH____ has quit (Changing host). 12:37:24 -!- DH____ has joined. 12:38:34 Any way to check if it worked? 12:38:51 2011-09-08 15:38:08 --> DH____ (~DH____@unaffiliated/dh----/x-6288474) has joined #esoteric 12:39:09 :D 12:40:03 that's quite the cloak 12:40:04 I like it 12:40:19 Heh 12:40:27 presumably it's some encoding scheme for the underscores 12:40:41 it reminds me a bit of utf-5, although it isn't exactly that 12:41:25 DH____: /whoising yourself is a more direct way to make sure it worked 12:42:21 Well, given the channel theme, it shouldn't be hard for someone here to reverse engineer it... 12:42:27 Thanks 12:43:13 well, translating 6288474 to hex would seem to be a good start 12:43:21 !c printf("%x",6288474) 12:43:25 5ff45a 12:43:33 hmm, that doesn't seem to help much 12:43:42 (also, interesting that EgoBot doesn't seem to need a semicolon there) 12:44:02 perhaps it's not an encoding scheme but just a random number there for uniquifying purposes 12:44:12 Possibly 12:44:42 probably 12:45:09 Maybe I'm the nth person to have underscores in their nick... 12:45:43 the 523 in my nick's a random number for uniquifying purposes too 12:47:21 hmm, I still want to get round to that language some time where the source code is just a number 12:47:44 and the interp looks on anagolf for the problem with that number, then takes majority opinion of the programs not marked as cheats 12:48:11 giving extra weight to ones specifically marked as not-cheating, I suppose 12:48:35 what about endless problems that don't reveal src? 12:48:40 like most popular ones 12:48:44 Doesn't unary only use a number? 12:48:53 elliott: I, umm, don't know 12:48:54 -!- azaq23 has joined. 12:48:58 DH____: yes, but it's a pretty /big/ number 12:49:17 the idea here would be to have astonishingly small programs for a range of popular programs 12:49:30 I suppose for the endless ones, we just hire elliott or someone to do reference impls 12:50:15 heh 12:50:27 you'd be good at them! 12:51:03 You could use DMM's WebPEG encoding on the source... 12:52:09 Leaving a 20 byte source file or so... 12:55:11 that's a /different/ creative way to cheat 12:57:20 ais523: we need sg soon; git is driving me insane 12:58:02 what are you using to version sg itself while it's being written, incidentally? 12:58:32 nothing? :) or darcs I guess 12:58:36 presumably it's not yet complete enough to version itself 12:58:47 darcs seems to be the least-bad VCS that isn't vaporware 12:58:57 Write the sg repository by hand as you go until it can do it by itself 12:58:58 or, /maybe/ git, in case we think we might want other people to interact with the repo via github, although you'd be a major stopper to that 12:59:25 meh, I'd just maintain a mirror on gitorious and refuse to acknowledge the github repo existed except when I pulled from it 12:59:27 the main problem with darcs is that the only decent places to put the repository involve hosting it yourself, and darcsweb is rather... uninspiring 12:59:27 that's what I normally do 12:59:40 elliott: I would mention patch-tag, but you said decent 12:59:49 it's, umm, passable 12:59:51 sometimes 12:59:55 ais523: You could do that gitorious thing, but I would be far too lazy to pull your changes 13:00:12 pulling isn't that hard... 13:00:19 Harder than having someone else push for you 13:00:48 you can't push into a repo with working changes anyway 13:00:55 which is the usual state of a repo someone's directly working on 13:00:59 so in practice, you have to pull anyway 13:01:32 This is the thing where you're deliberately stupid to maintain your worldview and I ignore you, right? 13:01:47 not this time 13:02:00 You realise that the repositories you push to are not usually repositories with working directories? 13:02:01 I can't think of any reasonable git workflow that doesn't involve pulling at all 13:02:08 elliott: well, if you're too lazy to pull 13:02:14 Well, sure, the person pushing has to pull 13:02:20 then you wouldn't be pulling from any /other/ repo I push to 13:02:21 Pull changes, merge in, push them off 13:02:27 ais523: Har har 13:02:41 so what you mean is, you're too lazy to pull from two repos at once 13:02:46 despite the existence of git remote update 13:03:06 What I really mean is, being awkward wrt the existence of a GitHub repository will cause me to try and be as awkward as possible in turn 13:04:08 oh right, I didn't pick that up 13:04:39 I'll probably end up versioning it in nothing for the longest time, anyway 13:05:02 VCSes are too workflow-hostile for me to bother for a project still in its solo stage 13:05:17 I find that what I do with a VCS is to use it more and more properly as time goes on 13:05:29 starting off by just using it as a backup system rather than version control 13:05:40 and gradually making the commits more and more the correct size 13:05:49 I'm trying to do that for mcmap too, but mostly just because Deewiant complained 13:05:50 (so the commits tend to get smaller and more numerous as time goes on) 13:06:01 Being a good git citizen is really hard, because you have to do terrible things like modifying history 13:06:11 nice global notice 13:06:35 indeed 13:06:45 I don't think it's possible to use git correctly 13:06:47 ais523: Anyway, I honestly find cp -R src src.descriptivetag before embarking on a task more usable for solo, "linear" (as in generally one feature at a time) projects than any VCS 13:06:49 even using it as intended causes problems 13:07:03 elliott: heh, I've done that too, except I more usually use tarballs 13:07:17 I have about ten of those for Shiro right now 13:07:23 Holy crap, I somehow submitted a pull request... to my own repository. 13:07:24 From itself. 13:07:35 GitHub, I... 13:07:47 accept it! 13:07:52 "This pull request cannot be automatically merged." 13:07:54 :'( 13:08:03 I, umm, can't even delete it, I'll just have to close it 13:08:07 -!- yorick has quit (*.net *.split). 13:08:07 -!- mycroftiv has quit (*.net *.split). 13:08:07 -!- Zetro has quit (*.net *.split). 13:08:07 -!- twice11 has quit (*.net *.split). 13:08:08 -!- sebbu has quit (*.net *.split). 13:08:08 -!- CakeProphet has quit (*.net *.split). 13:08:08 -!- MSleep has quit (*.net *.split). 13:08:08 -!- myndzi has quit (*.net *.split). 13:08:08 -!- lambdabot has quit (*.net *.split). 13:08:08 -!- aloril has quit (*.net *.split). 13:08:09 darcs would have noticed the option wasn't semantically correct! 13:08:12 -!- mycroftiv has joined. 13:08:13 *the request 13:08:16 ais523: it is semantically correct 13:08:18 it's just insane 13:08:23 It's a request from an older revision 13:08:25 "ehird wants someone to merge 5 commits into 848d2b9 from master" 13:08:26 -!- CakeProphet has joined. 13:08:28 -!- CakeProphet has quit (Changing host). 13:08:28 -!- CakeProphet has joined. 13:08:31 -!- MDude has joined. 13:08:37 -!- aloril has joined. 13:08:41 -!- sebbu has joined. 13:08:41 well, darcs would notice that the commits you were merging in were already in the repo, at least 13:08:43 -!- myndzi has joined. 13:08:54 so? that's a nop 13:08:57 -!- yorick has joined. 13:09:38 indeed 13:10:04 I suppose you can say that a no-op pull request is technically semantically correct... 13:10:40 The thing with VCSes is, I think, that almost everything they consider an error, I think should succeed 13:11:06 Pushing when you don't have changes that have happened since? Sure, go ahead 13:11:21 Basically errors are bad and make me sad. This is the way of elliott. 13:11:47 indeed, I think pushing then should give a friendly reminder rather than an error 13:11:55 But I like to think it's the VCS' job to sort out the tangle of noodles that is the development into something useful for me, not to force me into making sure they don't get into a tangle. 13:11:57 (it's not an error in darcs, but has a tendency to cause exponential performance) 13:12:19 actually, "friendly reminder" is pretty much exactly what darcs does 13:12:23 ais523: in sg, I think it just creates a new, unnamed branch 13:12:28 unless you did a lot of commits since 13:12:31 in which case it'd probably become the new tip 13:12:34 if you push before pulling, you get a "(By the way, the remote repository has 2 patches to pull.)", or whatever 13:12:53 as in, either {it creates a new branch, tip stays the same} or {it becomes the tip, tip becomes a new branch} happens 13:12:54 -!- Zetro_ has joined. 13:12:58 depending on which trail is longer 13:13:15 well, that's assuming they conflict 13:13:28 if they can be merged automatically, then they merge and become the new tip, just one with a split in the middle 13:13:32 and that's the correct situation 13:13:35 yep, and assuming that people haven't nicknamed a particular whitelist set as their own personal concept of the tip 13:13:50 there's no personal concept of a tip; tip is an objective thing 13:13:53 well, yes 13:13:54 they can call something my-tip, though, I'm sure 13:14:00 personal thing used instead of a tip? 13:14:03 heh 13:14:06 personal-thing-used-instead-of-a-tip 13:14:11 good branch name 13:14:17 ballpoint, perhaps 13:14:29 I think the tip is literally just the longest self-consistent branch 13:14:47 although, actually, that's not right 13:15:00 because if you dump all the sg repos possible together into one massively infinite repository, it should have no tip 13:15:28 what was your definition, again? 13:15:55 I think it does have a tip, and it consists of the tips of each of the individual projects being worked on in the repos (identified by commits linking them to a common directory structure), in separate directory structures 13:16:10 umm, commit is the wrong word there 13:16:14 but you probably know what I mean 13:16:17 ais523: a tip has to point to one directory structure, though 13:16:22 the only way you can have multiple is by explicit nesting 13:16:37 to me, you've pretty much described the situation of having no tip 13:16:40 you have multiple viable tips 13:16:42 so there is no tip 13:16:47 you have to select one to work 13:17:00 (and probably designate one quickly, likely moving them all into subdirectories of a new root) 13:17:01 oh, you mean actually on your own personal filesystem? 13:17:05 s/likely/likely by/ 13:17:07 that makes sense 13:17:10 ais523: no, I'm talking about sg concepts 13:17:22 well, a tip is just a set of patches 13:17:31 and it's the maximal set of patches that combine without conflicts 13:17:36 yep, but a set of patches can't result in having two directories without explicitly doing that 13:17:42 why not? 13:17:49 because there's no mechanism for that? 13:18:10 I don't see why there's any mathematical reason that "two unrelated directories" is a concept that sg shouldn't be able to model, even if it's a little hard to place onto a filesystem 13:18:32 because it doesn't fit into the existing model? 13:18:54 and the mechanism is just having multiple new-directory «insert appropriate word that isn't turtle here»s that don't refer to each other and haven't been placed into a common directory structure by any other «same word» 13:19:03 give me a patch that isn't self-conflicting and results in two directory trees, neither containing the other 13:19:19 combination of {new directory} and {new directory} 13:19:36 ais523: by combination of, you mean patchset, right? 13:19:39 yep 13:19:52 sorry, that should have been set of [{new directory}; {new directory}] 13:19:52 ais523: there is no "new directory", there's "new directory in [HASH]" 13:19:59 aha, that's possibly why I was confused 13:20:00 (and a special root directory change) 13:20:03 how do repos get started, then? 13:20:16 ais523: repos initially contain one commit by the Ghost of Scapegoat 13:20:26 that can be referred to to start off 13:20:27 that commit is just the root directory change 13:20:35 it has a single global hash worldwide 13:20:59 ah, so if I combine {new directory in Ghost of Scapegoat} and {new directory in Ghost of Scapegoat} I get two parallel directories 13:21:08 And that hash is 0xDEFACED 13:21:09 you need to specify a name for the directory :) 13:21:10 that conflict if they have the same name, as you can't have multiple directories with the same name in one directory 13:21:20 elliott: yes, I'm not writing out all the metadata 13:21:24 changeset {new directory "foo" in root, new directory "bar" in root} 13:21:29 yep 13:21:31 that doesn't produce two unrelated filesystems 13:21:33 that's just 13:21:38 no, it produces two parallel filesystems 13:21:40 no 13:21:42 it's a directory 13:21:45 with two empty directories in 13:21:48 that's what you'd get if you cloned it 13:21:49 well, right 13:21:52 agreed 13:21:54 s/cloned it/checked it out/ 13:22:10 ais523: the most you'd get is the directories of all the projects mushed together 13:22:14 yep, I think so 13:22:17 not in neatly separated unnamed hierarchies, that's not possible 13:22:34 ais523: but really, the Infinite Repo should have no tip, not least because its commit changes go on literally forever 13:22:36 hmm, it'd happen if we had a convention not to make sgbombs 13:22:48 ais523: sgbombs are valuable 13:23:06 hmm, wait, let me think 13:23:09 in what way? I notice most existing VCSes don't allow them, but I'm prepared to be convinced that sg should 13:23:11 -!- twice11 has joined. 13:23:20 all existing VCSes allow them 13:23:23 they just clone into directories 13:23:29 well, right 13:23:56 ais523: I'm trying to think how you re-root a repository; as in, the old story of "two repositories, merge into one by copying objects, then move the root of one into a subdirectory of the other" 13:23:58 so I suppose the question should be "can you commit files directly into the Ghost of Scapegoat" 13:24:09 elliott: some sort of directory move patch, I guess 13:24:16 reparent HASH from HASH to HASH 13:24:16 it's a move change, but it's a move change on... the ghost of scapegoat? 13:24:18 wait, no 13:24:22 it's a move change on the.. hmm 13:24:25 no, it's a move change on the ghost of scapegoat 13:24:27 _that_ can't work 13:24:33 because it's the root of the target repository, too 13:24:40 oh, if you're trying to rotate the root under a new directory? 13:24:47 yep, that's a good enough reason for it to have a unique hash 13:24:51 ais523: basically, say you have repos foo and bar checked out 13:24:57 you want to achieve the sg equivalent of 13:24:59 mv foo bar/quux 13:25:02 where bar/quux doesn't exist 13:25:23 I, umm, don't think we can do that, right now, unless every new repo starts by creating a _new_ root directory 13:25:25 You cannot truly understand someone until you've walked a mile in their shoes. Since cats don't wear shoes, it is impossible to understand them. 13:25:30 which just seems wrong for some reason 13:25:34 pivot_root moves the root file system of the current process to the directory put_old and makes new_root the new root file system. Since pivot_root(8) simply calls pivot_root(2), we refer to the man page of the latter for further details. 13:25:37 a repo shouldn't depend on when you create it 13:25:51 ais523: I know what pivot_root is 13:25:53 elliott: I assumed that repos would start by creating a new root directory, because it's the most obvious way to understand what a repo is 13:25:59 elliott: I know, I just felt like quoting it 13:26:06 ais523: I assumed they'd start by creating a file 13:26:10 or, well, a related set of projects 13:26:19 you can just move every file into a new subdirectory to pivot the root, but that makes merging hard 13:26:24 because future files will end up in the root 13:26:25 you can tell that two repos are working on the same project because they share an initial root dir commit 13:26:27 rather than the pivoted root 13:26:40 yep, I agree that that's semantically wrong 13:26:41 I suppose the first commit you make can make a new directory called / 13:26:51 but then what is the name of the directory made by the Ghost of Scapegoat? 13:27:00 /../, obviously 13:27:02 other pressing questions: does the Ghost of Scapegoat have a PGP key? 13:27:27 ais523: I think it's actually just called the null string 13:27:35 Clearly the commit message associated with this root should be "Boo" 13:27:37 obviously you can't create a file at foo.c (absolute path) 13:27:38 but /../ is a much better name for the root dir's parent 13:27:39 only /foo.c 13:27:41 so you have to make / first 13:27:47 the null string is behind it 13:27:50 ais523: ugly 13:27:53 well, OK 13:28:07 I'm not entirely convinced it needs a name, maybe null-stringing it is the best option 13:28:08 ais523: in fact, ideally the genesis commit (THIS IS THE WORST RELIGIOUS METAPHOR) should have no author field 13:28:13 or date 13:28:24 actually, it doesn't need any attributes at all 13:28:27 (random fact: I once tried to get Wikipedia's Main Page renamed to the null string, but the developers refused to implement that even though it was getting some support) 13:28:34 -!- sebbu has quit (Ping timeout: 245 seconds). 13:28:40 it's literally just the defined-by-construction object root-directory 13:28:41 -!- sebbu has joined. 13:28:45 ais523: haha 13:29:17 more commonly I tried to get it moved to the Portal namespace, and the opposition was mostly "it'll cause problems" without specifying how 13:29:40 I suppose I'm one of the few people in the world who actually knows /how/ to rename Wikipedia's Main Page; it's not commonly-known knowledge 13:29:43 ais523: Clearly the main page should have "This is the main page of Wikipedia. For the notion of main pages in general, see Main Page (disambiguation)" 13:30:14 (I know how to delete it too, but that requires overcoming well over ten separate safeguards, and the idea is that someone would likely notice you trying in time to stop you) 13:30:21 I really want a famous band/author/whatever to release a work called Main Page 13:30:27 Really, really, really 13:30:42 Gregor: have you seen http://en.wikipedia.org/wiki/Talk:%25s 13:30:48 (i.e. [[Talk:%s]]) 13:30:58 you might want to look at the history of [[%s]] itself, too 13:31:08 hmm, bleh, they stopped arguing about it in 2009 13:31:24 ais523: ... WOW 13:31:44 ais523: I can't believe people actually wanted to make it not redirect 13:31:45 I knew it would blow your mind :) 13:31:49 because %s is /such/ a popular topic to look up 13:31:55 MUST PUNISH USERS OF OBSOLETE SHORTCUTS 13:32:19 elliott: well, I wanted to make it not redirect on the basis that it was absurd that you'd /expect/ [[%s]] to redirect to the Main Page 13:32:40 ais523: it's a page nobody will ever look up on their own, modulo rounding error 13:32:43 and that it was only that way due to a bug in old versions of Firefox 13:33:09 Yet "According to statistics, %s is the 993rd most visited page this month" 13:33:21 It seems pretty clear-cut to me, the logic doesn't matter, usability does 13:33:40 hmm, Firefox bug 298697 is still open 13:33:47 https://bugzilla.mozilla.org/show_bug.cgi?id=298697 13:33:52 despite being over 6 years old 13:34:24 do any other popular search engines special-case searches for %s, I wonder? 13:34:26 Is it just me, or do bugzilla bugs never get fixed, ever? 13:34:26 say, Google? 13:34:31 elliott: they do sometimes 13:34:37 https://encrypted.google.com/search?hl=en&source=hp&biw=1058&bih=636&q=%25s&oq=%25s&aq=f&aqi=&aql=&gs_sm=e&gs_upl=485l485l0l599l1l0l0l0l0l0l0l0ll0l0 13:34:39 I used to subscribe to the entire bugzilla of MediaWiki 13:34:43 well, that worked, but it knows i came from the google.com page 13:34:49 so it's not a very useful result 13:34:59 and quite a lot of the bugs there got fixed 13:35:02 although not all of them 13:35:10 every now and then I get reports that one of the bugs I voted for got fixed 13:35:18 which amuses me, as I stopped voting on them years ago 13:35:36 ais523: Every time I've jumped over the insane hurdles required to get Bugzilla to accept a report, I've just received like three years of bugmail from it where tons of duplicates get marked forever and no progress ever happens 13:35:52 I don't know whether to blame bugzilla or the developers, I think it's both 13:36:01 random fact: Bugzilla is the only webform-login I've ever used that works without cookies 13:36:10 /however/, without cookies you have to relogin every page 13:36:15 Useful 13:36:17 but it does work eventually, after something like 5 relogins 13:36:24 Who even wrote Bugzilla? 13:36:27 And why? 13:36:29 And how can I make them hurt? 13:36:39 Terry Weissman, apparently 13:36:49 Stern glares in his direction, I tell you 13:37:07 "One of Bugzilla's major attractions to developers is its lightweight implementation and speed, so calls into the database are minimized whenever possible, data fetching is kept as light as possible, and generation of heavy HTML is avoided." 13:37:10 Why the hell's it so slow then 13:38:55 heh, one of my favourite bits on that [[Talk:%s]] page is someone moving the rfd template below the redirect, so that the redirect would still work 13:39:11 (and thus, so that nobody would see the rfd tag unless they thought of adding &redirect=no to the URL) 13:39:26 -!- nooga has joined. 13:40:14 Oh Wikipedia. 13:40:16 So screwy. 13:40:26 I think the biggest irony in that page is that Firefox visits [[%s]] when you type "wp" in the search bar precisely /because/ of %s's meaning in programming 13:41:24 Oh come on. %s clearly doesnt belong as a seperate article anyway. Are we going to list [[lparam]]? how about [[hwnd]]? 13:41:35 (lparam is currently a redlink; hwnd a redirect to handle (computing)) 13:42:14 -!- augur has joined. 13:44:06 if (is_stop) 13:44:07 { 13:44:07 world_running = 0; 13:44:07 g_thread_exit(0); 13:44:07 /* never reached */ 13:44:07 } 13:44:09 exit(1); 13:44:13 wtf? 13:44:23 anyone who knows pthreads: why would you exit the threadright before exiting? 13:44:25 or, um, hmm 13:44:57 wow, I just followed random interesting-looking links and ended up at http://en.wikipedia.org/wiki/Memory_leak which explained to me what the hell RAII actually /is/ 13:45:01 in terms I actually understood 13:45:11 I hate C++ sometimes 13:45:17 RAII is just equating scope with resources 13:45:17 (as opposed to everyone else, who hates it continuously) 13:45:36 it's like alloca, but objectorientized 13:45:48 and handling more than memory 13:46:14 yep 13:46:24 elliott: For is_stop it just quits the thread instead of exit(1)ing the whole process, so that the proxying bit is left alive. I guess the exit(1) could be in an else to make it more clear. 13:46:37 whereas when I see a close() in the finalizer for a File in Java, it looks like a mistake, or at least a very dangerous thing to rely on 13:48:06 fizzie: Right. 13:48:20 -!- Phantom_Hoover has joined. 13:48:43 fizzie: So, it's OK to start working on my Guile branch? Someone right now is working on getting Guile working Windows-native, and I'll make the build system offer to download/build a local copy of Guile if the system doesn't have a new enough version. 13:48:55 It's really the nicest language I could possibly bind to. 13:48:59 As far as binding quality goes. 13:49:16 (The download isn't big; just six megs or so, and the building only takes a few minutes.) 13:49:23 there were a bunch of articles recently about how Guile was still better than the alternatives at its intended purpose 13:49:43 GNU's NIH syndrome was mentioned as a positive for it ;) 13:50:02 probably gnu propaganda, but guile has a really nice c api, is a decent scheme, and is well-maintained 13:50:31 I suppose lua's the other language designed to bind nicely to things 13:50:34 hmm, how can I tell GNU that this bit of code is definitely unreachable? It's complaining that my noreturn function returns because scm_cancel_thread isn't marked noreturn 13:50:40 erm 13:50:42 s/gnu/gcc/ 13:50:45 I noticed that the Guile fans were mostly ignoring it 13:50:47 (void);? :P 13:50:49 elliott: assert(0) 13:50:52 ais523: Lua is an awful language, though 13:51:00 any way that doesn't involve including assert.h? 13:51:03 it has good points 13:51:17 actually, I'm not convinced that assert(0) definitely works 13:51:20 but it /ought/ to 13:51:35 Also, "Because Guile threads are isomorphic with POSIX threads, thread will not receive its cancellation signal until it reaches a cancellation point. See your operating system's POSIX threading documentation for more information on cancellation points; note that in Guile, unlike native POSIX threads, a thread can receive a cancellation notification while attempting to lock a mutex." 13:51:37 I don't even want to know. 13:51:39 if I ever write a Splint replacement, it'll be a warning if it can't prove that all asserts are always going to succeed 13:51:55 I've been meaning to learn List for years.. 13:52:00 ais523: ah, abort() makes it happy 13:52:04 Add an exit(0) or something actually marked as noreturn there. (What do you mean inelegant?) 13:52:16 elliott: thread cancellation is a bad idea anyway 13:52:26 ais523: it's cancelling the thread I'm in :P 13:52:35 it's one of the few things that's marked "wow, we realised this is a really bad idea, don't use this" in Java (except in more enterprisey language) 13:52:36 http://www.reddit.com/r/worldnews/comments/k8p8b/the_lifetime_ban_on_blood_donations_by_homosexual/ 13:53:01 I like the way it's framed as gays being banned from donation just because the blood donation people don't like them. 13:53:02 aha, I can just declare 13:53:02 SCM scm_cancel_thread(SCM thread) __attribute__((noreturn)); 13:53:04 at the top of the file 13:53:46 That's probably not any prettier. 13:53:59 fizzie: It avoids generating needless extra code to call abort() 13:54:06 fizzie: Anyway, give me official approval dammit :P 13:54:09 Since it's not really a noreturn function if you call it for some other thread. 13:54:20 Well, true. 13:54:28 why would a thread cancel itself, rather than just exit? 13:54:30 But the declaration will be local to that file. 13:54:30 Doesn't it have some sort of exit-this-thread function? 13:54:38 ais523: How can a thread "just exit"? 13:54:45 If pthreads has a function for that I can use it, but I couldn't find anything 13:54:47 elliott: there's typically an API call for that 13:54:52 What's the pthreads for it 13:54:56 I know Linux has a system call for exiting a thread 13:55:09 (it's called exit(2), not to be confused with exit_group(2) which is called by exit(3)) 13:55:12 man pthread_ doesn't show much interesting 13:55:21 pthread_exit. 13:55:27 Why don't I have a manpage for pthread_exit 13:55:41 "pthread_exit - terminate calling thread" 13:55:46 I have one. 13:55:49 o_O 13:55:50 What package? 13:55:51 I don't have a manpage for pthread_exit either 13:55:55 maybe it's missing on my system 13:55:58 And what arguments does it take? 13:56:13 A void * retval. 13:56:34 NULL ok? 13:56:48 http://linux.die.net/man/3/pthread_exit 13:56:57 Thanks 13:56:58 elliott: I can't believe /you/ didn't think of searching for "man pthread_exit" 13:57:03 I'm lazy 13:57:04 it seems we're in reversed roles today 13:57:22 (also, I should have just gone to linux.die.net anyway as that's the site I always check for manpages) 13:58:20 it seems that the return value is just a pointer that's returned literally to anything trying to join the thread 13:58:25 so NULL is OK 13:59:20 erm, hmm 13:59:26 how can I get a specific file out of a git stash from another branch? 14:00:30 never mind 14:00:39 gah, trying to edit Wikipedia, my connection to the server's getting reset while the page is loading 14:00:42 that hasn't happened for months 14:01:02 there, that's better 14:01:06 it started working again 14:01:25 my only conclusion is that something on this network randomly bombards me with RST packets when I try to submit a form via POST, for no obvious reason 14:01:31 I've had some problems with missing some pthread function manpages but not all, too. There seems to be something screwy about them. 14:01:34 $ dpkg-query -S `locate pthread_exit|grep usr/share/man` 14:01:37 manpages-dev: /usr/share/man/man3/pthread_exit.3.gz 14:01:42 That one is right there, though. 14:01:50 elliott@katia:~/Code/mcmap$ build/mcmap pyralspite.net 14:01:51 build/mcmap: error while loading shared libraries: libguile-2.0.so.22: cannot open shared object file: No such file or directory 14:01:51 umm, what 14:01:57 I thought pkgconfig was meant to take care of those sorts of things 14:02:26 fizzie: weird, I think I have manpages-dev installed 14:02:28 let me try again 14:02:31 Just for finding them for linking and so on; not for actually using them. 14:02:34 ais523: different os, version 14:02:43 fizzie: but I thought LD_LIBRARY_PATH was a massive hack :'( 14:02:45 yep, I'm wondering if it's missing from manpages-dev by mistake 14:02:54 ais523: This is the Ubuntu 11.04 thing. 14:02:58 the version I have, that is 14:03:07 it's bad enough having various syscalls not documented 14:03:14 like set_robust_list 14:03:25 GLib-ERROR **: The thread system is not yet initialized. 14:03:26 aborting... 14:03:26 Aborted 14:03:26 yay 14:03:37 oh, hmm 14:03:46 fizzie: do you need to initialise glib threads to use mutexes and the like? 14:03:55 Probably, yes. 14:04:55 There was something slightly strange about when the explicit initialization was necessary, and when not; and in which order the glib/SDL initializations went. 14:05:05 Indeed. 14:05:17 15:06:00 [DIED] select: Interrupted system call 14:05:19 fizzie: Oh deary me 14:05:37 fizzie: I'm pretty sure you're meant to handle those things 14:05:45 I seem to be getting it deterministically, though 14:06:11 Possibly, though I don't recall where I select()'d anything. 14:06:30 fizzie: I wrote that code. :p 14:06:35 The proxy. 14:06:45 Well, then s/you/I/ to you. 14:07:02 fizzie: Well, it's more that literally any syscall can do that and you have to handle it. 14:07:03 Yes, "I're". 14:07:17 No, *you* have to. 14:07:39 NO YOU HAVE TO 14:07:54 Okay, there might well be some reads/writes that don't do the right thing either. 14:08:17 * ais523 reads about mark-and-don't-sweep GCs 14:10:15 A don't-mark-and-don't-sweep-either-in-fact-just-lounge-around-and-be-lazy GC. 14:11:37 well, mark-and-don't-sweep GCs don't actually do any garbage collection at all until they're out of memory 14:12:01 at which point, they effectively do a sweep but with different terminology so that they can claim it isn't a sweep 14:12:15 -!- Jafet has joined. 14:12:27 do 14:12:27 ret = select(nfds, &rfds, NULL, NULL, NULL); 14:12:27 while (ret == EINTR); 14:12:32 do...while looks so weird 14:12:56 gah, EINTR doesn't do it, I need errno, duh 14:12:57 without the braces? 14:13:08 do 14:13:09 ret = select(nfds, &rfds, NULL, NULL, NULL); 14:13:09 while (ret == -1 && errno == EINTR); 14:13:09 BEAUTIFUL 14:13:18 ais523: We're retro coders at mcmap inc. 14:13:23 elliott: do you prefer the standard C API (return -1 and set errno) or Linux API (return -errno)? 14:13:34 ais523: Haskell 14:14:01 All C error-handling conventions are intolerable :P 14:14:03 well, I was asking which of two options you preferred, not if you thought either was good 14:14:23 Setting errno is kind of iffy, because of calling other things in the interim, and thread-local storage 14:14:26 So the latter, I guess 14:17:57 I think I prefer the latter too, it's less boilerplate than errno-style 14:21:58 "Erno" is a Finnish male name; I haven't really ever been able to read "errno" as "error number" instead of just a silly-sounding variant of that name. 14:22:49 anyway, anyone here have advice on a problem from work: I want to be able to benchmark a large number of OCaml programs, in as repeatable a set of circumstances as possible 14:23:03 and the Secret Project cannot be used for benchmarking (have a free clue about it while you're at it) 14:23:21 ideally, I'd like to count instructions rather than realtime 14:23:57 suggested solutions are allowed to rely on or ignore the fact that the programs are in OCaml as required, and absolute speed doesn't matter (within reason), just relative speed of the programs 14:26:02 valgrind, then 14:26:16 Jafet: hmm, interesting, explain more 14:26:32 presumably it wouldn't be used in a memory-checking mode but some other mode 14:27:17 There's cachegrind and lackey 14:27:47 ais523: gdb 14:27:52 used exclusively with step 14:27:52 Since valgrind adds a huge amount of indirection to the code, the results should be repeatable 14:27:55 cachegrind checks cache hits/misses, right? 14:27:57 counting step until program termination 14:28:23 elliott: I thought of that, and could implement it myself (it's a trivial modification to Secret Project to make it single-step), but it's monstrously slow 14:28:37 ais523: I think you can do "step N" for some large N 14:28:42 Yes, but with a simulated cache. 14:28:58 elliott: the API only allows one step at a time 14:29:07 !sanetemp 66.9 14:29:08 292.5 14:29:14 Wha 14:29:17 !sanetemp 66 14:29:18 292.0 14:29:27 !show sanetemp 14:29:28 sh dc -e "1k?459.67+5*9/p" 14:29:41 is that converting farenheit to kelvin? 14:29:52 OK, who was it? 14:29:57 !sanetemp 32 14:29:57 273.1 14:30:03 !sanetemp 212 14:30:03 373.1 14:30:05 looks like it 14:30:27 !delinterp 14:30:27 ​ is not a user interpreter. 14:30:29 Phantom_Hoover: what did it used to do? 14:30:31 !delinterp sanetemp 14:30:31 ​Interpreter sanetemp deleted. 14:30:38 ais523, Celsius. 14:30:42 deamericanize 14:30:47 from farenheit? 14:30:54 ah, and someone changed it to kelvin as a joke 14:30:55 !addinterp sanetemp sh dc -e "1k?32-5*9/p" 14:30:55 ​Interpreter sanetemp installed. 14:30:58 Well, Kelvin's eminently sane. 14:31:37 !sanetemp 66.9 14:31:37 19.3 14:32:21 !insanetemp 19.3 14:32:22 66.7 14:32:37 Heh, that was just a guess. 14:34:13 Nice rounding there: 14:34:17 17:34 !sanetemp 66.7 14:34:17 17:34 19.2 14:34:17 17:34 !insanetemp 19.2 14:34:17 17:34 66.5 14:34:17 17:34 !sanetemp 66.5 14:34:19 17:34 19.1 14:34:22 17:34 !insanetemp 19.1 14:34:24 17:34 66.3 14:35:18 fizzie, it's dc; can you blame me? 14:37:51 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:45:37 -!- FireFly has quit (Quit: FireFly). 14:52:55 > 9 + 55 + 43 14:53:16 -!- Patashu has quit (Ping timeout: 260 seconds). 14:55:22 -!- ive has joined. 14:59:44 -!- pikhq has joined. 14:59:51 -!- pikhq_ has quit (Ping timeout: 258 seconds). 15:01:20 Is there a more impolite way of killing a thread than cancelling it? 15:01:43 Like, that doesn't wait for a cancellation point? 15:02:54 pthread_kill with SIGKILL? 15:03:35 -!- jcp|other has quit (Excess Flood). 15:03:37 -!- yorick has quit (Excess Flood). 15:03:54 -!- jcp|other has joined. 15:04:09 -!- yorick has joined. 15:04:55 ais523? :p 15:05:35 elliott: I imagine pthread_kill with SIGKILL might work, but might just screw up the threading model generally 15:05:43 why would you want to do that anyway¿ 15:05:44 hmm, but pthread_kill with SIGTERM? 15:05:45 *? 15:05:51 ais523: because pthread_cancel does nothing 15:05:55 the thread never hits a cancellation point 15:05:58 -!- yorick has quit (Excess Flood). 15:06:03 why is the thread not hitting a cancellation point 15:06:13 library code, don't tell me to change it, I can't 15:06:29 -!- yorick has joined. 15:06:36 -!- jcp|other has quit (Excess Flood). 15:06:53 why is the library code in an infinite loop? 15:07:06 because the user typed //eval (...infinite loop...) 15:07:13 or, possibly, just //eval (computation they did not realise would blow up) 15:07:27 stop trying to avoid answering the question, it's like #python :) 15:07:55 ah, OK, I was trying to work out what you were doing so I could better formulate an answer 15:08:01 -!- jcp|other has joined. 15:08:11 perhaps spinning off a process would make more sense than a thread in that situation 15:08:12 I can control the thread enough to set up appropriate signal handlers 15:08:16 Not an option, sorry 15:08:18 you can kill those as impolitely as you like 15:08:22 It must be a thread 15:08:28 hmm, OK 15:08:42 (it has to be able to call the shared-state-using functions I provide to the environment) 15:08:43 I have a hunch that threads aren't really designed for that sort of thing 15:08:59 What you're trying to say is, you don't know the answer, right? 15:09:14 if arbitrary code can go in that eval, it may well be something that interferes with the threading model 15:09:19 elliott: well, I'm not entirely sure I know the question 15:09:21 Arbitrary Scheme code 15:09:25 but I fear that if I did, I wouldn't know the answer 15:09:46 Hmm, it seems that scm_cancel_thread'ing a thread currently doing scm_c_eval_string("(while #t '())") doesn't ever kill it; is there a supported way to kill a thread evaluating Guile code less politely, or should I do my evaluation timeout in another manner? 15:09:48 Oh well, worth a shot 15:10:28 hmm, I wonder what happens if you use SIGALRM, and then put a cancellation point in your SIGALRM handler 15:10:36 (/me believes in using semantically correct signals for this sort of thing) 15:11:12 or better, a pthread_exit in your SIGALRM handler 15:11:25 -!- copumpkin has joined. 15:11:37 the question is exiting the evaluation loop safely and putting all the interpreter state back as it should be, euurgh 15:12:09 wait what? you're trying to do multiple evals on the same interp? 15:12:17 can you set handlers from within Scheme? 15:12:25 Multiple whats on the same what what? 15:12:34 if you could put an exit in a SIGALRM handler /in the Scheme program/, I think it would work 15:12:37 I'm saying that just killing a thread while it's modifying interpreter state might not be smart. 15:13:18 I mean, I assumed you'd have one interpreter for each eval 15:13:29 -!- Gregor` has joined. 15:13:32 no, that's absurd for my usecase 15:13:40 this isn't just a toy //eval, it's an integrated language :P 15:14:47 -!- Gregor has quit (Disconnected by services). 15:14:56 -!- Gregor` has changed nick to Gregor. 15:15:06 elliott: I'm not entirely convinced that what you're asking is possible 15:15:30 you're asking to shut down an interpreter with all relevant cleanup, while simultaneously not modifying the code of the interpreter or letting it know it should shut down in any way 15:15:40 I'm fine with letting it know 15:15:40 the problem's not fundamentally about threading, but about the interpreter's API 15:15:44 I just don't know how to let it know :) 15:15:48 that's why I'm asking people who might know 15:17:29 -!- Phantom_Hoover has quit (*.net *.split). 15:17:30 -!- fizzie has quit (*.net *.split). 15:17:30 -!- EgoBot has quit (*.net *.split). 15:17:47 rip fiz 15:18:07 -!- jcp|other has quit (Excess Flood). 15:18:08 -!- yorick has quit (Excess Flood). 15:18:08 -!- EgoBot has joined. 15:18:17 -!- fizzie has joined. 15:18:21 -!- jcp|other has joined. 15:18:36 elliott: I'm seeing increased use of ~ to end a sentence (that is, ending with ~ rather than .~ which pretty universally means sarcasm), in a context where sarcasm wouldn't really seem to make sense 15:18:43 do you know if it signifies anything else? 15:18:56 -!- yorick has joined. 15:19:04 it signifies trying to be Lymia, also possibly succeeding 15:19:08 (say, by being Lymia) 15:19:29 I guess it's meant to denote a kind of light tone of voice or something but w/e I don't care 15:19:40 -!- yorick has quit (Client Quit). 15:19:42 Unless it's a third use of the tilde 15:19:44 In which case I have no idea 15:20:16 -!- jcp|other has quit (Excess Flood). 15:21:00 -!- pumpkin has joined. 15:21:16 -!- copumpkin has quit (Ping timeout: 260 seconds). 15:21:29 -!- pumpkin has changed nick to copumpkin. 15:21:30 -!- jcp|other has joined. 15:21:50 light tone of voice but w/e would seem to fit 15:21:58 "Immediately after receiving this notification, thread will call its cleanup handler (if one has been set) and then terminate, aborting any evaluation that is in progress." 15:22:08 ais523: aha, I can do scm_thread_cleanup(thread), and then pthread_kill it 15:22:15 sounds right 15:22:21 it's an interp API problem, not a threading problem 15:22:28 I'll be annoyed if you don't use SIGALRM, though 15:22:44 -!- Phantom_Hoover has joined. 15:22:51 ais523: Does SIGALRM quit the thread by default? 15:23:14 -!- Zetro_ has changed nick to Zetro. 15:23:19 elliott: yes 15:23:33 OK 15:23:36 SIGALRM 14 Term Timer signal from alarm(2) 15:23:41 yeah, I know 15:23:48 the nice thing about semantically correct signals is that they do the right thing by default 15:24:31 ugh, minecraft.net, get back up, I'm testing mission-critical software here 15:24:58 elliott: strangely, I had a dream about Minecraft a couple of nights ago 15:25:17 Do I want to know 15:25:45 probably not 15:25:53 I can't remember many details anyway 15:25:54 Go on then 15:26:23 it looked rather more like Final Fantasy Tactics Advance (with a higher resolution), though, probably because I have played that game and I haven't played Minecraft and my brain needed something to attach to 15:26:44 all I remember is flooding the area with lava and standing on high ground to avoid it, then it mostly cooled, and there were some map spots that were permanently water 15:26:51 hmm, just scm_thread_cleanup(thread); does nothing 15:26:54 then night came and I was killed by an infinite number of monsters, game over 15:26:57 the CPU keeps getting used forever 15:27:03 that makes me worry that the thread won't be in a safe staet to kill 15:27:10 ais523: haha 15:27:15 (dreams tend not to distinguish between character and player, although it was pretty clear that the death was just a game-death and not anything permanent) 15:27:18 lava doesn't cool in minecraft, though 15:27:28 it just lavas 15:27:28 forever 15:27:29 I was thinking that next time, I should probably build a wall or something 15:27:52 -!- jcp|other has quit (Read error: Connection reset by peer). 15:28:01 yeah ok thread cleanup thing doesn't work 15:28:05 (the permanently water map spots were yellow, and shown as permanently water when I cursor-hovered them, which is apparently an operation I can do mentally while inside a game world and have no cursor) 15:28:35 And I can't use pthread_kill because the API doesn't expose it 15:28:40 the pthread_t, that is 15:29:56 aha, hmm, scm_sigaction_for_thread 15:31:52 bleh, I want to go home but it's rush rather-more-than-an-hour 15:32:57 hmm, RAII is misnamed, I think; it's not really about allocation or initialization at all, but about deallocation and finalization 15:33:37 grr, the exact function I want is offered 15:33:41 but only through scheme 15:33:46 so I have to go through hoops to get at it through c 15:36:27 scm_call_1(scm_c_public_variable("(srfi srfi-18)", "thread-terminate!"), thread); 15:36:29 hopefully that works 15:36:43 what's the exclamation mark doing there? quoting? 15:37:55 ERROR: In procedure catch-closure: 15:37:55 ERROR: In procedure public-lookup: Module named (#{\x28;srfi}# #{srfi-18\x29;}#) does not exist 15:37:55 hmph 15:37:58 ais523: no, scheme 15:38:13 elliott: I mean, it's part of the name 15:38:19 naming convention 15:38:29 albeit a vaguely inconsistent one 15:38:30 I was wondering why the name contained an exclamation mark; although you can do that in Scheme, you'd need a reason to do it 15:38:35 I was wondering what the naming convention signified 15:38:48 "destructive", it originally just applied to mutating versions of procedures 15:38:53 but then it got applied tovariable assignment too 15:39:00 so now it means something like "called for side-effects" 15:39:13 ah, aha 15:39:17 or "impure" more generally, I suppose 15:39:31 nah 15:39:36 it's not applied enough for that 15:39:41 and it's not even really applied consistently 15:39:44 IMO the original convention was best 15:40:04 amusingly, in ICA you use ! to not assign to a variable 15:40:12 it's the get-contents operator (basically a dereference) 15:40:24 same idea as in ML, although not quite semanticaly identical IIRC 15:40:26 ERROR: In procedure catch-closure: 15:40:27 ERROR: Wrong type to apply: #> 15:40:27 huh 15:40:48 does it say what the right type is? 15:40:58 but it looks like you've passed it a variable holding a thread, rather than a thread 15:41:04 unless Scheme doesn't distinguish between those cases 15:42:40 yay, thread-terminate just doesn't work 15:43:01 Gregor: heh, I just noticed that I was on that page, denying a change that I personally agreed with 15:43:09 wat 15:43:19 because the person in question had used a tag designed for uncontroversial edits only 15:43:26 and anything done to that page has been controversial 15:43:27 oh, I noticed you on that page 15:43:28 Gracenotes, too 15:45:36 (well, I did accept a change to the CSS of the page to make it user-stylable, at least; I doubt anyone would disagree that that was an improvement) 15:47:04 That's besides the point. I mean, if we REALLY wanted to, we could just fork the whole encyclopedia over this issue. Why not transclude? Because, as I stated above in my redirect vote, a transcluded Main Page is nonetheless not the main page. Simple as that. Oops, forgot to sign this. 15:47:26 wtf? not even setting an alarm signal works 15:48:06 are you sure it's not messing with signal handlers? 15:48:26 note that signals and threads interact weirdly, if you use a non-thread-aware function like alarm it'll go SIGALRM a random thread 15:48:40 rather than, say, the thread it was given on 15:48:55 wait, alarm isn't signal-aware? 15:49:02 hmm, surely scm_aarm is 15:49:04 alarm 15:49:24 This is the same as a search for "s" - the "%" is ignored when searching (this is the case for both mediawiki search and google searches). 15:49:33 elliott: it's signal-aware (obviously) but not thread-aware, IIRC 15:50:02 return scm_from_uint (alarm (scm_to_uint (i))); 15:50:04 gah 15:50:05 yep, the man page just mentions that the alarm's delivered to the calling process 15:50:30 hmmm 15:50:30 if you block SIGLARM in all threads but one, it'll be bound to be delivered to the thread that doesn't have it blocked, though 15:50:45 I'm trying to figure out how to set an alarm for the current thread 15:50:51 is that even possible? 15:51:07 ooh, ooh, or how about this: can you get the current thread from pthread? 15:51:09 s 15:52:01 elliott: pthread_self(3) 15:52:10 no manual entry, wooo, /me googles 15:52:12 which I don't have a manpage for, but it's mentioned in man pthreads 15:52:23 right, returns the thread 15:52:49 ok, so at the start of the thread, I spawn another one, passing the thread id; that thread then sleeps ten seconds, and sends SIGALRM 15:52:58 heh, clever 15:53:18 I hope that the sleep isn't implemented in terms of alarm (which is allowed), or the universe will explode 15:53:36 you might want to explicitly sleep using select in order to avoid that (select is guaranteed to be independent of alarm) 15:53:53 heh 15:54:12 hmm, there's a function called ftw(3) 15:54:19 it'll go nicely with Android's wtf() 15:55:13 apparently it's for traversing directory structures 15:55:33 mcmap has the wonderful (die|stop|wtf)f? family of functions. 15:55:41 DIEF! 15:55:55 I wouldn't normally bother with a formatted error message for a wtf 15:56:03 unless it was happening a lot and I wanted to give debug info at the same time 15:57:27 well, completeness :P 15:57:36 it's good to know "invalid zlib id blah" 15:57:40 as opposed to just "invalid zlib id" 15:58:43 heh, I'm still amused I called a template {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD}} 15:58:54 it seems that the lowercase f is intrinsically part of the spelling of AfD to me 16:02:06 AHA 16:02:12 if I send SIGTERM rather than SIGALRM, everything quits 16:02:14 so SOMETHING works :P 16:04:47 fuck this, I'm committing a non-timeouting //eval and doing more important things 16:08:19 -!- pumpkin has joined. 16:09:44 oh right, I invented http://en.wikipedia.org/wiki/CAT:AFD/I 16:09:48 best category ever 16:09:52 elliott: at some stage, my lessons on FSMs led me to write: (wo|hu|)man 16:09:53 * ais523 nostalgias 16:09:59 -!- copumpkin has quit (Ping timeout: 260 seconds). 16:11:10 elliott: I think that category would be a good place to look for language inspiration, especially as it gets completely replaced every 14 days 16:11:15 (barring relists) 16:11:20 every 7, actually, I think 16:11:35 haha 16:11:40 "UML fever" 16:11:41 wow 16:11:55 A potentially deadly illness, clinically referred to as UML (Unified Modeling Language) fever, is plaguing many software-engineering efforts today. 16:11:55 damn 16:12:00 i was hoping it was an unrelated UML 16:12:04 that could be turned into a diagram hell language 16:12:06 so was I 16:12:24 CAT:AFD/? is a little larger, but a little lower-quality on average, because some people file everything in ? as a protest against the system 16:12:37 haha 16:13:09 and still more people file everything in U for the same reason (although for a while U was typically empty due to AFD categorizing gnomes) 16:14:09 grrr, someone reverted my addition of a {{prod}} using Twinkle 16:14:19 anon edit? BETTER REVERT IT! 16:14:47 -!- jcp|other has joined. 16:15:08 this is what's wrong with Wikipedia, ofc 16:15:17 you can follow up with an actual AfD, except you'd probably have to log in for taht 16:15:29 I just reverted their reversion 16:15:35 why don't you talk-message them and ask why they deprodded? if every anon did that, they'd stop doing it after a while, because talk edits stop twinkle 16:15:44 I might 16:15:44 you're not supposed to revert prod removals ever, though, that's what prods are for 16:15:54 ais523: hmm, true 16:15:55 too late, though 16:16:10 but come on, it said "identified as vandalism" right there in the commit, there's clearly no cogent objection gone into that :P 16:16:14 -!- augur has quit (Remote host closed the connection). 16:16:15 too late now, anyway 16:16:34 -!- Zuu has quit (Ping timeout: 260 seconds). 16:16:44 hmm, seems that 'crats can remove admin rights nowadays, I wonder why that change was made? 16:17:48 I should see if the WT:RFA discussion on adminship reform is still going, sometime 16:17:54 it had been going for years with no sign of stopping back in 2007 16:18:20 ais523, have you checked? 16:18:27 not yet 16:18:31 I almost certainly will at some point, though 16:19:07 -!- pumpkin has changed nick to copumpkin. 16:29:04 -!- augur has joined. 16:30:54 yep, I'm reading WT:RFA, the same argument's still going 16:31:48 and someone's created WP:RFA2001 in order to have /yet another/ attempt at changing the system 16:32:18 I've closed the below thread. With respect to Mr. Keeper, who is only the latest person to start one of these (I may have started one myself a while back), the monthly compliant threads generate a lot of heat, rehash the same arguments, and generally serve no purpose but to create tension and sour relations. That's not the intent, of course, but it's what happens every single time, and it's what has happened this time. 16:34:41 now, I'm wondering whether WP:GRFA has a) become massively insane, or b) is exactly the same as it used to be 16:34:46 I'm not sure which is the more predictable option 16:36:55 hmm. looks like content is basically the same but was rewritten in managementspeak 16:37:02 or maybe it's always been like that, and I just didn't notice 16:39:37 aha, /now/ I've found the list of insane requirements I was looking for: http://en.wikipedia.org/wiki/Wikipedia:RfA_reform_2011/Sysop_on_request 16:41:48 -!- Taneb has joined. 16:42:04 Hello 16:42:04 -!- kmaker has joined. 16:44:02 hi 16:44:15 k...eymaker? 16:44:24 hi 16:44:24 yeah 16:44:37 yeah=that's me 16:44:45 So how is everyone today? 16:45:06 i came to ask what's going with esowiki but i see it's still online, it's just esolangs.org that isn't working 16:45:19 kmaker: Yeah, whoever owns esolangs.org effed up. 16:45:49 kmaker: the DNS service hosting esolangs.org got bought out 16:46:02 and are asking for more money in order to keep hosting the DNS 16:47:51 too bad... 16:48:26 the esoteric.voxelperfect.net address should probably be considered the canonical one from now on, because it still works 16:51:50 so ais523, what's this feather language all about? it's mentioned here and there but i still don't know anything about it 16:51:59 ais523 why can't you transfer esolangs.org 16:52:10 oh ok 16:52:13 cheater: because I don't own it 16:52:16 just reading scrollback now 16:52:29 kmaker: it's a combination of two things: an esolang idea that hurts my head when I think about it, and an inside joke 16:52:41 basically, because whenever I work on it I end up having to quit due to getting to confused 16:52:50 and its vaporwareness has become a #esoteric meme 16:53:12 -!- Zuu has joined. 16:53:13 the general concept is a prototype-based OO language that uses time travel rather than delegation 16:54:11 where all variables are immutable once created (as in SSA), but you can retroactively change the values that they had when they were created 16:55:00 SSA? 16:55:17 single static assignment 16:55:30 a programming technique in which variables can't have their values changed once they're assigned for the first time 16:55:46 So basically the way variables work in Haskell? 16:55:54 very common in functional languages, and many imperative language compilers compile via an intermediate SSA form 16:55:56 yep 16:56:30 And what's delegation? 16:56:37 The WP page is kind of unhelpful. 16:56:56 it sounds interesting. can't imagine how programming is done heh 16:57:04 kmaker: neither can I, that's part of the problem 16:57:08 :D 16:57:08 or at least, I can, but only slightly 16:57:15 Phantom_Hoover, elliott, Taneb, CakeProphet, Jailbreak update 16:57:40 Phantom_Hoover: "inheriting" methods via asking the superclass to handle them when they aren't present in the class itself 16:57:46 Ah. 16:57:56 doing things Feather-style is one way to eliminate the distinction between classes and objects, which I like 16:57:59 Wait, how does time travel replace it? 16:58:24 with delegation: change superclass, subclass delegates to superclass and gets the new changed method 16:58:39 with time travel: change superclass, subclass got a copy of the new version of the superclass when it was created 16:58:41 ais523: I'm designing a makefile with user input and network connectivity; help 16:58:45 ive gone bad 16:58:46 mad 16:58:58 that should have been "hlep", surely? 16:59:04 wow, that word is hard to intentionally typo 16:59:17 is this a makefile as in program run via make(1)/ 16:59:24 if so, I think it counts as alternative programming 16:59:34 (that said, IIRC buildroot has user input and network connectivity) 16:59:43 This most recent system upgrade seems to have improved Terminal.app from being /almost/ completely unusable to being completely unusable. 16:59:44 (it is also beautifully insane, and even actually works sometimes) 16:59:44 Sgeo: Jailbreak!? 16:59:53 Gregor: what was the change? 17:00:02 is this a makefile as in program run via make(1)/ 17:00:02 yep 17:00:11 ais523: Before, Terminal was occasionally slow and horrible. Now, it's always slow and horrible. 17:00:27 is this a subjective "horrible", or some specific horriblizer? 17:01:12 You type something, it goes through data buffer purgatory for a while, then shows up later. It's like they have a TCP connection to whatthefuckistan through which all data sent to/from the PTTY is routed. 17:01:16 ais523: to clarify, it's for a completely non-esoteric purpose 17:01:20 Sgeo: LIES 17:01:49 Gregor: ah, so it's just very laggy for no sane reason at all 17:01:54 Yup 17:01:54 hmm, does anyone know how to trap sh so that it outputs the status code it's going to execute with to a file? 17:02:01 elliott: * exit with? 17:02:43 Vorpal almost certainly knows; I don't but think I know where in the man page to look it up, so I'm looking there now 17:02:45 ais523: yes 17:03:58 it's trap EXIT (something), I'm trying to work out what the something is atm 17:04:53 thanks :P 17:05:15 I think it's probably just trap EXIT (echo $? > filename.txt) 17:05:21 but I'm not sure; it shouldn't be too hard to test 17:05:46 sounds good :P 17:05:52 oh, and if you want to keep the same exit status, you'd need to store $? in a temporary variable and exit with it afterwards 17:05:53 it's '' though i think 17:05:53 not () 17:05:59 ah, hmm 17:06:16 it didn't say what format the args were meant to be in, so I assumed you put a command there rather than the string representation of a command there 17:06:19 perhaps I'm wrong 17:07:11 elliott: what should my reaction be to [[Talk:Binary lambda calculus]]? 17:07:31 perhaps to mention that is a nonstandard extension to MediaWiki, and just because it's used on Wikipedia doesn't mean every wiki in existence has it? 17:07:48 BTW: until this problem is fixed, the way to read this article is to edit the page, copy all the text, paste it into the [http://en.wikipedia.org/wiki/Wikipedia:Sandbox wikipedia sandbox], and then preview. 17:07:53 meh, it's a reaonable mistake to make; I thought was standard fo rthe longest time 17:07:54 but uh 17:08:03 direct em to http://en.wikipedia.org/wiki/Binary_lambda_calculus 17:08:09 which is the same article inexplicably not deleted for notability after years 17:08:19 elliott: is that the article you just prodded? 17:08:37 no :) 17:08:43 apparently not 17:08:44 aw, the guy apologised to me and now i feel bad 17:09:07 it does have references, at least 17:09:34 heh, I'll have no idea which article you prodded unless I can guess your IP 17:09:41 or check for recent prods, I guess, but that's nontrivial to do 17:09:48 MWAHAHAHAHHA 17:11:38 by the way, has anyone made any brainfuck programs lately? 17:12:01 we were playing a bit of BF Joust recently, but I don't think so apart from that 17:12:25 ok 17:15:50 i have a few ideas but it remains to be seen if i actually get anything done this year 17:15:59 or the next 17:17:11 trap: cd `dirname $0`; rm -rf support; echo $? >guile.built: bad trap 17:17:12 :( 17:17:20 elliott: FOSD Program Cubes 17:17:29 might be difficult to find, but not completely impossible 17:18:00 haha 17:18:05 NOOO NOW YOU KNOW MY CONSTANTLY-CHANGING IP FOREVER 17:18:22 * elliott wonders if there's any contributions not by him logged on that ip 17:18:27 that took a while, including a bunch of API searches 17:18:36 yep, someone seven days ago 17:18:51 ais523: what a waste of effort :P 17:19:07 it was fun, and I wanted to see if I could still remember how to do it 17:24:04 I just looked for a page in the prod category whose most recent recategorization was around the time of your revert 17:26:26 and the problem is that there's no way to specify that in the interface, so I had to use the API 17:35:03 -!- kmaker has quit (Quit: Page closed). 17:37:04 -!- Braber01 has joined. 17:37:33 I'm having trouble trying to install BeQuinge on Ubuntu could somebody help me? 17:38:30 BeQuinge? 17:39:03 yes apperently the ubuntu pacakge that's provided on the site, is looking or an older version of a package that doesn't exist anymore, 17:39:08 It doesn't seem to exist. 17:39:26 *BeQunge 17:39:30 -!- ais523 has quit (Read error: Connection reset by peer). 17:40:11 i can't spell... 17:40:32 Build it yourself :P 17:40:50 -!- ais523 has joined. 17:41:11 i'm trying to figure out how to download the binary however the howto link seemms dead, i get a 404 error, when I click on the howto link 17:41:44 https://github.com/hatstand/Bequnge 17:44:00 :t atomicModifyIORef 17:44:04 ?hoogle atomicModifyIORef 17:44:31 -!- Braber01 has quit (Remote host closed the connection). 17:44:36 Braber01: BeQunge is incredibly non-standards-compliant and ... 17:44:43 -!- augur has quit (Remote host closed the connection). 17:52:41 elliott: what's the second-most-... Befunge interp? 17:53:02 hey, my compose key has … on it 17:53:02 ais523: Definitely GLfunge. 17:53:08 that's a fun discovery 17:54:21 -!- augur has joined. 17:57:20 elliott, what's the least-... Befunge interpreter that is in a reasonably complete state? 17:57:47 Shiro. Definitely Shiro. 17:58:38 *Reasonably complete*. 17:59:19 Phantom_Hoover: Shiro is reasonably complete. 17:59:26 elliott, it is? 17:59:33 OK, other than Shiro. 17:59:35 It passes Mycology with one BAD and implements enough fingerprints for fungot, although there's a bug in probably the socket one that stops it running. 17:59:35 elliott: i said i don't care about who they like or don't like this ain't gonna show up. 17:59:42 It's just a churn of implementing more fingerprints now. 17:59:45 ^style 17:59:45 Available: agora alice c64 ct darwin discworld europarl ff7* fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube 17:59:51 Phantom_Hoover: Definitely BeQunge, then. 18:00:04 I thought it was the most .... 18:01:29 -!- ais523 has quit (Read error: Connection reset by peer). 18:02:40 -!- ais523 has joined. 18:03:26 Phantom_Hoover: I never said it was coherent. 18:08:03 -!- CakeProphet has quit (Ping timeout: 252 seconds). 18:14:01 Hello! 18:14:50 -!- cheater has quit (Ping timeout: 245 seconds). 18:16:35 elliott: May I ask, what is the BAD bit of Shiro>? 18:17:15 -!- jcp|other has quit (Read error: Connection reset by peer). 18:18:49 -!- jcp|other has joined. 18:19:08 back 18:19:12 Taneb: BAD bit? 18:19:26 It passes Mycology with one BAD and implements enough fingerprints for fungot, although there's a bug in probably the socket one that stops it running. 18:19:26 Taneb: it looks like the sky? 18:19:40 Thanks, fungie 18:19:42 Oh. fungot got it, it fails because it looks like the sky. 18:19:42 elliott: even employees can't walk around above the 60th floor. but, then it's easy to get our materia! 18:19:52 Actually it's a bug with reading or writing in text mode I'm not sure which 18:20:13 I may learn Funge-98 18:20:20 AND DEVELOPE IN IT 18:20:48 Would I get a swat for a Monty Python quote? 18:21:04 oerjan isn't here, so no 18:21:08 Okay 18:21:13 WITH THIS HERRING! 18:21:58 elliott: look at the file it generates and see if it's correct? 18:22:07 Taneb: wait, you're using /that/ quote? 18:22:09 out of context? 18:22:13 perhaps you'll get swatted anyway 18:22:46 I was going to say it directly after "AND DEVELOPE WITH IT" but I thought it would be risky so I asked for approval 18:23:04 But yeah, it's not the best quote 18:23:11 Not even the best from Holy Grail 18:23:27 developee with it 18:23:50 -!- jcp|other has quit (Read error: Connection reset by peer). 18:24:19 Question: 18:24:26 Answer: 18:24:46 In Befunge, if a line feed character is p'd into the program, does that reshape the program? 18:24:55 no 18:25:03 would be fun if it did but no 18:25:22 -!- jcp|other has joined. 18:27:38 I'm going to sign off with "TTFN" now 18:27:55 -!- Taneb has quit (Quit: TTFN). 18:28:19 -!- jcp|other has quit (Read error: Connection reset by peer). 18:30:47 -!- cheater has joined. 18:31:36 -!- jcp|other has joined. 18:33:34 -!- jcp|other has quit (Remote host closed the connection). 18:55:15 -!- ais523 has quit (Remote host closed the connection). 18:57:06 -!- pumpkin has joined. 18:59:09 -!- copumpkin has quit (Ping timeout: 260 seconds). 18:59:32 -!- Taneb has joined. 18:59:40 Hello! 19:00:11 hi 19:00:17 hi 19:04:22 Would Befunge-93 be Turing Complete if it used a queue rather than a stack 19:10:26 - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication 19:10:37 OH THANK YOU MIGHTY COCA 19:10:41 COCOA* 19:10:53 CACA 19:10:58 aSTALWC 19:14:47 -!- ive has quit (Ping timeout: 252 seconds). 19:29:08 -!- pumpkin has changed nick to copumpkin. 19:37:49 -!- ais523 has joined. 19:41:21 http://en.wikipedia.org/wiki/Hilbert_R-tree 19:41:34 this + esolang 20:09:52 Once I've finished my Travelling Salesman problem esolang 20:16:17 -!- pumpkin has joined. 20:16:58 -!- pumpkin has changed nick to copumpkin_. 20:17:36 -!- copumpkin has quit (Ping timeout: 276 seconds). 20:22:06 Uniquode is a long term project; lingua abstrusa and Salesman are on hold, Binary Variety Pack is dead 20:23:35 Next project: NonE Minimilastic One inSTRuction sET computEr 20:23:43 Or NEMO-STRETE 20:23:53 "Minimilastic"? 20:24:00 Yes 20:24:00 please tell me that's not a typo 20:24:03 because it's a great word 20:24:31 It's e combination of minimalistic and elastic 20:24:37 *a 20:24:50 It is neither Minimalistc nor Elastic 20:25:38 I'm going to try and make it as useful as possible while still fundamentally not Turing Complete and also hard to program in 20:25:55 The instruction will have FOURTEEN operands 20:27:01 Or possibly loads of registers 20:27:11 -!- copumpkin_ has changed nick to copumpkin. 20:28:30 -!- ive has joined. 20:31:57 Actually, more fun idea 20:32:12 An Iota interpreter... IN XSLT 20:32:57 -!- elliott has quit (Ping timeout: 240 seconds). 20:33:36 Wait a minute, wait a goddamn minute 20:34:00 Combinatory logic can be expressed as tree rearranging from within the tree, right? 20:34:08 I think so 20:34:25 And trees can be expressed as XML, right? 20:34:39 Are you thinking what I'm thinking? 20:39:28 becomes 20:42:46 I saw a Microsoft advert that really sums the company up. 20:42:56 "I'm a PC and I'm finally up-to-date!" 20:43:28 the whole "I'm a PC" campaign was ridiculous IMO 20:43:41 also, I hate the conflation of "PC" and "Windows" 20:43:46 although I'm pretty sure it's deliberate 20:44:08 It is delibrate on the part of Microsoft and IBM before it 20:49:01 Can someone who understands XPath better than me tell me what //s/*[3]/.. would match? 20:57:34 XPath? 20:58:02 Taneb: I'm trying to read it as a regex 20:58:04 and failing 20:58:04 W3C reccomendation used to navigate an XML document with XSLT or XQuery 20:58:14 It just might match any elements with at least three or four children of any type. If [n] was the index-thing, and depending on whether it was 0- or 1-indexed. 20:58:29 I'm hoping 1-indexed 20:58:43 And I'm hoping fizzie is right 20:59:53 It could be a shorthand for something like //s/*[position()=3]/.. 21:00:26 Right, looked it up 21:00:48 IE is 0-indexed, everything else with XPath (including the reccomendation) is 1-indexed 21:10:45 -!- zzo38 has joined. 21:11:23 -!- Wamanuz has quit (Remote host closed the connection). 21:11:50 I have read about Curry-Howard stuff, and how it can be related to Haskell (they are even named after the same people, I think) 21:11:59 -!- Wamanuz has joined. 21:14:00 -!- GreaseMonkey has joined. 21:14:05 -!- GreaseMonkey has quit (Changing host). 21:14:05 -!- GreaseMonkey has joined. 21:14:33 < > < > < > 21:14:37 peg leg 21:15:21 -!- nooga has quit (Quit: Lost terminal). 21:16:23 -!- kmc has quit (Quit: Leaving). 21:17:50 -!- nooga has joined. 21:17:54 Does anyone know how to create a copy of an element with a copy of a different element as an additional child node in XSLT? 21:22:15 Why are type families not allowed in instance declarations in Haskell? 21:23:12 Actually I think I see there are overlapping instances with what I am doing 21:23:57 (There seems to be overlapping instances even though there is only a single instance declaration.) 21:24:30 -!- KingOfKarlsruhe has joined. 21:26:56 preprocessing C to get decent OOP syntax 21:30:15 I leave you with http://esoteric.voxelperfect.net/wiki/User:Taneb/XSLT_S_and_K 21:30:19 -!- Taneb has quit (Quit: TTFN). 21:31:36 -!- derdon has quit (Remote host closed the connection). 21:48:43 Type families does not seem to do everything. 21:49:39 It seems to accept type families in a constraint although they seem to don't work even though it is acceptable. 21:52:07 -!- CakeProphet has joined. 21:53:45 -!- CakeProphet has quit (Client Quit). 21:53:59 -!- CakeProphet has joined. 21:54:05 -!- CakeProphet has quit (Changing host). 21:54:05 -!- CakeProphet has joined. 21:58:00 -!- augur has quit (Remote host closed the connection). 21:58:00 -!- sllide has quit (Read error: Connection reset by peer). 22:00:31 no elliott, huh 22:02:44 is it bad that some of my dreams involve conversing in #esoteric? 22:02:57 am I dreaming right now? hello? 22:03:10 CakeProphet: if I said no, would you believe me? 22:03:29 ais523: if I believe you, will that make it any more true? 22:03:57 if I mandate conditionals, will they be upheld rigorously? 22:03:59 well, if you /are/ dreaming, and I convince you that you are 22:04:03 then you'll probably wake up 22:04:06 it's the most common result 22:04:10 ais523: oh I know I'm not dreaming. 22:04:15 :P 22:04:26 if you're dreaming, then probably I am too 22:04:28 -!- monqy has joined. 22:04:38 I find it is much easier to realize you are not dreaming than it is to realize you are. 22:05:16 even the most vivd dreams aren't like being fully awake. 22:05:32 and you have the cognitive faculty while awake to determine such things. 22:05:39 so how many of those times you've realized you were "not" dreaming were you actually wrong? can you even know? 22:05:46 so fucking you philosophy and your dream shit. 22:05:53 olsner: that's only ever happened to me with recursive dreams 22:05:53 I've been wrong about realizing I'm not dreaming 22:06:02 where I assumed I wasn't dreaming because I just work up 22:06:07 ais523: recursive dreams are awesome! 22:06:09 which turns out not to be an entirely reliable check 22:06:12 olsner: no they aren't 22:06:17 you go through your boring morning routine 22:06:18 I've just had one, it was hilarious 22:06:21 then have to do it all /again/ 22:06:25 olsner: sure can't 22:06:29 well, it's funny the first time 22:06:32 but gets old quickly 22:06:40 my recursive dreams don't involve morning routines, interestingly enough 22:06:44 but I am /not/ dreaming now, for sure. it may be hard to determine these things when you're dreaming, but not when you're actually awake. 22:07:01 unless my entire life has been a dream, I guess. 22:07:02 I usually wake up in a strange place but know what's going on 22:07:20 monqy: do you realise it's a recursive dream that time? 22:07:24 or only when you wake up a second time? 22:07:25 no 22:07:46 I think "nested" is a better term. 22:08:01 I don't think I'm not dreaming when I wake up 22:08:15 maybe it just doesn't occur to dream me 22:08:20 * CakeProphet is very bad at dreaming, truthfully. 22:08:21 the worst case would be some kind of fixpoint dream where you wake up in the dream you were waking up from 22:08:47 ... and you keep doing it the rest of your life 22:08:59 tonight I had a dream in which I had a series of dreams within that dream and I was describing them 22:09:00 most of my dreams are not very vivid. Sometimes they are. Sometimes they nest as well. 22:09:05 but most are very vaguely recalled. 22:09:25 olsner: you just need each dream to go twice as quickly, in realtime, as the previous one 22:09:40 ...Inception anyone? 22:09:42 once you go past the convergence point, you are now capable of thinking an infinite amount in finite time 22:10:02 I don't think the ratio was 2 though in Inception. 22:10:10 this strikes me as probably better than a singularity, because you can't trust a random AI, but you can probably trust olsner 22:10:16 CakeProphet: inception did not go deep enough ... into the subject of nested and recursive dreams 22:10:35 olsner: I was referring to the time stuff, as ais523 mentioned it. 22:10:41 * Phantom_Hoover → sleep 22:10:54 -!- Phantom_Hoover has quit (Quit: Leaving). 22:11:08 never seen inception. probably shjould. 22:11:18 monqy: it is not bad. 22:11:30 it's one of the few movies that made my brain hurt a little bit. 22:12:28 didn't make my brain hurt, but maybe I wasn't watching it thinkingly enough 22:13:06 occasionally I'd lost track of some detail and be slightly confused as to what was going on 22:13:16 until it returned to a previous dream. "oh right..." 22:14:02 what was going on was always moving into, out of or around inside a dream 22:15:59 -!- GreaseMonkey has quit (Quit: The Other Game). 22:17:08 olsner: uh true statement 22:20:15 Entertainment Weekly gave the film a B+ rating and Lisa Schwarzbaum wrote, "It's a rolling explosion of images as hypnotizing and sharply angled as any in a drawing by M.C. Escher or a state-of-the-biz videogame; the backwards splicing of Nolan's own Memento looks rudimentary by comparison."[ 22:20:30 I don't trust anyone from Entertainment Weekly to have actually followed what was going on in that moive. 22:20:39 thus the "rolling explosion of images" 22:21:24 Now, it cannot make type level programming in Haskell. Because, I try thing it failed 22:21:43 wat 22:22:19 CakeProphet: it cannot make type level 22:22:31 I see. 22:22:40 I recall walking out of the theater feeling as though I were in a dream 22:22:44 after watching that movie. 22:23:02 I have watched Inception movie. And then I said they have read Godel, Escher, Bach. My brother said no they did not do so. But, I wanted to make sure I checked, in Wikipedia, in fact one of the people did read that book. 22:23:58 oh good. 22:24:20 Did you read the book Godel, Escher, Bach? 22:24:49 I haven't. 22:26:22 According to Hollywood Reporter, both Brad Pitt and Will Smith were offered the role. 22:26:36 I don't think Will Smith would have been as good in that role. 22:26:56 he would do his Will-Smith-sad-face thing and it would ruin everything. :P 22:27:27 How do you make it in Haskell, that if instance GreaterThan t u => DoesNotDivide (Succ t) (Succ u); doesn't work, then it will try instance DoesNotDivide t (Subt u t) => DoesNotDivide t u; instead? 22:28:04 you.... don't 22:28:09 you don't don't do that. 22:29:35 Is there any way to make an extension in Haskell to make it to work? 22:29:49 you have typeclasses, and instances of such. if the type matches the instance declaration then it has an implementation of the methods. 22:30:03 there isn't any sort of re-routing or conditional logic involved. 22:30:15 zzo38: feel free. 22:31:38 GHC does allow overlapping instances and incoherent instances and so on. Sometimes it does it by specificness. But sometimes it should instead assume they are equivalent if defined?? 22:32:44 how would it go about resolving that? 22:41:40 zzo38: basically you can't make typeclass implications when the instance doesn't match. 22:41:50 it has to be true. 22:47:59 ...what, why did my date and time disappear 22:48:10 and why is there a large inaccessible hole on the panel where I cannot add things. 22:48:25 @localtime CakeProphet 22:48:34 lambdabot....... 22:48:42 rip :'( 22:48:44 monqy: NO I MUST FIX MY PANEL 22:49:16 01:49:43 22:49:19 when i checked 22:49:25 a few minutes ago 22:49:26 er 22:49:27 seconds 22:49:33 maybe a minute ago in a few more seconds 22:49:33 6:50 PM here 22:49:37 oh 22:49:39 but I CAN'T GET IT TO GO IN THE SAME PLACE 22:49:41 NOTHING WILL GO 22:49:44 THERE IS JUST A BIG UGLY HOLE 22:49:46 i checked your time it must be broken 22:49:54 my time is 1551 22:49:55 uh, no. 22:50:11 it is 6:50 PM aka 18:50 22:50:26 yeah but when i checked it it said 01:49:43 22:50:32 I have 3 time sources that agree with me. 22:50:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:50:36 oh wait no that must have been the server 22:50:51 oh I didn't use the right command 22:50:52 haha 22:50:52 :( 22:51:18 15:52:58 [freenode] CTCP TIME reply from CakeProphet: Thu Sep 8 18:51:57 2011 22:51:20 that's better 22:51:20 bah 22:51:22 this is bad. 22:51:31 just ctcp time yourself whenever you need it 22:51:40 you are missing the point completely. 22:51:45 that's the joke 22:51:54 I have a clock on my panel now 22:52:00 BUT IT IS. IN. THE. WRONG. PLACE. 22:52:05 how does that even happen 22:52:19 I don't know 22:52:28 my computer does this shit for some reason after restarts sometimes. 22:52:39 first my shutdown button disappeared... though I don't really need that one. 22:53:26 where is panel configuration stuff at? 22:54:08 it's not in gconf is it? 22:55:30 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.1/20110830092941]). 23:00:44 bam fixed. 23:01:05 something weird happened to the original clock app so I just manually removed it in gconf. 23:07:33 random youtube comment: "and I thought Finland was bad for making the moomins..........  :P" 23:09:04 The instance for DoesNotDivide doesn't work. OK, I have been told why it doesn't work. Does it mean there is some things missing from Haskell type system? Or, does it mean other thing instead? 23:09:28 -!- kmc has joined. 23:14:01 if by "missing" you mean "doesn't do what you want it to do" then yes. 23:14:25 though there are probably things that are actually missing... ask elliott I bet he knows. 23:16:51 -!- copumpkin has joined. 23:16:52 As far as I know there could be a lot of improvement that could be made in Haskell, including new kinds and new pragmas and new macros and other stuff 23:20:40 my stance is that nothing could ever be improved about Haskell it is perfect in every way. 23:20:55 CakeProphet: Without more-notation? 23:21:44 nothing. 23:22:25 man this code is going to be a pain in the ass to debug 23:22:33 maybe if I just stare at it long enough I'll find all of the bugs. 23:22:40 is this for your thing 23:22:46 no never. 23:22:57 I have no things. 23:23:00 no such thing 23:23:07 Is there some things in category theory that cannot be made in Haskell? 2011-09-09: 00:01:12 -!- Patashu has joined. 00:17:56 In Catholicism, the halting problem is believed to be unsolvable for infants who die before baptism. 00:19:00 well, it's unsolvable for most other TC systems... 00:22:06 Well, this is quite the opposite of atheinformatic common wisdom, which is that the halting problem is solvable for all humans. (doesHalt (x:human) -> true) 00:22:34 ah, I see 00:22:44 I read about Curry-Howard and how you can use it to make intuitionistic logic with Haskell. But how can you make Typographical Number Theory with Curry-Howard? 00:24:22 But still, even if you write the program in Haskell using intuitionistic logic, you still need to ensure all outputs are defined if the input is defined. Sometimes is difficult due to halting problem but you can make a subset that halts. It is still not complete, they could make up a PROVE pragma to do it? 00:25:23 And if there is no proof, use the ASSUME pragma. 00:29:55 -!- copumpkin has quit (Ping timeout: 260 seconds). 00:30:19 -!- copumpkin has joined. 00:48:24 -!- ive has quit (Ping timeout: 252 seconds). 00:52:37 -!- kmc_ has joined. 00:52:48 -!- nooga has quit (Ping timeout: 252 seconds). 00:54:27 -!- kmc has quit (Ping timeout: 252 seconds). 00:55:53 -!- kmc__ has joined. 00:59:30 -!- kmc_ has quit (Ping timeout: 250 seconds). 00:59:55 -!- zzo38 has quit (Remote host closed the connection). 01:02:17 -!- kmc_ has joined. 01:05:19 -!- kmc__ has quit (Ping timeout: 252 seconds). 01:06:52 -!- kmc_ has changed nick to kmc. 01:13:49 sam hughes is a bastard :( 01:21:42 quintopia, hmm? 01:25:57 the yawning tweet. elliott made me yawn over irc last night and i had to fight not to yawn reading that tweet 01:36:34 -!- cheater has quit (Ping timeout: 260 seconds). 01:41:40 -!- DH____ has quit (Remote host closed the connection). 02:15:32 -!- DH____ has joined. 02:22:22 honestly I've been using try almost as much as if 02:22:30 WHY PYTHON. 02:22:35 try's a better control construct all round 02:23:03 in fact, is try+recursion TC? my guess is yes 02:23:07 I guess it's just that exception hierarchies are annoying. 02:23:14 ais523: I believe we had a discussion about this once 02:23:15 although that's a bit wooly as it doesn't define what sort of data's allowed 02:23:25 a language that uses only exception handling with the ability for recursion. 02:24:02 also with some new constructs. Like a "lower" keyword to return to a previous exception level. :D 02:24:41 and exceptions would essentially be like ADT 02:26:48 the difficult part would be fitting IO into this model. 02:27:12 without adding something that is not strictly exception handling. 02:27:58 clearly we need an unthrow 02:28:06 which is a bit like RESUME NEXT from BASIC 02:28:10 only with exceptions instead 02:28:43 well I think that would similar to what lower does. 02:28:50 returns back to the original raise. 02:29:06 so you could have an implicit try around the entire program 02:29:23 that catches IO exceptions, and then lowers something back. 02:29:29 the lower would be the return value of the raise, perhaps? 02:32:33 sounds like coroutines 02:32:33 it would be similar to functions but backwards. :P 02:32:52 up and back down instead of down and back up. 02:34:45 -!- kmc has quit (Quit: Leaving). 02:35:56 -!- azaq23 has quit (Quit: Leaving.). 02:37:16 * CakeProphet will implement this when has a moment. 02:40:52 I think having a pattern matching construct along with recursion would allow it to be Turing complete? 02:41:55 -!- oerjan has joined. 02:42:05 otherwise I don't think you can branch. 02:42:40 oh wait nevermind you could via recursion. 02:42:57 and just a regular catch without any kind of special pattern matching. 02:45:59 -!- pikhq_ has joined. 02:46:31 00:17:56: In Catholicism, the halting problem is believed to be unsolvable for infants who die before baptism. 02:46:35 00:19:00: well, it's unsolvable for most other TC systems... 02:46:47 i am not entirely sure i want a TC system based on dying infants. 02:46:54 I don't want one either 02:47:16 well, it's a case of "I wouldn't buy such a system if I were offered one" 02:47:27 rather than "if such a system already existed, I wouldn't want it to be TC", which seems kind-of irrelevant 02:47:49 important clarification, that. 02:49:20 -!- pikhq has quit (Ping timeout: 260 seconds). 02:49:58 clearly we need an unthrow 02:50:14 i thought common lisp conditions were supposed to support that 02:50:19 -!- copumpkin has changed nick to pirateat41. 02:50:20 probably they do 02:50:29 the concept is a relatively obvious one, and not even particularly eso 02:53:23 :( 02:53:32 man you guys have such high standards. 02:55:11 now I'm trying to work out if "uncatch" is a sane and useful concept (outside the concept of Feather, where everything's sane by comparison and I have no idea what would be useful) 02:56:07 I believe an uncatch would negate a catch below it? 02:56:10 um isn't uncatch just rethrowing? although if you also have unthrow you'd want a new catch to be able to unthrow all the way back 02:56:35 I was thinking that it should work even after an unthrow 02:56:43 as in, you do throw; uncatch; 02:56:46 eek 02:58:09 ais523: i assume that would go up the catch chain until you hit something which _doesn't_ unthrow 02:58:29 I'm so confused now. 02:58:39 if you remembered a history of throws and catches it might not be so hard 02:58:50 and if there was no unthrow then it wouldn't get to run, so it would essentially be an ununthrow 02:58:54 err, I'm confused now too, and this is much less confusing than Feather 02:59:13 so we have rethrow = uncatch, and ununthrow which reverses an unthrow? 02:59:33 I don't see why you couldn't keep stacking un- prefixes forever and getting meaningful operations 02:59:36 ais523: actually i think it's more subtle than that 02:59:40 although whether they were /useful/ would be another matter 03:00:27 in a handler, when you have the option both to rethrow and to unthrow, there's the question of exactly _when_ you discard the unthrow possibility 03:00:48 especially because you also have the option to throw an unrelated exception 03:01:06 oh and the option of just exiting at handler level, which probably must discard the unthrow to make sense 03:01:41 I take it it doesn't make sense to throw one exception, throw an unrelated exception, then unthrow the first one? 03:01:48 and if it does, can you subsequently unthrow the second? 03:01:58 ais523: i was just thinking about that 03:02:06 you'd need an unthrow stack :P 03:02:20 so it's OK if you unthrow the second, then the first? 03:02:27 I'm beginning to think this is a bit like setjmp in C, with all the restrictions that has 03:02:36 and using continuations instead would be how you break the restrictions 03:02:47 heh 03:03:40 -!- pirateat41 has changed nick to copumpkin. 03:04:09 well 03:04:13 each exception would have its own unthrow stack 03:04:16 so, not a problem. 03:04:43 CakeProphet: er, it's when you mix exceptions you need an unthrow stack 03:05:14 oh, well then the exception would just have an unthrow pointer... 03:05:23 you unthrow the exception, control goes back to where it was thrown. 03:05:28 done. 03:06:01 -!- ive has joined. 03:06:12 CakeProphet: but we have the option of having an explicitly manipulatable unthrow stack which the other functions can be written in terms of... 03:06:28 wait, there are functions in this language? 03:06:29 :P 03:06:43 i didn't know we were discussing a particular language 03:06:45 This can probably be easily expressed with continuations. 03:07:07 Although, what continuation can be sensibly thrown is another question. 03:07:25 -!- Jafet has quit (Read error: Connection reset by peer). 03:08:03 -!- lambdabot has joined. 03:08:07 -!- Jafet has joined. 03:08:15 (1) perform a command while pushing current continuation to unthrow stack. the command may or may not do any throwing. (2) pop unthrow stack, discarding it. (3) pop unthrow stack, returning to continuation. 03:08:36 (4) throw an exception. 03:08:46 ...perhaps one that takes a replacement for whatever-value-caused-the-problem as its parameter. 03:08:54 then the _usual_ way to throw an exception would be combining (1) and (4) 03:09:03 Well, the stack is an implementation detail. 03:09:12 oh wait. this doesn't support uncatch. 03:09:14 not really sure it's necessary... 03:09:49 Jafet: actually i'm here mostly making the stack explicit in a vain hope of making the semantics understandable 03:10:15 throw/unthrow/catch is really really simple.. :P 03:10:36 uncatch I'm not too clear on. 03:10:37 but if there are enough options, you'd surely end up with enough power to explicitly manipulate the stack. 03:10:38 By "unthrow", I presume you mean "go back to where the exception occurred and continue". 03:10:43 yes. 03:10:43 Jafet: yeah 03:11:05 But how would you continue? An error just occurred. 03:11:13 ...they're not errors 03:11:22 Okay, which language is this 03:11:26 it isn't one. 03:11:28 not yet. 03:11:35 CakeProphet: IT'S NOT ENOUGH UNTIL YOU CAN DO PROLOG IN THE EXCEPTION SYSTEM 03:11:37 * CakeProphet is going to make basic implementation with throw/unthrow/catch 03:11:44 (including cut) 03:11:45 oerjan: UNECESSARY 03:11:49 But exceptions are usually used to signal errors, so you need some way to continue that doesn't cause the error again 03:11:54 I posit that the throw/unthrow/catch is easily 03:11:57 Turing complete. 03:12:16 fuck turing completeness 03:12:17 I suggest returning a continuation that replaces the thing that caused the error, if applicable 03:12:25 provided that catch is a recursive control flow statement. 03:12:37 Jafet: that's the idea, except it's not really a continuation. 03:12:54 just a.. value. an exception 03:13:02 you replace the throw with an exception 03:13:04 everything is exceptions. 03:13:11 which are, in my implementation, essentially ADTs 03:13:24 *future implementation 03:13:28 Jafet: note that common lisp actually _does_ support something like unthrow, afair 03:14:18 Jafet: presumably however, each type of exception would contain enough information to tell whether it could be safely continued from 03:14:38 I'm confused by CakeProphet already. That's good, right? 03:14:39 so probably fatal errors wouldn't have the option 03:14:51 well, fatal errors could just be pre-defined 03:14:59 Jafet: i haven't got around to reading him yet :P 03:15:01 and then if you unthrow: undefined behavior. 03:15:36 Just make it impossible to name the type of a fatal error, so the programmer can't ever handle one. 03:15:45 well, that's an option. 03:16:21 CakeProphet: note that all of this tends to be complicated if you have asynchronous exceptions and need to worry about exactly when to reinstall exception handlers 03:16:33 (and that's even without unthrow, i take) 03:16:42 ...asynchronous exceptions? 03:16:55 CakeProphet: ghc allows throwing exceptions into other threads :P 03:17:06 ah 03:17:08 (i don't think it allows unthrow though) 03:17:21 well, hmmm.. I'm sure something could be workd out. :P 03:17:28 that can be worried about later. 03:17:29 To unthrow, you'd have to wrap everything in the Cont type or something 03:17:41 Perhaps static typing should be left out of your project 03:17:43 ...I really don't see a need for explicit continuations. 03:17:52 CakeProphet: oh and the worry of when to reinstall handlers applies regardless 03:18:10 (what happens if your handler has an error) 03:18:35 same thing that happens in any other code 03:18:40 >_>? 03:18:45 I am not seeing the problem. 03:19:11 CakeProphet: um it's a common problem when actually _using_ exceptions handlers. 03:21:31 ...well when you throw an exception in a handler it would just rise up to the next handler. 03:21:47 Just make it impossible to name the type of a fatal error, so the programmer can't ever handle one. <-- erm i didn't mean fatal in the sense you couldn't handle them further up, just fatal in the sense you cannot reasonably continue from them. actually i'm not sure there is a real difference. 03:23:30 CakeProphet: yes but you might want to install a temporary handler for your handler. and then _still_ be able to unthrow the original. but i guess that can be worked out with ordinary control flow. 03:23:34 Every exception should be revertable! Design the language to enforce this. 03:23:53 Except, maybe, really really fatal errors. 03:24:14 ProgramWasStabbedToDeathException 03:24:24 CPUOnFireException 03:24:54 prepareWaterBalloonCatapult 03:25:06 see, you can recover from that. 03:25:10 O KAY 03:27:38 SIGKILL is really, really fatal in most Unices, as there's no way to block or handle it 03:27:57 oerjan: Java allows throwing exceptions at other threads too 03:28:03 but decided that was a bad idea after a while 03:28:15 heh 03:28:37 threads are for ninnies 03:41:28 Yeah, you should only use ucontext. 03:48:01 APPLICATION USAGE None. 03:48:20 pikhq_: man page disagrees with you 03:48:21 forget throwing exceptions at other threads, I want to throw exceptions across the network 03:49:30 posix/botnet.h bn_throw_exception 03:49:45 \o/ 03:49:45 | 03:49:46 |\ 03:51:27 hmm, sounds like another feature for my hypothetical INTERCAL IRC client 03:51:33 along with CTCP SWAPNICK 03:51:46 that basically just swaps the I/O handles so each client is now controlling the other's connection 03:53:46 haha 03:54:00 The "else" here seems idiotic to me. If I have statements A and B in my "try" block, and C in my "else" block, how does that differ from having A, B and C in the "try" block? —Preceding unsigned comment added by 192.91.171.42 (talk) 20:06, 16 March 2010 (UTC) 03:54:09 ...lol 03:54:25 how indeed 03:54:27 192.91.171.42 is perhaps not that smart. 03:54:53 else is like finally except it only runs on an exception? or? 03:54:58 does the else block, in whatever language was on that page, run if an exception isn't caught? 03:55:02 yes. 03:55:05 also, IP addresses starting 192 confuse me 03:55:06 Ruby and Python have it. 03:55:23 are there general-purpose 192 addresses as well as all the special-cased ones? 03:55:32 I have no idea. 03:55:50 but anyways, the difference is that the else clause does not trigger any of the exception handlers. 03:55:59 so that you don't catch anything you don't want to catch. 03:56:48 ah so it is run _only_ if no exception is raised 03:56:54 correct. 03:57:29 I'm actually surprised that very few languages have that. 03:57:32 or wait, what if there is one but no handler matches 03:57:37 though I suppose putting everything in the try block is mostly equivalent. 03:57:52 I don't believe Python allows try-else 03:58:21 the two forms are try-finally and try-except[-else-[finally]] 03:58:53 http://en.wikipedia.org/wiki/Exception_handling_syntax#Python 03:59:06 ...yes that's the article whose talk page I just read. 03:59:11 yup 04:01:34 you'll note that Perl 04:01:47 's exception handling system is absolutely silly. 04:02:02 also that ' is ridiculously close to return 04:02:15 wow, you have to eval {} for perl exceptions 04:02:27 well eval {} is a special case. 04:02:31 it's not quite the same as eval "code" 04:02:54 aah 04:03:05 eval { } is basically "run this and ignore errors" 04:03:22 but everything is parsed at compiletime 04:03:26 unlike eval "code" 04:03:51 $fail = not eval { 04:03:51 lol 04:04:03 So it's a syntactic oddity, not a semantic one? 04:04:13 I suppose. 04:04:26 the semantic oddity is weird scoping rules. as the article mentions. 04:04:31 you have to dynamically scope $@ 04:05:21 er... well, you don't always have to. 04:05:51 in any case I never use that. :P I've used eval once to import something that was entirely optional 04:06:22 in Perl most "error handling" is to ignore the error and return undef 04:06:53 close(FILE) || die "Could not close $file" 04:07:25 when would you not be allowed to close a file? 04:07:32 also the Haskell example looks a little bit ugly 04:07:43 Patashu: if it had already been closed I believe. 04:07:59 I don't understand the explicit type signatures... 04:08:08 that's silly though, it's not like a double free, it's not dangerous 04:08:41 >>> x = open ("test", "w") 04:08:41 >>> x.close() 04:08:42 >>> x.close() 04:08:44 Still an error condition. 04:08:45 Python apparently agrees. 04:08:57 and Python thinks everything is dangerous and should raise exceptions. :P 04:10:15 I have honestly never tried to close a file twice 04:10:19 so I have no idea what happens in most languages. 04:10:41 Double_file_closing_syntax 04:10:44 Gogogo 04:11:25 dClose = (>>) `on` hClose 04:11:56 not quite 04:11:57 Is there a language where you can type file.close().close() 04:12:38 :t on 04:12:39 forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c 04:13:04 dClose = join . (>>) `on` hClose 04:13:07 :P 04:13:45 I'm not so sure about that either 04:13:52 :t join . (>>) `on` hClose 04:13:54 Not in scope: `hClose' 04:13:56 oops 04:14:25 :t join . (>>) `on` (undefined :: String -> Maybe ()) 04:14:27 Occurs check: cannot construct the infinite type: b = b -> a 04:14:27 Probable cause: `>>' is applied to too few arguments 04:14:27 In the second argument of `(.)', namely `(>>)' 04:14:36 what I suspected 04:14:44 also, two issues 04:15:15 but I'm guessing you meant 04:15:18 :t join . ((>>) `on` (undefined :: String -> Maybe ())) 04:15:19 Couldn't match expected type `Maybe (Maybe ())' 04:15:19 against inferred type `String -> Maybe ()' 04:15:19 Probable cause: `on' is applied to too few arguments 04:15:25 you don't want composition 04:15:29 you want application 04:15:30 ??? 04:15:30 :t join ((>>) `on` (undefined :: String -> Maybe ())) 04:15:30 String -> Maybe () 04:15:35 ...right 04:16:35 ...well that was productive. 04:16:53 @pl test 04:16:53 test 04:17:17 @pl \x -> hClose x >> hClose x 04:17:17 liftM2 (>>) hClose hClose 04:17:28 also the Haskell example looks a little bit ugly <-- the nested catch'es because it is catching two different exception types. there's a function catches which takes a list of handlers but it requires them to be wrapped with Handler. 04:17:43 *is because 04:18:11 and also it's making Int and Double into exception types on the fly. 04:22:39 I don't understand the explicit type signatures... <-- oh right haskell uses type hackery to allow _any_ type to be used as an exception if it has an Exception instance. but this requires type signatures for catch to know which exceptions you are intending to catch. 04:23:23 @hoogle Control.Exception.catch 04:23:24 Control.Exception catch :: Exception e => IO a -> (e -> IO a) -> IO a 04:23:24 Control.Exception.Base catch :: Exception e => IO a -> (e -> IO a) -> IO a 04:23:24 Control.Exception catches :: IO a -> [Handler a] -> IO a 04:26:08 the Exception class is quite clever, it essentially allows you to make a new type a subtype of another for exception purposes. 04:26:47 (http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.0.0/Control-Exception.html) 04:28:56 oops <-- a tip when using :t with variables it doesn't know is to put ? in front of them to make them implicit parameters. 04:29:03 :t ?s + ?t 04:29:05 forall a. (?s::a, ?t::a, Num a) => a 04:30:01 * oerjan feels monologuing 04:30:36 this is just about the point when there would be a netsplit 04:48:13 !perl split net 04:49:21 -!- zzo38 has joined. 04:50:07 They said in live theatre that still picture photography is permitted, but video camera and tape recorder is not allowed. But, is shorthand allowed? 04:51:15 zzo38: it probably is not a big enough problem for them to care about it 04:52:51 If you learn shorthand, are you going to record a live show or a movie by shorthand? 04:53:18 And then, you can transcribe it into the computer when you go home. 04:53:45 -!- CakeProphet has quit (Ping timeout: 252 seconds). 05:27:25 -!- tiffany has quit (Ping timeout: 246 seconds). 05:40:35 -!- DH____ has quit (Read error: Connection reset by peer). 05:40:39 -!- DHeadshot has joined. 05:41:55 -!- CakeProphet has joined. 05:41:56 -!- CakeProphet has quit (Changing host). 05:41:56 -!- CakeProphet has joined. 05:46:28 http://www.barnesandnoble.com/s/Capital%20in%20Disequilibrium?store=ebook 05:46:28 -!- DHeadshot has quit (Read error: Connection reset by peer). 05:46:35 Just... the price disparity 05:46:40 For the same book 05:46:46 -!- DH____ has joined. 05:47:21 (Warning: mises stuff) 05:48:46 -!- MDude has quit (Ping timeout: 246 seconds). 05:50:03 !wacro 05:50:04 TCCDP 05:50:40 Turing-Complete Consensual Double Penetration 05:55:30 -!- Vorpal has joined. 05:59:49 > (+) <$> [1..10] <*> [1..10] 05:59:51 [2,3,4,5,6,7,8,9,10,11,3,4,5,6,7,8,9,10,11,12,4,5,6,7,8,9,10,11,12,13,5,6,7... 06:00:06 > (+) <$> [1..3] <*> [1..3] 06:00:07 [2,3,4,3,4,5,4,5,6] 06:00:46 > sort $ (+) <$> [1..3] <*> [1..3] 06:00:48 [2,3,3,4,4,4,5,5,6] 06:00:56 > sort $ (+) <$> [1..5] <*> [1..5] 06:00:58 [2,3,3,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,9,9,10] 06:01:35 oerjan: is there some sort of theoretical mathematics behind this? 06:02:45 > map length . group . sort $ (+) <$> [1..5] <*> [1..5] 06:02:47 [1,2,3,4,5,4,3,2,1] 06:02:55 CakeProphet: it's far too simple to be considered theoretical. 06:03:09 I mean is there some kind of property of abstract algebra. 06:03:14 also, anyone who has ever played a dice game with two dice should understand this... 06:03:34 :t (<*>) 06:03:35 forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b 06:03:39 ^ Hint 06:03:54 pikhq_: huh? 06:04:16 CakeProphet: look at a 5*5 square. consider the lengths of the diagonals. 06:04:36 "That's just what the Applicative [a] instance means, silly." 06:04:57 (chessboard style) 06:05:06 If you wanted to make a Haskell program as a HTML document (although I prefer TeX instead), you could use the

command in HTML for that purpose, I think. 06:05:22 <CakeProphet> it's not [a] that's applicative here. 06:05:31 <CakeProphet> oerjan: well, right, it makes intuitive sense. 06:05:37 -!- kmc has joined. 06:05:51 <pikhq_> :t (+) <$> [1..10] 06:05:51 <lambdabot> forall a. (Num a, Enum a) => [a -> a] 06:05:53 <CakeProphet> I was hoping maybe I could learn some general abstract nonsense. I guess not. :P 06:05:54 <zzo38> oerjan: Some game with two dice, is, backgammon. But I also played a chess variant using two dice to decide which kind of pieces you are allowed to move on your turn. 06:06:00 <pikhq_> I'm saying "it is". 06:06:13 <oerjan> CakeProphet: now if you were to sum _many_ such lists, each of form [0,1] - then you would have reinvented binomial distribution. 06:06:44 <Lymee> :t <$> 06:06:46 <lambdabot> parse error on input `<$>' 06:06:56 <Lymee> :t (<$>) 06:06:56 <oerjan> > map length . group . sort $ sum <$> replicateM 6 [0,1] 06:06:57 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 06:06:58 <lambdabot> [1,6,15,20,15,6,1] 06:07:01 <CakeProphet> pikhq_: oh right.. 06:07:14 <Lymee> > (+) <$> (+) 06:07:16 <lambdabot> Overlapping instances for GHC.Show.Show (a -> (a -> a) -> a -> a) 06:07:16 <lambdabot> arisin... 06:07:33 <CakeProphet> Lymee: composition 06:08:00 <pikhq_> Lymee: fmap on a->b is just (.) 06:08:07 <pikhq_> (and <$> is a synonym for fmap) 06:08:13 <Lymee> Ah =p 06:08:19 <pikhq_> (and in Caleskell, (.) is a synonym for fmap) 06:09:06 <CakeProphet> > (*) <$> [1..10] <*> [1..10] 06:09:08 <lambdabot> [1,2,3,4,5,6,7,8,9,10,2,4,6,8,10,12,14,16,18,20,3,6,9,12,15,18,21,24,27,30,... 06:09:27 <CakeProphet> oerjan: I was thinking of it as being similar to a cartesian product as that is what you would get if you substituted (+) for (,) 06:09:48 <CakeProphet> > (*) <$> [1..4] <*> [1..4] 06:09:50 <lambdabot> [1,2,3,4,2,4,6,8,3,6,9,12,4,8,12,16] 06:09:55 <oerjan> CakeProphet: oh, you are confused about what <*> means for lists? 06:10:04 <oerjan> i thought you were asking something beyond that. 06:10:05 <CakeProphet> no I know what it means. 06:10:07 <CakeProphet> ...I was. 06:10:12 <Patashu> once upon a time, I did a study on this pattern 06:10:17 <Patashu> it has an interesting self-similarity property 06:10:38 <oerjan> CakeProphet: well yes it is similar to a cartesian product. applying (+) to each element in it. 06:10:42 <Patashu> each extra time you're repeating the operation, it shifts an initial curve to higher derivatives 06:10:46 <CakeProphet> oerjan: something to do with properties of addition that are distinct from say, (,) or other binary operations. 06:10:48 <ais523> isn't that just a multiplication table? 06:10:54 <oerjan> (uncurry (+), technically) 06:12:24 <CakeProphet> oerjan: that give duplicate results in that way when you apply it to a cartesian product. 06:12:28 <oerjan> CakeProphet: oh, well that, (n+1) + (n-1) == n+n so the sum stays constant on each diagonal 06:12:45 <zzo38> Once I did try on paper trying to figure out (x ->) monad and it seem fmap = (.) 06:13:17 <oerjan> and so simply when you do length . group . sort you are simply calculating the length of each diagonal in a complicated way 06:13:34 <CakeProphet> oerjan: are there other operators that have this characteristic? 06:13:56 <CakeProphet> > (-) <$> [1..4] <*> [1..4] 06:13:58 <lambdabot> [0,-1,-2,-3,1,0,-1,-2,2,1,0,-1,3,2,1,0] 06:14:15 <CakeProphet> > sort $ (-) <$> [1..4] <*> [1..4] 06:14:16 <lambdabot> [-3,-2,-2,-1,-1,-1,0,0,0,0,1,1,1,2,2,3] 06:14:27 <CakeProphet> that one does. :P 06:14:34 <oerjan> CakeProphet: f(n+k, n-k) == f(n,n) means f(m,n) == f(m+n,0). so only things that are themselves functions of m+n 06:14:54 <CakeProphet> ah, okay. 06:15:00 <oerjan> CakeProphet: oh right, (-) gives the diagonals the _other_ way 06:15:27 <oerjan> (n+k)-(m+k) == n-m 06:15:29 <CakeProphet> oerjan: also it's a function of m+n 06:15:30 <CakeProphet> right 06:15:43 <oerjan> CakeProphet: um - 06:15:59 <oerjan> *um m-n isn't a function of m+n 06:16:34 <CakeProphet> m - n = m + (-n) ? or does that not count? 06:18:17 <Patashu> @oerjan: http://pastebin.com/D5JHEyeM 06:18:18 <lambdabot> Unknown command, try @list 06:18:23 <Patashu> thanks for helping me understand it 06:18:56 <oerjan> CakeProphet: no, that does not count. you are essentially doing a mirror reflection of the n direction, which as i said makes the diagonals go the other direction. 06:19:11 <CakeProphet> oh okay. 06:19:15 <oerjan> there is no function f such that m-n = f(m+n). 06:19:55 <CakeProphet> > (.&.) <$> [1..4] <*> [1..4] 06:19:57 <lambdabot> Ambiguous type variable `a' in the constraints: 06:19:57 <lambdabot> `Data.Bits.Bits a' 06:19:57 <lambdabot> ... 06:20:15 <CakeProphet> > (.&.) <$> ['a'..'d'] <*> ['a'..'d'] 06:20:16 <lambdabot> No instance for (Data.Bits.Bits GHC.Types.Char) 06:20:17 <lambdabot> arising from a use of `D... 06:20:25 <CakeProphet> er. 06:20:35 <CakeProphet> Haskell isn't C? 06:20:48 <CakeProphet> what do? 06:21:12 <oerjan> add a type signature 06:21:21 <oerjan> > (.&.) <$> [1..4] <*> [1..4] :: [Int] 06:21:53 <oerjan> er 06:21:57 <oerjan> > (.&.) <$> [1..4] <*> [1..4] :: [Int] 06:21:58 <lambdabot> [1,0,1,0,0,2,2,0,1,2,3,0,0,0,0,4] 06:23:23 <CakeProphet> > (.|.) <$> [1..4] <*> [1..4] 06:23:25 <lambdabot> Ambiguous type variable `a' in the constraints: 06:23:25 <lambdabot> `Data.Bits.Bits a' 06:23:25 <lambdabot> ... 06:23:27 <oerjan> CakeProphet: lambdabot apparently doesn't use extended defaulting, so if you include a class it doesn't know, it refuses to try. 06:23:27 <CakeProphet> oh rite 06:23:35 <CakeProphet> > (.|.) <$> [1..4] <*> [1..4] :: [Int] 06:23:36 <lambdabot> [1,3,3,5,3,2,3,6,3,3,3,7,5,6,7,4] 06:23:53 <CakeProphet> 3 seems to be the favorite. :P 06:24:25 <oerjan> erm s/know/know from the haskell report, where for some stupid reason the Random class seems to have been excluded in ghc, i think that's a bug/ 06:24:42 <fizzie> > xor <$> [1..4] <*> [1..4] :: [Int] 06:24:43 <lambdabot> [0,3,2,5,3,0,1,6,2,1,0,7,5,6,7,0] 06:24:46 <fizzie> (Just for completeness.) 06:24:54 <zzo38> Is there a such thing as (x ->) monad? 06:25:06 <oerjan> zzo38: yes, import Control.Monad.Reader 06:25:37 <oerjan> it's isomorphic to the Reader Monad, so defined there 06:25:58 <oerjan> > join (+) 2 -- lambdabot has it automatically imported 06:25:59 <lambdabot> 4 06:26:07 <zzo38> OK. 06:26:16 <oerjan> zzo38: also lambdabot's @pl command uses it heavily 06:26:39 <zzo38> I found what I figured out the definition of unit/join/fmap that I made up are in fact the correct ones and the same ones they use. 06:27:39 <zzo38> And in fact it does make sense. 06:28:14 <oerjan> zzo38: also yes fmap = (.) for that monad/functor, lambdabot even defines (.) = fmap as one of its "caleskell" modifications 06:28:16 <zzo38> But "join" really should be a member of the "Monad" class. It is stupid that they don't do it that way!! 06:28:39 <zzo38> oerjan: Yes, that is what I came up with. 06:29:51 <oerjan> zzo38: it's probably because Functor is younger than Monad and no one has implemented the needed subclass defaulting extensions to make that combine without being annoying 06:29:54 <Patashu> Hmmm. Since doing this over and over by the central limit theorem gets you a normal distribution, the normal distribution must be infinitely differentiable 06:30:27 <oerjan> Patashu: pretty sure it is 06:31:15 <zzo38> oerjan: Yes; if they did implement the subclass extensions, it would in fact work much better because you can define a monad in terms of unit/join/fmap or return/bind. 06:31:17 <Patashu> Basically, what I wanted to come up with about a year ago were equations for step 1 towards normal distribution, step 2, step 3, step 4... with step infinity being the normal distribution 06:31:24 <Patashu> So all continuous equations 06:32:11 <zzo38> So that you can have the classes required by constraints have implementations mentioned in both class declarations and in instance declarations for a class. 06:34:25 <CakeProphet> normal distributions are hungry. 06:34:28 -!- cheater has joined. 06:34:52 <CakeProphet> they want to assimilate everything into their normalcy. 06:35:48 <oerjan> Patashu: of course that it's infinitely differentiable is rather obvious from the explicit formula for its density function 06:35:57 <pikhq_> CakeProphet: ASSIMILATE! 06:36:08 <oerjan> even analytic 06:36:27 <Patashu> oerjan: yes, but I figured it out without needing to know that \o/ 06:36:31 <Patashu> math is beautiful and all that 06:36:51 <oerjan> yeah 06:39:22 <zzo38> One of my idea about Haskell, is to make ASSUME and PROVE pragma, which can be used with proofs using Curry-Howard but can have other uses, too, such as optimization or checking some properties of the program. 06:41:04 -!- clog has quit (Ping timeout: 260 seconds). 06:41:20 <CakeProphet> zzo38: such as monad laws? 06:41:58 <copumpkin> monad laws: https://github.com/copumpkin/categories/blob/master/Categories/Monad.agda 06:42:47 <zzo38> CakeProphet: Not what I meant, but it might be usable for such things possibly; I don't know. What I mean is that ASSUME means assume the property that for all defined inputs, there is a defined output, while the PROVE pragma checks this property if possible. 06:43:26 <zzo38> I don't know whether this allows checking monad laws, though. 06:44:03 <copumpkin> zzo38: checking things automatically is generally either not possible or in very restricted cases, computationally intractable 06:44:19 <copumpkin> automated theorem proving fields tend to be happy when they find "just" doubly exponential algorithms 06:44:22 <zzo38> (The other idea would be that ASSUME is completely ignored when optimization is turned off except that ASSUME is still used in checking with PROVE) 06:44:23 <CakeProphet> I'd imagine there's some kind of way to apply function definitions until you get from one end of the equality to the other, so to speak. 06:44:48 <CakeProphet> by syntax transformations, rather than explicit input checking. 06:44:49 <zzo38> copumpkin: Yes I know it is not always possible to check. But it is sometimes possible. 06:44:59 <copumpkin> how do you determine when it's possible?! :P 06:45:19 <copumpkin> but yeah, I support automated theorem proving for some things 06:45:21 <CakeProphet> copumpkin: you have a program impatiently press a button when he gets tired of waiting for the answer. 06:45:25 <copumpkin> I just don't think haskell is the place for it 06:45:28 <CakeProphet> s/program/programmer/ 06:45:33 <zzo38> For example, it uses no "undefined", it uses no loops, and all functions it calls have that property. 06:45:41 <zzo38> And it has no inexhaustive patterns. 06:45:56 <Patashu> if it doesn't have any of those it's not an interesting case 06:46:15 <copumpkin> you can restrict something to only do structural recursion 06:46:21 <copumpkin> except in haskell things are a lot trickier 06:46:23 <zzo38> It it *does* have those things, then you can have something for doing metatheorems. 06:46:27 <copumpkin> because you frequently deal with infinite data 06:46:46 <zzo38> Or just ASSUME it if you have proved it yourself and do not want to put it in the program. 06:46:58 <CakeProphet> so is syntax transformations not a viable option? 06:47:05 <copumpkin> zzo38: assume = unsafeCoerce 06:47:09 <copumpkin> or undefined :) 06:47:27 <copumpkin> according to the curry-howard correspondence 06:47:30 <zzo38> But ASSUME and PROVE only apply to the functions you tell it to do, not everything. 06:47:56 <copumpkin> how are they different from undefined? and I don't get the point of prove 06:48:13 <zzo38> copumpkin: Yes I have thought of that, too. It allows you to construct proofs in that way. But it won't do with what I proposed having ASSUME and PROVE pragmas. 06:49:02 <zzo38> So that {-# PROVE f #-} checks the property of the function f, and {-# ASSUME f #-} tells it to assume that f has that property for optimization purpose and for PROVE pragmas. 06:49:28 <copumpkin> {-# PROVE f 5 == 6 #-} ? 06:49:50 <copumpkin> you might be interested in http://pauillac.inria.fr/~naxu/research/escH-hw.pdf 06:49:59 <CakeProphet> {-# ASSUME funky #-} 06:50:02 <copumpkin> which does as much checking of haskell as I think is possible 06:50:27 <zzo38> copumpkin: No, I mean check the property, if possible, that the output will always be defined for all defined inputs of the function. 06:50:54 <copumpkin> PROVE doesn't sound like the right name for it, then 06:50:56 <copumpkin> TOTAL 06:51:07 <zzo38> (If it checks successfully, it can also do the same as ASSUME for purpose of optimization.) 06:51:25 <copumpkin> I'm not sure what you mean there 06:51:34 <copumpkin> can you give an example of a case where you'd use them? 06:51:45 <copumpkin> what would the properties look like? 06:51:50 <copumpkin> according to C-H, they're just types 06:53:37 <zzo38> But for the proof to be valid, all functions must have defined outputs for all defined inputs. Otherwise you can write undefined or whatever else like that. You also need to ensure no unsafe functions being used, too. 06:53:45 <copumpkin> oh sure 06:53:48 <copumpkin> that's what TOTAL means 06:54:01 -!- augur has joined. 06:54:06 <zzo38> You could have PROVE pragma can have local assumptions in parentheses, perhaps, if you want to make those assumptions locally. 06:54:18 <copumpkin> I think you should learn agda :) 06:54:30 <copumpkin> just to see what proofs and statements in a total language look like 06:54:35 <copumpkin> if nothing else 06:55:02 <CakeProphet> @src concatMap 06:55:03 <lambdabot> concatMap f = foldr ((++) . f) [] 06:55:12 <CakeProphet> @src foldr 06:55:13 <lambdabot> foldr f z [] = z 06:55:13 <lambdabot> foldr f z (x:xs) = f x (foldr f z xs) 06:56:32 <zzo38> Call it TOTAL if you do not like the name PROVE, but what name would you give ASSUME then? Would you keep it same or do differently? 06:56:51 <CakeProphet> :t ((++) . f) 06:56:52 <lambdabot> forall a (f :: * -> *). (Monoid a, SimpleReflect.FromExpr (f a), Functor f) => f (a -> a) 06:57:08 <CakeProphet> @unpl ((++) . f) 06:57:09 <lambdabot> (\ c -> (++) (f c)) 06:58:01 <copumpkin> zzo38: I still don't understand the point of ASSUME. You mentioned curry-howard, and the language of propositions in curry-howard is that of types. So I don't see why you need a separate construct for ASSUME instead of just a type. Can you explain what kind of propositions you'd put in it? 06:59:26 -!- ais523 has quit (Remote host closed the connection). 06:59:58 <CakeProphet> 2src (++) 07:00:01 <CakeProphet> @src (++) 07:00:02 <lambdabot> [] ++ ys = ys 07:00:02 <lambdabot> (x:xs) ++ ys = x : (xs ++ ys) 07:00:02 <lambdabot> -- OR 07:00:02 <lambdabot> xs ++ ys = foldr (:) ys xs 07:06:17 <CakeProphet> Monad axioms: 07:06:18 <CakeProphet> Kleisli composition forms 07:06:19 <CakeProphet> a category 07:06:26 <CakeProphet> a beautiful haiku from HaskellWiki 07:06:39 <zzo38> CakeProphet: Yes, I like that. 07:08:55 -!- augur has quit (Ping timeout: 260 seconds). 07:09:12 -!- ive has quit (Quit: leaving). 07:14:07 <zzo38> copumpkin: For example, you write a function you know has the properties required but the computer cannot check. Another use is optimization. And one more use is if you write functions but you are trying to check using assumptions; although in this case you might want local assumptions. 07:15:31 <copumpkin> I keep asking, what is the language of these properties? how do you check them, and how do you incorporate knowledge about things? So far you seem to be waving your hands and saying effectively "automated theorem proving" which is a large and complicated area 07:16:40 <copumpkin> is it just something you know to be true, that can be used as a rewrite rule? 07:16:41 <zzo38> You still have to write most of it yourself, but for example, it checks that you have no inexhaustive patterns, no unsafe functions, no undefined stuff, and that all functions it calls also have that property. 07:16:47 <copumpkin> because GHC already has those 07:16:50 <copumpkin> I thought that was PROVE 07:16:52 <oerjan> copumpkin: it is a required exercise in this channel to invent your own perfect system which looks entirely plausible as long as you keep it only in your head 07:16:53 <copumpkin> or TOTAL 07:17:00 <copumpkin> oerjan: I see 07:17:08 <zzo38> If you need more complicated then you could make up a metatheorems system 07:17:28 <copumpkin> anyway, I still think that before embarking on this journey you should learn a tiny bit of what's already out there 07:17:42 <copumpkin> you mentioned C-H but I'm not getting the impression it has anything to do with it, from what you've said so far 07:17:54 <zzo38> ASSUME just causes it to *assume* these things are true without checking, both for optimization and for proof. 07:18:01 <copumpkin> zzo38: RULE 07:18:23 <copumpkin> http://www.haskell.org/ghc/docs/latest/html/users_guide/rewrite-rules.html 07:18:30 <zzo38> I know about rewrite rules pragma. 07:18:37 <copumpkin> I'm asking, how is it different? 07:20:23 <zzo38> How is it the same? 07:20:46 <copumpkin> you haven't given me any examples of what an actual ASSUME pragma would even look like, so I don't know 07:21:25 <copumpkin> you're hand-waving and saying optimization :P I'm saying it sounds like you can provide equations that your definition satisfies and ask the compiler to optimize based on them, using rules pragmas 07:21:28 <zzo38> It would look like: {-# ASSUME f #-} just like that, to assume it for function f. 07:21:34 <copumpkin> assume WHAT? 07:21:43 <copumpkin> that it terminates? 07:22:06 <zzo38> copumpkin: Yes, that it terminates, has no undefined or unsafe, has no inexhaustive patterns. 07:22:30 <copumpkin> does fix (1:) terminate? 07:24:04 <zzo38> That is difficult. Is fix (1:) a valid proof for Curry-Howard? 07:24:19 <copumpkin> it's a proof of [Integer] :) 07:24:29 <Patashu> how could it not terminate? 07:24:40 <copumpkin> also, how do you deal with the paradoxes in Haskell that don't arise from recursion? 07:24:46 <copumpkin> Patashu: it produces an infinite list 07:25:05 <copumpkin> fix is basically the fundamental building block for non-termination 07:25:21 <zzo38> copumpkin: Paradoxes that arise from anything have those kind of things disallowed in a PROVE and assumed that they don't have them in an ASSUME. 07:25:29 <zzo38> Probably "fix" would be disallowed in a PROVE. 07:25:36 <copumpkin> sure 07:25:37 <zzo38> But I don't know a lot about it for sure. 07:25:41 <copumpkin> but x = 1:x 07:25:45 <copumpkin> which is the same as fix (1:) 07:25:59 <copumpkin> that is allowed in agda, for example, but only if your list is codata 07:26:05 <copumpkin> it's productive corecursion 07:26:08 -!- nooga has joined. 07:26:11 <zzo38> copumpkin: That is also recursion because it refers to itself, which I think would also be disallowed 07:26:32 <copumpkin> almost all interesting programs will have some form of recursion in them 07:26:43 <copumpkin> theorem provers force you to write structural recursion usually 07:26:53 <copumpkin> because it's clear that they terminate 07:26:57 <zzo38> That is, "fix" is disallowed unless you specifically allow it with {-# ASSUME fix #-} or with a local assumption. 07:27:55 <zzo38> copumpkin: Yes, you could have some that are clear to terminate; you might also be able to have a metatheorems system to write your own proofs of termination and nonparadoxes 07:28:10 <copumpkin> why even bother doing this in haskell though? 07:28:21 <copumpkin> the language of those proofs is going to be a completely different language 07:28:27 <copumpkin> in agda, you get it as your basic language 07:28:34 <copumpkin> in haskell, also 07:28:38 <zzo38> (You cannot do this more than one level though; I think Godel's Theorem or whatever prevents it) 07:28:42 <copumpkin> what is the benefit of guaranteed terminating functions? 07:29:26 <CakeProphet> copumpkin: what makes it clear? Are they explicitly typed so that it can be determined that they terminate at compiletime? 07:29:29 <zzo38> Of course not all functions have to be; your program can contain such functions just fine. But to check them with these kind of pragmas it would not work if you have things the computer won't check 07:29:54 <copumpkin> CakeProphet: yes, but what makes it clear is that there's a (t least one) data constructor being consumed for every recursive call 07:29:56 <zzo38> That is, you only use the pragmas on some functions, not all of them. 07:30:12 <copumpkin> CakeProphet: for example f (x : xs) = blah (f xs) is fine 07:30:15 <CakeProphet> copumpkin: ah so no laziness here. 07:30:20 <copumpkin> f (x : xs) = blah (f (x : xs)) is not 07:30:25 <copumpkin> CakeProphet: no, there can be laziness 07:30:37 <copumpkin> whether it's lazy or not is an implementation detail 07:30:51 <copumpkin> zzo38: I mean, what kind of benefit does annotating functions this way give you? 07:31:38 <CakeProphet> copumpkin: ...but that wouldn't terminate for a lazy infinite list. 07:32:02 <copumpkin> CakeProphet: yes, there's an explicit separation between data (finite things) and codata (potentially infinite things) 07:32:09 <zzo38> copumpkin: In a proof program, to make the compiler check your proof. In other programs, to use with local assumptions to check certain properties locally. 07:32:15 <copumpkin> CakeProphet: and the safeness conditions are different for them 07:32:20 <CakeProphet> ah 07:32:28 <copumpkin> zzo38: but your language for writing proofs is horrible, in haskell 07:32:42 <copumpkin> I've written proofs about basic natural arithmetic in haskell and it's really painful 07:32:58 <copumpkin> proving anything remotely useful is completely out of the question 07:33:04 <copumpkin> especially since we don't have dependent types 07:33:05 <zzo38> copumpkin: Really? It seem, if you have the (x ->) monad then you can use do-notation. 07:33:21 <copumpkin> I don't follow :) 07:34:27 <CakeProphet> I do believe you could prove the monad laws through a combination of step-by-step syntactic transformations and pattern matching. 07:34:35 <CakeProphet> for an individual instance 07:34:52 <zzo38> And it automatically gives you the fantasy rule if you do that too, I think. 07:35:19 <CakeProphet> return a >>= f = concatMap f [a] = foldr ((++).f) [] [a] = ... 07:35:42 <copumpkin> zzo38: for example 07:35:44 <oerjan> do-notation in the (x ->) monad as a replacement for the decision theorem, check. 07:35:45 <copumpkin> say you just wrote addition 07:35:52 <copumpkin> oerjan?? 07:36:15 <copumpkin> zzo38: so you just defined (+). Now you want to prove that it's commutative. But first you must state that it's commutative. How do you do that? 07:36:45 <oerjan> copumpkin: the (x ->) monad could sort of work as a way to hide assumptions in your proof terms... 07:36:55 <oerjan> i think. 07:36:59 <copumpkin> except your proof terms are all trivial 07:37:05 <zzo38> oerjan: What is decision theorem? Sorry I don't know what that is? 07:37:51 <oerjan> zzo38: it's a metatheorem of logic with says that if you prove B from assumptions A1,A2,... then you can prove A1 -> A2 -> ... -> B 07:38:13 <copumpkin> anyway 07:38:19 <zzo38> copumpkin: I don't know, but I do know how to write it in TNT. But how can you make TNT with Curry-Howard? I don't know that either. That is why I want to learn. 07:38:21 <copumpkin> you'd state your commutative theorem 07:38:22 <oerjan> and i think you could sort of extract one of the A's into an (x ->) monad 07:38:31 <copumpkin> forall x y. x + y == y + x 07:38:45 <copumpkin> that would be your proposition to prove 07:39:14 <CakeProphet> zzo38: I believe you need toluene, sulfuric acid, and nitric acid 07:39:20 <copumpkin> that kind of type can only be awkwardly translated to haskell 07:39:23 <copumpkin> because it's dependent 07:39:29 <CakeProphet> zzo38: I'm not sure if Curry-Howard will help you with acquiring those things though. 07:39:43 <copumpkin> and the only place you can depend on parameters in haskell is for type-level parameters 07:39:50 <copumpkin> which means your addition needs to be over type-level naturals 07:39:51 <zzo38> TNT here is short for Typographical Number Theory, though. 07:39:58 <copumpkin> and that needs to be type-level equality 07:40:02 <zzo38> copumpkin: I have done type-level natural numbers. 07:40:21 <copumpkin> zzo38: that's fine. Do you know what a proof of that would look like? 07:40:37 <copumpkin> you'd proceed by induction over one or both of the arguments 07:40:42 <copumpkin> except you can't do that in haskell 07:40:46 <copumpkin> because they're types 07:40:54 <copumpkin> so you need to hack it in with a typeclass 07:41:05 <zzo38> I do know what a proof of it looks like in TNT. 07:41:12 <copumpkin> forall x y. (Nat x, Nat y) => x :+ y :== y :+ x 07:41:21 <copumpkin> that's what the actual statement would look like 07:41:36 <copumpkin> proofs of simple things like commutativity in haskell can be done 07:41:42 <copumpkin> but they're proofs over things people don't typically work with 07:41:47 <copumpkin> type-level naturals 07:41:48 <zzo38> And I have tried using classes too. But, it seems some things it will ignore anyways 07:42:02 <copumpkin> when I write a program I'm not writing a list of type-level numbers 07:42:07 <copumpkin> I'm writing a value-level list 07:42:13 <copumpkin> and haskell gives me no way to say anything about that list 07:42:22 <copumpkin> (except very slightly with GADTs) 07:42:53 <copumpkin> the reason anyone who cares about writing proofs uses dependent types is that they let you state and prove most things you care about in your program 07:43:00 <copumpkin> since you _can_ actually make statements about values 07:43:06 <copumpkin> that's why I keep pushing you towards agda :P 07:43:17 <copumpkin> that also checks for you that all your functions terminate 07:43:21 <copumpkin> and warns you if it can't see that they do 07:43:30 <copumpkin> so you can still write functions that don't obviously terminate 07:43:45 <copumpkin> but by default it checks 07:44:29 <CakeProphet> does a brainfuck interpreter obviously terminate? :P 07:44:33 <copumpkin> no 07:44:34 <CakeProphet> that would be pretty amazing if it did. 07:44:54 <copumpkin> there's no (obvious) succinct way to state a checkable termination condition 07:45:01 <CakeProphet> copumpkin: so wait, adga /can't/ solve the halting problem? 07:45:04 <CakeProphet> why do I want it then? 07:45:10 <copumpkin> ? 07:45:14 <monqy> ? 07:45:17 <CakeProphet> :? 07:45:19 <zzo38> I did make type-level natural numbers using type families. 07:45:19 <copumpkin> terminating agda isn't turing-complete 07:45:29 <copumpkin> it's conservative 07:45:45 <copumpkin> it might warn you that a terminating function doesn't terminate because its simple condition isn't accurate 07:45:56 <copumpkin> but it won't ever decide that a non-terminating function does terminate 07:46:32 <copumpkin> but because of that, you can trust proofs in it 07:46:48 <copumpkin> it also makes you realize how overrated turing-completeness is 07:47:40 <zzo38> That is why you don't want Agda. But you might want to use some of their features in Haskell, but not always. However there are things neither of these have but then there can be other extensions, including type families and other stuff too. 07:47:56 <copumpkin> what is why you don't want it? 07:48:18 <copumpkin> I actually think agda's default is the better one 07:48:23 <zzo38> There could be some way converting between type-level programming and value-level programming, probably with some restrictions. 07:48:45 <zzo38> copumpkin: Are you sure? I don't agree but that is just my opinion. 07:49:03 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 07:49:06 <copumpkin> why do you disagree? 07:49:16 <copumpkin> I'm not even sure what you dislike about it? :P 07:49:30 <zzo38> In most cases you do not want such restrictions. 07:49:37 <copumpkin> as I said 07:49:44 <copumpkin> all it does is warn you if you don't meet them 07:49:51 <copumpkin> it doesn't stop you from writing such functions 07:50:31 <copumpkin> and regardless of whether you think it's practical 07:50:37 <copumpkin> if you want to talk to people about proofs 07:50:46 <copumpkin> they're not going to take you seriously if you don't understand how proofs work :) 07:50:50 <copumpkin> and what is needed to construct them 07:50:58 <zzo38> But if you have a PROVE pragma like I described, it would check other functions it calls, too, not necessarily all cases of those other functions. (And it would be error rather than warning, allowing you to speed up the compiler, as well as a few other things.) 07:51:19 <copumpkin> yes, but _what_ can you prove in haskell? 07:52:02 <zzo38> I do have a proof in a book on the table in front of me, of commutative addition, in TNT. 07:52:06 -!- oerjan has quit (Quit: Later). 07:52:10 <copumpkin> its type system isn't expressive enough to even state, let alone prove anything that might be useful to an optimizer 07:52:16 <copumpkin> TNT is not haskell 07:52:32 <zzo38> One thing I want to learn is to be able to make TNT with Curry-Howard if there is some way. 07:52:53 <copumpkin> I think you're missing a key part of this 07:53:12 <copumpkin> you can't write forall or exists in haskell 07:53:24 <copumpkin> its type system doesn't allow it 07:53:39 <copumpkin> that's in fact the main distinguishing characteristic between its type system and agda's 07:53:51 <zzo38> O, I thought you could make up some things with it somehow 07:54:14 <copumpkin> you can, but by hacking at the type level, and doing so is extremely painful and indirect 07:54:27 <copumpkin> but most things people care about aren't at the type level 07:54:38 <copumpkin> if I want to say a list is sorted 07:54:44 <copumpkin> or addition is commutative 07:54:52 <copumpkin> or anything more interesting than that 07:54:54 <copumpkin> I need to say forall 07:55:06 <copumpkin> forall numbers x and y, x + y == y + x 07:56:02 <copumpkin> that forall gives you basically boundless power to state theorems 07:56:16 <copumpkin> and makes the type system simpler in many ways 07:56:23 <copumpkin> and more complicated in many others 07:56:35 <copumpkin> anyway, gotta sleep now 07:56:47 <copumpkin> but if you want something like haskell but with more type-level goodness 07:56:59 <copumpkin> check out http://lambda-the-ultimate.org/node/4088 07:57:31 <zzo38> OK I will look 08:05:17 <zzo38> GHC has GADTs, type families, and other stuff, too. I was making preprocessor for Haskell, which does things including anonymous macros and other features, maybe I can put some of these kind of type-level stuff too. However, note this program does not accept layout mode and I do not plan to add it (although you can add it in yourself if you want to, or do whatever else you want to it) 08:06:58 <zzo38> Such as, if you write 3 in a type context it will replace it with (Succ (Succ (Succ Zero))) 08:15:42 -!- zzo38 has quit (Remote host closed the connection). 08:50:04 <CakeProphet> Python topic line says "NO LOL" 08:50:09 <CakeProphet> I wonder if they enforce that. 08:50:13 <CakeProphet> s/Python/#python/ 08:51:18 <Jafet> Yes. 08:51:38 <Jafet> It raises the channel mean IQ, if only by a little. 08:52:09 <fizzie> "NO LOL | NO PROJECT EULER | ..." it said when I /list'd few weeks ago to pick some new channels. 08:52:29 -!- clog has joined. 08:52:34 <CakeProphet> Jafet: lol 08:52:44 <fizzie> Strange things to prohibit, lol. 08:53:32 <Jafet> Not really; python is full of lol. 08:53:37 <CakeProphet> More proof that pythonistas are actually jerks, lol. 08:56:19 <cheater> yes they do 08:56:33 <cheater> if you go in there and say LOL you get banned after 1 warning 08:56:43 <fizzie> http://pound-python.org/ "Our tireless moderators ensure that disruptive conversations and people are removed from the channel quickly and with a minimum of fuss. -- Most notably, we don't tolerate use of "LOL" or other forms of 'chatspeak'." 08:56:50 <Jafet> Ah, cheater would be the one to know the details. 08:57:10 <cheater> i've been around 08:57:20 <CakeProphet> wow that's hilarious 08:57:23 <cheater> yes 08:57:24 <CakeProphet> I might actually have to lol. 08:57:24 <cheater> it is 08:57:30 <CakeProphet> perhaps I will rofl 08:57:36 <cheater> and they are like very fucking adamant about it 08:57:42 <cheater> it's like LOL killed someone's parent 08:57:43 <cheater> s 08:57:44 <Patashu> oh god. not even lol? 08:57:45 * Patashu cries 08:57:47 <cheater> yes 08:58:06 <Patashu> goon project: let's all go in and say 'lol' simultaneously 08:58:12 <monqy> do they permit hehe or haha or snickers or chuckles 08:58:52 <fizzie> No forms of hilarity at all. Python is serious business. 08:59:38 <CakeProphet> I am in Python right 09:00:14 <CakeProphet> but I'd rather not get band as I have a vhost which would make it permanent on this nick. 09:00:14 <monqy> I don't think I;ve ever heard anything good about #python 09:00:27 <CakeProphet> monqy: probably because I've been bashing it nonstop for the past few days. 09:00:35 <CakeProphet> and probably because you're in #esoteric a lot 09:00:45 <fizzie> But the website says you get personalized service and everything. 09:01:05 <monqy> of course they'd praise themselves 09:01:12 <monqy> it doesn't help 09:05:19 <CakeProphet> help what help 09:05:40 <monqy> help 09:05:46 <monqy> . 09:06:42 <CakeProphet> bash: .: filename argument required 09:06:43 <CakeProphet> .: usage: . filename [arguments] 09:07:29 <monqy> . 09:07:54 <CakeProphet> irp: fatal give a shit exception 09:08:12 <monqy> oops 09:17:04 <nooga> https://gist.github.com/1205816 looks bad 09:29:41 -!- derrik has joined. 09:31:17 -!- derdon has joined. 09:40:55 -!- derrik has quit (Ping timeout: 252 seconds). 10:37:37 -!- monqy has quit (Quit: hello). 10:39:50 -!- Phantom_Hoover has joined. 11:02:51 -!- derdon has quit (Remote host closed the connection). 11:25:11 -!- sllide has joined. 11:51:59 -!- derrik has joined. 11:52:59 -!- derrik has quit (Client Quit). 11:53:10 <CakeProphet> which is what I'm currently doing. 11:53:55 -!- derrik has joined. 11:59:32 -!- derrik has quit (Ping timeout: 252 seconds). 12:01:39 -!- pikhq has joined. 12:01:59 -!- pikhq_ has quit (Ping timeout: 260 seconds). 12:16:45 <nooga> which is 12:41:01 -!- monqy has joined. 12:41:55 <nooga> aaaaaaaaaaaaaaa 12:42:39 <monqy> hi 12:53:31 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 13:33:28 <copumpkin> wow :) 13:38:02 <monqy> hhehe that paste thing 13:42:31 -!- DH____ has quit (Remote host closed the connection). 13:43:04 <nooga> it's not hehehe, it's AAAAAAAAAAAA 13:44:13 <nooga> the worst thing is T before the Point and xx->method(xx,... 13:44:21 <nooga> otherwise it would be quite nice 13:44:59 <monqy> it almost looks like something I would do were I trying to do awful things in C to make boring things more amusing maybe 13:45:21 <monqy> almost 13:45:41 <monqy> by looks I mean "is in the style of" 13:45:48 <nooga> uhum 13:46:04 <monqy> as I would most likely go about it a bit differently 13:46:55 <nooga> then check this out: http://stackoverflow.com/questions/351733/can-you-write-object-oriented-code-in-c 13:46:58 <nooga> :D 13:48:08 <nooga> i'm coding for bare metal now and i would like to use some basic OO style 13:48:19 <monqy> naturally I'm more interested in functional c 13:48:19 <nooga> porting Objective-C runtime is not worth it 13:48:25 <nooga> and I hate C++ 13:48:34 <nooga> monqy: oh, that too 13:48:41 <nooga> clang has blocks! 13:48:49 <nooga> but they need a runtime ;/ 13:56:37 <fizzie> That sort of thing also hangs one function pointer/method to each object of a "class", bloating them by quite a lot, since they're going to be identical for all objects. The syntax with a separate vtbl is even uglier, though, something like "xx->vtbl->method(xx, ...)". 13:56:56 <nooga> yeah 13:57:01 <nooga> there should be vtable 13:57:17 <nooga> but then again call syntax gets uglier 13:58:22 <fizzie> You can do some sort of an equally ugly macro to rewrite CALL(obj, method, arg1, arg2, ...) into obj->vtbl->method(obj, arg1, arg2, ...). (Or just write C.) 13:58:48 <nooga> that's right 14:03:52 <nooga> another option is to take C's yacc definition and code every goddamn semantic rule + add your own few 14:04:02 <nooga> then use this as a preprocessor 14:16:42 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:17:31 <nooga> or develop new language that compiles to C 14:26:24 -!- azaq23 has joined. 14:41:09 <nooga> sounds like fun 14:42:12 -!- copumpkin has joined. 14:42:17 <Gregor> You don't reaaaaally need to code every semantic rule, just the AST, and make them all compile down into themselves by default. 14:43:26 <Gregor> You could use Fythe :P 14:46:05 <nooga> i target bare metal since i'm writing an experimental kernel 14:47:35 <Gregor> I just meant you could use Fythe as the engine for a C+whatever->C translator 14:50:45 <nooga> I've just read the documentation 14:50:54 <nooga> but i think it's not enough ;f 14:51:03 <monqy> what documentation 14:51:51 <Gregor> Yeah, what documentation? :P 14:52:20 <nooga> the pdf file You provided on the plof.org :D 14:52:49 <Gregor> *fythe.org 14:53:05 <Gregor> Yeah, I'm not so great with documentation X-P 14:53:39 <Gregor> Anyway, one of these days I'm going to write GGGGCCCC (GGGGC-C-to-C-Compiler) in Fythe ... but until then, take my "recommendations" as mostly the blathering of a madman. 14:54:52 <nooga> GGGGC ? 14:55:17 <Gregor> Gregor's General-purpose Generational Garbage Collector 14:56:07 <Gregor> It's a precise GC for C (and because it's precise, it requires the user to do a bunch of boilerplate to make sure things never overlap improperly) 14:56:38 <Gregor> Erm, s/overlap improperly/aren't visible to the GC/, or something like that :P 14:56:42 <Gregor> Weird attempt at phrasing :P 14:57:02 <Gregor> Point is, it requires boilerplate, so I was thinking of making a C->C compiler that just injects the boilerplate for you. 15:06:31 <nooga> oh 15:06:52 <nooga> sounds really nice 15:08:02 <nooga> but I still got this : https://gist.github.com/1206470 :D 15:09:01 <monqy> yikes 15:09:05 <nooga> it parses C. The thing is i don't know yacc tricks enough to make it output the input without writing much 15:11:21 <olsner> Gregor: haha, GGGGCCCC is a very good name 15:12:07 -!- MDude has joined. 15:18:29 -!- FireFly has joined. 15:40:36 -!- tiffany has joined. 15:50:27 <Gregor> olsner: I'm pretty proud of it :P 16:27:03 -!- elliott has joined. 16:27:11 <Phantom_Hoover> http://powdertoy.co.uk/ 16:27:17 <Phantom_Hoover> help where is my life going 16:27:26 <Phantom_Hoover> i'm sure there are things that aren't this 16:27:31 <Phantom_Hoover> but i don't know what they are 16:27:43 <elliott> hi 16:27:48 <elliott> oh falling sand 16:27:52 <Phantom_Hoover> yes 16:27:55 <Phantom_Hoover> except 16:27:58 <Phantom_Hoover> with nukes 16:30:48 <Phantom_Hoover> And CAs which can be used for heat. 16:37:03 <Gregor> nooga: Incidentally, if you read the in-progress Fythe spec, can you tell me where it was most ridiculously confusing? :) 16:40:16 <elliott> 21:30:15: <Taneb> I leave you with http://esoteric.voxelperfect.net/wiki/User:Taneb/XSLT_S_and_K 16:40:23 <elliott> <s><k/><k/></s> ain't right 16:40:40 <elliott> <<s><k/></s>><k/></<s><k/></s>> 16:40:43 <elliott> MUCH BETTER 16:41:31 <elliott> `addquote <ais523> this strikes me as probably better than a singularity, because you can't trust a random AI, but you can probably trust olsner 16:41:36 <HackEgo> 642) <ais523> this strikes me as probably better than a singularity, because you can't trust a random AI, but you can probably trust olsner 16:41:44 * elliott decides to briefly worry that ais was serious. 16:46:16 <elliott> 22:29:49: <CakeProphet> you have typeclasses, and instances of such. if the type matches the instance declaration then it has an implementation of the methods. 16:46:16 <elliott> 22:30:03: <CakeProphet> there isn't any sort of re-routing or conditional logic involved. 16:46:19 <elliott> CakeProphet: You are wrong. 16:52:50 <elliott> 00:17:56: <Gregor> In Catholicism, the halting problem is believed to be unsolvable for infants who die before baptism. 16:52:50 <elliott> 00:19:00: <ais523> well, it's unsolvable for most other TC systems... 16:52:54 <elliott> ais considers humans tc? 16:53:08 <Gregor> elliott: Ridiculous, I no. 16:53:13 <Gregor> >_< 16:53:14 <elliott> I no too. 16:53:15 <Gregor> elliott: Ridiculous, I know. 16:53:17 <elliott> [asterisk]two 16:53:31 <Gregor> Since when am I so terrible at English :'( 16:54:00 <elliott> Saints wind ham eye sow terrible add English? 16:54:06 <elliott> Couldn't think of anything for terrible or English :( 16:54:28 <Deewiant> tearable 16:54:43 <elliott> Thanks 16:54:46 <Gregor> Tearable at ink-lash 16:54:48 <elliott> X-D 16:54:52 <elliott> That's not even a word. 16:55:01 <elliott> Saints wind ham eye sow tearable add ink lash? 16:55:03 <elliott> BEAUTIFUL 16:55:06 <Gregor> I will give you two lashings every time you claim that "lash" isn't a word. 16:55:16 <elliott> Lash is a word, ink is a word, I'm sceptical of ink-lash 16:55:33 <Gregor> It's hyphenated, it's referring to a lashing with ink :P 16:55:49 <Gregor> If I take a whip and dip it in ink, then lash you with it, that's an ink-lash. 16:55:59 <elliott> The worst kind of lash. 16:55:59 <pikhq> elliott: Well, the combination of humans and data storage definitely is. Without data storage, the system is comically restricted. 16:56:04 <pikhq> I mean, jeeze, human memory *sucks*. 16:56:12 <elliott> pikhq: you have infinite data storage? ok 16:56:19 <pikhq> elliott: Of course. 16:56:35 <Gregor> pikhq: We were referring to individual humans, not groups. 16:56:42 <Gregor> Individual humans are plainly not TC. 16:56:43 <elliott> 03:10:38: <Jafet> By "unthrow", I presume you mean "go back to where the exception occurred and continue". 16:56:51 <elliott> you guys realise languages already have this? 16:57:04 <Gregor> For instance, C+POSIX :P 16:57:07 <elliott> IIRC Ruby lets you "continue" from an exception handling clause, but I may be wrong 16:57:10 <pikhq> Gregor: Sure they are. They can simulate certain simple UTMs just fine if you give them an infinite paper spool and an infinite pen. 16:57:14 <elliott> Common Lisp obviously has it 16:57:24 <Gregor> pikhq: halts (x:human) -> true 16:57:25 <pikhq> elliott: What, don't you shop at the Frictionless Pully Store, fine purveyor of physical impossibilities? 16:57:33 <pikhq> Gregor: Oh, fine, *and immortality*. 16:57:39 <Gregor> pikhq: So, not human :P 16:58:14 <pikhq> Gregor: I didn't realise "mortal" was part of the definition of "human". 16:58:33 <elliott> An immortal human with infinite storage capability 16:58:41 <elliott> Find me a transhumanist who'd say "oh, well that's just a bloody HUMAN". 16:59:26 <pikhq> The infinite storage capability here is clearly external. 16:59:38 <pikhq> I'm specifying an infinite paper spool and an infinite pen. 17:00:21 <elliott> <pikhq> I have no idea what the Chinese Room argument is. 17:00:29 <elliott> <pikhq> And/or, am stupid enough to buy it. 17:01:02 <pikhq> Okay, fine, I'm just being completely and utterly silly. 17:01:24 <pikhq> And no, I don't buy the Chinese Room argument. It's a bunch of stupid wanking. 17:03:10 <nooga> Gregor: first of all I would add really simple, but complete, example of small language 17:04:13 <elliott> Specifications should not include examples. 17:04:43 <Gregor> Well, the Fythe spec is wildly incomplete anyway, I was more concerned about whether what little is already there makes any sense :P 17:05:05 <Gregor> nooga: That being said, BOOM: https://bitbucket.org/GregorR/fythe/src/tip/fythecore/fml.fythe 17:05:46 <Gregor> (Down to line 283 is the language, beyond that is a small standard library written in it) 17:06:12 <nooga> great 17:06:15 <pikhq> elliott: RFCs often do. 17:06:24 <elliott> RFCs are just requests for comment :P 17:06:32 <pikhq> Admittedly, RFCs aren't so much "formal specs" as they are "brief descriptions". 17:06:50 <Gregor> The Fythe spec is certainly not a formal spec. 17:11:50 <elliott> It certainly should be. 17:12:02 <Gregor> Hahaha no. 17:12:21 <Gregor> Eventually, it would be nice to have a formal spec. 17:12:47 <Gregor> Especially seeing as that a formal spec for Fythe plus an implementation of any language in Fythe = a formal spec for that language. 17:12:52 <Gregor> In the interim, hahaha no :P 17:13:41 <nooga> well 17:13:42 <nooga> uh 17:14:04 <elliott> Gregor: Formal specs are easy :P 17:14:52 <Gregor> nooga: Please note that for all my evangelism of Fythe (because it's awesome), at this point it's basically at the proof-of-concept phase :P 17:15:06 <nooga> i noticed ;) 17:19:41 <elliott> 04:07:32: <CakeProphet> also the Haskell example looks a little bit ugly 17:19:45 <elliott> CakeProphet: that's because it's a stupid example 17:20:20 <elliott> throw (42 :: Int) 17:20:20 <elliott> `catches` [ \(e::Double) -> print (0,e) 17:20:20 <elliott> , \(e::Int) -> print (1,e) ] 17:20:25 <elliott> is a nicer way of formatting the same thing, though 17:21:19 <elliott> 04:17:28: <oerjan> <CakeProphet> also the Haskell example looks a little bit ugly <-- the nested catch'es because it is catching two different exception types. there's a function catches which takes a list of handlers but it requires them to be wrapped with Handler. 17:21:21 <elliott> oh um right 17:21:25 <elliott> need Handler <dollar sign> before those 17:21:26 <elliott> but w/e 17:22:58 <elliott> 05:47:21: <Sgeo> (Warning: mises stuff) 17:23:06 <elliott> Sgeo: too late i had a heart attack n/ died bcuz of ur ignorance fucker 17:23:11 <monqy> ;_; 17:23:21 <monqy> rip 17:23:30 <elliott> 06:00:56: <CakeProphet> > sort $ (+) <$> [1..5] <*> [1..5] 17:23:30 <elliott> 06:00:58: <lambdabot> [2,3,3,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,9,9,10] 17:23:30 <elliott> 06:01:35: <CakeProphet> oerjan: is there some sort of theoretical mathematics behind this? 17:23:31 <elliott> i... 17:23:52 <Phantom_Hoover> XD 17:23:56 <Phantom_Hoover> :t <*> 17:23:57 <lambdabot> parse error on input `<*>' 17:24:03 <Phantom_Hoover> :t (<*>) 17:24:04 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b 17:24:06 <elliott> rip Phantom_Hoover killed by () 17:26:51 <elliott> 06:24:25: <oerjan> erm s/know/know from the haskell report, where for some stupid reason the Random class seems to have been excluded in ghc, i think that's a bug/ 17:26:52 <elliott> huh 17:27:09 <elliott> 06:24:25: <oerjan> erm s/know/know from the haskell report, where for some stupid reason the Random class seems to have been excluded in ghc, i think that's a bug/ 17:27:11 <elliott> erm 17:27:12 <elliott> 06:24:54: <zzo38> Is there a such thing as (x ->) monad? 17:27:12 <elliott> 06:25:06: <oerjan> zzo38: yes, import Control.Monad.Reader 17:27:12 <elliott> 06:25:37: <oerjan> it's isomorphic to the Reader Monad, so defined there 17:27:14 <elliott> or Control.Monad.Instances 17:28:50 -!- brisingr has joined. 17:34:03 <elliott> 07:45:19: <copumpkin> terminating agda isn't turing-complete 17:34:03 <elliott> 07:45:29: <copumpkin> it's conservative 17:34:04 <elliott> 07:45:45: <copumpkin> it might warn you that a terminating function doesn't terminate because its simple condition isn't accurate 17:34:04 <elliott> 07:45:56: <copumpkin> but it won't ever decide that a non-terminating function does terminate 17:34:04 <elliott> 07:46:32: <copumpkin> but because of that, you can trust proofs in it 17:34:11 <elliott> copumpkin: So they fixed that bug where _|_ is provable? 17:35:53 -!- sllide has quit (Ping timeout: 276 seconds). 17:38:41 <elliott> 08:50:04: <CakeProphet> Python topic line says "NO LOL" 17:38:41 <elliott> 08:50:09: <CakeProphet> I wonder if they enforce that. 17:38:41 <elliott> 08:50:13: <CakeProphet> s/Python/#python/ 17:38:41 <elliott> 08:51:18: <Jafet> Yes. 17:38:41 <elliott> 08:51:38: <Jafet> It raises the channel mean IQ, if only by a little. 17:38:48 <elliott> Jafet: Nah, it just raises the channel mean pedantry level. 17:38:55 -!- brisingr has quit (Ping timeout: 260 seconds). 17:40:48 -!- brisingr has joined. 17:42:50 <copumpkin> elliott? 17:43:20 -!- brisingr has changed nick to eliottt. 17:43:26 <elliott> <elliott> copumpkin: So they fixed that bug where _|_ is provable? 17:43:26 <copumpkin> oh, you're brisingr? 17:43:27 <eliottt> copumpkin: yes? 17:43:30 <elliott> No, I'm not :P 17:43:33 <copumpkin> elliott: just now 17:43:38 -!- eliottt has changed nick to brising. 17:43:40 <elliott> copumpkin: Convenient 17:43:41 -!- brising has changed nick to brisingr. 17:43:53 <brisingr> :) 17:44:38 <elliott> 15:08:02: <nooga> but I still got this : https://gist.github.com/1206470 :D 17:44:44 <elliott> nooga: I don't believe that works 17:44:49 <elliott> There's the typedef issue 17:46:14 <pikhq> Yeah, it doesn't seem to be handling the disambiguation. 17:56:05 -!- zzo38 has joined. 18:15:29 -!- Taneb has joined. 18:15:40 <Taneb> Hello! 18:19:21 <elliott> hi 18:19:34 <Taneb> I was thinkinh 18:19:44 <Taneb> With a g and no h on the end 18:20:04 <Taneb> Functional languages should ideally have no side effects, right? 18:20:23 <zzo38> Yes, I would think so 18:20:27 <Taneb> And an imperative language is little but side effects, right? 18:21:11 <zzo38> An imperative language is side effect per command, but you could still have things that the side effects are limited to certain areas 18:21:12 <elliott> Taneb: Not true 18:21:20 <nooga> elliott: compile and see for yourself 18:21:33 <elliott> Good code in imperative languages essentially mimics functional code :) 18:21:59 <elliott> nooga: Compiling won't tell me if it's a correct parser, but I know that C isn't context-free, and can only be parsed with yacc by using the embedded C code to sort things out 18:22:08 <Taneb> How about, a pair of a functional language and an imperative language, with the functional language in the back and an imperative language in the front 18:22:13 <elliott> I don't need to compile it to know this 18:22:22 <nooga> elliott: ah, the yacc file 18:22:37 <Taneb> So the imperative language can use functions defined in the functional language 18:22:42 <nooga> yeah guys 18:22:49 <nooga> since GHC compiles to C, AFAIR 18:22:52 <zzo38> Taneb: That is one thing that can be done, I suppose. Even, with Haskell, you can have a C program and Haskell program using FFI, where the main function is in C. 18:23:45 <elliott> nooga: No, it does not 18:23:52 <elliott> -fvia-C is deprecated and hasn't been the default ever 18:23:55 <elliott> Hmm, well 18:23:59 <elliott> I don't remember if/when itw as last the default 18:24:49 <Taneb> In some ways this is ideal; the functional language can be as pure as it likes, and the imperative language can do what it does best: filling in the bits that can't be done by a pure functional language (eg, IO) 18:25:12 <Taneb> Also, XSLT S and K is going well 18:25:28 <elliott> Taneb: That's basically what Haskell does, except that the language is one. 18:25:39 <elliott> You can model impure things in a pure language. 18:26:12 <elliott> That's more convenient than having a separate imperative language, because in a pure language you can use the pure language's functional strengths in the model of the impurity. 18:26:48 <elliott> And modelling an impure thing of course doesn't violate the purity of the rest of the language, since it's just a model. 18:29:30 <Taneb> Just a though 18:29:31 <Taneb> t 18:30:19 <elliott> Not saying it's a bad thought, I'm just saying that this is essentially what Haskell does 18:30:31 <elliott> Except that it models the imperative language inside the functional one, which is more convenient 18:31:21 <itidus20> so if monads don't have side effects 18:31:47 <itidus20> what would be the opposite thing which is crammed with side effects 18:32:02 <elliott> What 18:32:15 <itidus20> if you wanted side effects, as many side effects as possible 18:32:25 <elliott> What does "monads don't have side effects" mean 18:32:43 <itidus20> i don't know. 18:32:59 <Taneb> I think he may be referring speciffically to the IO monad, but I'm not good at Haskell enough to be sure 18:33:11 <elliott> That still doesn't make any sense 18:33:36 <itidus20> i hope i am not interrupting something valuable 18:33:41 <elliott> Probably not 18:34:24 <monqy> hi 18:34:25 <itidus20> anyway, as a self-styled game developer, every bit of code i write will necessarily trigger multimedia events 18:34:47 <elliott> It's perfectly possible to write games in a purely functional style without littering code with side-effects. 18:34:50 <itidus20> well maybe not every single bit 18:34:56 <Taneb> There are very few esolangs speciffically designed for game-making 18:35:02 <elliott> Taneb: specifically 18:35:07 <Taneb> Thank you 18:35:14 <Taneb> I knew I was getting that word wrong 18:35:22 <Taneb> Single f, double l 18:35:26 <elliott> itidus20: You probably want to read http://prog21.dadgum.com/23.html 18:35:30 <elliott> And its linked followups 18:35:53 <elliott> That's just one example, but it's very untrue to say that games are inherently side-effectful 18:36:57 <itidus20> elliott: aha.. very interesting 18:37:36 <itidus20> so one might say the game code really exists inside that "process one frame" 18:37:57 <itidus20> now... this idea sits well with me actually 18:38:05 <elliott> itidus20: Hey, I said include the follow-ups too :P 18:38:14 <itidus20> but i wanna talk about that first 18:38:36 <elliott> Have fun with that, then 18:38:38 <zzo38> Yes you could have game in no side-effect, where the code is a function taking inputs having to do with frame and outputs for their result, is one possible way to do so. 18:38:53 <itidus20> a while ago i was playing with the idea of a language where you write code which will be called once every frame 18:38:59 <zzo38> Or to process events is another way 18:39:16 <nooga> so again 18:39:30 <nooga> elliott: what's wrong with that C syntax 18:39:40 <itidus20> afk 18:39:44 <elliott> nooga: <elliott> nooga: Compiling won't tell me if it's a correct parser, but I know that C isn't context-free, and can only be parsed with yacc by using the embedded C code to sort things out 18:39:57 <elliott> By definition, it cannot parse C correctly 18:40:46 <elliott> http://calculist.blogspot.com/2009/02/c-typedef-parsing-problem.html has information on it, I can't find the better blog post I read a while ago about it 18:41:04 <elliott> aha 18:41:06 <elliott> nooga: Read these two: 18:41:09 <elliott> http://eli.thegreenplace.net/2007/11/24/the-context-sensitivity-of-cs-grammar/ 18:41:10 <elliott> http://eli.thegreenplace.net/2011/05/02/the-context-sensitivity-of-c%E2%80%99s-grammar-revisited/ 18:41:46 <Taneb> I may make a Feather derivative 18:41:49 <Taneb> Called McGraw 18:42:47 <monqy> what will it do 18:43:13 <Taneb> Access to alternate universes, time travelling to the future 18:44:54 <Taneb> Time police 18:46:54 <zzo38> I know about typedef parsing in C. CWEB has the same problem but it is capable to parse typedefs correctly; it doesn't parse #include files but you can use the @s and @f command to affect formatting of anything and make them parse differently. 18:48:09 <Taneb> I think I may have finished XSLT S and K 18:48:15 <Taneb> I have no idea if it would work or not 18:48:45 -!- ais523 has joined. 18:49:28 <elliott> hi ais523 18:50:43 <ais523> hi elliott 18:51:05 <elliott> hi ais523 18:51:08 <zzo38> Enhanced CWEB is completely impossible to parse unless you can read all include files and definitions of metamacros. 18:54:58 <Taneb> Just spotted a huge flaw in XSLT S and K 18:55:12 <Taneb> But I can't quite describe it 18:55:43 <elliott> "There can only be at most 256 different smob types in the system. Instead of registering a huge number of smob types (for example, one for each relevant C struct in your application), it is sometimes better to register just one and implement a second layer of type dispatching on top of it. This second layer might use the 16 extra bits to extend its type, for example." 18:55:43 <elliott> augh 18:55:51 <elliott> ais523: feel my pain k thx 18:55:55 <Taneb> It doesn't realise that <a/><b/> is equivalent to <a><b/></a> when <a> is at the start of a document 18:56:10 <ais523> hmm, wouldn't k thx mean I was thanked no matter what I did? 18:56:31 <Taneb> k thx 4 !smoking 18:56:34 <ais523> elliott: that API seems usable but far from ideal 18:57:27 <ais523> perhaps it should work along the lines of <apply><apply><s/><k/></apply><k/></apply> 18:57:52 <elliott> yeah apply is a separate node type 18:57:55 <elliott> s and k are leaves 18:58:00 <elliott> apply is a branch 18:58:13 <elliott> ais523: yeah but i guess it's designed because of the internals of the scheme implementation 18:58:15 <elliott> speeeeeeed and all that 19:01:07 <elliott> http://alan.dipert.org/ Who wants to bet on the probability that this is the Alan Dipert who owns esolangs.org? 19:01:41 <elliott> "Lisp to PHP Compiler" --https://github.com/alandipert 19:01:43 <elliott> I'm gonna say p=one 19:01:55 <elliott> (Trying to find a newer email address than that aol one.) 19:02:06 <Taneb> I'll say p=0.94 19:02:20 <Deewiant> elliott: "email" at the top of his site 19:02:26 <Taneb> Bye 19:02:27 <ais523> I always assumed Graue owned esolangs.org (the name itself, not the website there) 19:02:27 <elliott> Deewiant: Yep 19:02:29 -!- Taneb has quit (Quit: Goodbye). 19:02:34 <elliott> Deewiant: But I don't know it's the same Alan Dipert 19:02:36 <elliott> Worth an email, though 19:02:42 <ais523> elliott: just ask if it's the same Alan Dipert 19:02:52 <elliott> ais523: I'll do that, and include what I said last time :P 19:02:59 <Deewiant> Did you email the AOL address? 19:03:03 <elliott> Yeah 19:03:13 <elliott> Turns out nobody uses AOL anymore, who'da thunk it 19:03:57 <Deewiant> elliott: whois dipert.org has the same address 19:04:20 <Deewiant> (You might want to tell him to update that while you're at it) 19:04:52 <elliott> Deewiant: Too late, sent out an unsure message 19:05:02 <elliott> But thanks for the confirmation 19:05:26 <ais523> I think it's always best to be unsure even when it's obvious 19:05:54 <elliott> "Sorry, I killed + ate the old Alan Dipert two years ago to the day. I inherited his name, email address, and all property but esolangs.org. So unfortunately you have the wrong person." 19:06:09 <Deewiant> Darn 19:06:09 <elliott> It COULD happen. 19:07:04 <zzo38> I made a webpage for TeX to PNG; you could use that (source codes is available if you want to make your own copy) and cache the results by uploading files to the wiki that are named by their text and use those images in wiki 19:07:26 <elliott> Google does that too 19:07:32 <elliott> Well, probably LaTeX 19:07:35 -!- brisingr has quit (Ping timeout: 260 seconds). 19:07:38 <elliott> But only you use TeX, so :P 19:07:54 <zzo38> elliott: Why didn't they inherit esolangs.org? Did someone else take over? 19:08:08 <elliott> zzo38: No, the ghost of Alan Dipert started running it 19:08:14 <elliott> Unfortunately ghosts can have no effect on the material world whatsoever 19:09:08 -!- brisingr has joined. 19:09:25 <elliott> ais523: gah, how do you use {{unsigned}} if the comment was edited to add a bunch of stuff over numerous hours? 19:09:46 <ais523> by the same person? 19:09:52 <ais523> just give the last timestamp, I think 19:10:26 <zzo38> What seem to me, many programs try to call TeX externally from webpages and whatever are dealing with security wrongly. I use it by making the new format file this one http://zzo38computer.cjb.net/texify/texify.php?source=3 and then adding a time limit and memory limit to the program. 19:10:31 <elliott> --(this comment by 18:35, 9 September 2011 at 121.45.148.1 UTC; please sign your comments with ~~~~) 19:10:31 <elliott> argh 19:10:35 <elliott> I hate the ordering of unsigned's arguments 19:11:04 <ais523> elliott: well, I did call it unsigned2 originally 19:11:11 <ais523> but someone went and renamed it to unsigned 19:11:18 <elliott> ais523: haha, on wikipedia or the esolang wiki? 19:11:26 <elliott> former, looks like 19:11:36 <ais523> the reversed arguments are convenient when copying time/username from the history 19:11:41 <ais523> no, it's Esolang I'm talking about 19:11:47 <ais523> I didn't invent either template on Wikipedia 19:11:52 <elliott> http://esoteric.voxelperfect.net/w/index.php?title=Template:Unsigned&action=history 19:11:54 <elliott> doesn't look renamed 19:12:04 <elliott> (cur) (last) 22:17, 20 September 2006 Ihope127 (Talk | contribs) (Template:Unsigned2 moved to Template:Unsigned) 19:12:07 <elliott> ihope ¬_¬ 19:12:08 <shachaf> elliott: So you're ehird. 19:12:16 <zzo38> Some systems try to stop you from using various disallowed TeX commands in the front-end by stopping ^^ and other things, which can cause various kind of problems but I did it differently, stopping disallowed things in the format file. 19:12:21 <elliott> that's not the right way to move pages, person who isn't tswett 19:12:25 <elliott> shachaf: No, I'm shachaf. 19:12:32 -!- JuliaSH has joined. 19:12:46 <shachaf> elliott: So that would probably mean you're in BST instead of EDT. 19:13:01 <elliott> That's so geographist. 19:13:08 <elliott> Why do our timezones need to be correlated with our location? 19:13:20 <elliott> ais523: What timezone are you on these days? 19:13:22 <tswett> elliott: huh. What did that Ihope127 guy do, and what was wrong with it? 19:13:33 <elliott> tswett: Moved something by copying, I think... I'm not atcually sure 19:13:40 <tswett> Wait, did he... move something by copying? 19:13:43 <elliott> I might be wrong though. 19:13:50 <elliott> The history doesn't make sense. 19:13:51 <tswett> Yeah, that is indeed the wrong way to do it. 19:13:55 <ais523> elliott: mostly UTC+1, but I was in something more like UTC+8 yesterday/today 19:13:56 <elliott> Maybe it was moved properly, then unsigned[two] got deleted. 19:13:58 <elliott> Then you recreated it. 19:14:07 <tswett> Then again, the wiki *is* public domain, so at least it's a *legal* way to do things... 19:14:47 <zzo38> If you copy my program for safe TeX entered remotely, please *do not* use e-TeX, pdfTeX, XeTeX, LaTeX, LuaTeX, etc, because that will result in security holes. Use it only with the One True TeX. 19:15:15 <elliott> The One True TeX doesn't have more-notation, though. 19:15:20 <elliott> Can I use it with moreTeX? 19:16:11 -!- JuliaSH has left. 19:16:16 <zzo38> elliott: I don't know moreTeX. Anyways, TeX isn't supposed to be any other programming language such as Haskell, C, or Lua (except for LuaTeX). 19:17:33 <itidus20> i think the problem with functional programming languages is that they haven't found their edsger dijkstra yet 19:17:40 <zzo38> If you write your own TeX variant, it is your job to deal with the security issues yourself if you want to use it with that. 19:17:54 <monqy> itidus20: how is this a problem with functional programming languages 19:17:55 <itidus20> howard curry is more like the charles babbage of functional programming 19:18:06 <itidus20> whatever his name is 19:18:33 <elliott> have you used any functional languages 19:19:39 <itidus20> i can't help thinking functional languages care more about being consistent than being useful 19:19:39 <zzo38> I disabled the following commands for security purpose: \special \font \errorstopmode \input \openout \openin \closeout \closein \write \read \immediate \errmessage \jobname \fontname \mag \magnification \dump 19:20:31 <zzo38> Which things related to category theory cannot be made in Haskell? 19:20:32 <itidus20> the fact is not everything can be neatly expressed as a function 19:20:53 <monqy> itidus20 once again philosophises without knowing what he's talking about 19:21:07 <itidus20> like, could you make gimp in haskell? 19:21:18 <itidus20> when i say haskell i mean any functional programming language 19:21:29 <ais523> itidus20: well, TCness... 19:21:40 <ais523> so the only issue would be trying to get a good API to GTK or whatever 19:22:09 <zzo38> Yes, if you have a good enough event system you could probably do it. 19:22:38 <cheater> itidus20, could you make gimp in asm? 19:22:51 <itidus20> i dunno ^_^;;; 19:23:11 <cheater> i've seen GUI interactive programs of similar complexity written in asm 19:23:18 <cheater> so yes you probably could 19:23:42 <cheater> the question is whether it would be a good idea to do that 19:23:59 <cheater> no, it would not be the besti dea because of haskell's stdlib still not being the best 19:24:04 <itidus20> im just being cruel 19:24:18 <itidus20> cruel is the fitting word 19:24:25 <ais523> cheater: you could just /compile/ it into asm 19:24:36 <zzo38> It is probably not best idea writing all programs in asm because them it work only on the computers it is designed on work on. 19:24:41 <elliott> the problem, itidus20, is that you're assuming you can make judgements on what is or is not possiblew tih functional languages given only a cursory reading of functional programming materials, and never actually trying to program in one 19:24:52 <elliott> and ignoring the fact that thousands of people write useful programs in purely functional languages 19:25:26 <zzo38> But of course if you write a program that is meant only a DOS program, or only a program meant to run on NES/Famicom emulator, you can write it fine using asm 19:26:01 <ais523> elliott: quick opinion: is "common subset of OCaml and F#" a sane language? As in, only using language elements with identical syntax in the two languages? 19:26:04 <itidus20> ok ok uh.. what about game of life? 19:26:09 <zzo38> (If the emulator is accurate enough, you could even put it in a cartridge and run in real NES/Famicom hardware on television) 19:26:29 <elliott> itidus20: Are you seriously implying nobody has ever created a game of life program in haskell before? 19:26:39 <elliott> It's practically a mainstream languages. Intel uses it, for chrissakes. 19:26:40 <itidus20> well im wondering how painful it is 19:26:51 <elliott> http://hackage.haskell.org/packages/archive/pkg-list.html 19:26:52 <elliott> life program: Conway's Life cellular automaton 19:26:57 <elliott> brians-brain program: A Haskell implementation of the Brian's Brain cellular automaton 19:27:09 <elliott> And Hackage is only a small subset of all the Haskell programs written. 19:29:25 <itidus20> i could say that it may be difficult to write an OS in a functional language.. but that is probably because machine code is geared towards imperative, and that computers are not really ready yet for such things 19:29:45 <elliott> http://programatica.cs.pdx.edu/House/ 19:29:59 <elliott> http://www.ninj4.net/kinetic/ (seems to be a dead link though) 19:30:07 <elliott> http://lambda-the-ultimate.org/node/299 19:30:16 <elliott> There's another Haskell OS that I don't recall the name of. 19:30:21 <itidus20> :"> ok ......... well then. i submit 19:34:27 <Phantom_Hoover> THERE WAS A VISIBLE SUPERNOVA AND NOBODY FUCKING TOLD ME??????????????????????????/ 19:34:48 <itidus20> it was years ago 19:35:04 <itidus20> you're just too far away because you're on earth 19:35:25 -!- silence1 has joined. 19:35:50 <silence1> l 19:35:57 <itidus20> a race of humanoids is really scrambling to escape imminent doom after the supernova 19:36:00 -!- silence1 has left. 19:37:51 <monqy> bye 19:39:38 <Phantom_Hoover> Aw, dammit, it's brightest tonight and you need binoculars. 19:40:32 <elliott> `addquote <Phantom_Hoover> THERE WAS A VISIBLE SUPERNOVA AND NOBODY FUCKING TOLD ME??????????????????????????/ 19:40:34 <HackEgo> 643) <Phantom_Hoover> THERE WAS A VISIBLE SUPERNOVA AND NOBODY FUCKING TOLD ME??????????????????????????/ 19:40:43 <elliott> Phantom_Hoover: Finally we know what would warrant cursing from you. 19:40:44 <monqy> / 19:41:24 <itidus20> looking into space just makes me feel very dizzy 19:41:34 <itidus20> makes my visual field feel too "big" 19:41:55 <Phantom_Hoover> elliott, bastard smug uncle in France with binoculars dammit. 19:42:18 <elliott> thats me 19:42:36 <itidus20> headache caused by such thoughts 19:43:01 <zzo38> I do have ideas related to operating system in Haskell. A program is simply any pure value (even a function), no specific type is required. Although type is exported so that you can put programs together with correct type. There is no IO monad, but there is the operating system monad, which is exposed so that you can call a program with overriding system calls (a bit like ptrace, I suppose). 19:43:49 <zzo38> And you can make up an IO monad that can then be run in the operating system monad, to work programs written for other (imperative) operating systems. 19:43:53 <itidus20> elliott has shown me that it's been done.. 19:45:37 -!- Taneb has joined. 19:45:45 <Taneb> hlep 19:45:50 <zzo38> And devices, files, etc, can also be Haskell functions accessible by querying the operating system monad. 19:45:55 <Taneb> Getting a 412 error trying to edit the wiki 19:46:08 <Taneb> That's my first 412 error 19:46:10 <Taneb> :) 19:46:20 <Taneb> But still, I kinda want to edit the wiki 19:46:33 <Taneb> It also doesn't let me preview 19:48:00 <Taneb> Any suggestions? 19:48:10 <elliott> You put a span or div in there 19:48:12 <elliott> Use the span or div templates 19:49:00 <zzo38> There are other things that can cause such errors too 19:49:00 <Taneb> No "<"s or ">"s 19:49:24 <Taneb> Lots of &lt;s and &gt;s though, could that be it? 19:49:43 <zzo38> The signature hack is another way 19:49:50 -!- tswett has quit (Changing host). 19:49:50 -!- tswett has joined. 19:50:09 <Taneb> Signature hack? 19:50:10 <elliott> Taneb: Dunno, pastebin what you were trying to save? 19:50:46 <Taneb> http://pastebin.com/P78hqgx2 19:52:14 -!- yorick has joined. 19:52:30 <zzo38> Something that has not been corrected. It should be permitted for selected confirmed users not to be blocked by this program 19:55:44 <Taneb> So, any suggestions? 19:56:09 <itidus20> is it true that functional means nothing is so-called hard-coded? 19:56:55 <Taneb> I would have thought the very opposite 19:57:14 <elliott> itidus20: what does functional have to do with hard-coded 19:57:49 <elliott> Taneb: hmm, dunno what could be triggering it, ask ais523 19:58:06 <Taneb> ais523, any ideas? 19:58:22 <ais523> what's a 412 error anyway? 19:58:32 <Taneb> Precondition Failed 19:58:36 <Taneb> The precondition on the request for the URL /w/index.php evaluated to false. 19:58:36 <ais523> Taneb: are you trying to edit via esolangs.org, or esoteric.voxelperfect.net? 19:58:38 <ais523> aha 19:58:43 <ais523> you're probably triggering the spam filter 19:58:52 <ais523> it's famous for triggering on, among other things, div and span 19:59:00 <Taneb> No divs or spans 19:59:11 <elliott> ais523: http://pastebin.com/P78hqgx2 19:59:19 <elliott> stop repeating the two seconds of conversation i had with Taneb about this :P 19:59:36 <ais523> hmm, &lt; or &gt; could well be it 19:59:46 <Taneb> They were in before 19:59:47 <elliott> he saved it with &lt;s and gts before, I believe 19:59:50 <ais523> Taneb: do you know of the <nowiki> tag? 19:59:55 <Taneb> I do not 19:59:56 <ais523> it'd make that rather easier to read 19:59:59 <elliott> but yeah nowiki would help 20:00:07 <Taneb> How does it work? 20:00:09 <itidus20> nevermind.. disregard my last post.. was a mistakle 20:00:14 <ais523> it basically means "interpret everything up to the next </nowiki> literally" 20:00:24 <Taneb> Ooh 20:00:27 <Taneb> As in, plaintext? 20:00:30 <ais523> yep 20:00:42 <elliott> <pre><nowiki>....</nowiki></pre> is useful 20:00:42 <ais523> <pre><nowiki> is a common pairing 20:00:46 <ais523> although I'm not sure if the wiki allows <pre> 20:01:04 <ais523> anyway, binary search on preview may help you work out what's offending 20:01:36 <elliott> it does allow pre 20:01:59 <ais523> I know a spambot once made a page which was incredibly hard to delete because its name tripped the spam filter 20:02:12 <ais523> and trying to follow any links from it caused the spam filter to be tripped on the /referrer/ 20:02:20 <Taneb> Using nowiki and <s and >s doesn't help 20:02:31 <ais523> in the end, #esoteric figured out what was going on and I spoofed the referrer to delete it 20:02:39 <ais523> Taneb: well, it makes it more readable, at least 20:03:07 <ais523> the thing is, I have no access to the spam filter 20:03:23 <ais523> and know nothing about how it behaves, but for what we've deduced by experiment 20:03:27 <ais523> banning div and span is really obvious 20:03:36 <ais523> but there are probably other things in there that are much less obvious 20:04:26 <ais523> binary search seems to be the way to go 20:04:34 <ais523> try previewing the first half, then the first quarter, etc, until it works 20:07:18 <Taneb> The line <xsl:copy-of select="../*[3]"/> seems to trip it 20:07:37 <ais523> ouch, I wonder what's wrong with that line? 20:07:46 <ais523> you could try binary-searching even within the line 20:07:51 <ais523> that definitely doesn't trip any spam filters I know of 20:07:56 <ais523> but I didn't think I knew them all 20:08:33 <Taneb> It doesn't like "../*[3]" 20:08:40 <Taneb> With or without quotes 20:08:59 <Taneb> ../ 20:09:24 <Taneb> That's the smallest it will go and still trip the filter 20:12:11 <ais523> a/ha/ 20:12:19 <elliott> haha 20:12:20 <ais523> .</nowiki>.<nowiki>/ 20:12:23 <elliott> what a terrible spam filter 20:12:24 <ais523> should avoid tripping it 20:12:38 <Taneb> I've saved it in a way that works 20:12:59 <ais523> elliott: I well know Esolang's spam filter is terrible 20:13:27 <Taneb> My way of fixing it was the slightly less readable .&#46;/ 20:13:28 <elliott> I know you know 20:13:39 <ais523> &#46; works even inside nowiki? 20:13:43 <Taneb> Yeah 20:13:51 <Taneb> So does <s>...</s> 20:13:54 <Taneb> Which is annoying 20:14:02 <Taneb> As I am using <s> for something else 20:14:14 <Taneb> HTML isn't wiki 20:15:42 <Taneb> HTML character entities still work 20:19:02 -!- Taneb_ has joined. 20:20:32 <itidus20> this prog21.dadgum is quite cool 20:20:38 -!- Taneb has quit (Ping timeout: 276 seconds). 20:21:07 <itidus20> now i am very impressed to see a section beginning "I want to talk about performance coding. Not coding for speed, but coding as performance, a la live coding." 20:21:20 <itidus20> because i have actually wondered about that very same thing before 20:30:21 <itidus20> http://en.wikipedia.org/wiki/Interactive_computation 20:30:57 <itidus20> "the Turing machine model only provides an answer to the question of what computability of functions means and, with interactive tasks not always being reducible to functions, it fails to capture our broader intuition of computation and computability." -- no doubt this is controversial statement to make 20:31:04 -!- MDude has quit (Quit: later chat). 20:33:36 <elliott> looks like an advertisement article. 20:33:49 <elliott> note references being basically all the same few people. 20:34:01 <itidus20> ahhhhhhhh 20:34:26 <elliott> Can't say for sure, but... 20:34:33 <itidus20> no thats quite true 20:35:11 <itidus20> at least 3 references to the one author 20:35:15 <itidus20> and no actual references 20:35:32 <itidus20> "References and external web sources" you're right... thats not wiki style 20:35:43 <elliott> My bias against the idea is probably showing (in that I wouldn't complain much about an under-referenced article about a concept I liked). 20:36:08 <zzo38> Is there a point-free case command in Haskell? 20:36:15 <elliott> No. 20:37:54 <zzo38> Why? 20:42:09 <itidus20> elliott: i dont even know what it means. and i am sure it has nothing to do with how to code an x86 20:42:55 <zzo38> You should make the esolang wiki spam filter to be bypassed for the specified users if they are logged in. You could have it a field manually set in the user profile by administrators. 20:46:26 <nooga> elliott: isn't gcc's C parser also made in YACC? 20:47:06 <elliott> No, gcc's C parser is hand-written. I think they used to use a yacc parser. But yacc is turing-complete. 20:47:23 <elliott> The point is that you have to keep track of the typedefs by using yacc's blocks after the production 20:47:25 <elliott> i.e. foo { ... } 20:47:34 <elliott> That parser doesn't do so, so it can't possibly parse correctly. 20:48:01 <zzo38> I wrote more stuff relating to proposal of more-notation, including some possible circumstances in which it could be used. http://www.haskell.org/haskellwiki/User:Zzo38/Proposal_for_more-notation 20:49:11 <nooga> elliott: clang's parser as well as tcc's one is also hand written 20:49:13 <nooga> this sucks 20:49:34 <zzo38> nooga: Is there anything wrong with that? 20:49:45 <elliott> ais523: there you go, http://www.haskell.org/haskellwiki/User:Zzo38/Proposal_for_more-notation 20:50:28 <ais523> oh, right 20:50:55 <ais523> wow, zzo38's writing style is instantly recognisable anywhere 20:51:36 <zzo38> ais523: That is because you have a lot of practice, because of we are all in this IRC together. 20:52:27 <ais523> perhaps 20:52:33 <zzo38> Does this document interest to you at all? Do you have any opinion/comment? You could write it on the IRC, or on the talk page of the wiki. 20:52:58 <ais523> I'll have to think about it 20:55:02 <nooga> zzo38: hard to hack in 20:56:21 -!- atrapado has joined. 20:56:34 <zzo38> nooga: Yes, that is what I thought. But I did be careful when writing that document, to make it not harder than it should be. 21:01:54 * Phantom_Hoover → looking in vain for the supernova. 21:03:55 -!- augur has joined. 21:06:36 -!- augur has quit (Remote host closed the connection). 21:07:24 <Phantom_Hoover> Hmm, I think I saw it very faintly. 21:07:41 <Phantom_Hoover> Aha, binoculars 21:07:43 <Phantom_Hoover> *! 21:08:27 <Sgeo> https://lh3.googleusercontent.com/-WLhqP3Po6hI/Tmp-VbpyS6I/AAAAAAAAAS8/UZq_G1bYfd8/s640/IMG_20110909_163314.jpg warning: dead animal 21:08:58 -!- jcp has quit (Ping timeout: 240 seconds). 21:09:03 -!- Patashu has joined. 21:10:43 <zzo38> I have no binoculars. There is also stuff in the way such as grapes and so on. 21:10:52 <elliott> Sgeo: I am unable to discern your reasons for linking to this. 21:11:35 <Sgeo> I guess I'm hoping someone could identify it 21:11:41 <monqy> oh 21:11:52 <monqy> dead 21:12:08 <elliott> its a dead animal hope this helps 21:12:10 <monqy> help i can't stop laughing 21:12:17 <Phantom_Hoover> Awww, the supernova is just a type 1a. 21:12:17 <elliott> its name was barry 21:13:04 <elliott> Phantom_Hoover: hi im dead animal 21:13:06 <monqy> it's not that dead animals are funny, it's that sgeo linking a picture of a dead animal out of nowhere is funny 21:13:24 <monqy> and then in post saying he hoped someone could identify it 21:13:38 <elliott> we will find who did this............... 21:13:43 <elliott> we will ARREST THEM FOR JUSTICE.............. 21:15:11 <monqy> is there any context sgeo 21:15:17 <monqy> any at all 21:15:45 <Sgeo> I was walking to the school today, and stepped on it thinking it was a tree stump. When I walked back home, I noticed the bone 21:15:47 <Sgeo> bones 21:15:58 <monqy> poor bones 21:16:37 <zzo38> Oops you made a mistake. 21:16:42 <monqy> oops 21:16:48 <monqy> and then you took a picture of it 21:17:08 <monqy> this makes it even better 21:17:33 -!- jcp has joined. 21:19:03 -!- brisingr has quit (Read error: Connection reset by peer). 21:20:17 <Phantom_Hoover> You'd think Sgeo was 13. 21:20:45 <Phantom_Hoover> Silly Seth and the Mystery of the Dead Animal. 21:23:41 -!- Taneb_ has quit (Ping timeout: 276 seconds). 21:26:22 <elliott> `addquote <Phantom_Hoover> It is like the Holocaust but with Nazis. 21:26:25 <HackEgo> 644) <Phantom_Hoover> It is like the Holocaust but with Nazis. 21:32:08 -!- Taneb has joined. 21:46:08 <Patashu> as in the nazis are dying? 21:58:14 -!- boily has quit (Ping timeout: 252 seconds). 22:01:14 -!- augur has joined. 22:13:46 <Taneb> Goodnight 22:21:08 <elliott> ais523: the esolangs.org owner replied 22:21:17 -!- DH____ has joined. 22:21:18 <elliott> offering to point it at any dns server 22:21:31 <elliott> I doubt pointing it at voxelperfect's would work, since it doesn't know about esolangs.org 22:21:37 <ais523> ah, interesting 22:21:52 <ais523> I don't have a handy DNS server for the purpose 22:22:11 <elliott> yep, I think I'll tell him to go with the other option (investigate yi.org which I mentioned since I'd seen it used a lot) 22:22:17 <elliott> Gregor: any non-canyonthing suggestions for good free dns servers? 22:38:18 <itidus20> ok guys.. i have a new idea to drop 22:38:24 <Gregor> elliott: afraid.org 22:39:00 <itidus20> someone said "linked lists are inherently superior to arrays/arraylists when it comes to removing items from them" 22:39:18 <elliott> Gregor: Better than yi.org? :-P 22:39:44 <Gregor> elliott: Well, having not heard of yi.org, my response is "blerfmleh" 22:39:44 <Sgeo> arraylists? 22:39:45 <elliott> "Why is it free? It's quite simple. We wanted a challenge... that's it." ;; heh, such reassuring words. 22:39:45 <itidus20> so i started thinking, and i said "there could be an array traversing protocol. 2 kinds of items. 1) a number indicating how many data items follow 2) a number of which array index to jump to" 22:39:57 <itidus20> 0:[3] 1:[a] 2:[b] 3:[c] 4:[6] 5:[?] 6:[2] 7:[d] 8:[e] 22:40:06 <itidus20> 0: read 3 values. 4: jump to cell 6. 6: read 2 values. 22:40:25 <Gregor> elliott: That being said, it looks like yi.org is more focused on "dynamic DNS", whereas afraid.org is more focused on being a conventional interface with all the BINDing bells and whistles. 22:40:35 <elliott> Right. 22:40:55 <Sgeo> It's not a matter of how to do it within a language that makes linked lists better, it's the underlying structure that makes certiain operations more efficient 22:40:58 <itidus20> this idea of mine probably isn't all that wonderful.. but welll... yeah thats my latest thought 22:41:09 <Sgeo> *better for tasks which linked lists are better at 22:41:41 <Sgeo> Or I'm misunderstanding you. That's likely 22:42:01 <elliott> Aight, sent off another email to the 'pert. 22:42:07 <elliott> Also he might end up in here, I mentioned that I asked the channel. 22:43:56 <zzo38> Linked lists can be done in C, and in Haskell. 22:44:15 <itidus20> Sgeo: i'll code up my idea,, to make it more concrete 22:51:16 -!- alandipert has joined. 22:52:08 <itidus20> http://codepad.org/xWNBCwng 22:52:15 <elliott> hi alandipert 22:52:25 <alandipert> hi! 22:52:33 <ais523> hi! 22:52:38 <Gregor> lo! 22:52:38 <alandipert> it's been a few years, thought to pop in :-) 22:52:47 <itidus20> its not tested.. but it is supposed to do what i said 22:52:48 * alandipert formerly wooby, if anyone recalls 22:52:53 <Gregor> Ahhhhhhhhhhhhhhhhhhh 22:52:53 <zzo38> Can you switch text/binary I/O mode in Haskell? 22:53:10 <Gregor> alandipert: So presumably you're from a society that only gives you a non-ridiculous name when you reach a certain age? ;) 22:53:37 <elliott> I probably shouldn't have expected the domain to be owned by a completely random stranger :P 22:53:38 <itidus20> ok i can see an optimization already 22:53:51 <alandipert> lol 22:54:38 <itidus20> http://codepad.org/Yhjjp7nk 22:54:40 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:55:02 <Sgeo> Oh, sorry, wasn't paying any attention 22:55:12 <Gregor> <elliott> I probably shouldn't have expected the domain to be owned by a completely random stranger :P // um ... so who does own it? 22:55:23 <elliott> Gregor: alandipert :P 22:55:23 <itidus20> Sgeo: ok have a look and if you're an expert code reader it might make some sense.. 22:55:30 <itidus20> it wouldn't make sense to me though 22:55:40 <Gregor> alandipert: Oh! FIX FIX FIX IT NOW YOU EVIL EVIL BEING 22:55:43 <alandipert> back in a few, will toggle DNS bits shortly 22:55:58 <elliott> Forgive Gregor, he isn't accustomed to humans. 22:55:58 * alandipert writing esolang for dns manipulation 22:56:03 <elliott> oh dear 22:56:15 <elliott> Gregor: What have you _done_???? 22:56:22 <ais523> I suppose esolangs.org was a great social manipulation thing 22:56:23 <Gregor> SOLVED ALL PROBLEMS? 22:56:30 <ais523> everyone just sort-of assumed that Graue owned it 22:56:31 <alandipert> Gregor: i remember from like 5 years ago a c->bf design, scanned from a napkin 22:56:32 <Sgeo> So it's an array that contains indexes into the array? 22:56:44 <Gregor> alandipert: It wasn't scanned from a napkin X-D 22:56:45 <itidus20> Sgeo: it contains 2 things 22:56:51 <Gregor> It was scanned from scribbling on normal paper :P 22:56:52 <itidus20> run lengths and indexes 22:56:59 <alandipert> oh ok :-) 22:57:03 <elliott> ais523: I found who owned it ages ago, I think 22:57:04 <elliott> I forget why 22:57:06 * alandipert thinks it would have been cooler if it was on a napkin 22:57:08 <elliott> Well, did a whois 22:57:09 <ais523> !bfjoust does_this_work_yet (>)*8(>[-])*21 22:57:17 <EgoBot> ​Score for ais523_does_this_work_yet: 18.3 22:57:17 <elliott> fungot: say hi to alandipert 22:57:18 <fungot> elliott: wait for cloud to return. 22:57:26 <elliott> ^style irc 22:57:27 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams) 22:57:29 <elliott> fungot: say hi, more verbosely 22:57:30 <fungot> elliott: basically you want your function to return for the cell processor? this one is older. see http://okmij.org/ ftp/ papers/ lagarias/ paper/ html/ fnord 22:57:39 <itidus20> i will try it out :-s 22:57:55 <Sgeo> itidus20, to be clear, your structure has no random-access, which is the main benefit of arrays over linked-lists. 22:57:59 <ais523> who wrote fungot's Underload interp? fizzie? 22:57:59 <fungot> ais523: so does noone do mysql with scheme? i am sure it can be 22:58:00 <Sgeo> (iiuc) 22:58:01 <elliott> fizzie: Where'd that okmij come from? :P 22:58:09 <elliott> ais523: it's written in befunge, so yes 22:58:13 <itidus20> Sgeo: oh.... hmmm good point 22:58:14 <ais523> wow, fungot sounded surprisingly zzo38y there 22:58:15 <fungot> ais523: error in string-set!: expected type pair, got ' 65'. it was confusing since the only common language they have used until then. what were you expecting perhaps fnord discussions? 22:58:35 <Sgeo> ^style 22:58:36 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube 22:58:36 <ais523> elliott: well, various people have written Befunge programs 22:58:39 <itidus20> Sgeo: i expect it's not every day that some fool manages to make an array not have random access 22:58:42 <ais523> I wrote a Deadfish interp in it, just because 22:58:55 <elliott> ais523: befunge isn't known for its modularity... 22:59:11 <Sgeo> itidus20, well, I think what you did is more of a linked-list, or linked-list like thing, implemented inside of an array 22:59:24 <ais523> elliott: really? it modularises pretty well 22:59:34 <itidus20> Sgeo: its sort of clever, right? 22:59:40 <elliott> ais523: I guess storage offsets are useful 23:00:08 <ais523> yep, that's all you really need to do subroutine calls 23:00:09 <Sgeo> itidus20, your code still only shows a portion of your idea 23:00:23 <ais523> together with some way to implement a return address stack 23:00:31 <ais523> (and I suppose you could use SUBR for that if you didn't want to hand-roll one) 23:00:53 <itidus20> Sgeo: well the idea is to make deletion less expensive in an array 23:02:32 <Sgeo> Store it in an array. Keep a separate record of "deleted" items, which does not require actually altering the storage array. ... actually, scrap that. What is the purpose of deleting from a random access array? 23:03:09 <itidus20> well i was responding to something someone in another channel typed 23:03:09 <Sgeo> And if you don't care about random-access, why are you using an array? 23:03:10 <itidus20> namely 23:03:22 <itidus20> "linked lists are inherently superior to arrays/arraylists when it comes to removing items from them" 23:03:58 <Sgeo> I don't know what they mean by arraylists, but... define "removing" 23:04:15 <Sgeo> Do they mean just shiftig everything else so that there's no gap in the indexing? 23:04:17 <itidus20> removing means deleting 23:04:38 <Gregor> Sgeo: An arraylist is generally a list of arrays, presenting the illusion elements of the inner arrays being a single, cohesive array. It's great for concatenating, and usually fast for indexing. 23:05:11 <Gregor> And yes, removing an element from a list is an O(1) operation, whereas removing an element from an array is an O(n) operation with n being the size. 23:05:21 <elliott> I don't really like arraylists. 23:05:33 <Gregor> elliott: And they don't like you. 23:05:45 <elliott> Gregor: It's not my fault they're not ropes. 23:06:07 <Sgeo> Gregor, why would someone want to "remove" an element from an array in that fashion? 23:06:28 <Gregor> Sgeo: Don't ask me. 23:06:49 <Sgeo> But I can think of ways using a secondary record to deal with it. Would make accessing a bit slower though 23:07:18 <Sgeo> Um, and inserting... um, ok, this is going into bad idea land 23:07:18 <itidus20> my idea might not be as hot as i expected 23:07:26 <itidus20> i didnt think it through 23:07:36 <Sgeo> Land of Bad and Ideas 23:07:55 -!- nooga has quit (Ping timeout: 252 seconds). 23:08:16 <itidus20> shit 23:08:23 <Sgeo> itidus20, I didn't mean your idea 23:08:36 <Sgeo> (which you still have not entirely expressed in code) 23:08:55 <Sgeo> Just... unneeded 23:09:17 <itidus20> i will have another crack at this 23:10:00 -!- FireFly has quit (Quit: FireFly). 23:10:41 <Sgeo> Keep in mind that memory can be described as an array. So implementing a data structure in an array does not give benefits over implementing it using pointers 23:11:31 <Sgeo> (I'm sure at some level "memory is an array" is inaccurate. Finegaling by the OS or something) 23:15:25 <CakeProphet> paging makes it less of an array. 23:16:46 -!- copumpkin has joined. 23:19:30 -!- atrapado has quit (Quit: FIN). 23:23:45 <itidus20> ok this is the actual working code: http://codepad.org/H8oSpLVR 23:23:59 <itidus20> i can't believe how difficult that proved for me 23:25:37 <itidus20> but it is occuring to me this system might not actually 'work' how its supposed to 23:25:48 <itidus20> if one actually tries to delete from the array 23:32:19 <itidus20> basically i think it will work as long as you delete more than 1 cell at a time 23:33:19 <Lymee> itidus20, what is that supposed to do? 23:33:39 <itidus20> it needs further devving >:) 23:34:26 <elliott> ais523: hey, the Java committee decided on the lambda syntax, and it features 0 octothorpes 23:34:43 <ais523> oh, what is it? 23:34:50 <elliott> http://mail.openjdk.java.net/pipermail/lambda-dev/2011-September/003936.html 23:34:51 <elliott> they stole C#'s :) 23:35:04 <Patashu> mmm, committees 23:35:53 <ais523> hmm, if that allowed a return type to be specified, as in (int x, int y) -> int {x + y;} 23:36:00 <Lymee> elliott, C++ uses that syntax too? 23:36:08 <ais523> then it would be pretty similar to C++'s in that case 23:36:14 <ais523> which is [](int x, int y) -> int {x + y;} 23:36:15 <Sgeo> itidus20, is the structure supposed to be such that the 0th slot has 0 items, 1st has 1, etc.? 23:36:26 <ais523> umm, {return x + y;} I think 23:36:30 <itidus20> ill get back to you 23:36:53 <Patashu> wait, C++ has lambda syntax? 23:36:53 <Patashu> O_O 23:37:01 <ais523> and rvalue references! 23:38:47 <Sgeo> C++ or C++0x? 23:39:09 <ais523> C++0x is C++ 23:39:32 <elliott> yep, it was ratified, was it not? 23:39:57 <ais523> elliott: yes, and thus retroactively became correct 23:40:05 <elliott> haha 23:40:07 <elliott> feather-std 23:40:23 <ais523> oh no, I think we've managed to mix three metaphors in a way that actually makes sense 23:41:21 <ais523> anyway, that Java syntax seems fine to me 23:41:30 <elliott> indeed 23:41:34 <elliott> `addquote <ais523> oh no, I think we've managed to mix three metaphors in a way that actually makes sense 23:41:36 <HackEgo> 645) <ais523> oh no, I think we've managed to mix three metaphors in a way that actually makes sense 23:42:37 -!- DH____ has quit (Remote host closed the connection). 23:46:46 <Sgeo> I only see two metaphores in "feather-std" 23:46:59 <Sgeo> Or, um, is metphore the right wword? 23:47:10 -!- oerjan has joined. 23:47:41 <ais523> Sgeo: you possibly missed the Agora reference 23:48:23 <Sgeo> Oh, in retroactive correctness? 23:48:28 <ais523> yes 23:50:04 <Sgeo> I understand the eso-std reference but not entirely why it fits in 23:50:12 * Phantom_Hoover → sleep 23:50:13 -!- Phantom_Hoover has quit (Quit: Leaving). 23:56:57 -!- MSleep has joined. 23:57:03 -!- MSleep has changed nick to MDude. 23:59:53 -!- ais523 has quit (Remote host closed the connection). 2011-09-10: 00:03:53 -!- DH____ has joined. 00:04:38 <DH____> Anyone alive? 00:05:12 <tiffany> nope, we're all zombies 00:05:14 <tiffany> brainnnssss 00:05:30 <DH____> Ah well 00:05:54 <oerjan> lots of brainsss here 00:06:04 <DH____> I had an idea... 00:06:07 <elliott> oerjan: I got esolangs.org fixed, say hi to alandipert :P 00:06:07 <CakeProphet> mmmmmmmrgh 00:06:28 <oerjan> alandipert: hi :) 00:06:34 <alandipert> hi 00:06:39 <alandipert> success! 00:07:37 <DH____> You know how they've started modulating network traffic into power currents to send the.internet through power lines? 00:07:57 <CakeProphet> no.. 00:08:56 <DH____> And you know how POSe during the war communicated by tapping morse-code over the pipework? 00:09:19 <DH____> *POWs 00:09:29 <CakeProphet> Sure. 00:10:23 <DH____> Why not combine the two and send network traffic through the central heating systems of buildings?! 00:11:13 <CakeProphet> I'd imagine HTTP requests would get a little noisy, if I'm imagining this correctly. 00:12:01 <DH____> Use a frequency above 22kHz and no-one will hear... 00:12:48 <CakeProphet> ah, yes I was following the analogy a bit strictly. :P 00:13:15 <CakeProphet> still modulating high voltage currents seems... unecessary. 00:13:47 <DH____> You could still use Morse if you wanted, it would just have to be fast... 00:14:22 <Jafet> Especially when using it to transmit XML. 00:14:24 <oerjan> alandipert: i was reminded of something - is the email address in the esolangs.org whois correct? 00:14:39 <alandipert> it is not, will update 00:14:52 <alandipert> well, it's a valid e-mail address :-) 00:15:02 <CakeProphet> DH____: ah BPL isn't as common in the US, so that's why I've never heard of it. 00:16:31 <CakeProphet> because we uses smaller transformers, which act as low-pass filters on the signal. Whereas European power systems typically have a smaller number of large transformers. 00:16:51 <CakeProphet> thus to fix the low-pass filtering you have to install repeaters at every transformer, which is more costly in the US. 00:20:39 <oerjan> <itidus20> what would be the opposite thing which is crammed with side effects 00:20:59 <oerjan> a language in which calculating 2+2 wrote to stdout, and stuff 00:21:31 <Patashu> and you have to read the result from stdout 00:22:04 <oerjan> good idea 00:23:35 <CakeProphet> hmmm.... sounds like an interesting challenge. 00:23:45 <CakeProphet> to have every computation as a side effect. 00:24:00 <monqy> a language in which to calculate 2+2 you must mutate state 00:24:05 <CakeProphet> yep. 00:24:06 <monqy> p.s. that's the joke 00:24:20 <CakeProphet> hmmm, do stack-based languages count? 00:24:21 <oerjan> hm technically that was my idea for arithmetic in my Reaper vaporlang 00:24:55 <CakeProphet> ah, no I wouldn't count a stack based lang. Nothing can return anything. 00:24:59 <Gregor> Even by the standard of weebls-stuff, http://www.weebls-stuff.com/songs/Babies/ is really friggin' wtf. 00:25:12 <oerjan> CakeProphet: not necessarily, e.g. you can think of Underload as pure 00:25:40 <oerjan> at least without S, possibly even with 00:26:20 <oerjan> it's just taking a stack and returning a stack 00:26:51 <CakeProphet> well the idea with bugsophia was that each thread only stored a single byte and to transmit data around you'd have to use streams. 00:27:09 <CakeProphet> that's pretty side-effect-ful. 00:27:19 <oerjan> yeah 00:27:34 <elliott> <oerjan> it's just taking a stack and returning a stack 00:27:38 <elliott> well everything is just taking a world and returning a world. 00:27:47 <CakeProphet> elliott: Haskell mind virus. 00:27:52 <CakeProphet> :P 00:27:55 <elliott> CakeProphet: um I was _pointing out_ a mind virus 00:28:03 <elliott> that considers everything pure 00:28:04 <CakeProphet> with another mind virus, yes. 00:28:08 <elliott> no, I was not 00:28:27 <monqy> it was a reference to the mind virus not practice of it 00:28:46 <monqy> _or whatever the terms are_ 00:28:48 * oerjan mentions the mind virus without using it 00:28:48 <CakeProphet> that's, perfectly acceptable in relation to what was said. 00:29:10 <oerjan> monqy: ^ 00:29:27 <monqy> mind virus 00:30:05 <oerjan> actually use/mention might be at a different level than reference/practice 00:30:08 <CakeProphet> programing is a mind virus. 00:30:21 <oerjan> with use ~ reference being closest 00:30:30 <CakeProphet> #esoteric is a mind virus. 00:30:51 <oerjan> CakeProphet: no it is not and please report for termination 00:31:02 <CakeProphet> so one thing I never figured out was how binary operators were to work in bugsophia 00:31:16 <CakeProphet> basically they would occur by two threads colliding on top of the operator symbol 00:31:21 -!- MDude has quit (Ping timeout: 260 seconds). 00:31:23 <CakeProphet> but... I'm not sure where the result goes. 00:31:49 <oerjan> to the nursery 00:31:56 <CakeProphet> ha. 00:32:00 <CakeProphet> that's a possibility. 00:32:17 <CakeProphet> they could also spawn a new thread at the operator which then travel down whichever path was not originally taken. 00:32:31 <CakeProphet> or overwrite one or both of the threads ASM style. 00:32:44 <CakeProphet> (well, one is asm style, both is so I don't have to write rules for how that works. :P ) 00:33:52 <itidus20> ok for anyone including sgeo who was wondering about that array thing, this is sort of the idea.. but its not a complete finished thing: http://codepad.org/AbkVLHKR 00:34:14 <monqy> bug enters operator, operator partially applies to bug, this bug does something with the partially applied operator such that another bug can hit it and it can apply to the bug and so on?????? 00:34:22 <monqy> or would this not work at all due to how bS works 00:34:50 <monqy> (because this page is not really a complete enoguh spec for me to get the langauge) 00:35:06 <monqy> this page being http://esoteric.voxelperfect.net/wiki/BugSophia 00:36:54 <Patashu> it doesn't explain what the symbols do 00:36:55 <Patashu> I am disappoint 00:38:37 <elliott> "EU Officially Seizes The Public Domain, Retroactively Extends Copyright" 00:38:45 <elliott> nice. 00:39:16 <DH____> When did that happen? 00:39:30 <Patashu> wat 00:39:32 <Patashu> you can't do that 00:39:55 <elliott> http://www.techdirt.com/articles/20110908/15491315851/eu-officially-seizes-public-domain-retroactively-extends-copyright.shtml 00:39:57 <elliott> Patashu: they just did 00:40:03 <elliott> DH____: just now 00:40:09 <elliott> for good values of just now 00:40:26 <itidus20> does this include the bible? 00:40:43 <elliott> I think the bible has been public domain for longer than twenty years. 00:40:53 <itidus20> ah its only for 20 years? 00:41:18 <Patashu> 'only' 00:41:19 <Patashu> :| 00:41:24 <CakeProphet> monqy: the page is all that remains of the spec, which was never complete. 00:41:29 <CakeProphet> so really it's up for reinterpretation. 00:41:32 <monqy> ;_; 00:41:39 <CakeProphet> partial application is interesting though. 00:41:54 <monqy> partial application Always the Right Way 00:42:11 <CakeProphet> not necessarily for an esolang though. 00:42:36 <pikhq> Patashu: It's been done in the US. 00:42:50 <CakeProphet> I had an operator that essentially caused a bug to sit and wait on the space after it until it collided with another bug. 00:42:52 <DH____> Meh, I dunno about you, but i'll just pirate stuff if it's mo longer public domain... 00:43:01 <CakeProphet> which would make binary operators not impossible. 00:43:42 <pikhq> Especially annoying since doing such an action is quite probably against the US constitution. 00:43:52 <pikhq> (you can't do retroactive laws) 00:44:44 <CakeProphet> pikhq: I think the US constitution stopped being enforced since... well, since it was ratified. 00:45:12 <pikhq> Still irritating. 00:45:17 <CakeProphet> well, I haven't had any soldiers taking quarter in my home 00:45:18 <pikhq> Especially given how utterly clear it is. 00:45:21 <CakeProphet> so that parts been done well. 00:45:24 <itidus20> The public domain creates problems in the marketing sector, because it makes people less needy as consumers. 00:45:29 <pikhq> "No [...] ex post facto Law shall be passed." 00:45:56 <CakeProphet> itidus20: obviously open source software has not brought down microsoft or apple. 00:46:00 <pikhq> Inexplicably, the Supreme Court has ruled this applies to only some ex post facto laws. 00:46:08 <CakeProphet> or any other large software company. 00:46:11 <alandipert> is calamari still around? 00:46:17 <alandipert> (like, generally?) 00:46:17 <elliott> alandipert: Sometimes, doesn't talk much though 00:46:31 <elliott> fizzie's still around, I dunno who else was active Back Then(tm) 00:46:35 <itidus20> CakeProphet: its ok my words are cooked in a marinade of sarcasm 00:46:39 <elliott> lament denies the channel exists :P 00:46:49 <elliott> CakeProphet: Not in the desktop sector, but Linux is doing pretty good in the server market 00:46:57 <pikhq> Yes, "no" means "some". 00:47:05 <oerjan> elliott: you _really_ should try not chasing people away, you know :( 00:48:03 <elliott> oerjan: Who? 00:48:12 <CakeProphet> oerjan: what? elliott would never do such a thing. 00:48:12 <oerjan> elliott: lament, for example :P 00:48:26 <CakeProphet> oerjan: he would just make them chase themselves away. 00:48:34 <elliott> I didn't chase away lament, he just drifted away for like two years and then exploded and blamed it all on me one day. 00:48:41 <CakeProphet> yes? 00:48:44 <oerjan> O KAY 00:48:45 <CakeProphet> ...er 00:48:48 <CakeProphet> s/yes/see/ 00:48:51 <CakeProphet> weird 00:48:53 <itidus20> "Hey you there. Why aren't you generating tax? Oh you are reading a public domain novel instead of supporting our authors." 00:48:59 <elliott> oerjan: Seriously, I had no idea I bothered him that much until he decided to yell at me. 00:49:01 <pikhq> "The U.S. Supreme Court ruled in Smith v. Doe (2003) that forcing sex offenders to register their whereabouts at regular intervals and the posting of personal information about them on the Internet does not violate the constitutional prohibition against ex post facto laws, because this does not constitute any kind of punishment." 00:49:06 <pikhq> The fuck? 00:49:07 <elliott> I'm not entirely sure it wasn't a post-facto blame on his part. 00:49:50 <CakeProphet> pikhq: lol what 00:49:55 <CakeProphet> not a punishment? okay. 00:50:03 * oerjan has an urge to institute a "no pol" prohibition on the channel 00:50:05 <pikhq> CakeProphet: The ban is on *all ex post facto laws*. 00:50:08 <pikhq> Literally all. 00:50:11 <itidus20> public domain is a commie plot 00:50:17 <Patashu> political discussion is boring in here 00:50:19 <Patashu> since we all agree already 00:50:43 <itidus20> whose side are you on pinko 00:51:01 * CakeProphet is an anarchist so that could probably provide for plenty of amusing and painful debate. 00:51:24 <CakeProphet> but I'm not going to let it happen. 00:51:44 <elliott> Patashu: there's plenty of disagreement here, but it's all on the same boring things, so who cares 00:51:48 <zzo38> I write some programs public domain. 00:52:23 <CakeProphet> elliott: I LOVE PRAGMATISM. 00:52:36 <CakeProphet> GRRRRR 00:53:05 <monqy> perl can die in a fire 00:53:05 <CakeProphet> I don't explicitly license my programs for anything 00:53:08 <CakeProphet> so what is that? 00:53:15 <CakeProphet> copyright? 00:53:23 <elliott> are you serious 00:53:28 <CakeProphet> yes. 00:53:36 <elliott> no but like really serious 00:53:38 * CakeProphet hasn't written anything that has been distributed. 00:53:48 <zzo38> Almost always, my program will be either public domain or GNU GPL v3 or later version. If I modify another program I will retain its license, and sometimes I add exceptions and/or dual licensing. 00:53:55 <elliott> apart from mafia software 00:53:59 <elliott> NOTE TO MAFIA: above comment is joke 00:54:14 <itidus20> zzo38: you are not helping make the rich richer. that makes you their enemy 00:54:57 <itidus20> how can GNU generate government revenue? how? 00:55:01 <itidus20> :P 00:55:01 <CakeProphet> elliott: what? I most certainly have no affiliation with the mafia. 00:55:26 <CakeProphet> elliott: and I'd entertain the notion that if you continue to slander their name you might find a wooden bat against your knees. 00:55:35 <zzo38> GNU can generate government revenue if you are using it in a commercial product and then there will be tax on it. But other than that it isn't. 00:56:38 <CakeProphet> elliott: but I was under the impression that copyright is the default... if not specified. 00:56:44 <CakeProphet> in the US anyways. 00:56:51 <CakeProphet> we <3 copyright. 00:56:55 <elliott> berne convention dude 00:57:11 <itidus20> they're getting rid of the public domain and prior art to coincide with 9/11 00:57:34 <oerjan> a bat - made of wood. flapping its wings on your knee. 00:57:51 <CakeProphet> elliott: halp legalese. 00:58:09 <CakeProphet> TO WIKIPEDIA 00:58:44 <CakeProphet> oh well that wasn't helpful. 00:58:56 <zzo38> itidus20: Who told you that? 00:59:19 <oerjan> TO THE WIKIMOBILE 00:59:23 <itidus20> im just being cranky 00:59:30 <oerjan> (i was already bat inspired) 00:59:35 <itidus20> but yeah... new patent laws changing things in US 00:59:52 <CakeProphet> elliott: I'm not finding anything that's suggesting I'm incorrect... 00:59:58 <CakeProphet> man I wish you just explained things. SO MUCH EASIER. 01:00:11 <elliott> Explaining things is for LOSERS. 01:00:55 <oerjan> CakeProphet: i believe his comment was agreeing with you, actually 01:01:08 <CakeProphet> oh okay. 01:01:30 <elliott> thanks oerjan, you're a pal 01:01:56 <oerjan> as in i clearly recall the us _used_ to require explicit copyright notes (there are some works that went public domain for forgetting this) and changed this _because_ of the berne convention. 01:02:00 <CakeProphet> see it was presented in the "you don't know what you're talking about" tone that elliott has when I am wrong about something or lacking in knowledge. 01:02:21 <CakeProphet> THUS MY CONFUSION. 01:02:45 <elliott> Everything you do demonstrates your ignorance. Even when you're right. 01:02:50 <elliott> This is true of all people who aren't me. 01:02:53 <CakeProphet> elliott: dude, come on, what you said was just correct. 01:03:10 <oerjan> s/ignorance/arrogance/ and guess who that sentence now describes... 01:03:23 * oerjan whistles innocently 01:03:45 <CakeProphet> oerjan: hey I take offense to that. 01:03:48 * CakeProphet isn't /that/ arrogant. 01:04:00 <oerjan> CakeProphet: WRONG GUESS 01:04:10 <zzo38> I typed in Haskell Wiki that everything I wrote on there is all public domain. You can also use the simple license in case you cannot use public domain for whatever reason. 01:04:33 <CakeProphet> hmmm, I wonder if that's a legal gray area. 01:04:36 <CakeProphet> since a wiki does not have one author. 01:04:51 <CakeProphet> granted you can look up the changelog 01:04:56 <oerjan> CakeProphet: most wikis have a license that you agree to by posting, surely? 01:05:16 <CakeProphet> right, I mean, it might be a gray area to declare a work public domain on a wiki. 01:05:28 <CakeProphet> instead of elsewhere. 01:05:33 <zzo38> CakeProphet: Yes; I only said that the things I wrote on there specifically myself are public domain. Other people editing might not be. 01:06:10 <elliott> Can I get an exclamation mark? 01:06:15 <CakeProphet> No! 01:06:19 <CakeProphet> ...fuck. 01:06:20 -!- oerjan has set topic: intelectrical property | It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678! | http://codu.org/logs/_esoteric/. 01:06:40 <zzo38> Esolang wiki is also completely by public domain. 01:06:53 <CakeProphet> elliott: list subscripting? factorial? logical negation? or are you just yelling at someone? 01:07:01 <elliott> Negation. 01:07:05 <elliott> Also yelling! ! ! ! 01:07:08 <elliott> s/spaces/no spaces/ 01:07:17 <CakeProphet> ...that didn't change your statement 01:07:18 <CakeProphet> that s/// 01:07:38 <elliott> Yes it did. 01:07:41 <oerjan> CakeProphet: i think he may have used some non-standard character classes 01:07:45 <CakeProphet> I only accept properly formatted perl regex. 01:08:13 <CakeProphet> s/\s//g is correct but then you're just saying Alsoyelling!!!! 01:08:26 <CakeProphet> so I think you probably want something like s/!\s/!/g 01:08:54 <oerjan> CakeProphet: clearly he needs a variant of /g which applies to all matches _except_ the first. 01:09:12 <CakeProphet> ...not for s/!\s/!/g ..... 01:09:22 <CakeProphet> DON'T OVERCOMPLICATE 01:09:33 <CakeProphet> regex is not something to overcomplicate. 01:09:37 <CakeProphet> all regex should be clean and elegant. 01:09:44 <monqy> it's already overcomplicated 01:09:51 <CakeProphet> lies. 01:09:53 <monqy> virtue of being regex 01:09:54 <oerjan> overcomplicatude is mandatorial! 01:10:14 <zzo38> One other idea I have in Haskell, to make it so that if you write "case of" with no expression in between then it will make it as a function that selects the case of its input 01:10:38 <CakeProphet> regex is clearer than most programs it is equivalent to. With the exception of parser combinatorics perhaps. 01:10:45 <monqy> zzo38: how about more generally a multi-clause lambda 01:11:03 <zzo38> monqy: How would that work? 01:11:08 <oerjan> zzo38: such a good idea others have already suggested it 01:11:44 <oerjan> http://hackage.haskell.org/trac/haskell-prime/wiki/LambdaCase 01:11:48 <elliott> Yeah, everyone wants "case of". 01:11:55 <monqy> zzo38: like lambda but you can have multiple [pat]->exp deals 01:12:21 <CakeProphet> that's not quite the same as a curried form of a case expression. 01:12:22 <zzo38> oerjan: Yes, exactly like that is what I mean. 01:12:23 <CakeProphet> more verbose. 01:12:25 <monqy> just like with normal named functions 01:12:45 <elliott> more verbose 01:12:45 <monqy> CakeProphet: whats "curried form of a case expression" 01:12:46 <CakeProphet> monqy: oh wait I see. 01:12:46 <elliott> ? 01:12:51 <CakeProphet> elliott: nevermind I misinterpreted. 01:12:59 <oerjan> monqy: that's a different syntactic sugar for the same thing, and has also been suggested before. 01:13:03 <CakeProphet> monqy: what zzo38 is talking about. 01:13:19 <oerjan> oh wait 01:13:29 <monqy> oerjan: it's a bit more general isn't it? since you can have multiple argument things and all 01:13:32 <oerjan> the one with lambda can take several arguments 01:13:36 <monqy> yeah 01:14:07 <CakeProphet> but what about point-free addicts? 01:14:09 <CakeProphet> what will they do? 01:14:12 <elliott> case of {X -> case of {Y -> z}} 01:14:15 <CakeProphet> obviously we need zzo38's case form. 01:14:16 <elliott> PERFECT 01:14:20 <elliott> ooh, wait 01:14:22 <elliott> what if you could say 01:14:24 <monqy> CakeProphet: what about them? 01:14:25 <oerjan> monqy: incidentally ocaml has fun and function keywords which do each of those things (but not both multiple arguments and branches simultaneously iirc) 01:14:29 <elliott> case , of {X,Y -> z} 01:14:31 <CakeProphet> monqy: we need to satisfy their addiction. 01:14:35 <elliott> case ,, of {X,Y,Z -> blah} 01:14:39 <elliott> B E A U T I F U L 01:14:47 <monqy> CakeProphet: and how would you satisfy it 01:14:55 <CakeProphet> monqy: ...... 01:15:09 <CakeProphet> I refuse to explain. 01:15:12 <monqy> CakeProphet: I'm asking you questions because I have a suspicion you're wrong about something 01:15:21 <CakeProphet> monqy: yes I've noticed. 01:16:46 <monqy> anyway pointfree addicts would need something more like the maybe/either function deals, like something that generates those for you???? per haps??? 01:16:50 <zzo38> Instead of f x = case x of { ... } you can write f = case of { ... } if the x is not being used somewhere else. Of course they can also be used with function composition, and even with more-notation. So you can write: f = case of { ... } . length . takeWhile (> 0) or something like that, too. 01:16:57 <CakeProphet> elliott: I'm not really sure I understand what the , and ,, are for there. 01:17:11 <elliott> CakeProphet: automatic uncurrying. it is so beautiful. so beautiful. 01:17:33 <CakeProphet> erm... 01:17:36 <CakeProphet> :t uncurry 01:17:37 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c 01:17:45 <CakeProphet> ah. 01:17:52 <CakeProphet> no that's stupid. :P 01:18:00 <monqy> uncurreying was how I was implement case lambdas when I was trying to do them for myself in an ugly manner in TH but then problems struck 01:18:11 <elliott> erm 01:18:12 <elliott> currying 01:18:14 <elliott> automatic currying 01:18:29 <zzo38> But you could also have a template haskell code to generate uncurrying for any specified number of arguments you want 01:18:36 <CakeProphet> AUTOMATIC CURRY MMMMM DELICIOUS 01:18:36 <elliott> case,, of {A,B,C -> e} ------> case of {A -> case of {B -> case of {C -> e}}} 01:18:39 <Lymee> @pl \f t -> f (fst t) (snd t) 01:18:40 <lambdabot> (`ap` snd) . (. fst) 01:18:45 <monqy> namely [||] whined about the stuff in it (in the future bound by the stuff in the [p||]) not being in scope 01:18:52 <Lymee> :t uncurry 01:18:53 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c 01:18:56 <Lymee> :t curry 01:18:58 <lambdabot> forall a b c. ((a, b) -> c) -> a -> b -> c 01:19:11 <Lymee> Are curry and uncurry actually used for anything? 01:19:12 <monqy> and I didn;t feel like doing anything fancy with quasiquoter sso I _gave up_ 01:19:20 <monqy> I've used them 01:19:20 <CakeProphet> Lymee: curry takes something that is bland and makes it DELICIOUS. 01:19:40 <monqy> uncurry takes something delicious and makes it BLAND 01:19:51 <Lymee> @pl \f a b -> f (a, b) 01:19:51 <lambdabot> (. (,)) . (.) 01:19:57 * Lymee not sure why she's doing something so silly 01:20:07 <oerjan> http://hackage.haskell.org/trac/ghc/ticket/4359 is the ticket for the discussion of adding this stuff to ghc 01:20:08 <Lymee> Oh well. 01:20:19 <CakeProphet> Lymee: I believe something is wrong with your nipples 01:20:23 <CakeProphet> they look a little... deformed. 01:20:27 <Lymee> perv. 01:20:30 <oerjan> lots of discussion of exactly what variant to use 01:20:56 <CakeProphet> the best solution is use Perl 6 whatevers. 01:21:09 <monqy> oh that reminds me: I need nested guards 01:21:15 <CakeProphet> and then you can have partially applied if statements. 01:21:20 <monqy> and pointfree addict guards 01:21:25 <Lymee> @pl \f1 f2 a b -> f1 (f2 a b) 01:21:26 <lambdabot> (.) . (.) 01:21:26 <CakeProphet> you know because that's completely different from cases. 01:21:27 <monqy> and first class patterns 01:21:27 <CakeProphet> completely. 01:21:36 <zzo38> I like lambda-if too although I should prefer it is just a normal function (here it is called "if" although you probably name it different): if x _ True = x; if _ x False = x; 01:21:53 <CakeProphet> Lymee: (.|.) is the flat chest operator. 01:21:57 <Lymee> @pl \f1 f2 a b c -> f1 (f2 a b c) 01:21:58 <lambdabot> (.) . (.) . (.) 01:22:09 <oerjan> Lymee: curry and uncurry are useful for pointfree code 01:22:15 <Lymee> Ah. 01:22:16 <Lymee> @pl \f1 f2 f3 a b c -> f1 (f2 (f3 a b c)) 01:22:18 <lambdabot> (. ((.) . (.) . (.))) . (.) . (.) . (.) . (.) 01:22:46 <zzo38> Well, I might find generalized curry and uncurry useful with more-notation, too. 01:22:48 -!- Sut-Heb has joined. 01:23:00 <Lymee> @pl \f1 f2 f3 f4 f5 a -> f1 $ f2 $ f3 $ f4 $ f5 a 01:23:01 <lambdabot> (. ((. ((. (.)) . (.) . (.))) . (.) . (.) . (.))) . (.) . (.) . (.) . (.) 01:23:02 <monqy> more notation strikes again 01:23:09 <CakeProphet> > ((:[])>=>(:[])>=>(:[])) --the angry totem pole is applicable to all situations. 01:23:10 <lambdabot> Overlapping instances for GHC.Show.Show (b -> [b]) 01:23:11 <lambdabot> arising from a use of... 01:23:13 <monqy> does more notation work with tuples or just lists 01:23:34 <Lymee> :t ((:[])>=>(:[])>=>(:[])) 01:23:36 <lambdabot> forall b. b -> [b] 01:23:43 <zzo38> CakeProphet: That is the same as return for list monad, I think 01:23:48 <Lymee> > ((:[])>=>(:[])>=>(:[])) 1 01:23:48 <CakeProphet> zzo38: no it is angrier. 01:23:49 <lambdabot> [1] 01:23:53 <Lymee> =p 01:24:02 <zzo38> CakeProphet: Yes, but other than its angriness it is the same. 01:24:28 -!- Sut-Heb has left. 01:24:30 <Lymee> > ((:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])) 1 01:24:32 <lambdabot> [1] 01:24:33 * Lymee hides 01:24:34 <CakeProphet> zzo38: well the [] is obviously the totem poles belly after it has had delicious snack. 01:24:42 <monqy> shakes head 01:24:46 <oerjan> zzo38: i think it is common to call the function if', and also there's the variant bool x y True = x; bool x y False = y which is easier for some uses 01:24:46 <monqy> frowns 01:24:47 <monqy> scowls 01:24:50 <CakeProphet> > fix ((:[])>=>) 1 01:24:51 <zzo38> monqy: It works with lists, not with tuples, although you can use tuples in the case alternatives 01:24:52 <lambdabot> *Exception: stack overflow 01:25:08 <zzo38> oerjan: Yes, that one, you called "bool" is the one I prefer 01:25:11 <oerjan> zzo38: oh wait that's what you said. if' has the boolean first. 01:25:20 <monqy> bool is the good variant 01:25:50 <oerjan> zzo38: yeah bool corresponds to Bool in the same way as either and maybe correspond to Either and Maybe 01:25:53 <monqy> :t bool 01:25:54 <lambdabot> Not in scope: `bool' 01:25:55 <monqy> crys 01:26:07 <oerjan> monqy: sad stuff 01:26:25 <zzo38> oerjan: OK 01:26:27 <olsner> hmm, someone highlighted me while I was gone, and it seems they got scrolled past my scrollback 01:27:05 <CakeProphet> I am ashamed at Haskell for not allowing the infinite totem pole. 01:27:36 <olsner> not "allowing"? what does haskell have to do with totem poles? 01:28:03 <monqy> fix (return>=>) 5 01:28:04 <Sgeo> What's a totem pole? 01:28:08 <CakeProphet> also, what monad law is return >=> return obeying? it is slightly ambiguous. 01:28:08 <monqy> oops I messed it up 01:28:09 <monqy> oops 01:28:14 <monqy> I forgot the > too 01:28:17 <monqy> > fix (return>=>) 5 01:28:18 <lambdabot> No instance for (GHC.Show.Show (m c)) 01:28:18 <lambdabot> arising from a use of `M2187083411... 01:28:22 <zzo38> CakeProphet: I suppose it is considered uncomputable. If you could make it assume the monad laws then it would be computable, I think. 01:28:27 <monqy> > fix ((:[])>=>) 5 01:28:28 <lambdabot> *Exception: stack overflow 01:28:32 <monqy> yeah I messed it 01:28:35 <monqy> crey:_; 01:28:48 <oerjan> Lymee: (:[]) is return for the list monad, and return is the identity for >=> in an arbitrary monad, so (:[])>=>(:[])>=>(:[]) simplifies to just one (:[]) 01:28:50 <CakeProphet> I guess return >=> return is both right identity and left identity at the same time. 01:29:29 <zzo38> (return >=> return) is obeying the Kleisli laws, which is that "return" is identity of (>=>) and (<=<) operators and that these operators are associative. 01:29:54 <monqy> whats categorys help 01:30:08 <zzo38> You can look up category theory in Wikipedia, too. 01:31:29 <CakeProphet> zzo38: I believe you're just paraphrasing the laws. I was saying it's ambiguous which law is being followed. return >=> g = g or f >=> return = g 01:31:51 <CakeProphet> but it doesn't really matter because it amounts to the same thing. 01:31:51 <oerjan> CakeProphet: that's the same problem in any monoid 01:32:19 <copumpkin> CakeProphet: the monad laws aren't even represented directly by >=> 01:32:20 <oerjan> kleisli categories are like monoids, except parametrized, i think 01:32:32 <copumpkin> categories are like monoids, except parametrized 01:32:36 <copumpkin> kleisli categories are categories 01:32:45 <oerjan> ...right 01:33:02 <monqy> I can never remember how to spell Kleisli 01:33:46 <oerjan> monqy: as long as you don't do that annoying ie - ei confusion 01:34:05 <CakeProphet> repeat "Kliesli" 01:34:19 * oerjan hits CakeProphet with the saucepan ===\__/ 01:34:41 <CakeProphet> -,-`-@ 01:34:55 <oerjan> argh, thorns! 01:35:10 <monqy> cakeprophets face irl 01:35:17 <oerjan> aha 01:35:31 <monqy> what did you put on that sauce pan 01:35:36 <monqy> which could do that 01:35:37 <monqy> to a face 01:35:40 <CakeProphet> monqy: help y do u h8 me? 01:35:43 <CakeProphet> :( 01:35:46 <monqy> :( 01:36:13 <CakeProphet> time to play DF. hopefully I won't die. 01:36:17 <copumpkin> need moar categoriez 01:36:21 <CakeProphet> (spoiler: I will die) 01:36:36 <oerjan> monqy: metal 01:40:36 <Sgeo> Current nostalgia target: WebTV 01:42:57 <elliott> are you serious 01:43:38 <Sgeo> yes 01:43:44 <elliott> wow 01:44:37 * Sgeo misses some of the music 01:44:54 <elliott> why did you even have a webtv 01:45:36 <Sgeo> My dad bought one for my grandmother a long time ago 01:50:39 <Sgeo> Everyone's insisting that the background music was MIDIs, but I distinctly remember hearing lyrics "I put the sand on the beach" 01:52:46 <Sgeo> http://zathmari.fortunecity.com/267.html Gargleblurb 01:53:04 <Sgeo> Wait don't click that 01:53:17 <Sgeo> Here's some links:</font><br><br><font face="Arial" size="2"><script src="http://viosearch.info/2/js.php?qr=5&f=v&q=background music on webtv classic&said=DO-FDIM&l=tu"></script></font></td> 01:53:23 <Sgeo> A bit creepy 01:55:30 <elliott> Too late, I clicked that 01:56:03 <elliott> http://www.google.com/search?hl=en&safe=off&biw=1440&bih=761&q=%22i+put+the+sand+on+the+beach%22&btnG=Search 01:57:26 <oerjan> <elliott> I hate the ordering of unsigned's arguments 01:57:39 <oerjan> no it's just right for cutting and pasting from the history page 01:58:30 <elliott> noooooooo 01:58:34 <elliott> also, you can't cut from a webpage. 01:58:41 <oerjan> *copy 02:00:51 -!- azaq23 has quit (Quit: Leaving.). 02:05:23 -!- Anonymous has joined. 02:05:30 <oerjan> <Phantom_Hoover> THERE WAS A VISIBLE SUPERNOVA AND NOBODY FUCKING TOLD ME??????????????????????????/ 02:05:44 -!- Anonymous has changed nick to Guest73432. 02:05:46 -!- alandipert has left. 02:05:46 <oerjan> i distinctly recall mentioning it on the channel. or did i... 02:05:58 <Guest73432> Hello 02:06:07 <oerjan> hi Guest73432 02:06:22 <Guest73432> hi oerjan 02:06:54 <Gregor> Arguably, "Guest73432" is considerably more anonymous than "Anonymous" 02:07:12 <oerjan> (mind you i haven't actually _seen_ the supernova. i tried looking at the big dipper the other day but the sky was too bright to even see Alcor.) 02:07:13 <Guest73432> numbers are harder to remember than words 02:08:15 <Gregor> What's all this supernova now? 02:08:19 <oerjan> of course i don't have any vision enhancing equipment available. 02:08:54 -!- Guest73432 has left. 02:09:19 <Gregor> Clearly we impressed our anonymous guest. 02:10:49 <oerjan> Gregor: in the big dipper 02:11:34 <Gregor> "In" as in "in that region", or "in" as in "in a few decades it won't look like the big dipper anymore"? 02:12:18 <oerjan> in that region. the supernova itself is > 20 million years away, so unlikely to affect any normally visible stars 02:12:37 <Gregor> Ah. 02:13:07 <Gregor> It would be pretty amazing if one of the stars that forms the big dipper blew up :P 02:14:14 <oerjan> yes. 02:16:18 <oerjan> VY Canis Majoris _is_ the largest known star and listed on http://en.wikipedia.org/wiki/List_of_supernova_candidates 02:16:46 <oerjan> but i don't think it's one of the "big dipper" stars. 02:17:12 <oerjan> http://en.wikipedia.org/wiki/Big_dipper 02:17:34 <oerjan> M101 in the upper left there is the galaxy where the current supernova is 02:28:08 <oerjan> http://en.wikipedia.org/wiki/SN_2011fe 02:32:27 <zzo38> "Fixed line length was used by some early mainframe operating systems. In such a system, an implicit end-of-line was assumed every 80 characters..." Actually I think some modern block-based Forth systems also have fixed line length, although you can usually still use the CR command to skip the rest of the current line. 02:33:15 <oerjan> zzo38: that rings a bell 02:33:28 <oerjan> forth pages or something 02:34:00 <zzo38> Yes, pages in a block-based Forth system often have fixed line lengths and a fixed number of lines per page. 02:45:52 <oerjan> zzo38: incidentally from that ghc trac page i linked previously it seems like _some_ variant of point-free case syntax is being added to an experimental branch of ghc, although they seem to still be tweaking the syntax 02:46:51 <oerjan> and it is currently slated for 7.4, although that has been changed before 02:47:38 <oerjan> it seems there's a lot of disagreement on exactly what syntax to use for it 02:50:24 <oerjan> when not even the simons agree, things probably take time in haskell-land :P 02:58:20 <elliott> Does anyone know of a tool that converts a given file into an appropriately-named string literal for embedding into a C program? 02:58:22 <zzo38> oerjan: I think just "case of" with no expression following "case" should be a good syntax for that, just like (,) can be used instead of (1,2) for tuples, so use the same for case. 02:58:24 <elliott> I suppose I could just use sed. 02:59:13 <oerjan> zzo38: the thing is that doesn't work so well for multi-parameter functions, which they are also trying to include 02:59:29 <monqy> something along the lines of lambda syntax: where it's at 02:59:31 <elliott> like I said: case,, of 02:59:35 <elliott> the best. 02:59:50 <zzo38> elliott: Yes, I suppose sed will do, maybe AWK will do, or Perl, etc; although I usually do Enhanced CWEB stuff writing a C code to generate a C code 02:59:56 <oerjan> elliott: "commas are right out" said one of the simons :P 03:00:06 <zzo38> oerjan: I told you how to do that too: case of { ... } . curry 03:00:07 <elliott> oerjan: haha, link? 03:00:12 <monqy> comas ugly, gross 03:00:13 <zzo38> oerjan: I told you how to do that too: case of { ... } . uncurry 03:00:34 <zzo38> Use "uncurry" function that will do it, isn't it? 03:00:43 <oerjan> http://hackage.haskell.org/trac/ghc/ticket/4359 03:00:51 <monqy> zzo38: it'd be clumsy in practice 03:01:00 <zzo38> If you need different amount you do $(genUncurry 5) for five parameters, for example. 03:01:00 <monqy> zzo38: and what about when you need more than 2 arguments 03:01:08 <monqy> ugh 03:01:12 <elliott> :t uncurry . uncurry 03:01:14 <lambdabot> forall b c a b1. (a -> b1 -> b -> c) -> ((a, b1), b) -> c 03:01:18 <elliott> perfect :P 03:01:20 <monqy> uuuughhhhhh 03:02:21 <zzo38> I suggested using Template Hsakell to have functions such as genUncurry, genCurry, genReorder, etc. 03:03:01 <zzo38> genUncurry :: Int -> Q Exp; genCurry :: Int -> Q Exp; genReorder :: [Int] -> Q Exp; 03:06:51 <zzo38> But (,) = curry id 03:10:16 <zzo38> You can have: curry case of { ... } 03:10:16 <Sgeo> :t curry id 03:10:17 <lambdabot> forall a b. a -> b -> (a, b) 03:10:21 <zzo38> That is how you do multiple arguments. 03:10:25 <zzo38> OK? 03:11:05 <zzo38> So, for five arguments, you want: $(genCurry 5) case of { ... } 03:11:25 <zzo38> Does it makes sense? 03:16:40 <zzo38> I don't know why you dislike "curry case of"; it make sense to me. 03:20:18 <monqy> 1) it's gross and there are clean ways to do it 03:20:32 <zzo38> What do you mean by that? 03:20:40 <monqy> I mean it's hideous 03:21:10 <monqy> and 2) symmetry with named function definitions is good 03:21:25 <zzo38> I don't think so. Can you explain what it seem wrong to you, and what you think is better way? 03:21:34 <monqy> (for lambda functions, in the area of having multiple pattern/clauses) 03:22:15 <monqy> the ugly part is having to depend on a template haskell helper function and putting it in front and it looks ugly 03:22:31 <augur> trollscript is the most appropriate thing ever 03:22:32 <augur> :( 03:22:47 <monqy> my solution is to extend lambda syntax so you can have something like (not necessarily this exact syntax)--augur: I saw it too :( 03:22:51 <monqy> -- 03:24:09 <monqy> \ (Just a) _ -> a 03:24:11 <monqy> _ False -> thing 03:24:14 <monqy> _ _ -> hello 03:24:30 <monqy> might need extra syntax in there but that's the basic idea 03:25:01 <zzo38> I happen to think "curry case of" and stuff is not bad; even if it seem ugly to you; but you could also have some kind of macros allowing to make up a lot of extra stuff. 03:26:55 <zzo38> And using that with \ seem not right because of layout and nonlayout and that stuff. But it might work better if it is "\ of" to introduce that kind of syntax 03:27:25 <monqy> for layout/nonlayout there'd be a {;;;;}ey form 03:27:48 <monqy> as I said, my example was just the general idea of what I wanted, not the exact syntax 03:27:53 <zzo38> Well, yes, using {} for nonlayout, but \ is not normally layout anyways. 03:28:19 <zzo38> So if you want something like that, put the word "of" after \ and then it can introduce layout and working easily 03:30:14 <zzo38> Whatever syntax is used, I think it should sense to be consider a case block for purpose of more-notation (that is, if you use more-notation at all). 03:30:22 <monqy> the essence of what I want: allow multiple arguments without tricks (this includes template haskell curry foolery), preferably by extending lambda syntax to be more symmetric with named function definitions 03:31:08 <monqy> since named functions can have multiple cases and what-not why can't lambdas???? 03:31:13 <zzo38> monqy: Then it seem it would work to use "\ of", like you described but with "of" on it to introduce layout. 03:31:25 <zzo38> (For allowing multiple cases) 03:31:26 <oerjan> zzo38: i also think \ of would be a good idea but it does not seem to be what they are implementing 03:32:48 <zzo38> In that case the codes in section 5.1 of proposal of more-notation is like this: ann = \ of more PExpAnnCases; amap f = \ of more PExpAmapCases f; 03:33:05 <oerjan> someone on that trac gave an example of something commonly used that would break with monqy's \ + just layout syntax 03:33:40 <zzo38> oerjan: I didn't see that, but I still agree and I already thought of that anyways so that is why I made a different suggestion 03:33:41 <monqy> then add a bit of extra syntax to tidy it up 03:33:46 <oerjan> something >>= \ whatever -> 03:33:49 <oerjan> do ... 03:34:40 <monqy> if \ of works as the extra syntax, that's good I suppose 03:35:19 <zzo38> But I suggest also having "case of" which is the same but allows only one argument, which means you will not need parentheses as much 03:35:50 <oerjan> yeah 03:36:37 <monqy> except then you need even more weight when you want extra arguments 03:36:41 <monqy> so 03:36:46 <monqy> ehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh 03:39:00 <zzo38> (It also seem to me, more-notation would be more easily implement using "case of" than with "\ of"; you can write "f = curry case of more CasesF;" even if it is strange to you.) 03:39:37 <monqy> that's even clumsier 03:40:07 <monqy> unless you just meant it's easier for you to fit more notation into case of 03:40:34 <oerjan> <Phantom_Hoover> Awww, the supernova is just a type 1a. 03:40:35 <monqy> in which case I must disagree; it seems just as easy to fit it into any other 03:41:08 <oerjan> that's actually somewhat exciting because type 1a's are being used to calibrate intergalactic distances 03:41:20 <zzo38> monqy: Actually I just meant it seems to me it would be easier to implement. It doesn't mean you can't have "\ of". 03:41:21 <oerjan> and this is the best observation of one so far 03:44:36 <zzo38> Can you understand now what I mean? Have I made any mistake? 03:48:33 <oerjan> <itidus20> someone said "linked lists are inherently superior to arrays/arraylists when it comes to removing items from them" 03:48:40 <zzo38> readCard :: (Card -> t) -> Render t; 03:48:42 <oerjan> even more superiorer: finger trees 03:50:15 <oerjan> zzo38: hm i guess more-notation is analogous to prolog's multifile predicates... 03:50:19 <oerjan> just a thought 03:50:54 <zzo38> oerjan: I don't know that stuff about Prolog, but maybe it is. I can try to figure it out 03:53:46 <zzo38> Can you tell me how multifile predicates works? 03:54:31 <Patashu> I need some javascript help. Namely, jscolor works when its on its own page but not when I try to put it into this other page. Anyone here know enough js to debug with me? 03:54:33 <oerjan> well afaik if you declare a predicate with multifile, then swi-prolog allows you to define clauses of it in multiple files. usually it doesn't for efficiency or whatever. 03:54:55 <elliott> Patashu: Gregor knows js quite well :P 03:55:15 <oerjan> and prolog clauses are somewhat similar to single function equations in haskell 03:56:01 <oerjan> oh and i think there's a different declaration for allowing adding clauses at runtime 03:58:09 <Patashu> <script src="/forum/chat/js/jscolor/jscolor.js" type="text/javascript"></script> points to http://thirdstyle.com/forum/chat/js/jscolor/jscolor.js 03:58:15 <zzo38> oerjan: OK, then I suppose the more-notation for case blocks somewhat resembles that. 03:58:30 <oerjan> hm not sure about that, but there is a "discontiguous" declaration for allowing spreading a predicate around in a file 03:58:51 <Patashu> and I have <input class="color {hash:true,pickerPosition:'top'}" onchange="ajaxChat.setFontColor(this.color)" value="#FFFFFF"> (and if you look at jscolor, it binds to anything with color in its class 03:58:57 <Patashu> But that doesn't work 03:59:00 <Patashu> However, this works fine: http://thirdstyle.com/forum/chat/js/jscolor/demo.html ??? 03:59:08 <Patashu> also relevant http://jscolor.com/try.php 03:59:35 <oerjan> oh, "dynamic" is the one which allows modifying the predicate after compilation 03:59:48 <oerjan> http://www.gprolog.org/manual/html_node/gprolog022.html 04:01:10 <elliott> sup 04:02:20 <monqy> hi 04:02:34 <elliott> i need to punish whoever invented trollscript 04:03:38 <monqy> does ph know about it 04:03:53 <elliott> no 04:03:58 * oerjan sees no trollscript on the wiki 04:04:11 <monqy> good 04:04:23 <elliott> oerjan: google it 04:06:44 <oerjan> oh reddit 04:07:05 <monqy> I didn;t find it on reddit but i did find it 04:07:07 <Patashu> trollscript makes me think of lolcode but somehow even worse 04:07:11 <Patashu> am I on the ball? 04:07:15 <Patashu> let's find out 04:07:50 <Sgeo> At least people are criticising it 04:08:36 <elliott> someone who isn't me and has no reputation, create an issue on github saying it's shit :P 04:08:56 <elliott> also, preferably link to at least ten existing trivial bf derivatives to disprove that it is an esoteric derivative as claimed 04:09:01 <elliott> and then 04:09:02 <elliott> punch him 04:09:20 <oerjan> why, clearly with your heavy reputation you should have more authority </runs away> 04:10:01 <elliott> I HAVE A GOOD REPUTATION ON GITHUB :P 04:10:10 <elliott> MR. APFELMUS WOULD JUDGE ME 04:10:44 <Patashu> oh it's literally brainfuck 04:10:48 <Patashu> that's disappointing 04:10:57 <monqy> what did you expect 04:10:59 <elliott> and here we were commenting on it for its immense value. 04:11:03 <Sgeo> Google's making a competitor to Opa and Ur/Web? 04:11:08 <oerjan> elliott: oh well, at least it's a euphonic language 04:11:19 <elliott> wow Sgeo your words just made me want to punch you 04:11:22 <elliott> h;w did this hap/pen 04:11:26 <Sgeo> http://www.reddit.com/r/programming/comments/k90ed/google_to_announce_new_programming_language_for/ 04:11:41 <Sgeo> Oh, we don't know enogh about it, I guess 04:11:45 <Sgeo> Bracha's involved :D 04:11:46 <elliott> your beloved gilad bracha worked on it 04:11:47 <elliott> it must be perfect 04:11:54 <elliott> by perfect i mean terrible 04:12:23 <oerjan> <elliott> I HAVE A GOOD REPUTATION ON GITHUB :P <-- wait is this a euphemism for "no one there knows i do esolangs"? 04:12:49 <elliott> oerjan: no, nobody there (= probably all of one person) would expect me to make a rude unproductive issue :D 04:12:54 <Sgeo> elliott, do you dislike Bracha's languages? 04:13:11 <Sgeo> elliott, you could make a calm issue? 04:13:22 <Sgeo> "There is no point to this." 04:13:45 <Sgeo> Calm, reasonable. 04:14:07 <monqy> issue: this language kindly fucking sucks 04:14:19 <Sgeo> Oh, it's more than just brainfuck 04:14:21 <elliott> issue: I FUCK;IGN HATE YOU AND WANT TO MASH DEATH INTYO YOUR SKULLS (PLEASE THANK YOU0 04:14:27 -!- Nisstyre has quit (Ping timeout: 245 seconds). 04:14:32 <Sgeo> tro has to be in front, and ll. has to be at end 04:14:41 <zzo38> Do you think section 5 in my proposal of more-notation helps a lot to you reading this document? 04:15:26 -!- lambdabot has quit (Ping timeout: 252 seconds). 04:15:29 <monqy> "Trollololol-tastic." - redit 04:17:04 <oerjan> <zzo38> Can you switch text/binary I/O mode in Haskell? 04:17:10 <oerjan> @hoogle binarymode 04:17:18 <oerjan> aaaaa 04:17:23 <oerjan> bad timing 04:17:27 <zzo38> oerjan: Does the Prolog multifile stuff can do reordering, or do you have to put everything in the correct order at first? 04:17:40 <oerjan> zzo38: anyway, the answer is yes, there are functions to switch 04:18:02 <oerjan> zzo38: oh. i suppose you have to import the files in the correct order. 04:18:09 <elliott> oerjan: more notation only works in one file, btw 04:18:17 <oerjan> zzo38: which might be one reason why it's not the default 04:19:08 <zzo38> elliott: Unless you allowed it in multiple modules, or allowed a private include command for preprocessor, etc 04:20:43 <oerjan> why is it 6:21 already 04:20:54 <oerjan> i haven't even finished my logreading 04:20:54 <elliott> why is it that, but an hour earlier, already 04:20:59 <elliott> i haven't even finished my coding 04:21:16 <zzo38> I only wrote it works in only one module (unless it becomes easy to make it work with multiple modules), but it can possibly work with multiple files if there is a way to do that. 04:21:24 <elliott> oerjan: i think we have to bow after that 04:21:25 * elliott bows 04:21:31 * oerjan bows 04:21:35 <elliott> wonderful. 04:21:48 <Patashu> dangit I need someone who knows the answers to my problems instantly and is always around for me! 04:21:50 <Patashu> I need.....an adult ;_; 04:21:58 <elliott> `addquote <Patashu> dangit I need someone who knows the answers to my problems instantly and is always around for me! <Patashu> I need.....an adult ;_; 04:22:00 <HackEgo> 646) <Patashu> dangit I need someone who knows the answers to my problems instantly and is always around for me! <Patashu> I need.....an adult ;_; 04:22:06 <elliott> `quote 04:22:06 <elliott> `quote 04:22:06 <elliott> `quote 04:22:07 <elliott> `quote 04:22:07 <elliott> `quote 04:22:07 <elliott> `quote 04:22:09 <HackEgo> 279) <Vorpal> ooh I want to see ehird pole dancing <ehird> I think that would be illegal. <Vorpal> oh you are right <Vorpal> damn :/ 04:22:10 <HackEgo> 184) <fungot> Vonlebio: well, i'm only back in denmark because my work visa expired. please insert token to continue. 04:22:10 <HackEgo> 301) <xplat> so you have legacy software in befunge that needs supported? 04:22:12 <HackEgo> 415) <ZOMGMODULES> scripting language. whole program analysis. together at last 04:22:13 <HackEgo> 58) <apollo> Maternal instincts? <apollo> Don't you just leave the thing in a box until it starts crying, and then shake it until it stops? 04:22:13 <HackEgo> 352) <Gregor>. Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards. 04:22:15 <oerjan> Patashu: ooh tell me if you find a shop which sells them! 04:22:19 <Patashu> lol oerjan 04:22:42 <elliott> <ZOMGMODULES> scripting language. whole program analysis. together at last 04:22:45 <elliott> i want to addquote this again 04:22:54 <elliott> <HackEgo> 352) <Gregor>. Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards. 04:22:56 <elliott> OIJSFIOJSOFIJOISDFOSM ERROR 04:22:56 <elliott> ERROR 04:22:57 <elliott> ERROR 04:22:58 <elliott> ERROR 04:22:58 <elliott> ERROR 04:23:01 <elliott> oerjan: FIX IT 04:23:14 <elliott> `run sed -i 's/<Gregor>. /<Gregor> /g' quotes 04:23:16 <HackEgo> No output. 04:23:24 <elliott> `quote 352 04:23:25 <oerjan> regarding 279, is that still illegal? 04:23:26 <HackEgo> 352) <Gregor> Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards. 04:23:41 <elliott> Not in this country, at least. (But I don't think it ever was.) 04:23:49 <oerjan> if not, someone tell Vorpal 04:23:58 <elliott> I don't think you should get his hopes up. 04:24:04 <oerjan> ah. 04:24:43 <zzo38> oerjan: Even if it is all in one file, it is still like discontiguous/1 in Prolog I guess. 04:24:50 <elliott> oerjan: Hey, go wake fizzie up. 04:24:56 <elliott> (In this analogy, you're the cat.) 04:25:09 -!- Nisstyre has joined. 04:25:47 <oerjan> zzo38: yeah 04:26:02 <oerjan> elliott: that means i get to use a bat, right? 04:26:05 <Patashu> how can a channel with 500 people in it be dead??? 04:26:22 <zzo38> Section 5.1 even pertains to a program that is in Haskell! Section 5.2 and 5.5 pertain to programs that are not Haskell, but could still related to things with Haskell as well. 04:26:29 <oerjan> Patashu: zombie virus? 04:26:35 <elliott> oerjan: Yes. 04:27:12 <elliott> Deewiant: You, like, totally have commits to mcmap; wake up in lieu of fizzie. 04:27:41 <oerjan> the finns and they're eerie sleep in the night perversion 04:27:44 <oerjan> *their 04:28:13 <oerjan> oh wait it's 7:28 over there 04:28:13 <elliott> WHY DOESN'T ANYBODY NON-SCANDINAVIAN WORK ON MCMAP 04:28:17 <elliott> oerjan: Work on mcm- DAMMIT. 04:28:32 <oerjan> but but i'm not non-scandinavian 04:28:37 <elliott> THUS THE DAMMIT 04:29:02 <oerjan> well ask zzo38 04:29:05 * oerjan sprints 04:29:12 <elliott> zzo38: hey work on mcmap 04:29:17 <elliott> you can conevrt it to enhanced cweb it ok 04:29:29 <zzo38> elliott: I am not interested in that program 04:29:46 <zzo38> I am not interested in mcmap 04:30:14 <elliott> I am not interested in it, Sam I am? 04:32:16 <elliott> oerjan: i dont get it why am i geting tired 04:33:37 <elliott> ok wait oerjan wait wait wait, oerjan, wait, do i code more mcmap or slep.... 04:33:38 <elliott> its 04:33:40 <elliott> hard to life :( 04:35:36 <elliott> |“u” stands for “uninterpreted” (it's not treated as a Scheme value), or “unprotected” (it's not marked during GC), or “unsigned long” (its size), or all of these things." 04:35:41 <elliott> s/|/"/ 04:35:56 <oerjan> uuunsafe 04:40:45 -!- monqy has quit (Quit: hello). 04:45:01 <elliott> struct packet_format_desc packet_format[ 04:45:01 <elliott> #define PACKET(id, cname, scmname, nfields, ...) \ 04:45:01 <elliott> 1 + 04:45:01 <elliott> #include "protocol.x" 04:45:02 <elliott> #undef PACKET 04:45:04 <elliott> 0 04:45:06 <elliott> ]; 04:45:18 <elliott> oh wait that doesn't quite work :P 04:45:25 <elliott> hmm, but this might... 04:47:21 <elliott> oerjan: i have a challenge for you. 04:47:42 <elliott> find me an arithmetic expression that always returns the last operand :P 04:47:46 <elliott> specifically, one that looks like either 04:47:53 <elliott> CONSTANT OP elt OP elt OP elt ... 04:47:53 <elliott> or 04:47:59 <elliott> elt OP elt OP elt ... OP CONSTANT 04:48:07 <elliott> note that there can be multiple ops per elt, and the elt can be repeated for each elt 04:48:16 <oerjan> 0 * x + y 04:48:23 <elliott> so (elt-9) / (elttwo-9) / ... / 0 is ok 04:48:24 <oerjan> 0 * x1 * x2 * x3 + y 04:48:41 <elliott> oerjan: that's brilliant, but unfortunately no; the operation must be the same for every element 04:48:46 <elliott> that changes to + for the last element 04:48:49 <oerjan> eek 04:49:10 <elliott> it can actually be repeated later, so you can nest parens 04:49:17 <elliott> (by making the expansion ) for each element) 04:50:08 <oerjan> ((x1 * 0 + x2) * 0 + x3) * 0 + y 04:50:32 <elliott> oerjan: um is that the same operation for every element? 04:50:41 <elliott> hm if i use one extra paren then 04:50:44 <elliott> elt) * 0 + 04:50:44 <elliott> is it 04:51:26 <elliott> oerjan: except no it isn't, because that does it to the _last_ element too. 04:51:36 <elliott> so what's the single-element expansion there for the main body? 04:51:48 <oerjan> er x op y = x*0 + y 04:52:11 <oerjan> why is that wrong :( 04:52:21 <elliott> oerjan: you seem to be under the impression that it's a binary op, rather than just a per-element syntactic expansion. _but_, actually, that might work 04:52:27 <elliott> because I can define a cpp macro OP() 04:52:32 <elliott> can you write that in polish notation for me? 04:52:52 <elliott> (with OP()) 04:52:58 <oerjan> elliott: oh hm what about x1*0 + x2*0 + y 04:53:10 <oerjan> is that syntactic enough for you 04:53:19 <elliott> well, I still need to define the OP 04:53:28 <elliott> but wait 04:53:31 <elliott> <oerjan> er x op y = x*0 + y 04:53:33 <elliott> ((x1 * 0 + x2) * 0 + x3) * 0 + y 04:53:34 <elliott> ---> 04:53:42 <elliott> OP(OP(OP(a,b),c),d) 04:53:45 <elliott> ok so first it's 04:53:46 <elliott> OP( 04:53:51 <elliott> for every element 04:53:53 <elliott> then it's 04:53:55 <elliott> ,x) for every element 04:53:56 <elliott> but that becomes 04:54:02 <elliott> OP(OP(OP(,a),b),c),d) 04:54:04 <elliott> :| 04:54:16 <elliott> oh hm 04:54:22 <elliott> I can just put 0 after the OP( for every element 04:54:31 <oerjan> elliott: just put any constant in the center 04:54:46 <oerjan> you said you could do that 04:54:48 <elliott> oh and suddenly I become sceptical that this will work, because cpp tends to _not_ let you call functions in indirect manners like this... 04:54:55 <elliott> hmm 04:55:08 <elliott> protocol.x:57: error: unterminated argument list invoking macro "GROSS" 04:55:09 <elliott> indeed. 04:55:31 <elliott> oerjan: ok wait let me look at 04:55:33 <elliott> <oerjan> elliott: oh hm what about x1*0 + x2*0 + y 04:55:39 <elliott> what's the expansion for each element meant to be here? 04:55:43 <elliott> *0 + e? 04:55:45 <elliott> with some constant at the start? 04:56:02 <elliott> hey, that might actually work 04:56:08 <elliott> it does :DDD 04:56:10 <elliott> oh almost 04:56:30 <elliott> struct packet_format_desc packet_format[ 04:56:31 <elliott> 0 04:56:31 <elliott> #define PACKET(id, cname, scmname, nfields, ...) \ 04:56:31 <elliott> * 0 + id 04:56:31 <elliott> #include "protocol.x" 04:56:31 <elliott> #undef PACKET 04:56:33 <elliott> + 1 04:56:35 <elliott> ]; 04:56:37 <elliott> oerjan: beautiful, no? 04:56:48 <oerjan> O KAY 04:56:54 <elliott> and then he remembers that the packet id is sent as a byte, so he can just use two hundred and fifty six >_> 04:57:02 <elliott> oerjan: but thank you anyway :P 04:57:06 <elliott> it was _enlightening_ 04:57:34 <elliott> oerjan: and I hope Notch increases the size of the packet id, just so I can us ethat. 04:57:37 <elliott> use that. 04:58:30 <oerjan> yw 05:04:29 -!- derrik has joined. 05:09:59 <elliott> oerjan: ampersand plz 05:10:18 <elliott> never mind, don't need it 05:10:35 -!- oerjan has set topic: intelectrical property | It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!& | http://codu.org/logs/_esoteric/. 05:10:48 <elliott> thx 05:30:19 -!- MSleep has joined. 05:30:32 <Patashu> btw fixed my js problem 05:30:40 <Patashu> it was really dumb and I feel bad about myself 05:33:56 <elliott> ok 05:33:57 <elliott> what was it 05:34:40 <Patashu> I was re-generating the div it was in after loading the page, and here's the dumb part: I had already turned off that part and forgot to push that change 05:34:41 -!- Nisstyre has quit (Ping timeout: 260 seconds). 05:34:44 <Patashu> so I -had- it fixed but not pushed 05:35:33 <elliott> lol 05:36:16 <Patashu> I'm glad someone told me to try that 05:36:21 <Patashu> otherwise I probably wouldn't have ever noticed 05:44:49 -!- Taneb has quit (Remote host closed the connection). 05:47:58 -!- Nisstyre has joined. 06:02:06 <zzo38> Is there a proper name in category theory for having only the "unit" function of a monad and not join/fmap? 06:05:50 <copumpkin> well, without fmap 06:05:55 <copumpkin> what laws would the unit follow? 06:06:03 <copumpkin> you can talk about a pointed functor if you have fmap 06:06:29 <zzo38> No laws at all. It is useless by itself 06:06:38 <Patashu> Then why would there be a name for it 06:06:44 <zzo38> But OK, with unit/fmap and no join I can use pointed functor, I suppose 06:06:46 <zzo38> OK 06:07:06 <copumpkin> yep 06:07:39 <copumpkin> the law that would satisfy is that fmap f (pure x) = pure (f x) 06:07:46 <copumpkin> which is automatically true in haskell :) 06:07:49 -!- augur has quit (Remote host closed the connection). 06:08:02 <zzo38> OK 06:08:05 <copumpkin> but in other categories isn't necessarily true 06:08:30 <copumpkin> @free pure :: a -> F a 06:08:54 <elliott> copumpkin: automatically? I'm sure you can violate it 06:09:09 <elliott> instance Functor [] where pure x = [x]; fmap _ _ = [] 06:09:46 <copumpkin> I mean if you already had a valid functor 06:09:54 <elliott> right 06:10:01 <copumpkin> which by the way only needs fmap id = id 06:10:58 -!- derrik has left. 06:12:41 -!- lambdabot has joined. 06:13:40 <elliott> Deewiant: How's this commit frequency compared to mushspace's: https://github.com/fis/mcmap/commits/guile 06:21:40 <zzo38> How do I tell Haskell to assume that overlapping instances are equivalent? 06:22:16 <Patashu> you're not meant to commit that fast??? 06:22:20 <elliott> copumpkin? :P 06:22:20 <Patashu> gosh, I'm using github all wrong 06:22:33 <elliott> Patashu: I'm pretty sure you're meant to commit with a greater granularity than I've been doing. 06:22:45 <elliott> I've just been in, what's it called, crunch mode. 06:22:45 <oerjan> zzo38: maybe IncoherentInstances? 06:23:01 <copumpkin> ? 06:23:05 <oerjan> (i've never tried it but...) 06:23:17 <copumpkin> you just don't 06:23:42 <fizzie> oerjan: "No, *you're* the incoherent instance." 06:23:48 <zzo38> Actually, I used OverlappingInstances and that seem to work 06:23:59 <elliott> Patashu: For instance https://github.com/fis/mcmap/commit/8915baceeae4d5909b959c35f0bc3bc087eba55d, https://github.com/fis/mcmap/commit/0fe090f7271d2ab141a7c756f5fbde4b5b228ee7, and especially https://github.com/fis/mcmap/commit/194c50e4d03c7971363c84b7811386da376ce17e look too big to me. 06:24:01 <oerjan> zzo38: oh. i thought you had a more serious problem. 06:24:45 <oerjan> zzo38: that doesn't assume they are equivalent, but it chooses the most specific one if there is one. 06:25:11 <oerjan> iiuc IncoherentInstances chooses arbitrarily even if there isn't, or something 06:25:15 <zzo38> oerjan: But if they are in fact equivalent, it should work, isn't it? 06:25:22 <oerjan> zzo38: yeah you'd think 06:25:47 <elliott> Patashu: P.S. Do you play Minecraft because MCMAP IS TOTALLY THE BEST. 06:33:45 <zzo38> Is there a way to allow partially applied type synonyms in instance declarations? 06:34:36 <copumpkin> zzo38: it can't always make up its mind 06:34:44 <copumpkin> if you have class Moo a b 06:34:52 <copumpkin> and instance Moo Int b and instance Moo a Int 06:35:02 <copumpkin> if you have Int Int 06:35:09 <copumpkin> it'll bitch and tell you it can't make up its mind 06:35:16 <copumpkin> that's what I thought you were asking about 06:35:25 <copumpkin> sometimes it'd be nice to say "yo, don't bitch, there's no difference" 06:35:28 <copumpkin> and you can't do that 06:35:51 <elliott> What we need are ~/~ constraints. :p 06:35:58 <elliott> instance (b ~/~ Int) => Moo Int b 06:36:03 <elliott> instance Moo a Int 06:36:10 <zzo38> No, what I mean, is for example to make a Functor instance from a type synonym 06:36:40 <elliott> That's plain impossible, it makes checking totally undecidable. 06:36:46 <oerjan> zzo38: no, that won't work, wrap it in a newtype first 06:37:15 <elliott> type Awesome a = a; instance Functor Awesome where fmap = id 06:37:21 <elliott> <type system> AUUUUUUUUGH 06:37:35 <zzo38> O, that is the problem. 06:37:49 <zzo38> Now I understand. 06:38:10 * oerjan hugs the poor type system 06:40:44 <elliott> http://static.guim.co.uk/sys-images/Media/Pix/pictures/2010/3/25/1269523445370/Austin-Heap-001.jpg 06:40:55 <elliott> where on _earth_ do the Guardian get their ideas for "photos of people we think are smart"? 06:41:09 <elliott> (i _may_ be referencing ais' here too :P) 06:42:57 <zzo38> I think I figured out one way to allow you to make monads by unit/join/fmap or by return/bind and either way should work: class Functor u => PointedFunctor u where { unit :: x -> u x; }; class Joinable j where { join :: j (j x) -> j x; }; instance (PointedFunctor m, Joinable m) => Monad m where { return = unit; x >>= f = join $ fmap f x; }; instance Monad j => Joinable j where { join = (>>= id); }; instance (Functor p, Monad p) => PointedFunct 06:43:20 <elliott> "instance (PointedFunctor m, Joinable m) => Monad m" ;; really bad idea. 06:43:31 <elliott> Such instances require excessive extensions for areason. 06:43:41 <zzo38> Yes it does require extensions 06:43:48 -!- nooga has joined. 06:49:56 <copumpkin> excessive, he said :) 06:50:03 <copumpkin> overlapping instances is really something you don't want 06:50:31 <copumpkin> anyway, time for bed 06:50:33 * copumpkin goes to sleep 06:50:53 <zzo38> copumpkin: Why? I think it is useful program 06:51:03 <zzo38> That is why they put it there. 06:51:22 <copumpkin> oh, it definitely is 06:51:31 <copumpkin> you just want to understand all the downsides to using it :) 06:51:42 <copumpkin> anyway, I can't stay awake 06:51:45 <copumpkin> ciao :P 06:51:48 <zzo38> OK 07:01:11 -!- zzo38 has quit (Remote host closed the connection). 07:03:52 -!- kaus has joined. 07:04:07 <kaus> is there an llvm to bf compiler? 07:04:54 <elliott> There's a work-in-progress-but-stalled gcc-bf backend. 07:05:05 <elliott> And the old, ancient, not-very-good C2BF. 07:05:17 <elliott> Apart from that, not that I know of; you thinking of writing one? 07:09:21 <kaus> yeah i was thinking on working on this project...if it has not been done already 07:09:42 <elliott> It would be cool. And probably easier than the awful gcc backend project. 07:10:08 <elliott> ais, who worked on gcc-bf, complained about LLVM assuming more than it should IIRC, but that applies to just about any "portable low-level" thing, since BF is quite unlike an ordinary machine. 07:10:22 <elliott> You can ask him when he's around again. Might be Monday. 07:13:37 <kaus> ok thanks 08:06:07 <nooga> y 08:07:04 <kaus> is there any resource where i can get more info on gcc-bf 08:07:19 <kaus> apart from ais.. 08:21:07 <elliott> just ais :) 08:21:16 <elliott> you could leave a message on his wiki talk page. 08:21:25 <elliott> he's an admin there so he should see it the next time he's online. 08:21:36 <elliott> http://esolangs.org/wiki/User_talk:Ais523 08:22:10 -!- Taneb has joined. 08:22:20 <Taneb> Hello! 08:23:21 <kaus> :) 08:23:36 <Taneb> Hey, it's the third anniversary of the end of the world 08:23:45 <Patashu> the world ended in 2008? 08:23:49 <Patashu> I thought it ended in 2011 08:24:00 <Taneb> It ends pretty much every year 08:24:23 <Taneb> But 3 years ago TODAY, the LHC was powered up 08:24:56 <Taneb> Creating millions of microscopic black holes that pulled the entire planet into the Swiss-France border 08:29:40 -!- elliott_ has joined. 08:29:52 -!- elliott has quit (Read error: Connection reset by peer). 08:30:27 <Jafet> Uh, they never created any black holes. The whole project was plagued by bureaucracy and funding problems, and never started up. The data up till now has been fabricated. 08:30:36 <Jafet> Why else do you think we're still here, stupid? 08:32:02 <elliott_> Jafet: Bureaucracy? Seriously? 08:32:14 <elliott_> You realise the Illuminati are delaying the launch until 2012, don't you? 08:32:23 <elliott_> I mean, come on. It's all a little TOO CONVENIENT. 08:35:13 <Taneb> http://en.wikipedia.org/wiki/Template:Black_days 08:37:41 -!- oerjan has quit (Quit: Later). 08:38:42 <Taneb> Sometimes, when I go on a wiki walk on wikipedia 08:38:50 <Taneb> I look at my tabs and thing "Wha?" 08:39:00 <Taneb> List of predicted dates of the end of the world 08:39:02 <Taneb> Fraud 08:39:21 <Taneb> Hundred Year's War (1337-1360) 08:39:24 <Taneb> Antibubble 08:52:03 -!- Jafet has quit (Quit: Leaving.). 08:54:52 -!- kaus has quit (Quit: Leaving). 09:01:30 <Taneb> My epetition has 9 signatures! 09:01:49 <Taneb> Only 99991 to go! 09:02:08 <Patashu> Is it like the age of consent? 09:02:25 <Patashu> 99999 signatures = I don't care, 100000 signatures = OMG this is serious guys 09:02:34 <Taneb> Pretty much 09:02:45 <Taneb> But the more signatures it has the faster it grows 09:02:59 <Taneb> And when it reached 100000 automatic debate in the House of Commons 09:03:15 <Taneb> http://epetitions.direct.gov.uk/petitions/6982 09:03:21 <Patashu> aaah 09:11:15 <Taneb> bye 09:11:19 -!- Taneb has quit (Quit: TTFN). 09:13:48 <elliott_> Can I anti-sign it? I'm a horrible person like that. 09:30:15 -!- Taneb has joined. 09:30:21 -!- FireFly has joined. 09:35:33 <Taneb> I think the most interesting esoteric pi calculator is the Piet one 09:35:39 <Taneb> http://www.dangermouse.net/esoteric/piet/piet_pi_big.png 09:38:07 <elliott_> heh, that's like that ioccc entry 09:46:24 -!- oklopol has joined. 09:51:33 -!- Lymee has quit (Ping timeout: 276 seconds). 10:04:49 -!- Taneb has quit (Read error: Connection reset by peer). 10:13:29 -!- copumpkin has quit (Ping timeout: 240 seconds). 10:13:55 -!- copumpkin has joined. 10:20:56 -!- sllide has joined. 10:26:30 -!- elliott_ has changed nick to elliott. 10:26:39 -!- elliott has quit (Changing host). 10:26:39 -!- elliott has joined. 10:36:34 <elliott> hi oklopol 10:37:14 <oklopol> hi elliott 10:37:20 <elliott> hi oklopol 10:38:55 <oklopol> hi elliott 10:39:12 <elliott> hi oklopol 10:39:18 <oklopol> hi elliott 10:39:22 <elliott> hi oklopol 10:39:41 <oklopol> hi elliott 10:39:47 <elliott> hi oklopol 10:39:50 <oklopol> hi elliott 10:39:53 <elliott> hi oklopol 10:39:57 <oklopol> hi elliott 10:40:02 <elliott> hi oklopol 10:40:04 <oklopol> hi elliott 10:40:08 <elliott> hi oklopol 10:40:09 <oklopol> hi elliott 10:40:12 <elliott> hi oklopol 10:40:13 <oklopol> hi elliott 10:40:20 <elliott> hi oklopol 10:40:20 <oklopol> hi elliott 10:40:23 <elliott> hi oklopol 10:40:27 <oklopol> hi elliott 10:40:30 <elliott> hi oklopol 10:40:32 <oklopol> hi elliott 10:40:34 <elliott> hi oklopol 10:40:36 <oklopol> hi elliott 10:40:40 <elliott> okokokokokokokokokokokokokokokokoko 10:40:45 <oklopol> okokokokokokokokokokokokoko 10:40:47 <oklopol> i am sheep 10:40:48 <elliott> holy shit 10:40:49 <elliott> that's some flow 10:40:54 <elliott> i was sure that would fuck you up 10:41:04 <oklopol> eh 10:41:21 <oklopol> i'm really really really stupid but i'm not that stupid 10:41:25 <elliott> me too 10:41:32 <oklopol> i'm so lazy man, see how lazy i am 10:41:49 <elliott> lazyman 10:43:54 <oklopol> sometimes i wish i lived on the moon 10:44:02 <oklopol> life would be so much simpler 10:44:10 <elliott> `quote moon 10:44:15 <HackEgo> 34) <zzo38> I am not on the moon. 10:44:23 <oklopol> me neither man, me neither 10:44:30 <elliott> `quote gravity 10:44:32 <HackEgo> 33) <ehird> pikhq: A lunar nation is totally pointless. <fungebob> ehird: consider low-gravity porn <ehird> fungebob: OK. Now I'm convinced. 10:44:47 <oklopol> what the hell do you mean by that 10:44:50 <oklopol> pointless? 10:44:54 <elliott> `quote q 10:44:56 <HackEgo> 3) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 6) <Quas_NaArt> His body should be given to science. <GKennethR> He's alive :P <GreenReaper> Even so. \ 11) <Lil`Cube> wouldn't that be considered pedophilia? <Quas_NaArt> 10:44:58 <elliott> oklopol: i was young and naive 10:44:58 <oklopol> try awesome 10:45:07 <oklopol> hmm k 10:45:19 <elliott> `run wc -l quotes 10:45:21 <HackEgo> 646 quotes 10:45:24 <elliott> that a lot of quote 10:45:36 <oklopol> i was such a pedophile in the first grade 10:55:59 -!- monqy has joined. 11:00:19 <monqy> im afraid i have plunged deep into the wonderful world of slep problems. after staying up over 24 hours i only maybe managed a short nap. 11:00:32 <monqy> maybe because i dreamt about trying to get to sleep 11:00:40 <monqy> so i'm not entirely sure if that even happened 11:05:00 <oklopol> are you tired all the time tho 11:05:15 <oklopol> i wouldn't mind sleeping little if i didn't feel like meh 24/7 11:05:50 <oklopol> but i do sleeping any amount of time in existence and feeling like a carrot pood in my brain 11:05:53 <oklopol> *mind 11:06:23 <monqy> from my yesterday experience I was only really tired sometimes. 11:12:51 <oklopol> all day long i feel like i just woke up 11:13:12 <oklopol> and then suddenly it turns into wanting to sleep 11:13:56 <oklopol> then again it's only about a week since i started sleeping "regularly", perhaps my brain starts working at some point 11:15:10 -!- zzo38 has joined. 11:15:53 <zzo38> If I write something like this it assumes everything is instance of X and Y: class X a; class Y a; instance X a => Y a; instance Y a => X a; is that like circular reasoning? 11:17:04 <monqy> good luck getting it to compile 11:17:34 <zzo38> But what I wanted it to do instead is, if I define instance X Int then it will automatically make up instance Y Int and if I define instance Y Char then it will automaticaly make up instance X Char 11:17:58 <zzo38> monqy: It does compile when the extensions are selected to make it do so. 11:18:08 <monqy> ok 11:18:39 <zzo38> But it seems to me that making everything become instance of X and Y due to that is like circular reasoning. 11:18:40 <oklopol> the don't actually try compiling, just print ay okay extension 11:19:12 <monqy> it doesn't seem very circular to me 11:19:59 <monqy> a bit less circular than mutual recursion, and that isn't even circular?? 11:23:35 <cheater> John McCarthy might have gotten his scoping wrong, Lee Harvey Oswald managed without scoping 11:24:41 -!- DH____ has quit (Ping timeout: 260 seconds). 11:27:30 -!- Taneb has joined. 11:31:08 <zzo38> What does "Could not deduce (x1 ~ Bool)" means? 11:32:07 <elliott> (a ~ b) means the types a and b are identical, as a constraint 11:32:23 <elliott> you're supplying a Bool, but GHC wants an x1 11:38:41 <zzo38> OK 11:38:47 <Taneb> My ZOMBIE 99 bottles of beer is 0.02 stars away from being the best ZOMBIE 99 bottles of beer program on the site 11:41:01 <Taneb> http://www.99-bottles-of-beer.net/language-zombie-2562.html 11:41:10 <zzo38> Why does the code I provided result in everything being instance of X and Y? My example has no class members but I tried adding some and it results in the same thing 11:41:57 <monqy> oh that's what's happening? 11:42:12 <monqy> what exactly is happening 11:42:18 <monqy> it sounds 11:42:19 <monqy> weird 11:43:42 <zzo38> It seems like circular reasoning to me, but I don't really know. 11:44:07 <monqy> it just seems weird to me 11:45:24 <Taneb> Mine's the top now! 11:46:18 <monqy> deducing "everything is an instance of X and Y" from "instances of X are instances of Y" and "instances of Y are instances of X" doesn't quite strike me as circular. Why are X and Y separate, anyhow? why not merge them? or is the actual case in which you are using this sort of thing such that this would not be possible? 11:50:29 <zzo38> monqy: It is not always possible. 11:50:42 -!- augur has joined. 11:50:56 <monqy> what is your case? 11:51:11 <monqy> and what exactly is happening 11:53:01 <zzo38> I described it. For example, if you have a class member { xX :: a -> a; } now it allows you to use xX on values of any type. 11:53:46 -!- max_ has joined. 11:56:20 -!- Phantom_Hoover has joined. 11:56:51 <monqy> maybe you found a bug? I don't know. 11:57:10 <zzo38> Or maybe, the class Y requires multiple constraints, if everything applies to each other then it results in the same thing. 12:00:55 <zzo38> If I have instance (Container m, Functor m, Joinable m) => Monad m; instance Monad j => Joinable j; instance Monad p => Container p; instance Monaf f => Functor f; then it assumes everything of kind (* -> *) is a monad (although properly defined monads still work properly), and things that should not be monads cause infinite loops 12:03:45 <zzo38> Having instance Monad f => Functor f; instance Comonad f => Functor f; results in compile error. 12:26:10 <elliott> `addquote <Phantom_Hoover> We have no leather. <Phantom_Hoover> Time to use that most venerable of resources, the puppy. 12:26:13 <HackEgo> 647) <Phantom_Hoover> We have no leather. <Phantom_Hoover> Time to use that most venerable of resources, the puppy. 12:26:35 <elliott> if Phantom_Hoover he's poop because that was hialrious 12:29:02 <Phantom_Hoover> What. 12:30:05 <elliott> if Phantom_Hoover complains he's poop because that was hialrious 12:30:14 -!- zzo38 has quit (Remote host closed the connection). 12:50:24 -!- Jafet has joined. 12:56:55 -!- DH____ has joined. 12:58:21 -!- max_ has quit (Quit: Leaving). 12:58:39 <Patashu> offer of a lifetime, guys: http://london.craigslist.co.uk/cpg/2591274619.html 12:58:54 -!- DH____ has quit (Client Quit). 12:59:06 <elliott> internet company 12:59:11 <Patashu> keep reading 12:59:20 <elliott> that's surely parody 12:59:46 <elliott> yeah it is 13:00:25 <Patashu> parody of what? 13:00:41 <elliott> startup job postings like that 13:00:49 <Jafet> Definitely a joke 13:00:58 <Jafet> Who the hell makes startups in london 13:01:09 <elliott> lol 13:07:31 <itidus20> carmack sez "Many worthwhile posts here: http://prog21.dadgum.com/archives.html" 13:07:47 <itidus20> elliott i bet you wish you knew about that website 13:08:27 <elliott> Totally. 13:08:38 <elliott> (Did Carmack actually say that?) 13:09:15 <itidus20> "<elliott> itidus20: You probably want to read http://prog21.dadgum.com/23.html" 13:09:22 <itidus20> http://twitter.com/#!/ID_AA_Carmack 13:10:01 <elliott> Huh, some synchronicity. 13:10:14 <itidus20> fuck you carl jung 13:10:31 <elliott> lol 13:10:37 <elliott> hey monqy remember http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png 13:12:50 <itidus20> i feel that synchronicity that all the games i played growing up are popular :-s 13:13:16 <itidus20> maybe that is not actual synchronicity though 13:13:42 <itidus20> ^all the ones i got obsessed with 13:14:01 <elliott> Introducing Bitcoinica API (The first RESTful Bitcoin Trading API) (bitcoinica.com) 13:14:10 <elliott> wow, this headline hits my mental spam filters so hard that it actually gets highlighted 13:14:17 <elliott> that's not how spam filters are meant to work, brain 13:14:33 <monqy> good picture 13:17:08 -!- azaq23 has joined. 13:22:23 <monqy> The style of photography is something one should consider carefully before choosing wedding photographers.wedding photographers perth 13:22:38 <monqy> Individuals are updating their career or they part in games.What ever the cause that retains them logged into Facebook just about every day is what keeps Facebook to advertise your business enterprise.buy facebook fans 13:23:00 <elliott> beautiful 13:27:34 <elliott> http://esolangs.org/forum/ 13:27:35 <elliott> oh 13:30:55 <monqy> discount dvd 13:47:02 -!- sliddy has joined. 13:49:04 -!- sllide has quit (Ping timeout: 260 seconds). 13:56:38 <Taneb> I'm bored so I'm going to try and implement as many sorting algorithms as I can. 13:56:57 <elliott> ok 13:57:38 <Taneb> ...IN WHATEVER LANGUAGE TAKES MY FANCY 13:59:48 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:07:59 <Taneb> Quicksort in Python: complete 14:10:17 <fizzie> Taneb: Quicksort in Befunge-93: http://web.archive.org/web/20060218220434/http://kotisivu.mtv3.fi/quux/qsort.html 14:18:32 <Taneb> Bye 14:18:34 -!- Taneb has quit (Quit: Goodbye). 14:22:08 -!- elliott has quit (Read error: Connection reset by peer). 14:22:12 -!- elliott_ has joined. 14:23:59 -!- MSleep has changed nick to MDude. 14:29:28 -!- Lymee has joined. 14:29:28 -!- Lymee has quit (Changing host). 14:29:28 -!- Lymee has joined. 14:32:51 -!- Taneb has joined. 14:34:28 -!- yorick has quit (Read error: Connection reset by peer). 14:36:58 -!- yorick has joined. 14:37:42 -!- yorick has quit (Read error: Connection reset by peer). 14:38:06 -!- yorick has joined. 14:38:08 -!- yorick has quit (Read error: Connection reset by peer). 14:44:36 -!- yorick has joined. 14:54:34 <Taneb> I may take an IO-less language and, most annoyingly, DEFINE IO FOR IT 15:04:37 -!- nooga has quit (Ping timeout: 260 seconds). 15:14:17 -!- DH____ has joined. 15:16:03 <Taneb> Intelligent Design Sort in Jot: 15:35:55 <Gregor> DEAR GOD, PLEASE SORT THIS FOR ME. KTHX 15:36:04 <Gregor> Sorted in O(Jesus) 15:37:32 <Taneb> http://www.dangermouse.net/esoteric/intelligentdesignsort.html 15:38:20 <Taneb> Operates in O(0) time 15:44:56 <Taneb> My Piet sine calculator is nearing completion! 15:46:29 <Taneb> I have two values which, when divided by eachother, return sin(n degrees) where n is a number inputted 15:49:12 <elliott_> Oh God what is going on? It feels like @ is coming together. 15:51:52 <Taneb> Hang on, is @ an OS or a filesystem? 15:51:57 <Taneb> I can't quite remember 15:52:38 <Taneb> I have bad memory: I got Shiro and Mycology mixed up 15:53:33 <elliott_> OS. 15:53:41 <Taneb> Thought so 15:54:07 <Taneb> How much software is on by default? 15:54:49 <elliott_> Eh? 15:55:09 <Taneb> Nevermind, let me think about what I meant 15:55:32 <Taneb> If I replace on with installed, does it make any more sense? 15:56:18 <elliott_> Not really 15:56:41 <Taneb> Will it just be a shell, or will it have a GUI, or what? 15:56:41 <elliott_> I mean, it's... not incoherent, but I'm baffled as to why you'd ask or how I could meaningfully answer it. 15:57:19 <elliott_> Well, it contains the Best UI Ever, which is primarly designed to be used from a graphical device, yes. But it's certainly not windows-icons-menus-pointers. :p 15:57:43 <Taneb> Tell me when I can install 15:57:51 <elliott_> Come back in years 15:58:07 <Taneb> Oh good, my laptop is getting repaired atm 15:59:19 <Taneb> How will @ software be written primarily? 16:00:27 <elliott_> In @lang 16:00:48 <Taneb> Is there a public @lang spec anywhere? 16:00:55 <elliott_> Nope :-) 16:01:01 <elliott_> @ is only slightly better-defined than Feather. 16:01:11 <Taneb> Yay! 16:01:21 <elliott_> But something is starting to make sense. 16:01:26 <elliott_> I don't know what, yet. 16:02:54 <Taneb> In 1785, a Feather derivative will have been about to be created 16:05:00 <Taneb> Called McGraw 16:13:18 -!- derdon has joined. 16:13:35 -!- nooga has joined. 16:25:00 <elliott_> sure wish ais was here so i could confirm that my @ thoughts make no sense at all 16:29:57 -!- ais523 has joined. 16:30:00 -!- nooga has quit (Ping timeout: 240 seconds). 16:38:19 -!- nooga has joined. 16:39:00 -!- derrik has joined. 16:40:25 -!- iconmaster has joined. 16:44:30 -!- nooga has quit (Ping timeout: 240 seconds). 16:58:20 -!- aloril has quit (Ping timeout: 258 seconds). 17:11:31 <Deewiant> elliott_: So have you been confirming your @ thoughts 17:11:55 <elliott_> Oh, ais523 started existing 17:12:05 -!- aloril has joined. 17:12:09 <elliott_> And hasn't deleted one of the spam pages for some reason 17:12:23 <ais523> because there's a time lag on my RSS feed 17:12:29 <ais523> and it's only just appeared there 17:13:22 <ais523> and deletd 17:14:02 <Taneb> I aim to be the first non-developer user of @. 17:14:16 <elliott_> there are no non-developer users of @, that's the beauty of it 17:14:39 <Deewiant> That doesn't sound very usable 17:14:44 <Taneb> Are there any developer users? 17:15:06 <pikhq> Not at present. 17:16:35 <elliott_> Deewiant: "There are no developer users of @" is maybe a more accurate impression. 17:16:48 <elliott_> But still inaccurate; that's false dichotomies for you. 17:17:00 <ais523> elliott_: I can translate Taneb's sentence as "the first user of @ who didn't originally help to write it" 17:17:35 <elliott_> ais523: the first uninteresting number? 17:17:59 <tswett> What is @? A language? 17:18:08 <ais523> elliott_: well, there's going to be some point at which it's usable 17:18:10 <elliott_> Yes. (Answer likely to mislead.) 17:18:18 <ais523> tswett: a project to create an OS 17:18:21 <ais523> err, no 17:18:25 <pikhq> tswett: @ is the embodiment of elliott's hubris. 17:18:31 <elliott_> pikhq: ur mom 17:18:34 <ais523> a placeholder for the name of an OS that there is currently a project to create 17:18:40 <pikhq> elliott_: I do not mean that as an insult. 17:18:44 <elliott_> pikhq: ur mom 17:18:48 <pikhq> Indeed, hubris is the greatest virtue of a programmer. 17:19:11 <ais523> oh, I have a very important and interesting question, which came out of the work on Feather I was doing last night 17:19:16 <ais523> suppose you have a large stack of self-interpreters 17:19:30 <elliott_> you _worked_ on _Feather_? 17:19:31 <elliott_> oh dear god 17:19:34 <ais523> suppose you have a large stack of self-interpreter such that a stack of self-interps has performance linear in the number of interps in the stack? 17:19:45 <ais523> err, bad client 17:19:47 <elliott_> ais523: PATTERN-MATCHER SAYS: eigenratios 17:19:56 <ais523> aha, I forgot about that 17:20:08 <elliott_> http://eigenratios.blogspot.com/2007/11/search-for-phi-holy-golden-ratio.html 17:20:09 <elliott_> mentions you :P 17:20:11 <ais523> anyway, I decided that more than anything else, I want an eigenratio 1 17:20:15 <tswett> elliott_: what platform is @ intended to run on? 17:20:22 <ais523> thanks for reminding me about that 17:20:29 <elliott_> ais523: that post conjectures the minimum is phi 17:20:35 <elliott_> I think 17:20:40 <ais523> can't you get 1 in Underload? 17:20:46 <elliott_> tswett: Define platform :-) 17:20:49 <elliott_> ais523: that's cheating :-P 17:20:51 <ais523> I'm allowing cheat-interpreters here, by the way 17:21:03 <tswett> elliott_: platform, n. Platform. 17:21:06 <ais523> but, say, in untyped lambda calculus, I can't see how to do it even with cheating 17:21:10 <ais523> elliott_: oh, I don't mean the ()^ program 17:21:18 <ais523> I mean suppose you have a list of character codes 17:21:22 <ais523> in an appropriate format for the language 17:21:24 <itidus20> ok i have a question. did most of the chatters here learn about lambda calculus in school? 17:21:27 <elliott_> tswett: That's a crap definition 17:21:32 <elliott_> tswett: Do you mean computer architecture? 17:21:37 <Taneb> itidus20: Not me 17:21:41 <ais523> itidus20: I didn't learn about it in school; I forget where I learnt about it, maybe even here 17:21:47 <elliott_> itidus20: No. I have no formal education in CS. 17:21:52 <tswett> elliott_: I guess I mean whether it runs on bare metal or within some other operating system. 17:21:55 <ais523> I think I basically understood the concept before learning what it was called, though 17:22:03 <tswett> (The best operating systems are the operating systems that can only run inside other operating systems.) 17:22:12 <tswett> (Every operating system should be like that.) 17:22:14 <elliott_> tswett: Well, part of The Beauty of @ is that it can do both. 17:22:20 <pikhq> itidus20: I have only the bare start of a formal education in CS at present. 17:22:25 <tswett> Excellent. 17:22:31 <elliott_> It's essentially defined in terms of a functional abstract machine with a design eyeing towards efficient translation to hardware. 17:22:47 <elliott_> There's no reason you couldn't use the exact same bytes representing the same objectset from both a window of Linux and natively. 17:22:57 <itidus20> so... was it picked up at workplaces? in books? in chatroom like this one? :D 17:23:13 <elliott_> I suspect that if @ ever gets used in practice, it'll be from a Linux/Xorg implementation, probably talking to an @ server that might even be running on the bare metal. 17:23:14 <pikhq> Internet. Oh so much Internet. 17:23:21 <elliott_> (As in, accessing that server's resources as the primary interface.) 17:23:42 <elliott_> itidus20: Internet. 17:23:45 <Taneb> itidus20: Internet, mainly Wikipedia 17:24:01 <itidus20> ok guys. so nerding out on the internet. :D 17:24:13 <ais523> here is a good place to learn basic CS concepts 17:24:19 <ais523> especially the esoterically applicable ones 17:24:23 <elliott_> tswett: The basic intention of @ is to be a fully-reflexive, purely functional, imperative-code-free, distributed operating system with a single-level address space (no ram/disk distinction). 17:24:29 <elliott_> Those are rather broad strokes, but it's a good summar. 17:24:30 <elliott_> y. 17:24:40 <ais523> elliott_: I suppose that what I want isn't really a self-interpreter, but self-compiler 17:24:45 <Taneb> Apparently, my dad did computer science at university 17:24:57 <elliott_> ais523: PATTERN MATCHER SAYS: Maybe you want a specialiser. 17:25:01 <ais523> e.g. in C, you can write a C compiler that compiles into memory, then jump to that memory location (not portably, but whatever) 17:25:05 <ais523> elliott_: what's a specialiser, again? 17:25:24 <ais523> btw, I'm glad that you're pattern-matching on my Feather discussion, it should help save you from madness 17:25:35 <itidus20> my psyche is probably too broken since about 2000 to actually learn anything 17:25:43 <Sgeo> elliott_, well, there's going to be some level of it which is aware of a ram/disk distinction, presumably 17:25:47 <ais523> so, I decided that call/cc being a primitive is wrong 17:25:58 <elliott_> ais523: a specialiser takes a function (A,B -> C) and A, and returns (B -> C)... the trick being that it evaluates the function partially 17:26:01 <ais523> because you can implement it using CPS 17:26:05 <ais523> elliott_: ah, hmm 17:26:06 <elliott_> as in, it creates a version of that function _specialised_ on its first input argument 17:26:17 <elliott_> ais523: you can use a good specialiser to turn an interpreter into an efficient compiler 17:26:18 <ais523> I'm not sure if that is what I want 17:26:26 <ais523> well, interp into compiler is what I want 17:26:27 <elliott_> oh, and the languages of the input and output could be different 17:26:36 <Sgeo> elliott_, in Haskell, would ($) be a specializer? 17:26:44 <elliott_> ais523: I've already linked you to it, likely, but read http://blog.sigfpe.com/2009/05/three-projections-of-doctor-futamura.html 17:26:48 -!- pikhq_ has joined. 17:26:49 <elliott_> Sgeo: yes, but a bad one 17:28:11 <ais523> the whole point of specialisers is that they're optimising 17:28:14 -!- pikhq has quit (Ping timeout: 258 seconds). 17:28:18 <ais523> I remembered what the concept was when elliott_ explained it 17:30:11 <ais523> elliott_: oh, I see, the idea's that you get a compiler from an interp by specialising a specialiser? that's sneaky 17:30:30 <tswett> elliott_: what a coincidence. That's also the goal of Jath, except Jath is going to be much worse. 17:30:32 <elliott_> s/sneaky/beautiful/ :P 17:30:43 <elliott_> tswett: Have you shaken off the OOP Mind Virus yet? 17:30:52 * Sgeo misread futamura as futurama 17:32:21 <elliott_> So did everyone. 17:32:21 <ais523> so did I, and I only noticed it was wrong when I reached the comments section 17:32:28 <ais523> it's not like the misreading makes any difference to the article 17:32:33 -!- derrik has quit (Ping timeout: 252 seconds). 17:33:40 <Taneb> I've had an idea for an esolang 17:33:42 <ais523> elliott_: anyway, in Underlambda (which actually has I/O), it's trivial to do a metacircular self-interp with eigenratio 1-in-the-limit 17:34:08 <ais523> but I don't want to base Feather on that, it's too complex 17:34:11 <Taneb> One that takes as many bad features from "real" languages 17:34:29 <itidus20> the physical analogy is breaking down pretty quickly with the section "specializers" 17:34:42 <itidus20> i hate it when analogies start to become non-literal :P 17:34:55 <itidus20> its like waving to a friend from the train 17:35:48 * itidus20 flaps my arms. 17:36:25 <Taneb> An action, incedentally, that is also not unlike waving to a friend from the train 17:36:40 <elliott_> ais523: http://sprunge.us/Kgae; get excited (note: this will not excite you at all but is the culmination of about two days focused effort and counting so far) 17:36:40 <itidus20> it's like having a box which has infinite cookies inside 17:36:43 <ais523> elliott_: OK, so I suppose my problem is that I want to write a Feather self-interp that /isn't/ metacircular 17:36:43 <itidus20> such a thing can't exist 17:37:02 <itidus20> or can it? 17:37:04 <ais523> elliott_: yes, not that exciting... 17:37:20 <elliott_> ais523: it is, though, it's just a boring example as nothing more works right now :D 17:37:30 <elliott_> ANYWAY 17:37:36 <elliott_> ais523: ok, so you want to write a feather interp that isn't metacircular 17:37:39 <itidus20> according to physics and maths can we theoretically have a box with infinite cookies inside? 17:37:50 <elliott_> `addquote <itidus20> according to physics and maths can we theoretically have a box with infinite cookies inside? 17:37:52 <HackEgo> 648) <itidus20> according to physics and maths can we theoretically have a box with infinite cookies inside? 17:37:55 <elliott_> I don't know but I hope so 17:37:58 <ais523> so what I was doing wrong is trying to implement too large a subset of Feather directly in Scheme 17:38:09 <ais523> what I want to do is implement a very very small subset 17:38:26 <ais523> then a full Feather interp in itself 17:38:41 <ais523> well, a full proto-Feather interp in itself 17:38:49 <ais523> followed by a sequence of retroactive modifications to make it into a full Feather interp 17:38:58 <Sgeo> elliott_, what Scheme is that? Guile? 17:39:02 <elliott_> Sgeo: Yes. 17:39:08 <elliott_> Guile two, the new major release. 17:39:11 <elliott_> ais523: heh 17:39:13 <itidus20> 2 boxes. observing the first box sets the state of the second box to having a cookie inside it. so we proceed to observe the second box and take the cookie. 17:39:40 <ais523> now, my existing plan put the retroactive modification in the Scheme code itself 17:39:48 <ais523> that's actually very easy to implement in Scheme; it's the only bit that is 17:40:00 <ais523> but thinking about it, Scheme isn't Feather so that wouldn't help anyway 17:40:05 <elliott_> ais523: what inspired you to start thinking about feather, anyway? I thought you had rid yourself of it forever 17:40:25 <ais523> and it makes more sense to implement the retroactive modification in Feather itself, same as everything else 17:40:30 <ais523> elliott_: I was having trouble sleeping last night 17:40:42 <ais523> so I just thought "what the hell, I'll think about Feather" 17:40:44 <elliott_> you expected feather to /help/? 17:40:49 <ais523> then put on the background music from Adanaxis 17:40:58 <ais523> and started coding 17:41:24 <ais523> luckily, I didn't hit many major hitches; I decided that the general approach of what I was doing was right but the details were wrong 17:41:27 <elliott_> For someone who disavows the use of all mind-altering substances, your conscious decision to think about Feather in lieu of having anything better to do resembles it somewhat to me :P 17:41:46 <ais523> in particular, I think I've definitively overcome the first major hurdle (the infinite regress of the definition of atoms) 17:41:48 <elliott_> "Feather: my anti-drug." 17:41:57 <elliott_> Note: anti-drug has more side-effects than drug. 17:42:04 <elliott_> ais523: woot 17:43:10 <elliott_> ais523: can I blab about my @thoughts now? :D 17:43:15 <ais523> yep, feel free 17:43:35 <elliott_> what's the likelihood you'll pay attention? :P 17:43:35 <ais523> really, what I'd want is for someone to come up with an untyped lambda calculus self-interp at eigenratio 1 17:43:39 <ais523> but that seems unlikely 17:43:42 <ais523> elliott_: pretty low, to be fair 17:43:50 <elliott_> I paid attention to the Featherthoughts :( 17:44:04 -!- derrik has joined. 17:44:04 <tswett> elliott_: eh, objects seem... potentially useful. 17:44:15 <elliott_> tswett: you're right, @ will be so much better :) 17:44:59 <elliott_> ;p 17:45:00 <elliott_> :p 17:45:02 <elliott_> s/;/:/ 17:45:11 <Sgeo> eigenratio 1? 17:45:39 <elliott_> ais523: hypothesis: any interpreter with eigenratio one is a compiler 17:45:49 <elliott_> or rather, is a compiler+execute 17:46:03 <elliott_> otherwise, its intrusion on control flow will _always_ increase the eigenratio beyond this. 17:46:11 <ais523> indeed 17:46:20 <ais523> compile+execute is pretty much exactly what I want, for that reason 17:46:30 <elliott_> but I think the compiler has to output into the language itself, and so merely be id... 17:46:39 <elliott_> unless you can compile into a VM then execute that VM without adding overhead 17:46:56 <ais523> Sgeo: a self-interp that puts an overhead on the language that's proportional to the size of the input program, not how long the program takes to execute 17:47:52 <elliott_> ais523: OK SO @THOUGHTS 17:47:55 <ais523> elliott_: well, suppose you have a concatenative language, and your input is a list of characters; for each character, you look up in a lookup table what it should compile to, then compose, then execute 17:47:59 -!- Taneb has quit (Quit: compiling noms). 17:48:30 <elliott_> I think that by introducing certain things that /look/ like side-effects into the (FRP-based) language, you can /reinterpret/ the resulting semantics as having no side effects, and this leads directly to an efficient interpretation strategy 17:48:44 <elliott_> ais523: for instance 17:49:13 <ais523> FRP equals, here? 17:49:17 <elliott_> functional reactive programming 17:49:19 <ais523> my mind is translating it as "functional reactive programming" 17:49:23 <elliott_> umm, brief introduction 17:49:26 <ais523> wow, I thought that couldn't possibly be what you meant 17:49:27 <elliott_> type Signal a = Time -> a 17:49:30 <elliott_> type Events a = [(Time,a)] 17:49:39 <elliott_> that's the "model' for FRP but it doesnt match the sematnics exactly 17:49:42 <ais523> I know what it is, I was forced to learn about it last week 17:49:44 <elliott_> but that's the basic core of the idea 17:49:45 <elliott_> ais523: haha 17:49:48 <elliott_> good 17:49:51 <cheater> hello 17:49:58 <elliott_> ais523: so consider httpSimpleGetAttempts :: URL -> Events (Either HTTPError HTTPResponse) 17:50:03 <cheater> ais523, what text editor do you use for your code 17:50:16 <elliott_> cheater: stop interrupting @thoughts, they're a sacred tradition 17:50:18 <ais523> cheater: usually but not always Emacs 17:50:21 <elliott_> SACRED 17:50:29 <ais523> for short programs I often use cat 17:50:34 <ais523> and then nano to fix typos 17:50:36 <cheater> yeah so do i 17:50:38 <elliott_> ais523: on the face of it, this is totally impure: if you didn't call it and try and use the resulting Events, the OS would make no attempt to contact the server, make an HTTP request, etc. 17:50:41 <elliott_> ais523: right? 17:50:51 <cheater> i wrote a small wrapper around cat that works as a write-only text editor 17:50:59 <ais523> elliott_: trying to get my head around it atm 17:51:12 <elliott_> well, the point is that it's not referentially transparent 17:51:14 <cheater> https://bitbucket.org/cheater/cated 17:51:23 <elliott_> whether you use it or not affects whether the computer decides to perform a side-effect (try and talk to an http server) 17:51:28 <elliott_> which is the /definition/ of impurity 17:51:37 <ais523> what does "it" equal there? 17:51:50 <elliott_> (httpSimpleGetAttempts x) for some x 17:52:03 <ais523> ah, I see 17:52:06 <ais523> so calling it has side-effects 17:52:15 <elliott_> well, not necessarily calling it, but trying to inspect its argument 17:52:16 <elliott_> but anyway 17:52:17 <elliott_> i'll elaborate 17:52:51 <elliott_> ais523: now, the idea is to consider that it represents a simple, objective, immutable fact: all attempts the computer has made to request that URL; semantically, it causes no request to be made 17:52:59 <elliott_> the problem being, how do you actually cause a request to be made? 17:53:06 <elliott_> well, this is the implementation strategy 17:53:17 <elliott_> the OS finds out every event or signal value the code is interested in 17:53:20 <elliott_> and then tries to "make them happen" 17:53:28 <elliott_> for a keyboard input, that'd be listening to the keyboard and routing the events in 17:53:40 <elliott_> for an HTTP request, it'd be contacting the server and trying to request it 17:53:43 <cheater> ais523, i think i will give it readline support too, that will make it even cooler. i like to use it for commit messages because it's simple to just enter your msg and either press ctrl-c or ctrl-d at the end. 17:53:53 <elliott_> ais523: so in this way, we turn the impurity into an implementation detail 17:54:29 <elliott_> ais523: and interestingly, this becomes the entire way for side-effects to happen 17:54:35 <elliott_> by being interested in them 17:54:48 <ais523> elliott_: heh, I came to a similar conclusion with Feather 17:54:51 <elliott_> you just say "if this happens, then ..." 17:54:58 <elliott_> and the computer goes "OK, you're interested in that happening" 17:55:03 <elliott_> and registers the event and all that 17:55:15 <elliott_> and if it's something like an http request, well, that's implemented so that interest causes the side-effect 17:55:28 <elliott_> I'm not sure this will actually work but MAYBE IT WILL 17:55:34 <ais523> I'm not sure it'll actually work either 17:55:45 <elliott_> I think the same about Feather 17:55:50 <ais523> heh 17:56:23 <elliott_> but anyway, I think I've managed to reduce my idea of this section of Feather so that I can implement a simple demo OS with a minimal amount of platform code (posix/sdl, or raw pc hardware, etc.) + a small amount of portable code 17:56:29 <ais523> you mean @, right? 17:56:32 <elliott_> so... that's the plan 17:56:33 <elliott_> err 17:56:33 <elliott_> yes 17:56:34 <elliott_> (oops) 17:56:35 <elliott_> (oh dear) 17:56:42 <ais523> that's a very oh dear mistake 18:01:30 <Gregor> Feather AKA @ AKA Secret Project 18:01:53 <elliott_> The other two are offended by the comparison to the secret project 18:01:59 <elliott_> So is the secret project, it doesn't wish to be associated with such lunatics 18:06:53 <ais523> the secret project is much saner than Feather 18:06:59 -!- Taneb has joined. 18:07:05 <ais523> its main distinguishing feature is being secret 18:07:31 <elliott_> ais523: Can I see your WIP Feather interp? Just curious 18:07:45 <ais523> elliott_: I don't see why not, although disclaimer that I'm going to rewrite it 18:08:03 <ais523> possibly in a different langauge, because call/cc support isn't needed if I'm not going to metacircular that 18:08:04 <elliott_> it's modified from previously, right? 18:08:14 <elliott_> haskellashekaslehkleklelahkselellashekll 18:08:27 <Taneb> visualbasic2005 18:08:55 <ais523> http://sprunge.us/TPWh?scheme 18:08:58 <ais523> elliott_: it is, slightly at least 18:09:14 <ais523> pretty much all I've done since is just to add a few more Church encodings 18:09:25 <Taneb> I don't think Visual Basic is actually Turing-complete 18:09:58 <ais523> then when trying to work out whether integers should share I realised "it doesn't matter", and realised that I was trying to do too much of the interpreting in Scheme 18:10:07 <ais523> I suppose having the Scheme interp will still help for when I translate it into Feather 18:10:49 <ais523> also, I know I'm really bad at Scheme, don't laugh at it 18:11:09 <elliott_> bet: Feather will end up having a beautifully simple, elegant implementation, and then end up equivalent to some really everyday concept like lazy evaluation or mutual recursion 18:11:11 <elliott_> rather than anything retroactive 18:11:38 <Taneb> QUESTION 18:11:55 <Taneb> In feather, when you change the past, does the present continue? 18:12:06 <Taneb> With the old past 18:15:11 -!- Taneb has quit (Quit: Goodbye). 18:19:18 <ais523> er, hmm, how can I answer that if Taneb isn't here? 18:19:47 <ais523> but it goes back to that point in the past and recalculates in there 18:19:56 <ais523> whether the present ever rehappens depends on what you changed 18:21:25 <elliott_> <ais523> er, hmm, how can I answer that if Taneb isn't here? 18:21:26 <elliott_> retroactively 18:21:52 <ais523> Feather's time-travel model is certainly sane and self-consistent, at least 18:25:45 <coppro> how boring 18:26:50 <elliott_> coppro: you have clearly not thought even the slighest bit about Feather :) 18:33:26 <ais523> coppro: and you probably want to stay that way :) 18:48:05 <itidus20> hmm 18:48:58 <itidus20> i must say i regret not being schooled at a school where they can cane your fingers 18:49:13 <elliott_> i don't 18:49:14 <itidus20> it sounds more exciting 18:49:24 <itidus20> more character building 18:49:56 <itidus20> students still hate teachers these days... and it makes no difference it seems whether caning is involved 18:50:10 -!- elliott_ has quit (Read error: Connection reset by peer). 18:50:14 <itidus20> now thugs abound 18:50:14 -!- elliott has joined. 18:50:32 <itidus20> 10 year olds with shopping trolley poles roam the streets 18:50:51 <elliott> is this avant garde poetry 18:51:02 <itidus20> no its what i actually heard 18:51:49 <itidus20> the shopping trolleys you see.. you can remove the part which you hold onto when pushing it.. and it becomes a small lightweight baton 18:52:21 <itidus20> so all you have to do is take a shopping trolley away from the store and get the baton part off it 18:52:38 <itidus20> and you have some 10 year olds armed and dangerous 18:53:19 <itidus20> i don't know the full story of course 18:56:14 -!- DH____ has quit (Ping timeout: 260 seconds). 19:05:49 -!- Taneb has joined. 19:06:25 <Taneb> ais523: what would have been the answer to the question I asked before I left? 19:10:11 <ais523> Taneb: a retroactive change goes back to when the thing you retroactively changed was set 19:10:15 <ais523> changes it, then reruns from there 19:10:20 <ais523> whether the present happens again depends on what the change was 19:13:30 <itidus20> i think i am ready to give up on this ridiculous piece of code, so i will post what it is: http://codepad.org/AvNFIw0g 19:14:06 -!- Taneb has quit (Ping timeout: 276 seconds). 19:20:30 -!- quintopia has quit (Ping timeout: 252 seconds). 19:29:40 -!- quintopia has joined. 19:29:41 -!- quintopia has quit (Changing host). 19:29:41 -!- quintopia has joined. 19:33:03 -!- ive has joined. 19:47:42 -!- derrik has quit (Quit: gone). 19:48:22 -!- variable has quit (Quit: I found 1 in /dev/zero). 19:50:00 <Sgeo> itidus20, so, just looking at init and insert, the array_size is stored right at the end of all the actual data 19:50:15 <Sgeo> And array[0] stores the next available index 19:50:17 <itidus20> Sgeo: ive been hacking it up a bit more since last post 19:50:30 -!- Taneb has joined. 19:50:48 <itidus20> its a terrible mess here: http://codepad.org/meXjY5Eo 19:50:50 <Sgeo> Maybe a clear, readable diagram of what's what would be clearer 19:51:20 <itidus20> i just started working on this getindex function but i dont think i remembered exactly what its supposed to do 19:51:33 <Sgeo> I note you're still not doing bounds checking. Not that that's bad, but I'm wondering what the point of storing array_size is 19:52:09 <itidus20> i updated it to use allocation at least 19:52:33 <itidus20> its such a ridiculous piece of code 19:52:49 -!- sliddy has quit (Ping timeout: 276 seconds). 19:57:58 <itidus20> Sgeo: basically my poor methodologies as a coder are being revealed 19:58:11 <Sgeo> >.> 19:58:13 <Sgeo> <,< 19:58:31 <Sgeo> Wow, I can barely type <.< 19:58:49 <Sgeo> Becuase I'm so used to >.>, that my finger wants to stay on the same key when typing <,< 19:59:28 <itidus20> the variable names a and b soon become kaleidoscopic 20:00:02 <itidus20> because i possibly didn't design the code properly ^_^;; 20:00:08 <itidus20> or at all ^^;; 20:13:08 -!- variable has joined. 20:13:42 -!- augur has quit (Remote host closed the connection). 20:17:08 <Taneb> Is there a way to map a bit string to a BF Joust program with matching loops? 20:18:47 <elliott> BF Joust programs are a countable set, so yes. 20:18:52 -!- KingOfKarlsruhe has joined. 20:19:11 <Taneb> I mean, is there a way that someone can tell me? 20:20:48 <elliott> Well, it's a trivially derivable procedure. You could modify bifro, which is a silly, stupid program I wrote to do it a year ago. 20:21:15 <fizzie> It was a rather long discussion, that brainfuck-to-naturals bijection. 20:21:27 <elliott> Didn't produce much useful, either. 20:21:43 <Taneb> Link on bf page doesn't work 20:21:57 <elliott> Probably lost forever then 20:22:05 <elliott> You could reconstruct from logs :) 20:26:25 <fizzie> All the pastie.org links on the corresponding log are dead. :/ :\ 20:26:40 <fizzie> It was in 2010-05-03 anyhow. 20:27:35 <fizzie> elliott: <alise> [bifro] has rekindled my love affair with Haskell. 20:27:59 <elliott> pastie.org died ages ago. 20:28:03 <elliott> Or rather, all the pastes. 20:28:08 <elliott> They probably aren't coming back. 20:28:11 <elliott> It's annoying but OH 20:28:12 <elliott> WELL 20:28:28 <Taneb> Wayback machine is down 20:28:40 <elliott> Taneb: Really though, it's not hard to write a bijection. 0-n for all the non-arg instructions, then add on n to the loop case... blah blah. 20:28:52 <elliott> the only hard part is reducing n of them to one of them in a way that doesn't lead to massive blowup 20:28:53 <elliott> but uhhh 20:28:55 <elliott> as for that 20:28:57 <elliott> you're on your own :P 20:29:03 <elliott> we didn't find anything satisfactory 20:29:03 <elliott> afaik 20:29:07 <elliott> good luck anyway 20:31:03 <fizzie> Especially for nested loops; one version of your bifro produced 63 for [], 590295810358705651711 for [[]], and broke down and cried for [[[]]]. 20:31:24 <elliott> heh 20:32:59 <itidus20> ok, especially for sgeo, this is another update: http://codepad.org/XPWd2WBX 20:33:39 <fizzie> If you just want to enumerate them all, though, it is probably relatively speaking easier to write a piece of code that generates all legal brainfuck programs e.g. sorted by program length, as long as you don't need the "can be given an arbitrary number/program and must efficiently return the matching program/number without enumerating the whole set" function. 20:35:15 -!- augur has joined. 20:36:33 <itidus20> this one is perhaps even more clear: http://codepad.org/aXHMoksZ 20:43:49 -!- elliott has quit (Ping timeout: 260 seconds). 20:52:03 <ais523> BF Joust evolutionary programming is probably better done via assembling strategy fragments 20:52:21 <Taneb> Yes, but I'm mad 20:52:21 <ais523> as in, deciding on the decoy pattern and setup sequence, deciding on the clear loop, deciding whether it defends first or rushes first, etc 20:53:06 * itidus20 ponders. 20:53:46 <itidus20> in a game like rock paper scissors or coin tossing or penny matching there is no perfect play. 20:54:08 <itidus20> unless it is to be truely random 20:54:41 * itidus20 shrugs. 20:55:10 <itidus20> but anyway, with a programming battle game i imagine that what constitutes a perfect play depends entirely on what strategy the opponent chooses 21:01:23 <ais523> hey, channel, want something to rage at? http://www.reddit.com/r/programming/comments/k9cbj/trollscript_an_esoteric_dialect_of_brainfuck/ 21:03:20 <Taneb> If we raged at every brainfuck derivative out there we would have no time for Dwarf Fortress succession games 21:05:09 <monqy> saw that language yesterday; died 21:30:21 <Sgeo> Is my BF derivative at least a little not idiotic? 21:34:34 <itidus20> Sgeo: i have added some even more ideas to my structure... but it still doesn't have the essence yet of a real data structure.. still missing the vast majority of it's functionality: http://codepad.org/ZWaHYvHz 21:42:41 <Phantom_Hoover> Taneb, on that subject are you competent to pull levers and move troops. 21:43:20 <Sgeo> Insert is O(1). In del_cell(), don't call getindex() twice, this isn't Haskell. 21:43:22 <Phantom_Hoover> ais523, my faith in /r/programming is vastly increased by the fact that they hated it too. 21:43:23 * Sgeo has more to say 21:43:31 -!- augur has quit (Remote host closed the connection). 21:43:32 <Taneb> Phantom_Hoover: The former but I have a bit to go for the latter 21:43:48 <Sgeo> Although that might be a premature optimization *shrug* 21:43:54 <Taneb> Goodnight 21:43:57 -!- Taneb has quit (Quit: Goodbye). 21:43:57 <itidus20> Sgeo: well insert is not really done yeah... 21:44:16 <Sgeo> I'm a bit concerned about all the calling of getindex2 in getindex, but I need to see what getindex does before commenting further 21:44:29 <itidus20> heres a cleaner version: http://codepad.org/p4r3O9Ep 21:44:44 <itidus20> not much cleaner though.. just cleaned up main 21:45:07 * Sgeo isn't going to switch right now 21:45:27 <itidus20> sgeo yes i have already asked for too much attention over this 21:45:56 <Sgeo> So, getindex2() finds something, and says how many filled-in spots are before it? 21:46:18 * Sgeo is a bit confused 21:46:42 -!- derdon has quit (Remote host closed the connection). 21:47:19 <itidus20> i only figured out what it did by looking at what it did in testing... and forcing myself to use it 21:48:06 <itidus20> basically there is 2 sets of indices... the indices which i calloc'd .. and the indices of the actual data items 21:48:32 * Sgeo gets bored and wanders away 21:49:49 -!- iconmaster has quit (Ping timeout: 276 seconds). 21:50:32 <itidus20> thanks for your input. i started counting how many codepad pastes i was making lately and realized i am starting to subtly become an asshole over it 21:51:23 <Sgeo> itidus20, switch to gist.github.com ? 21:51:37 <Sgeo> Although that won't run code for you 21:52:08 <itidus20> well i mean i have singled you out for this topic and that is not cool.. its as bad as private messaging 21:52:35 <itidus20> i may as well be sending sms about it >:-) 21:52:39 <Sgeo> Well, I probably should have said something 21:53:02 -!- copumpkin has changed nick to gurbles. 21:53:06 <itidus20> nope. 21:53:19 <itidus20> i shouldn't have addressed it all at you though. 21:53:34 -!- gurbles has changed nick to grubIes. 21:53:45 <itidus20> i shouldnt really be updating a room with codepad every 5 mins either 21:54:07 -!- grubIes has changed nick to copumpkin. 21:55:47 <itidus20> i see what you mean about del_cell now 22:02:24 <oklopol> "<fizzie> It was a rather long discussion, that brainfuck-to-naturals bijection." <<< yeah, there are many steps, first you have to list brainfuck programs in lexicographical order, then you have to do nothing else, then you have to be done. 22:04:21 <oklopol> this is even a logspace computation, if i'm not mistaken, so you can do it in O(n) time 22:04:44 <itidus20> my code is absolutely a monstrosity... its even worse than a linked list 22:04:48 <oklopol> hmm wait, that may be complete 22:04:52 <oklopol> bullshit 22:07:48 <oklopol> yeah i dunno how fast it is, except that since the set of bf programs is context-free, there's prolly a polynomial time bijection between numbers (in binary) and bfs 22:10:07 <oklopol> i'll ask someone at the uni on monday, dunno what to search for really 22:12:43 <oklopol> if lengths of n and the length of the nth string are related polynomially, maybe there's a general algo for the bijections, then again on second thought there prolly isn't 22:12:52 <oklopol> nth string in the grammar i mean 22:13:26 <oklopol> obviously if they aren't polynomially related you can't do it, since just printing the out is superpolynomial 22:14:23 -!- DH____ has joined. 22:17:22 <oklopol> would certainly be interesting to research this, but it's prolly known to death 22:19:14 <itidus20> i finally realized that my whole idea is pointless since arrays have never been difficult to delete from, only difficult to insert into 22:19:53 -!- Sgeo has quit (Ping timeout: 245 seconds). 22:20:03 -!- zzo38 has joined. 22:20:04 <oklopol> how do you delete from an array? well i guess i know what you mean 22:20:16 <itidus20> theres 2 ways 22:20:37 <itidus20> 1 way is to have a deleted state for each cell of the array which can be toggled 22:20:38 <oklopol> store the index of next valid and previous valid is one i suppose 22:21:04 <oklopol> but you can't index anymore so it's a bit stupid 22:21:15 <oklopol> with your way, you can't even iterate 22:21:24 <oklopol> with my way, you at least have a linked list 22:21:46 <oklopol> what's the other one 22:22:50 <oklopol> i mean you can't iterate in amortized constant time w.r.t. current size of array 22:23:15 <itidus20> the other one is just some ridiculous thing like next valid yeah 22:23:43 <oklopol> next valid and last valid, yeah, that lets you iterate 22:23:55 <itidus20> but i didn't do next valid and last valid 22:24:03 <oklopol> next valid also lets you iterate, but then deletion is not constant time 22:24:07 <oklopol> it's linear 22:24:09 <itidus20> i am going to abandon this code altogether.... 22:24:14 <itidus20> but i will show you it 22:24:22 <itidus20> http://codepad.org/mre22niv 22:24:27 <oklopol> so you might as well just move all the elements 22:24:49 <oklopol> in which case you have indexing again 22:25:14 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 22:25:18 <itidus20> its really a hopeless mess... and it was nowhere near complete 22:25:46 <itidus20> and finally i came to my senses and realized its not even going to help the insert problem 22:26:19 <oklopol> i don't get del_range 22:26:31 <itidus20> it deletes from 2 to 3 :)) 22:26:37 <itidus20> in the example 22:27:42 <itidus20> its very absurd code.. one might almost say obfuscated 22:27:46 <oklopol> well i dunno what array actually contains 22:28:00 <oklopol> values + blanks? 22:28:07 <oklopol> and 0 is length 22:28:32 <itidus20> it contains run lengths and next valids 22:28:46 <itidus20> but the insert and delete code wasn't finished either 22:29:26 <oklopol> how do you make sure deletion doesn't make next valid pointers invalid 22:29:43 <itidus20> its not done :P 22:29:49 <oklopol> oh okay 22:29:55 <oklopol> you can't do it in constant time 22:29:58 <itidus20> hummmmmm 22:30:06 <oklopol> with just next valid pointers 22:30:30 <oklopol> it's linear 22:30:48 <oklopol> same complexity as the usual deletion where you shift everything 22:30:50 <itidus20> its very incomplete.. im just glad i finally realized how useless it is 22:31:55 <itidus20> someone in another chat said linked list is better than arrays for deletion.. so i was tempted to challenge the idea by working on it 22:32:16 <oklopol> everyone does that at one point or another i suppose 22:32:24 <oklopol> it's a dead end 22:33:05 <oklopol> well, not quite, but i think the only solutions have a logarithic stack of arrays simulating a tree 22:33:24 <oklopol> don't ask for details, my data structure days are long gone 22:33:35 <itidus20> ok 22:33:58 <oklopol> trees are really the only way to get indexing, deletion and insertion fast at the same time 22:34:17 -!- Sgeo has joined. 22:34:59 <oklopol> you get log n for everything 22:35:28 <oklopol> prolly amortized, since you need to balance the tree a bit every now and then 22:37:37 <oklopol> arrays have constant indexing, linear deletion and insertion, lists have those swapped (if the latter two operations are done with pointers), and trees get log n for all, it's and interesting trade-off, really 22:40:29 <oklopol> and as for how to actually do the tree stuff, i suppose you could store, at every child, how big the tree is under it, let's call it "size info". then, balancing only requires a logarithmic change (each flip needs only local size info changes), insertion and deletion only change size info on the path from node to root, and indexing is obviously logtime if the tree is balanced 22:41:13 <oklopol> assuming you know, say, roughly how red-black trees work 22:41:15 <itidus20> well i certainly don't "need" rapid deletion or insertion for anything. it was just the naive exploration of the array :D 22:41:55 <oklopol> naive exploration is fun but there's a rich theory you should look into first, your ideas will become richer as wekk. 22:41:58 <oklopol> *well 22:42:25 <itidus20> another idea which occured to me is a series of hops between deleted cells 22:42:37 <oklopol> wuzzat 22:42:51 <itidus20> cell 0 would contain an index of the first deleted cell 22:43:11 <itidus20> and the first would contain an index of the second and so forth 22:43:27 <oklopol> again, linear deletion 22:43:31 <itidus20> yup 22:43:40 <itidus20> and it would kill off the indexing 22:44:00 <oklopol> yes. there's no known solution, you should give up :P 23:05:38 -!- FireFly has quit (Quit: FireFly). 23:15:32 -!- jix has quit (Ping timeout: 258 seconds). 23:18:54 -!- jix has joined. 23:24:29 -!- Vorpal has joined. 23:45:02 -!- DH____ has quit (Remote host closed the connection). 23:56:07 -!- Patashu has joined. 2011-09-11: 00:03:54 -!- copumpkin has quit (Ping timeout: 260 seconds). 00:04:19 -!- copumpkin has joined. 00:10:56 -!- DH____ has joined. 00:19:40 * Phantom_Hoover → sleep 00:19:41 -!- Phantom_Hoover has quit (Quit: Leaving). 00:24:52 -!- variable has quit (Quit: I found 1 in /dev/zero). 00:25:00 <Patashu> wow. if javascript throws an exception and nothing catches it, it silently dies? 00:29:44 <zzo38> I think something must catch it, although it might be the system that does so 00:30:53 <zzo38> If I have: class Which w l r t | w t -> l r where { which :: l -> r -> w -> t; }; then how can I make up the "makeL" and "makeR" such that: which makeL makeR = id 00:31:21 <oklopol> so your question is, if javascript throws and exception and no one catches it, does it make a sound? 00:31:25 <oklopol> *an 00:32:26 <oklopol> i've only heard this question for certain simple data structures, but i think it's unresolved even for those 00:32:29 <CakeProphet> Patashu: yes javascript is the best thing to debug ever. 00:34:33 <Patashu> last night I had to debug a javascript error 00:35:08 <Patashu> a for loop was ending before the first cycle even finished 00:35:13 <Patashu> and I had no idea what was causing it to stop 00:35:54 <oklopol> that would make an awesome movie 00:36:08 <Patashu> debugging javascript? 00:36:27 <oklopol> i dunno, everything sounds so grandiose atm 00:36:36 <Patashu> a movie about debugging javascript... 00:36:43 <Patashu> 2 hours of staring at stacks and variables 00:36:52 <Patashu> and setting breakpoints 00:36:53 <oklopol> i keep imagining stuff in a trailer voice with explosions in the background 00:37:05 <Patashu> IN A WORLD... 00:37:09 <Patashu> WITH NO EXCEPTION HANDLIGN 00:37:35 <Patashu> A WORLD... 00:37:38 * Sgeo wonders how one would go about debugging assembly 00:37:40 <Patashu> WHERE PROGRAMS DON'T DO WHAT YOU WANT THEM TO 00:38:15 <Patashu> ONE MAN... 00:38:17 <Patashu> MUST FIX HIS CODE 00:38:18 <Patashu> ONCE AND FOR ALL 00:38:38 <oklopol> james matrix is just as simple programmer... unaware that one uncaught exception... would change his life forever 00:39:31 <Patashu> 'what if the program could, you know, speak up when something goes wrong...' 'that's crazy talk james! out of my office!' 00:39:37 <Patashu> *THOOM* 00:40:57 <CakeProphet> oklopol: grandiose? are you perhaps on acid? 00:41:58 <oklopol> "there is no choice, we have to set a breakpoint here" "but james matrix, it's too dangerous, the stack might overflow, recursion, pointers, monads!" "god help us all" *sets breakpoint* 00:42:15 <oklopol> CakeProphet: i'm on acid on life 00:44:48 <oklopol> "this bug is impossi" 00:44:51 <oklopol> fuck 00:45:31 <Patashu> 'monads' 00:45:41 <oklopol> "this bug is impossible to fix, we have to call james matrix!" *arrives* "no ordinary programming is going to do us any good here... i have to use... dvorak" 00:45:46 <Patashu> LOL 00:46:47 <oklopol> james matrix might just be the coolest character i ever invented just now 00:48:26 <oklopol> see also sequel where james matrix uses induction to prove a theorem with no simple combinatorial proof 00:55:15 <ais523> and the sad thing is, is that even if you made this into a movie, there'd be other movies even /worse/ 00:55:41 <ais523> hmm, you should mix in the "stand back! I know regular expressions" from xkcd too 00:55:43 <oklopol> yes, because there are other movies 00:56:17 -!- Vorpal has quit (Ping timeout: 260 seconds). 00:56:19 <oklopol> at one point they use a global variable 01:05:32 <oklopol> tv series are not very realistic i find 01:07:27 <DH____> I would pay to watch that film! 01:09:13 <oklopol> of course you would, it would be awesome 01:18:04 <zzo38> Do *you* understand my question relating to Haskell? I can copy more explanation in here in case you did not read it 01:18:26 <zzo38> (I put in #haskell channel but they don't know, and they are supposed to know!) 01:19:32 <monqy> oops 01:25:35 <zzo38> It seem, everyone doesn't know the question 01:25:56 -!- variable has joined. 01:26:55 -!- CakeProphet has quit (Ping timeout: 276 seconds). 01:27:02 <zzo38> I want to make it which makeL makeR = id for example one instance can be which = maybe; makeL = Nothing; makeR = Just; but that doesn't work it works "which" but the "makeL" and "makeR" doesn't work. 01:28:05 <monqy> what are they supposed to do other than which makeL makeR = id 01:29:23 <zzo38> monqy: It is supposed to do what it says it does. The "which" does in fact works. But the "makeL" and "makeR" doesn't work even though I tried to make it work in a few different ways, but it doesn't work whether it is same class or other class 01:29:45 <zzo38> This part works: class Which w l r t | w t -> l r where { which :: l -> r -> w -> t; }; 01:29:47 <monqy> what does it say 01:30:18 <zzo38> monqy: Other than their instance definitions it is only supposed to do following the which makeL makeR = id laws. 01:30:26 <monqy> oh 01:30:42 <monqy> which = const; makeL = id; makeR = undefined 01:30:48 <monqy> which = id; makeL = id; makeR = id 01:31:02 <monqy> which = flip const; makeL = undefined; makeR = id 01:31:08 <zzo38> Even though I typed in the definition of makeL and makeR it still doesn't works 01:31:40 <zzo38> monqy: No that is wrong, for a few reasons. One is, it has undefined, which doesn't count. Other is, they do not correspond to specific types. 01:32:26 <zzo38> That is why I have instance corresponding to specific types, such as Bool, Maybe, Either, and so on. These types have functions or values corresponding to the laws of which/makeL/makeR. 01:32:53 <monqy> why do you even want this 01:32:58 <monqy> it looks overcomplicated and useless 01:34:15 <zzo38> What is this things called in category theory? 01:35:04 <monqy> also: isn't t always going to be something like a -> a since it can be the identity function 01:36:03 <zzo38> No, it isn't going to always be. Notice types of "maybe" function; the "t" isn't that type. 01:36:59 <monqy> oh i didn't notice the w there 01:37:09 <monqy> oops 01:37:14 <monqy> so uh 01:37:17 <monqy> how would you use this 01:38:54 <zzo38> Some examples of such things would be: { which l r w = if w then r else l; makeL = False; makeR = True; } { which = maybe; makeL = Nothing; makeR = Just; } { which = either; makeL = Left; makeR = Right; } Is there a name for such things in mathematics and in category theory? 01:41:29 <zzo38> How many things do you know about category theory, though? 01:42:06 <monqy> not much 01:42:26 <monqy> I wish I knew more but 01:45:27 <zzo38> Actually there may be other laws of the kind of things I try to mentioned, but that I might have missed. But which makeL makeR = id is only one I could think of. 01:47:57 <zzo38> With the Maybe monad, the (which makeL) which is (maybe Nothing) is same as (=<<) 01:52:17 <monqy> instance? Which (a, b) (a -> a') (b -> b') (a', b') where makeL = id; makeR = id; which = (Control.Arrow.***) 01:52:26 <zzo38> That follows with the Either monad as well 01:53:11 <monqy> oh I forgot the t in there 01:53:18 <zzo38> monqy: I don't know about arrow 01:53:24 <monqy> instance? Which (a, b) (a -> a') (b -> b') (a', b') (a', b') where makeL = id; makeR = id; which = (Control.Arrow.***) 01:53:27 <monqy> there 01:53:58 <monqy> what arrow 01:54:00 <zzo38> The Which class only has four parameters, not five? 01:54:06 <monqy> oops 01:54:09 <monqy> I didn't forget about it 01:54:12 <monqy> I forgot I remembered it 01:54:20 <monqy> instance? Which (a, b) (a -> a') (b -> b') (a', b') where makeL = id; makeR = id; which = (Control.Arrow.***) 01:54:23 <monqy> there 01:54:32 <monqy> and what's this about arrow? 01:55:00 <zzo38> That I don't know about Control.Arrow very well 01:55:14 <zzo38> But I can try to see if it can work 01:55:17 <monqy> it uses (***) for the function instance: f *** g = \ (a, b) -> (f a, g b) 01:58:11 <zzo38> monqy: Yes, that does in fact work. On pair types, it seems that is correct. 02:04:08 <monqy> so what doesn't work about makeL and makeR and how are you trying to make them work, or do they work now? 02:05:27 <zzo38> They don't work. What doesn't work is that it won't accept my definition of makeL and makeR either in that class or in a separate class that depends on the first one. Even if it compiles, it still won't understand the instance when using makeL or makeR. But which still works whether or not I try to define makeL and makeR. 02:06:22 -!- Rugxulo has joined. 02:06:27 <monqy> what are the errors? 02:06:44 <Rugxulo> moo 02:06:45 <zzo38> Ambiguity errors 02:06:59 <monqy> like what 02:07:06 <monqy> and corresponding to which implementation attempt 02:07:48 <zzo38> All implementation attempts, but the errors are still different 02:08:17 <monqy> I mean specifically what is the code you tried and what was the error printout 02:08:33 <zzo38> Implementing in the same class, it work makeL :: l; makeR :: r; it will accept, but then I wrote makeL = False; makeR = True; and it is error "Couldn't match type `t' with `Bool'" 02:09:49 <Rugxulo> C++ ?? 02:10:02 <zzo38> Rugxulo: What about C++? 02:10:30 <monqy> Rugxulo: haskell. 02:10:39 -!- azaq23 has quit (Quit: Leaving.). 02:10:51 <monqy> with multiparameter typeclasses and functional dependencies and friends 02:11:53 -!- Rugxulo has quit (Quit: Rugxulo). 02:12:16 <monqy> what were the class, instance, and error, in full? 02:12:33 <zzo38> This doesn't work either. It is not compile error but still ambiguity when trying to use it in GHCi: class Which w l r w => WhichMake w l r where { makeL :: l; makeR :: r; } instance WhichMake Bool Bool Bool where { makeL = False; makeR = True; }; 02:13:23 <zzo38> Ambiguous type variables `t0', `w0', `r0' in the constraint: (WhichMake w0 t0 r0) arising from a use of `makeL' 02:14:31 <zzo38> How to make not ambiguous? 02:15:20 <monqy> in that case? I don't really know. l and r should depend on w but w is never used so that's a mess 02:15:28 <monqy> really they should be in the same class?? 02:15:49 * Sgeo looks for a WebTV simulator 02:16:29 <zzo38> monqy: In the same class results in ambiguity error in the instance declaration, but I agree it would make sense to be the same class, it make more sense mathematically it seem to me, at least. 02:16:55 <monqy> what were the class, instance, and ambiguity error, in full? 02:17:50 <zzo38> Couldn't match type `t' with `Bool' `t' is a rigid type variable bound by the instance declaration at Which.hs:10:23 In the expression: False In an equation for `makeL': makeL = False In the instance declaration for `Which Bool t t t' 02:21:04 <monqy> ok that makes sense 02:21:21 <monqy> makeL is of type l and in the instance l is t 02:21:53 <monqy> the instance should be Which Bool Bool Bool Bool if you want that definition for makeL 02:22:43 -!- augur has joined. 02:23:25 <monqy> if you want anything fancier I'm afraid you;ll have to using crazy generic programming tricks?? like syb and friends?? 02:25:44 <zzo38> How do you do that? 02:26:14 <zzo38> The reason I know about "t" rigid variable that is why I made it a separate class, but that way still doesn't work 02:26:31 <monqy> well you won't be able to get around it 02:26:37 -!- itidus20 has quit (Ping timeout: 246 seconds). 02:27:10 <monqy> I mean 02:27:43 <monqy> so I guess your trick with the extra class was that you wanted to make it so makeL and makeR only worked in the case that it was indeed all Bool? 02:28:41 <monqy> the problem with that is when you say makeL or makeR you don't know the instance because there's not enough information in the types to tell in e.g. makeL's case, w and r 02:29:22 <monqy> unless you made it so there could only be one instance for any w, l, or r, I think? 02:29:49 <monqy> I don't know enough about fundep syntax to construct that though, if it's even possible 02:49:38 <zzo38> Is it mathematically possible in category theory, though? 02:53:25 -!- hagb4rd has joined. 02:58:07 <Patashu> re: bitcoins, would it be possible to create a block mining algorithm that doesn't achieve speedups on gpus relative to cpus? 02:58:48 <Sgeo> gpus' main advantage is that they are largely parallel, or am I mistaken? 02:59:16 <Sgeo> I'd imagine any algorithm reliant on brute-forcing would benefit from parallelization 02:59:28 -!- itidus20 has joined. 03:04:40 <zzo38> I managed to make "makeL" and "makeR" work with Bool so far, but only if you specify ":: Bool" afterward, and the other instances do not work at all. 03:09:46 <zzo38> Actually it works if I use "which makeL makeR ::" instead of putting :: at the end. Why does it require that? 03:13:52 <copumpkin> zzo38 03:14:44 -!- augur_ has joined. 03:15:05 -!- augur has quit (Read error: Connection reset by peer). 03:15:51 <copumpkin> zzo38: http://hpaste.org/51221 03:16:48 <copumpkin> hmm, not quite ideal though 03:16:56 <copumpkin> phone 03:20:23 -!- ive has quit (Quit: leaving). 03:21:00 -!- augur_ has quit (Remote host closed the connection). 03:21:22 <zzo38> OK, I suppose type instances can work too. I didn't think of that. I suppose it does make some sense since you apply types corresponding to types and the class now only has one parameter. 03:21:34 <zzo38> I will try loading that program into my computer 03:22:43 <copumpkin> it doesn't quite work because which left right doesn't work out nicely 03:23:29 <zzo38> Yes you are correct, it doesn't work 03:24:04 <copumpkin> it does work for other things though 03:24:16 <copumpkin> λ> which 5 (+1) Nothing 03:24:16 <copumpkin> 5 03:24:17 -!- hagb4rd has quit (Ping timeout: 260 seconds). 03:24:50 <zzo38> Yes that works. Even my program it also worked that way too. 03:28:33 <zzo38> I put False on the left but the idea is still the same. Putting False on the left allows you to generalize the "when" command for both Bool and Maybe as "which $ return ()" 03:29:20 <copumpkin> the issue is telling it about type functions 03:29:56 <zzo38> So, why doesn't "which left right" work with your program? I don't completely understand 03:30:12 <copumpkin> ask for the type of which left right in mine 03:30:36 <copumpkin> note how it has a bunch of type variables in the constraints that don't show up in the type itself 03:30:40 <copumpkin> I bet I could do this in 7.4 03:32:15 <zzo38> OK I asked for the type, it displays (Left a b ~ Left a1 a1, Right a b ~ Right a2 a2, Choose a1, Choose a2, Choose a) => a -> b 03:32:21 <copumpkin> yep 03:32:52 <copumpkin> those a1 and a2 variables don't show up in the actual type 03:33:43 -!- augur has joined. 03:35:34 <copumpkin> anyway, I think the general thing you're looking for 03:35:37 <copumpkin> is an eliminator 03:35:43 <copumpkin> it's not a CT term 03:35:51 <copumpkin> but it's a representation of ADTs 03:36:17 <zzo38> Would functional dependencies help? It doesn't seem there is anything to make functional dependencies with on the Choose class, and as far as I know there is no functional dependencies for type families 03:36:25 <copumpkin> they might 03:36:33 <copumpkin> not sure 03:54:03 <zzo38> OK. Can you tell me more about what "eliminator" is? 03:56:00 <copumpkin> http://www.quora.com/In-type-theory-what-is-an-eliminator-and-what-is-its-opposite 04:02:44 -!- hagb4rd has joined. 04:09:05 <zzo38> OK, yes that make sense 04:09:41 <copumpkin> you typically won't get a typeclass for it 04:09:51 <copumpkin> just because it depends on how many constructors you have 04:09:59 <copumpkin> all your examples have two constructors so it works 04:10:40 <zzo38> So I suppose the Choose or Which class would be used to indicate a type that you have two constructors, and one eliminator that can choose between them (in the case of pairs, it will choose both). 04:10:59 <copumpkin> hmm, not sure pairs even work 04:11:13 <copumpkin> but yeah, it could be a statement that your type has two constructors 04:11:50 <zzo38> Yes it is not a real eliminator with pairs (and it has only one constructor), but the Choose or Which class could still exist following the laws related to those classes 04:12:32 <zzo38> But someone has mentioned a way to do it: which = (Control.Arrow.***); left = id; right = id; not a real eliminator though. 04:13:03 <copumpkin> hm, yeah, probably not 04:13:13 <copumpkin> :t uncurry 04:13:13 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c 04:13:24 <copumpkin> that's the real (non-dependent) eliminator for pairs 04:13:42 <zzo38> But I suppose it violate the law if you also assume the return type must be allowed to be anything. 04:13:58 <zzo38> So if you add that law, then the Choose (or Which) class cannot properly use pairs. 04:14:04 -!- MDude has changed nick to MSleep. 04:16:02 -!- derrik has joined. 04:20:28 <zzo38> I suppose it also has to do with when it is swappable or not. For example, Bool is swappable, Either is swappable, but Maybe is not swappable. 04:20:39 <Sgeo> Swappable? 04:20:56 <Sgeo> Hmm, as in, all constructors have the same type? 04:21:09 <Sgeo> ^^easy way to describe my intuition about that 04:21:20 <Sgeo> Although it was more "They all look the same" 04:22:20 <zzo38> Which means it can be swapped by "which right left", like how "which left right" is identity. 04:22:54 <Sgeo> I have no idea what which is 04:23:01 <Sgeo> Wait 04:23:19 <Sgeo> My definition of "swappable" doesn't fit what my intuition says about Either 04:24:57 <zzo38> So the "Bool" type can be swapped to "Bool" itself, and "Either a b" is swapped to "Either b a" 04:37:01 <Sgeo> Does this capture what you're trying to say: All constructors for the type require the same number of arguments [ignoring bleh about all functions taking 0 or 1 arguments] 04:37:03 <Sgeo> ? 04:37:31 <zzo38> I suppose that does it. 04:37:40 <zzo38> Yes it seem so 04:38:52 -!- CakeProphet has joined. 04:38:53 -!- CakeProphet has quit (Changing host). 04:38:53 -!- CakeProphet has joined. 04:43:52 -!- CakeProphet has quit (Ping timeout: 260 seconds). 04:45:26 <zzo38> Couldn't match type `Right a1 a1' with `a2 -> Left a0 a0' if it is "Maybe t" then type a2 is "t" and a0 is "Maybe t", a1 is also "Maybe t". It does match but it says it doesn't match 04:49:23 <zzo38> How to make it recognize it match? 04:50:39 <Lymee> > () 04:50:39 <lambdabot> () 04:59:50 <zzo38> Is Choose.hs wrong or is GHC wrong? 04:59:59 <zzo38> Or am I wrong? 05:00:14 <derrik> the answer is yes 05:00:50 <quintopia> (d) all of the above 05:06:21 -!- zzo38 has quit (Remote host closed the connection). 05:29:30 <shachaf> GHC is never wrong. 05:31:44 -!- augur has quit (Remote host closed the connection). 06:51:38 -!- derrik_ has joined. 06:52:58 -!- derrik has quit (Ping timeout: 252 seconds). 06:53:05 -!- derrik_ has changed nick to derrik. 06:54:51 -!- Taneb has joined. 06:54:55 <Taneb> Hello! 06:55:20 <Taneb> I'm on my brother's laptop 06:55:37 <Taneb> McAfee SiteAdvisor doesn't seem to like esoteric.voxelperfect.net 06:56:18 <quintopia> ah! our archnemesis mcafee is at it again! 06:56:39 <ais523> Taneb: what in particular does it dislike? 06:56:45 <ais523> and does it have the same issue with esolangs.org? 06:58:19 <Taneb> Doesn't say and no 06:58:29 <ais523> how bizarre 06:58:59 <Taneb> "McAfee TrustedSource web reputation analysis found potential security risks with this site. Use with extreme caution." 06:59:56 <fizzie> "In particular, the programming languages promoted on this page are kinda weird, and you'd better not get involved in that sorta thing." 07:00:02 <ais523> I continue to maintain that it's bizarre 07:00:06 <Taneb> I think it's a problem with Voxelperfect 07:01:04 <Taneb> No, wait, it isn't 07:04:37 <Taneb> MYSTERIOUS 07:05:39 <quintopia> maybe it has something to do with what other websites say about the site 07:05:58 <quintopia> thats what i would expect "web reputation analysis" to do 07:07:59 <Taneb> It is a shame that Carnage Heart didn't do very well 07:08:25 <Taneb> It's essentially befunge as a turn based strategy 07:08:27 <Taneb> For PS1 07:08:34 <Taneb> Bye 07:08:35 -!- Taneb has quit. 07:08:39 <hagb4rd> http://www.youtube.com/watch?v=8QL9CbikWNw 07:34:18 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]). 07:34:34 -!- derrik has joined. 07:35:49 -!- derrik has quit (Client Quit). 07:36:01 -!- Taneb has joined. 07:40:23 -!- oerjan has joined. 07:44:12 <Taneb> You know what I've never understood 07:44:22 <oerjan> no. 07:44:23 <Taneb> In HQ9+, does + cause any output? 07:44:46 <Taneb> The first of those questions was rhetorical 07:44:58 <oerjan> i think usually it has no visible effect. perhaps it might overflow and give an error message that way. 07:45:31 <oerjan> (this is of course the joke) 07:48:42 <ais523> it changes write-only memory in an irreversible way 07:48:58 <ais523> this operation isn't expected to do anything user-visible, as far as I know, nor be distinguishable from a NOP 07:49:16 <ais523> however, all my HQ9+ impls do have an accumulator that's incremented upon calling + 07:50:49 <ais523> I don't have any HQ9++ impls because I haven't quite figured out what ++ does 07:51:28 <Taneb> It creates a new instance of the generic superclass 07:51:44 <ais523> oh, as in new Object() in Java? 07:51:48 <ais523> (can you even do that in Java?) 07:51:59 <Taneb> Yeah, and dunno, never used Java 07:55:12 <fizzie> I believe you can create instances of Object in Java, though they're perhaps not terribly useful. 07:56:22 <ais523> they have monitors, at least, so you could use them as mutexes 07:56:29 <ais523> although making a separate mutex isn't very javaish 08:01:05 <fizzie> Or condition variables in the pthread_cond sense, with wait/notify, due to those same monitors. Or just as arbitrary unique objects, since you can equality-compare them. 08:11:49 <Taneb> Is there a better way in Haskell to get the nth element of a list than "last (take n list)" 08:12:34 <ais523> getting the nth element of a list isn't particularly efficient, although last+take seems even less so 08:12:40 <oerjan> > "yeah there is" !! 5 08:12:41 <lambdabot> 't' 08:13:00 <Taneb> Ooh 08:14:04 <oerjan> Taneb: it is sort of deprecated to use it, since it traverses the list, and also it may error 08:14:32 <ais523> I don't think it's possible to get the nth element /without/ traversing the list 08:15:00 <oerjan> well true, but it is recommended you don't use it when iterating over a list otherwise 08:15:27 <shachaf> oerjan: I don't think it's "deprecated". 08:15:38 <oerjan> shachaf: well not technically... 08:15:55 <ais523> oerjan: definitely, an indexwise list traversal is a bad idea in any language 08:16:01 <shachaf> It's just not recommended, like most partial functions and most functions that index into a list. 08:16:03 <ais523> (whereas an indexwise array traversal is fine) 08:17:32 <oerjan> another idiom when you _don't_ want it to fail is to say take 1 (drop n list) 08:17:46 <oerjan> that gives either an empty list, or a list with just one element 08:18:04 <oerjan> or you can pattern match on drop n list directly 08:18:25 <shachaf> Or some sort of safeIndex function. 08:18:34 <oerjan> i also hear there's a "safeprelude" package which includes lots of such things 08:18:46 <oerjan> (name may or may not be right) 08:18:54 <shachaf> @hackage safe 08:18:54 <lambdabot> http://hackage.haskell.org/package/safe 08:19:14 <shachaf> It's still not recommende to index into a list if you can avoid it. :-) 08:19:25 <shachaf> Do you people like bugs? 08:19:27 <shachaf> http://www.youtube.com/watch?v=M1nsOKBgmOs 08:20:34 <fizzie> > let myMap f l = let myMap' [] = []; myMap' ((i,_):is) = f (l !! i) : myMap' is in myMap' $ zip [0..] l in myMap (^2) [1,2,3,4,5] -- best map? 08:20:35 <lambdabot> [1,4,9,16,25] 08:21:04 <shachaf> @slap fizzie 08:21:05 * lambdabot clobbers fizzie with an untyped language 08:21:48 -!- DH____ has quit (Ping timeout: 260 seconds). 08:30:13 -!- jakki has joined. 08:49:02 <Taneb> I now have a pretty shoddy but working program in Haskell with a function that takes a number and returns that number of valid BFJoust programs 08:50:17 <oerjan> NO FUN NOT PASTING SO WE CAN TEAR IT TO PIECES, I MEAN SUGGEST IMPROVEMENTS 08:51:29 <Taneb> http://pastebin.com/LwaXg4UK 08:53:02 <oerjan> eek 08:53:12 <Taneb> I told you it was shoddy 08:53:56 <fizzie> "(==) a b" is a rather strange way of saying "a == b". 08:54:07 <Taneb> Oddly, I prefer it that way 08:54:21 <fizzie> That's odd. 08:54:25 <Taneb> But not consistently 08:56:45 <oerjan> > flip replicateM "+-<>.[]" =<< [0..] 08:56:47 <lambdabot> ["","+","-","<",">",".","[","]","++","+-","+<","+>","+.","+[","+]","-+","--... 08:56:55 * oerjan cackles evilly 08:57:28 <oerjan> BEHOLD THE POWER OF THE LIST MONAD 08:58:08 <fizzie> One monad to rule them all, and in the darkness bind them. 08:59:41 <oerjan> Taneb: i see you did not heed our warning not to index lists rampantly in is_valid :P 09:00:04 <oerjan> but of course avoiding it needs a different algorithm 09:00:11 <Taneb> I disheeded most vigorously 09:00:46 <Taneb> Also in to_string in gen_bfj 09:00:56 <oerjan> what i would have done is to make is_valid take two arguments, the rest of the list and the current [] nesting level 09:01:16 <Taneb> I can do that 09:01:28 <fizzie> As far as algorithms go, that's not very different. 09:01:57 <fizzie> Also makes for a nicer stopping than the guard-agaist-length thing. 09:02:07 <oerjan> oh wait i _is_ that. 09:02:14 <oerjan> no wait 09:02:24 <oerjan> j is that 09:02:33 <Taneb> I think i is that 09:02:56 <oerjan> yep. so instead of p and i, let the argument be equivalent to drop i p 09:03:18 <oerjan> then all you need to do is test the start of the list passed 09:03:45 <oerjan> *drop (i-1) p 09:03:55 <oerjan> haskell is usually 0-indexed 09:04:40 <monqy> last (take ...) is an interesting way of indexing 09:04:51 <Taneb> It was intuitive to me 09:04:57 <oerjan> Taneb: you see how all your recursions are of the form is_valid p (i+1) and you only look at the i'th element of the list 09:05:16 <Taneb> I'm working in your suggestions as we speak 09:05:24 -!- Phantom_Hoover has joined. 09:05:43 <oerjan> and once that is done, it should be possible to convert a lot of guards to pattern matches 09:06:17 <oerjan> all except the j < 0 one, i think 09:06:57 <monqy> this all is a bit weird to me actually 09:07:33 <oerjan> monqy: it looks like a rather numeric/array inspired algorithm, so it needs some tweaking to be idiomatic haskell (understatement :P) 09:07:41 <monqy> heheheh 09:08:17 <Phantom_Hoover> When I saw 'j' I thought you were talking about maths and then I noticed the stuff about guards and pattern matches and was disappointed and now I'm having a crisis. 09:08:31 <Taneb> It's largely based on an incomplete version in Python, which may go siome way to explain the stupidity 09:08:39 <oerjan> ah. 09:09:15 <fizzie> > let isValid [] d = d == 0; isValid ('[':cs) d = isValid cs (d+1); isValid (']':cs) d = d > 0 && isValid cs (d-1); isValid (_:cs) d = isValid cs d in map (\p -> isValid p 0) ["+[-]", "+[-", "]["] 09:09:15 <lambdabot> [True,False,False] 09:10:13 <Taneb> Couldn't you replace "\p -> isValid p 0" with "flip isValid 0"? 09:10:38 <oerjan> Taneb: (`isValid` 0) >:) 09:11:04 <Taneb> Or even that 09:11:07 <oerjan> (also yes, those are equivalent) 09:11:13 <fizzie> Sure, sure; though I think you'd rather have isValid take just a string, and use an isValid' internally or something. 09:11:36 <Taneb> brb, sponsoring someone 09:11:45 <oerjan> that is also a common idiom yes 09:12:43 <oerjan> Taneb: also as fizzie implies CamelCase is standard for haskell 09:13:45 <oerjan> since before the word was invented, afaik 09:14:40 <monqy> > let valid_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` ((++) <$> valid_things <*> valid_things) in valid_things 09:14:41 <lambdabot> ["+","++","[+]","+++","-","+[+]","[++]","++++",">","+-","[[+]]","++[+]","<"... 09:15:56 <oerjan> Taneb: incidentally although converting from number to string is a bit weird, haskell has a function corresponding nearly to your to_string in its Numeric module 09:16:02 <Taneb> Back 09:16:19 <monqy> is my method any good 09:16:26 <monqy> I'm probably missing something 09:16:47 <oerjan> > map (flip (showIntAtBase 7 ("+-<>.[]" !!)) "") [0..] 09:16:49 <lambdabot> ["+","-","<",">",".","[","]","-+","--","-<","->","-.","-[","-]","<+","<-","... 09:17:01 <monqy> seeing as how I started from nothing, not bothering to interpret taneb's thing 09:18:06 <oerjan> monqy: you seem not to have empty loops or strings 09:18:13 <monqy> ah right 09:18:14 <monqy> easily fixed 09:18:35 <monqy> > let valid_things = "" `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` ((++) <$> valid_things <*> valid_things) in valid_things 09:18:35 <lambdabot> Couldn't match expected type `GHC.Types.Char' 09:18:36 <lambdabot> against inferred type... 09:18:37 <oerjan> otherwise, i'm not sure i can read that code :P 09:18:38 <monqy> oops 09:18:47 <monqy> > let valid_things = [""] `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` ((++) <$> valid_things <*> valid_things) in valid_things 09:18:48 <lambdabot> ["","","[]","","+","[]","[]","","-","+","[[]]","[]",">","[]","[]","","<","-... 09:18:51 <oerjan> (YOU GO TOO FAR) 09:18:53 <monqy> oops oops oops 09:19:06 <monqy> I'm concatenating empty things :( 09:19:27 <monqy> it's not too far at all 09:20:02 <monqy> the worst part is `interleave` instead of ++ because I wanted to mix things up 09:20:44 <oerjan> hm 09:21:00 <oerjan> :t interleave 09:21:01 <lambdabot> forall (m :: * -> *) a. (MonadLogic m) => m a -> m a -> m a 09:21:03 <monqy> > let valid_things = [""] `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` (filter (not . null) $ (++) <$> valid_things <*> valid_things) in valid_things 09:21:06 <lambdabot> mueval-core: Time limit exceeded 09:21:08 <oerjan> ah that one again 09:21:08 <monqy> oops 09:22:12 <monqy> > let valid_things = [""] `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` (filter (not . null) . ((++) <$> valid_things <*> valid_things)) in valid_things 09:22:13 <lambdabot> Couldn't match expected type `GHC.Types.Char' 09:22:13 <lambdabot> against inferred type... 09:22:17 <monqy> :( 09:22:21 <oerjan> ah right now i understand the gist 09:22:24 <monqy> oh right 09:22:26 <monqy> uhghh 09:22:30 -!- jakki has left. 09:22:33 <monqy> how do I do this nicely 09:23:03 <Taneb> http://pastebin.com/rX9yqkLY 09:23:42 <Taneb> Okay, in my text editor the =s in is_valid' were all lined up nicely 09:23:44 <monqy> > let valid_things = [""] `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` ((++) <$> valid_things <*> valid_things $ filter (not . null)) in valid_things 09:23:44 <lambdabot> Couldn't match expected type `a -> a1' 09:23:44 <lambdabot> against inferred type `[[GHC... 09:23:46 <oerjan> monqy: what about (++) <$> "+-><" <*> valid_things ? 09:23:48 <monqy> oops oops 09:24:02 -!- ais523 has quit (Remote host closed the connection). 09:24:11 <monqy> oerjan: then [things] won't end on the left hand side of a concatenated valid thing? 09:24:17 <oerjan> monqy: i mean, don't try to have valid_things combined with itself 09:24:29 <monqy> ah, so duplicate that part too? 09:24:58 <oerjan> (++) <$> ("+-><" `interleave` thatLoopPart) <*> valid_things 09:25:06 <oerjan> will that work 09:25:49 <monqy> if you do fmap pure on the "+-><", I'd imagine so 09:26:17 <Taneb> How does one do comments in Haskell? 09:26:22 <monqy> -- 09:26:29 <monqy> {-...-} for multiline 09:26:55 <oerjan> monqy: oh right. 09:27:33 <monqy> > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = safe_things `interleave` ((++) <$> safe_things <*> safe_things) in valid_things 09:27:34 <lambdabot> ["+","++","[+]","+[+]","-","+-","[++]","+[++]",">","+>","[[+]]","+[[+]]","<... 09:27:44 <monqy> oops I forgot the [""] 09:27:52 <Taneb> http://pastebin.com/DdV53DSb 09:27:59 <monqy> > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = safe_things `interleave` [""] `interleave` ((++) <$> safe_things <*> safe_things) in valid_things 09:28:01 <lambdabot> ["+","++","","+[+]","[+]","+-","-","+[++]","[++]","+>",">","+[]","[]","+<",... 09:28:05 <monqy> there 09:28:50 <Taneb> Hang on a minute! 09:28:59 <oerjan> Taneb: hm i think your to_string will fail to produce not just "+", but any string starting with + 09:29:09 -!- nooga has joined. 09:29:15 <Taneb> It actually doesn't 09:30:05 <Taneb> You can try it and see 09:30:18 <monqy> > let safe_things = (pure <$> "+-><") ++ ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] ++ safe_things ++ ((++) <$> safe_things <*> safe_things) in valid_things 09:30:19 <lambdabot> ["","+","-",">","<","[]","[+]","[-]","[>]","[<]","[[]]","[[+]]","[[-]]","[[... 09:30:41 <monqy> yeah it never gets to the concatenation that way :( interleave is much better 09:30:46 <oerjan> monqy: erm i think you want (++) <$> safe_things <*> valid_things 09:31:08 <monqy> hmm 09:31:20 <monqy> but then it will concatenate things with the empty string :( 09:31:35 <monqy> is there any way to fix it 09:32:18 <oerjan> monqy: um that is not a problem 09:32:35 <monqy> duplicates? 09:32:42 <oerjan> just drop safe_things ++ itself 09:32:49 <monqy> ah right 09:33:06 <oerjan> > let to_string n = if n == 0 then "" else ("+-<>.[]" !! (mod n 7)) : to_string (div n 7) in map to_string [0..] 09:33:07 <lambdabot> ["","-","<",">",".","[","]","+-","--","<-",">-",".-","[-","]-","+<","-<","<... 09:33:31 <monqy> > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] `interleave` ((++) <$> safe_things <*> valid_things) in valid_things 09:33:32 <lambdabot> ["","+","++","+++","++++","+++++","++++++","+++++++","++++++++","+++++++++"... 09:33:37 <monqy> oops I messed up 09:33:44 <Taneb> I think there is an entirely different way of doing this 09:33:45 <monqy> or did i 09:34:15 <oerjan> > let to_string n = if n == 0 then "" else ("+-<>.[]" !! (mod n 7)) : to_string (div n 7) in elem "++" . takeWhile ((<= 2) . length) $ map to_string [0..] 09:34:17 <lambdabot> False 09:34:24 <oerjan> Taneb: it never produces "++" 09:34:42 <monqy> > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] `interleave` ((++) <$> valid_things <*> safe_things) in valid_things 09:34:44 <lambdabot> ["","+","[]","-","[+]",">","[[]]","<","[-]","[[+]]","[>]","[[[]]]","[<]","[... 09:34:47 <Taneb> It doesn't like + at the end 09:34:48 <monqy> that's better 09:35:17 <monqy> > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = ((++) <$> valid_things <*> safe_things) `interleave` [""] in valid_things 09:35:20 <lambdabot> mueval-core: Time limit exceeded 09:35:31 <oerjan> Taneb: you are essentially printing a number in base 7 and + corresponds to 0 so it can never be the most significant digit 09:35:33 <Taneb> Considert that any valid, non-null BFJoust program must be of one of the three following formats: 09:35:59 <Taneb> One of "+", "-", "<", ">", and "." 09:36:07 <monqy> Taneb: generating them based on those formats is what I've been doing 09:36:22 <Taneb> A valid BFJoust program surrounded by "[" and "]" 09:36:36 <Taneb> And a concatenation of two valid BFJoust programs 09:36:38 <monqy> > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = ((++) <$> valid_things <*> safe_things) `interleave` [""] in valid_things -- take a look at this 09:36:42 <lambdabot> mueval-core: Time limit exceeded 09:36:46 <monqy> oh wait oops 09:36:48 <monqy> wrong one 09:37:02 <Taneb> oerjan: Any idea how to get the missing programs into it? 09:37:04 <monqy> > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] `interleave` ((++) <$> valid_things <*> safe_things) in valid_things -- take a look at this 09:37:05 <lambdabot> ["","+","[]","-","[+]",">","[[]]","<","[-]","[[+]]","[>]","[[[]]]","[<]","[... 09:37:25 <oerjan> Taneb: well generate it some other way than converting from a number... 09:37:56 <Taneb> monqy, how is your thing going? 09:38:06 <monqy> Taneb: that basically says one of +->< or [program] or program++program but it's a bit trickier because it deals with empty programs too and empty loops 09:38:15 <monqy> I'll dissect it: 09:38:29 <monqy> `interleave` is basically ++ but it mixes things up so you get some stuff from both sides mixed in 09:38:33 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: interleave`: not found 09:39:04 <monqy> safe_things is the list of all things that don't need concatenation 09:39:20 <monqy> (pure <$> "+-><") is ["+", "-", ">", "<"] 09:39:48 <monqy> ((('[' :) . (++ "]")) puts [ on left and ] on right 09:40:13 <monqy> and the <$> valid things makes it map onto all valid programs 09:40:17 <Taneb> I don't think you'll ever get, for instance, [+][-] 09:40:22 <monqy> you'll get that 09:41:09 <oerjan> monqy: program = empty | command program, where command is your safe_things 09:41:17 <monqy> valid_things is the null program or a valid program concatenated with a non-null non-concatenated program 09:42:14 <oerjan> monqy: so, valid_things = empty | safe_things valid_things 09:42:43 <monqy> Taneb: to get [+][-] first you'd look at the concat case in valid_things, on the left you'd go to safe_things, take the [] case, then safe things again, and the + case. now we're on the other side of the concat case. take safe_things, [], - 09:43:35 <monqy> Taneb: oh right <$> is an alias for fmap, if you didn't already know 09:44:11 <oerjan> monqy: oh hm i think (++) <$> valid_things <*> safe_things might not actually produce all possibilities when safe_things is an infinite list 09:44:16 <monqy> and <*> in this case takes a list of functions on the left, and a list of arguments on the right, and applies each function to each argument 09:44:21 <oerjan> s/might/does/ 09:44:25 <monqy> oh no 09:44:41 <oerjan> you need an interleaving variant of it. 09:45:11 <oerjan> i vaguely recall there was an interleaving bind variant last that MonadLogic module came up here 09:45:12 <monqy> as in use a version of liftM2 derived from >>- rather than <$> and <*> ? 09:45:16 <oerjan> :t (>>-) 09:45:18 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b 09:45:20 <oerjan> that one 09:45:25 <oerjan> yeah 09:45:48 <oerjan> MonadLogic is of course way overkill for this :P 09:46:36 <oerjan> Taneb: even my replicateM one-liner above may be overkill for a beginner. a list comprehension might be the thing... 09:47:16 <oerjan> although it _is_ sort of equivalent... 09:47:57 <monqy> > let lm2 f m n = m >>- return . f >>- (n >>- flip ($)); safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] `interleave` lm2 (++) valid_things safe_things in valid_things 09:47:58 <lambdabot> Precedence parsing error 09:47:58 <lambdabot> cannot mix `Control.Monad.Logic.Class.>>-' [i... 09:48:02 <monqy> oops 09:48:41 <monqy> double oops 09:49:06 <oerjan> Taneb: also i _have_ seen on wikipedia a way to do base conversion that works for your purpose, even if i think converting from a number is a digression 09:49:34 <monqy> > let lm2 f m n = m >>- (return . f) >>- \ f' -> n >>- (return . f'); safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] `interleave` lm2 (++) valid_things safe_things in valid_things 09:49:34 <Taneb> I've just thought of something that fits my psychology for fixing my program 09:49:35 <lambdabot> ["","+","++","[]","+++","-","+[]","[+]","[]+",">","+-","[++]","++[]","<","+... 09:49:41 <monqy> oerjan: all better? 09:49:45 <oerjan> the trick iirc is to use digits 1..7 instead of 0..6 09:50:10 <oerjan> monqy: hopefully :P 09:51:49 -!- nooga has quit (Ping timeout: 260 seconds). 09:52:03 <oerjan> Taneb: your is_valid' looks pretty idiomatic now, anyhow 09:52:26 <Taneb> Now to work on gen_bfj 09:52:38 <oerjan> Taneb: oh wait no it doesn't quite 09:52:56 <Taneb> What's wrong! 09:53:03 <monqy> > let lm2 f m n = m >>- (return . f) >>- \ f' -> n >>- (return . f'); safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] `interleave` lm2 (++) valid_things safe_things; from_nat = (valid_things !!) in from_nat 10 09:53:03 <oerjan> is_valid' p@('[':_) i = is_valid' (tail p) (i+1) 09:53:04 <lambdabot> "+-" 09:53:06 <oerjan> should be 09:53:26 <oerjan> is_valid' ('[':r) i = is_valid' r (i+1) 09:53:40 <Taneb> Ooh, that's clever 09:53:50 <oerjan> never use tail if you can just match :) 09:54:16 <monqy> clever/idiomatic 09:54:23 <monqy> also a lot more intuitive to me?? idk 09:54:43 <Taneb> Intuitivity is relative 09:55:03 <Taneb> I thought last (take n xs) was intuitive to get the nth element of xs 09:55:16 <monqy> there's a function for that it's called (!!) 09:55:40 <Taneb> oerjan: Is this base thing... bijective notation? 09:55:43 <monqy> also if I was doing it in your style I'd probably do head (drop ...) 09:55:48 <oerjan> Taneb: last (take n xs) will do strange things if your list is neither empty nor length >= n 09:56:10 <oerjan> Taneb: well bijective to strings of digits, afair 09:56:35 <Taneb> http://en.wikipedia.org/wiki/Bijective_numeration 09:56:53 <oerjan> ah yes that was it 09:59:06 <oerjan> Taneb: i think all you need is to subtract 1 from n before the rest if it's non-zero 10:03:53 <Taneb> http://pastebin.com/1HvF9w2s 10:05:00 -!- Vorpal has joined. 10:05:04 <monqy> for to_string, instead of checking if n == 0 you could do pattern matching 10:05:15 <monqy> to_string 0 = ""; to_string n = ... 10:10:50 <monqy> also I think is_valid could be written as (== 0) . foldl (\ c -> case c of '[' -> (+ 1); ']' -> subtract 1; _ -> id) 0 or some such 10:11:18 <monqy> oh wait no I messed it up 10:11:20 <monqy> oops 10:12:51 <monqy> foldr not foldl. I forgot about the argument order in the provided function. alternatively, use foldl but do flip on the lambda. 10:13:49 <monqy> it's pretty much exactly the same as what you wrote, just shorter. 10:16:05 -!- nooga has joined. 10:17:21 <Taneb> No instance for (Num (a0 -> b0)) /n arising from the literal `0' /n Possible fix: add an instance declaration for (Num (a0 -> b0)) /n In the second argument of `foldr', namely `0' /n In the second argument of `(.)', namely /n `foldr /n (\ c /n -> case c of { /n '[' -> (+ 1) /n ']' -> subtract 1 /n _ -> id }) /n 0 /n "[]"' /n In the expression: /n (== 0) /n . foldr /n (\ c /n -> case c of { /n '[' -> (+ 1) 10:17:21 <Taneb> ']' -> subtract 1 /n _ -> id }) /n 0 /n "[]" 10:17:44 <monqy> oops 10:17:53 <monqy> should have type checked what I wrote.... 10:17:54 <oerjan> monqy: you have to do a check that the level never goes negative 10:18:06 <monqy> oh I forgot about that 10:18:24 <monqy> easy enough to fix 10:18:29 <monqy> will do 10:18:47 <Taneb> In my program, "[[[]]]" is number 31129 10:19:04 <oerjan> Taneb: when you see "No instance for (Num (... -> ...))" it usually means you have given a function too few arguments 10:19:26 <oerjan> so ghc is trying to find out how to treat a function as a number 10:20:34 <oerjan> that applies to other classes than Num as well 10:23:52 <monqy> maybe False (== 0) . (foldrM (\ c -> case c of '[' -> return . (+ 1); ']' -> \ n -> if n == 0 then Nothing else return (n - 1); _ -> return) 0) 10:24:01 <monqy> it got a bit ugly 10:24:13 <Taneb> > maybe False (== 0) . (foldrM (\ c -> case c of '[' -> return . (+ 1); ']' -> \ n -> if n == 0 then Nothing else return (n - 1); _ -> return) 0) "[]" 10:24:13 <lambdabot> Not in scope: `foldrM' 10:24:22 <monqy> it's in Data.Foldable 10:24:35 <monqy> :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b 10:24:47 <Taneb> I am trying to avoid monads, mainly because I haven't learnt them yet 10:24:51 <monqy> oh 10:25:58 <monqy> it's just the maybe monad it's simple 10:26:10 <oerjan> famous last words 10:26:14 <monqy> hehehe 10:27:23 <oerjan> maybe False (== 0) = (== Just 0), methinks :P 10:27:50 <monqy> that works too 10:28:37 <monqy> in my line, Nothing is failure, return (which is Just) is success. basically I'm doing the same old fold but if I'm going to go under 0 I fail, and at the end, use maybe (or (== Just 0) that works too and may even be more clear) to make sure it's didn't fail and the result was 0 10:28:55 <oerjan> btw it is possible to construct a parenthesis matching Monoid :) 10:29:36 <monqy> but having to make a monoid instance means no 1liners!!! 10:29:44 <oerjan> sadly so 10:33:13 -!- nooga has quit (Ping timeout: 259 seconds). 10:46:28 <oklopol> "<Rugxulo> moo" <<< moo 10:46:38 <monqy> moo 10:49:39 -!- zzo38 has joined. 10:50:49 -!- FireFly has joined. 10:53:29 <oklopol> "<fizzie> I believe you can create instances of Object in Java, though they're perhaps not terribly useful." <<< well you create one every time you create an object don't you 10:54:29 <Patashu> you can create instances of object to synchronize on 10:54:31 <Patashu> that's useful 10:59:32 <oklopol> oerjan: do you know how fast you can make that numbers in binary vs bf programs bijection? 11:00:19 <oerjan> no 11:00:22 <oklopol> enumerating is kind of trivial 11:01:19 <oerjan> well, you'd think it would be approximately proportional to the size of the final number 11:01:48 <oklopol> final number? 11:01:57 <oerjan> ...the result 11:02:38 <oerjan> but as i recall a naive encoding tended to give very large numbers for some bf programs 11:03:19 <oerjan> (because one direction of deep nesting got exponential overhead) 11:03:27 <oklopol> err right, all my thinking goes into typing since i switched to dvorak just now 11:04:08 <oerjan> you'd want an encoding where the size of the number was not too far from the size of the bf program. 11:04:44 <oklopol> yeah that was my initial observation too 11:05:02 <Patashu> why to dvorak, and not to colemak? 11:05:06 <Patashu> I think you made a poor decision 11:05:49 <oklopol> typematrix doesn't sell it yet 11:06:02 <Patashu> you don't need a special kb to type in dvorak or colemak 11:06:11 <Patashu> there are programs to change automatically for windows, mac and linux 11:06:31 <Taneb> And you can get a packet of stickers to put on the keyboard itself 11:06:35 <Patashu> if you want 11:06:38 <Patashu> or you can have it on scren 11:06:57 <oklopol> i mean a skin for it. so i figured i'll learn this first 11:08:16 <oklopol> because i do have a skin for dvorak 11:08:23 <monqy> http://upload.wikimedia.org/wikipedia/commons/5/56/KB_Maltron_3D_US.svg "United-States Maltron 3D Keyboard-Layout" what's a 3d keyboard-layout 11:08:34 -!- oerjan has quit (Quit: Later). 11:08:49 <oklopol> the keyboard itself is blank 11:09:12 <monqy> http://upload.wikimedia.org/wikipedia/commons/9/9e/Kinesis-Contoured_Keyboard_Classic-2.jpg is it something like this 11:10:37 <oklopol> l is the only obvious mistake in dvorak imo 11:13:45 <oklopol> ahaha, http://www.flickr.com/photos/sermoa/5421634445/ 11:14:22 <oklopol> so i have a hunch they'll make a skin soon 11:15:28 <oklopol> seems to work 11:15:55 <oklopol> typity typity is fun to colemak 11:17:59 <oklopol> anyway i'm gonna learn all of them anyway, order is prolly irrelevant 11:31:27 <monqy> so i set my layolt to colemak for some fun 11:32:26 <monqy> (that took a long time to type) 11:34:21 -!- nooga has joined. 11:34:27 <oklopol> which one do you normally use 11:35:42 <monqy> qwerty; haven't bothered changeng 11:37:03 <oklopol> i have always wanted to swich to a more sensible layout, but it seemed pointless before i'd gotten rid of the horrible slanted rows 11:37:53 <oklopol> because that was the main problem anyway 11:38:30 <monqy> slanted rows? ah, yes, those. 11:38:45 <oklopol> or columns 11:40:39 <oklopol> i never really got used to it 11:41:00 <oklopol> because it made no sense 11:43:03 <monqy> a bit weird how s moved over a space to make room for r, rather than r taking d's spot, conredering it's supposed to be qwerty-familiar 11:43:32 <zzo38> I invented D&D spells "Cure No Wounds" and "Inflict No Wounds", which are 0-level swift action spells curing or inflicting zero points of damage. 11:43:32 <monqy> (that took forever) 11:44:33 <oklopol> colemak is qwerty familiar? what a horrible idea 11:45:00 <monqy> yeah 11:45:46 <monqy> zzo38: what's the point? 11:45:48 <zzo38> QWERTY was invented to prevent type from jamming, but that isn't important for computers. 11:45:49 <oklopol> why not just make a perfect layout :/ 11:46:28 <zzo38> monqy: Although they cure/inflict zero damage, they still count as healing damage or inflicting damage for any other effects that would depend on that. For example Cure No Wounds still makes dying creatures stable. 11:47:02 -!- DH____ has joined. 11:47:15 <oklopol> is it just a common misconception that that's just a common misconception 11:48:04 <oklopol> that took me over a minute to type :P 11:48:38 <monqy> zzo38: apparently also made such that "typewriter" is on the top row, according to the colemak site 11:48:45 <zzo38> Some people say QWERTY is designed to make faster typing, and some say it is designed to make slowing typing. But I don't think either of these is true. Good typist can type fast 11:49:01 <zzo38> monqy: I did know "typewriter" is on the top row, but as far as I know that is coincidence 11:49:12 <oklopol> what 11:50:03 <zzo38> For effective use of computer, you should learn to type fast, too. But more so than typewriter because the computer has more keys. 11:50:03 <oklopol> i've never heard anyone refute that it was a design goal 11:50:25 <itidus20> the misconception is so common that a correct conception would be nothing short of treason 11:51:22 <oklopol> but everyone nowadays says qwerty never had other goals 11:51:43 -!- Taneb has quit (Quit: Goodbye). 11:51:49 <oklopol> that that jamming thing is bs 11:52:11 <itidus20> it's related to illuminati 11:52:17 <oklopol> let's ask wp 11:52:40 <oklopol> home of the current truth 11:54:20 <itidus20> if you replace abcdefghijklmnopqrstuvwxyz as q=a,w=b,e=c,r=d,t=e,y=f,u=g,i=h,o=i,p=j,a=k,s=l,d=m,f=n,g=o,h=p,j=q,k=r,l=s,z=t,x=u,c=v,v=w,b=x,n=y,m=z 11:54:54 <itidus20> then the bible will contain instructions to build a nuclear powered ufo 11:55:24 <zzo38> itidus20: I doubt it. But even if it is true, which version of the Bible do you mean, anyways? 11:55:27 <oklopol> wp refutes it :D 11:55:35 <itidus20> zzo38: all of them >:-) 11:55:47 <monqy> if i switch to this colemak thing or dvorak i'll need to do some rebinding and make a key toggle/qwerty for when it is more convenient 11:55:56 <zzo38> All of them in English, or all of them that use the same alphabet as English? 11:56:18 <oklopol> how can facts be this hard to keep consistent 11:57:01 <oklopol> monqy: i have all three integrated in my kb 11:57:27 <monqy> oh? 11:57:55 <oklopol> i have a dvorak mode light even 11:57:57 <itidus20> zzo38: its just the ideas other people have conditioned me with. 11:58:53 <oklopol> colemak i didn't know about, i just found http://www.flickr.com/photos/sermoa/5421634445/ 11:59:58 <monqy> (rebinding in things like xmonad and vim (unless i switch to emacs or something as well)) 12:00:17 <Sgeo> itidus20, that the Bible, if you swap letters like that, literally cotains everything there is to know? 12:01:11 <oklopol> We've finally received the long awaited shipment of skins, so we are now ready to place an order for the Colemak (and several other) versions. We're working on getting the layouts designed now and will post as soon as we know more. 12:01:16 <oklopol> well well well 12:02:24 <monqy> also i should figure out how to get back to qwerty 12:02:57 * oklopol presses fn and dvorak key 12:03:30 <oklopol> and finds he already forgot how qwerty works 12:04:11 <monqy> setxkbmap us -variant qwerty did not work so i have to find the real name 12:04:16 <oklopol> i don't really care about speed, all i care about is annoying my brain by making it learn new stuff 12:04:58 <monqy> my reasoning as well 12:08:47 <monqy> i should have found my previous settings before switching :( 12:09:12 <oklopol> i bet you wish you had a dvorak button 12:09:22 <monqy> yes 12:09:32 <oklopol> did i mention i have a dvorak button 12:09:38 <monqy> yes 12:09:41 <oklopol> okay 12:09:43 <oklopol> just making sure 12:09:48 <oklopol> see i have a dvorak button 12:10:27 <monqy> also nicely aligned keys :( 12:10:40 <zzo38> I also modified my variant of Illithid Savant prestige class by nerfing a few things and replacing the Double Savant feat with the Permanent Knowledge feat. I also want to invent doppelgangers prestige class, if I have ideas; even in case if these people are not interested to select this class 12:10:42 <oklopol> yes, i love this thingie 12:10:52 <oklopol> everything makes sense now 12:10:55 <monqy> ah, leaving out the -variant thing seemed to work 12:11:09 <monqy> time to set up the switchy button 12:11:14 <zzo38> Maybe I should also make an improvement of the Metamind class; the one in the book is too weak. 12:11:16 <monqy> I will make a dvorak button too 12:11:26 <monqy> that way I will have a dvorak button 12:11:27 -!- Taneb has joined. 12:12:11 <oklopol> the only problem is i have to switch between english and finnish layouts since i can't type finnish with the english one and i can't write certain programming symbols with the finnish one as this is not a finnish keyboard and lacks the keys they are usually at 12:12:19 <oklopol> finnish has more symbols 12:12:36 <oklopol> but i don't type that much finnish 12:12:41 <zzo38> Then I can understand why you need the multi layouts 12:13:00 <oklopol> multi layouts are just for fun 12:13:05 <oklopol> i mean 12:13:10 <oklopol> qwerty and dvorak 12:13:22 <oklopol> but i have to change the language of the kb occasionally 12:13:35 <oklopol> ofc there's a button on it in the taskbar so it's not that hard 12:13:36 <zzo38> I hardly type any Japanese stuff; when I do, the Character Map is good enough 12:13:50 <monqy> maybe I will make my own keyboard layout 12:14:04 <oklopol> optimize it with a GENETIC ALGORITHM 12:14:08 <monqy> my keyboard layout will have 0 where 1 is 12:14:10 <monqy> and 1 where 2 is 12:14:17 <monqy> and 2 where 3 is etc 12:14:28 <zzo38> Which can also be done in case of accented letters 12:14:30 <oklopol> and you write in hexadecimal 12:14:32 <Taneb> And 9 where 0 is or - is? 12:14:49 <monqy> Taneb: the idea is to get 0 on the left of 1 rather than the right of 9 12:15:05 <Taneb> You described it backwards then 12:15:12 <zzo38> I think the Linux console allows you to type hexadecimal on the numeric pad 12:15:17 <Taneb> No wait, I confused myself 12:15:27 <monqy> Taneb: I could also move 0 to ` if relearning the numbers is too much but I doubt it will be 12:16:01 <oklopol> i still haven't learned the numbers... 12:16:46 <monqy> my keyboard layout will use capslock for something perhaps backspace like colemak 12:16:49 <monqy> I liked that 12:17:15 <zzo38> Can you put function keys on the left? Can you still have the numeric pad or not? Can you make clunky IBM PC keyboard? Even though it is loud it is very good in my opinion 12:17:24 <oklopol> where do you have capslock tho 12:17:31 <oklopol> it's very important 12:17:35 <monqy> capslock is on the left of a 12:17:41 <oklopol> yeah 12:17:46 <oklopol> but where do you put it 12:17:51 <monqy> oh 12:17:55 <monqy> I can live without capslock 12:17:59 <oklopol> wow 12:18:04 <Taneb> The button does both? 12:18:11 <monqy> hhehe 12:18:18 <monqy> I can also switch to qwerty then capslock then switch back 12:18:19 <oklopol> can you live without oxygen? 12:18:32 <Taneb> I can turn into an elf 12:18:51 <zzo38> I do know of a few keyboards that have the "rubout" key to left of "A" 12:18:53 <oklopol> yes, but you still can't live without capslock, so 12:19:20 <oklopol> the perfect place for backspace is see typematrix.com 12:20:21 <monqy> ah, yes 12:20:34 <monqy> I should get one of those 12:21:09 <monqy> a few of these keys are weird but this is okay because I can rebind them 12:21:19 <oklopol> i just love it, can't see myself ever buying a slanted one 12:21:21 <zzo38> Does anyone still make the loud IBM PC keyboard, but using modern scancodes? 12:21:40 <oklopol> again i mean 12:21:41 <monqy> loud keyboards are cute 12:21:58 <oklopol> yeah i should prolly rebing some, like the calculator key, wtf :D 12:22:33 <monqy> I have a calculator key too 12:22:52 <oklopol> do you also have a tetris key 12:22:53 <monqy> it's lonely and circular 12:22:55 <monqy> my keyboard is awful 12:22:58 <monqy> no tetris 12:23:20 <monqy> weirdest shaped key is capslock 12:23:24 <monqy> I wonder what they were thinking 12:24:24 <monqy> there's a normal key bit that is the same width as tab but shorter, and then there's cliff, and then there's the rest of its space 12:24:56 <monqy> so there's this part sticking up to normal key elevation and the rest is in stupidland 12:24:57 <zzo38> I have only the standard keys in my computer, I don't like the one having those extras. I would put different extras, such as F13 to F16 (or possibly up to F24), and keys to enter direct scancodes and protocol commands in both directions. I would also have seven LEDs. 12:24:58 <oklopol> it's taller than other keys? 12:25:11 <monqy> same height but part of it is shorter than the other keys 12:25:21 <monqy> it's like an island 12:25:38 <zzo38> The only thing I dislike about the loud IBM PC keyboard is the lack of keyboard indicator LEDs. 12:25:40 <oklopol> the point is you can find it fast when you need to rage 12:25:56 <monqy> I just hold shift 12:26:19 <monqy> capslock is for when things think it's acceptable to invert case 12:26:21 <oklopol> i can't type as fast when holding shift 12:26:35 <monqy> I'M PRETTY GOOD AT TYPING WITH SHIFT HELD DOWN, BUT MAYBE IT IS BECAUSE I TYPE WEIRDLY 12:26:52 <oklopol> I DO PRETTY STANDARD TOUCH TYPING NOW THAT IT MAKES SENSE 12:27:03 <oklopol> IT DIDN'T MAKE ANY SENSE WITH THE SLANTED COLUMNS, BUT NOW IT TOTALLY DOES 12:27:09 <zzo38> I use Caps Lock more than most people probably, but generally not for rage. I just sometimes type things using all uppercase letters 12:27:31 <oklopol> well it looks nicer 12:27:38 <oklopol> this is for sissies 12:28:15 <zzo38> (Such as, I usually type in Forth programs in all uppercase.) 12:38:24 -!- Vorpal has quit (Read error: Operation timed out). 12:38:47 -!- Vorpal has joined. 12:40:10 <Taneb> 8 working days time 12:40:23 <Taneb> Wednesday week 12:40:34 <monqy> 05:39:58 < monqy> trying out my dvorak and colemak keys 12:40:34 <monqy> 05:40:35 < monqy> they work 12:40:40 <monqy> accidentally in the wrong chanel originalyl 12:40:47 <monqy> (sorry -minecraft) 12:40:56 <Taneb> (It's okay) 12:41:11 <monqy> now I can forget I have these keys 12:43:26 <oklopol> yes 12:44:12 <oklopol> i love my typematrix 12:44:53 -!- Vorpal has quit (Ping timeout: 260 seconds). 12:45:03 -!- Vorpal_ has joined. 13:09:57 -!- monqy has quit (Quit: hello). 13:10:30 -!- sebbu2 has joined. 13:11:34 -!- sebbu has quit (Ping timeout: 245 seconds). 13:16:29 <oklopol> when i was in kindergarten, i made a wanted poster when we were drawing shit, now wanted kind of sounds like the finnish "vanteet" which means the rim of a bicycle wheel. so the smartasses running the kindergarten told me wanted actually doesn't mean what i thought it did, but rim instead. and laughed. i was confused, and i still go through a brief am i making a mistake here when reading a 13:16:33 <oklopol> wanted poster 13:16:58 <oklopol> luckily they are not that common 13:17:17 <oklopol> children are such retards 13:17:28 <oklopol> at least i was 13:21:15 <oklopol> i tried to explain to them that it's from the verb "to want", and makes perfect sense, but they left the issue open. i realized what the joke was a few years later, and was not amused. 13:22:01 <Phantom_Hoover> Are you just talking to yourself oko. 13:22:11 <Taneb> ...You leant a foreign language in kindergarten? 13:22:22 <Phantom_Hoover> Silly Taneb. 13:22:23 <oklopol> english is not a foreign language 13:22:28 <Phantom_Hoover> English isn't a foreign language. 13:22:35 <Taneb> Finnish is 13:22:40 <oklopol> no it's not 13:22:42 <oklopol> in here 13:22:53 <Phantom_Hoover> oklopol, yes it is, it's foreign. 13:23:00 <Taneb> I'll change what I said 13:23:08 <Phantom_Hoover> The basic classification is that everything that isn't English is foreign. 13:23:08 <Taneb> You knew two languages in Kindergarten? 13:24:15 <oklopol> well i knew some english and some swedish, i doubt i was at a conversation level 13:25:29 <Taneb> When I was in kindergarten (yes, I know they aren't called that in Britain, but I wasn't in Britain at the time), there was a girl who may have been Australian/Mandarin bilingual 13:25:36 <Taneb> But I don't remember too well 13:26:05 <oklopol> i'm not bilingual in that sense, as you could easily tell if you heard me speak 13:26:06 -!- sebbu2 has changed nick to sebbu. 13:27:58 <oklopol> but that's different, i was learning english as a foreign language (i certainly considered it foreign back then) 13:29:07 <Taneb> Man, I wish I learnt Finnish or something when I was that young 13:30:02 <oklopol> i spent most of my time programming or playing games, i suppose the latter was my main source of english 13:30:16 <Taneb> Hang on... how old were you then 13:30:36 <oklopol> i'm talking about my kindergarten days so about 6 13:30:46 <Taneb> 6... 13:30:51 <Taneb> I was thinking about 4 13:30:58 <Taneb> Which was when I was in Kindergarten 13:31:25 <oklopol> i was in a less official daycare thing back then 13:32:15 <Taneb> My house from back then has since been demolished 13:32:45 <oklopol> all i remember from those days was playing sex with dolls, arguing about religion with the woman who kept it, and playing this racing game 13:33:15 <oklopol> and that i wanted to bring my teddy bear there but apparently 4yo is too old for that shit 13:33:17 <Taneb> I can't actually remember being six 13:33:37 <Taneb> ...That's odd 13:33:39 <oklopol> i can because i was only one year in what i'd call kindergarten 13:33:51 <oklopol> and that was my sixth 13:34:05 <Taneb> Hang on, I think I can remember titbits 13:34:13 <oklopol> boobits 13:34:13 <Taneb> Not very interesting ones 13:34:21 <Taneb> Mainly me being an idiot 13:35:07 <oklopol> oh and then i drew these cartoons where girls from the kindergarten would... wait let's not go into that 13:36:11 <oklopol> and then i convinced a guy there was this place where time would slow down the further you walked into this tunnel, and that i'd visited it by going through a door near the daycare. he later turned out to have epilepsy, coincidence? 13:36:54 <oklopol> damn i was awesome back then, what went wrong i wonder 13:39:00 <oklopol> then there were these rubber bands on the knobs of cupboards so us kids couldn't get in. i thought they were decorations, and would put the rubber bands back on if they had forgotten to put them there 13:39:30 <oklopol> the adults found this slightly hilarious 13:41:16 <oklopol> then in kindergarten, kids were playing power rangers, and i thought that was just childish. so this one time, i joined their little game and beat everyone up. 13:42:40 <oklopol> and in the first grade, kids were playing football (the one involving feet), and i picked the ball up. one of them came and asked me if they could have it back so they could keep playing. i kicked the guy in the nuts as hard as i could and kicked the ball out of the school yard 13:42:54 <oklopol> i was not playing myself ofc 13:43:20 <Taneb> First grade you was a dick 13:43:28 <oklopol> i was such a psychopath, they almost put me in this "special school" 13:44:53 <oklopol> and they almost transferred me straight to second grade since i was acting out because school was ridiculously easy. probably wouldn't have helped since if i found the slightest trouble solving a problem they gave us i would start crying and never stop. 13:45:14 <oklopol> i don't get how i wasn't put to sleep or something :D 13:46:38 <oklopol> and how the fuck did i have like 10 friends 13:46:51 <oklopol> kids are retarded 13:48:04 <Sgeo> I once saw a confidential letter (wait, now that I think of it, how does that make sense) by my dad complaining about one of the students almost killing another 13:48:37 -!- variable has quit (Quit: I found 1 in /dev/zero). 13:48:46 <oklopol> kids can't die 13:49:20 -!- nooga has quit (Ping timeout: 260 seconds). 13:52:02 <Taneb> Someone I know got run over by a car. 13:52:18 <oklopol> you mean just now, or a kid 13:52:30 <Taneb> 2 ish years ago 13:52:37 <Taneb> He experienced quantum immortality 13:52:40 <oklopol> but you mean a kid 13:52:52 <Taneb> He would have been 14 13:52:57 <Taneb> Maybe 15 13:53:02 <oklopol> that's not a kid 13:53:05 <oklopol> that's an adult 13:53:16 <Taneb> It's a transitionary phase 13:53:23 <oklopol> well true 13:53:41 <oklopol> by kid i mean sub-12 usually 13:54:06 <Taneb> God, do I remember sub-12? 13:54:19 <oklopol> i read my first c++ book when i was 11 13:54:33 <oklopol> and i still remember c++ so 13:54:33 <Taneb> 13 13:54:43 <Taneb> And I have no clue about C++ 13:54:47 <Sgeo> I remember the nasty things I did when I was 13 13:54:57 <Taneb> Other than output is cout >> "string" 13:55:01 <oklopol> it was also prolly the first book over 600 pages i read 13:55:07 <oklopol> no it's not 13:55:08 <Sgeo> Taneb, it's << 13:55:14 <Taneb> See! 13:55:14 <oklopol> but close enough 13:55:28 <Taneb> I don't have that great memory, at all 13:55:35 <oklopol> i don't think i was a dick anymore at 13 13:56:11 <Taneb> I did French for 6 years and all I can remember is "Bonjour. Ou est le W/C? Je voudrais une baguette!" 13:56:21 -!- variable has joined. 13:56:29 -!- nooga has joined. 13:56:49 <oklopol> that's not where you buy bread man 14:01:15 <oklopol> oh and i beat one guy up when i was 10 i think, but after that, i've only received beatings 14:01:44 -!- azaq23 has joined. 14:01:55 <Taneb> When I was little, I was a nice, if niave idiot 14:02:25 <Taneb> Now I'm a cruel but pacifistic idiot who knows some stuff 14:02:39 <oklopol> i was a devout preacher of atheism from the age of 5 till it became cool 14:04:22 <oklopol> yeah i find pacifism has little to do with how nice you actually are, i'm sure i'd love killing people, but i wouldn't really feel right say going to the army 14:05:03 <Taneb> I despise violence, but I'm practically a sociopath 14:05:31 <oklopol> that's how i feel as well 14:05:54 <oklopol> well i certainly have all kinds of feelings, but i can just shut them up if i like 14:06:40 <oklopol> my ex found this a bit weird, we would just be crying and talking about how we should prolly split up, and then after a while i'm like okay let's take a break and watch a tv show k? 14:13:40 <oklopol> or went to do math 14:14:11 <Taneb> math is the one Americanism that really bugs me 14:14:13 <oklopol> actually that doesn't sound weird at all, i guess you'd have to be there 14:14:15 <Taneb> I don't know why 14:14:59 <oklopol> the only americanisms that bug me are the units 14:15:16 <oklopol> and numbers ofc 14:15:52 <oklopol> thousand, 1-llion, 2-llion, 3-llion, 4-llion, ... vs 1-llion, 2-llion, 3-llion, 4-llion, ... 14:16:05 <oklopol> maybe illion would'be 14:16:11 <oklopol> ve been better 14:17:27 -!- nooga has quit (Ping timeout: 252 seconds). 14:20:25 -!- sllide has joined. 14:48:41 -!- augur has joined. 14:58:51 <zzo38> I once made a computer game, there is a journal you can read describing someone trying to use their telephone, but every number they pushed fell off upon being pushed. 15:00:51 <itidus20> was that just a part of the game? 15:00:55 <itidus20> sounds very cool 15:01:23 <zzo38> They were unable to complete the call due to duplicate digits (and did not think to call the operator), but if you go to the telephone repair shop you can find the broken telephone. 15:01:44 <itidus20> wow... sounds like a vast game 15:01:55 <zzo38> Together with the rules for telephone numbers in the area, you can deduce eight possible telephone numbers that they might have been trying to call. 15:02:18 <zzo38> And then you just have to try them until one works. 15:05:48 <zzo38> I forget the other details and how to find this game now, however. 15:09:09 <Taneb> I just made combinartory logic in BYOB 15:09:29 <Taneb> A modification of a graphical language aimed at children 15:09:39 <Taneb> That is, the graphical language is aimed at children 15:09:56 <Taneb> The modification is aimed at children who want more advanced features 15:10:18 <Taneb> Such as first-class functions 15:10:23 <Taneb> Procedures 15:10:29 <Taneb> Lists-of-lists 15:20:47 <zzo38> I have idea make up a reversible programming language used for compression. Input and output commands are reverse of each other if you "flip" in between their use. The compiled program can be a Huffman coded bitcode file. 15:25:43 <zzo38> It would also include one kind of user-definable pure function which does not reverse. 15:35:19 <zzo38> Flow control in I/O blocks could be restricted to something like Revaver2pi's TELEPORT command, although there might be others. Other kinds of blocks can have different kind of flow control possible. 15:35:44 <zzo38> It could do encryption too rather than only compression. 15:36:38 <cheater> hi zzo38 how are you doing? 15:36:40 <zzo38> How many kinds of reversible flow control do you know? 15:36:47 <zzo38> cheater: OK 15:36:53 <cheater> that's fine 15:37:00 <cheater> what is new with you? 15:39:03 <zzo38> I suppose not a lot, although I have done some experimentation with programming and proposal and stuff in Haskell, and I have updated some stuff I wrote about Dungeons & Dragons, and I have think about and write about some stuff about OMEGACOM-1. 15:41:06 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 15:41:17 <itidus20> A game developer can derive a great deal of benefit from a custom made virtual machine. 15:42:17 <itidus20> I wish I could really say why... 15:43:53 <itidus20> if there is any global state to the game... that global state is to be embodied in the virtual machine 15:44:33 -!- Vorpal_ has changed nick to Vorpal. 15:44:37 <itidus20> for example.. (here he goes) 15:44:58 <zzo38> OMEGACOM-1 is designed to be an old-style computer that does not exist but can be emulated anyways. Its processor uses bytes that are sixteen bits long. Addresses are also sixteen bits long. 15:45:06 <itidus20> an arcade game virtual machine could contain coin and credit counters 15:45:25 <itidus20> oops ^embody 15:45:34 <zzo38> Game controllers similar to NES/Famicom could be connected to the extension ports. 15:45:35 <itidus20> "contain" is such peasant speak 15:46:31 <zzo38> Text adventure games are often written for Z-machine, which is also a virtual machine, which is designed for text adventure games. 15:47:09 <itidus20> is omegacom-1 your own invention? 15:47:36 <zzo38> (Usually using the Inform programming language, although some use Forth, Lisp, C, or assembly language.) 15:47:39 <zzo38> itidus20: Yes. 15:47:49 <itidus20> that explains it not being on google 15:48:43 <itidus20> yup i have heard of z machine for zork. and scumm(script something utility for maniac mansion) for maniac mansion, zac mccracken, monkey island, etc 15:49:43 <itidus20> and "another world" had some kind of vm which was talked about in a gdc (game develop conference) post mortem 15:51:16 <itidus20> zzo38: so i like to think my statement shows how much insight i am gathering about these things :D 15:51:35 <itidus20> <itidus20> if there is any global state to the game... that global state is to be embodied in the virtual machine <itidus20> an arcade game virtual machine could contain coin and credit counters 15:52:13 <itidus20> and hence a text game vm would contain/embody text i/o 15:52:47 <itidus20> i am quite proud of this minor insight, perhaps it is obvious 15:52:49 <zzo38> Inform can also target Glulx. I don't know if there are C compilers for Glulx, and I would like to be able to compile both LLVM and Haskell into Glulx. 15:53:01 <zzo38> itidus20: Well, it is good thanks you write these things anyways 15:53:30 <itidus20> zzo38: i have tried dreaming up some ultra simple systems 15:54:04 <itidus20> there was one which consisted of i think just 2 line segments 15:54:11 <itidus20> or may have been 4.. i forget 15:54:47 <itidus20> and thats all it can do.. display 2 line segments 15:55:08 -!- MSleep has changed nick to MDude. 15:55:27 <itidus20> not actually implemented 15:55:49 <itidus20> another i thought about is using a 32bit integer as a 4x8x1 display 15:56:15 <itidus20> i liked the idea that a screenshot of such a display is just a single number 15:56:42 <itidus20> i think i prefered the 6x5 resolution instead 15:56:53 <Gregor> Screenshots of any display are just a single number. Just bigger numbers. 15:58:14 <itidus20> heheh 15:58:25 <itidus20> bravo 15:59:11 <zzo38> Once I had idea, although I never implemented or even had many details figured out, but it is a 8 buttons, none of which can be pushed simultaneously, and a 8x8 monochrome ASCII display (no reverse video). But I realized to make the version of Pokemon Red/Blue games that could work on such a system. 16:00:00 <itidus20> hmm 16:00:04 <zzo38> It even requires less ROM and RAM than the actual Pokemon Red/Blue game; nicknames can be only two letters long, and there are no full Pokemon names, they only have numbers. 16:00:06 <itidus20> 8x8x8? 16:00:32 <itidus20> maybe you only need a subset of ascii 16:00:46 <itidus20> but i guess its no big deal 16:00:50 <zzo38> itidus20: It is using the printable subset. 16:00:59 <itidus20> :P 16:01:00 <zzo38> (Codes 0x20 to 0x7E) 16:01:25 <itidus20> in order to make more games with your system its probably best to use 8bits them 16:01:57 <itidus20> well, i look at a chessboard and i imagine scrolling 16:02:07 <zzo38> itidus20: Yes; but this was 7-bit codes. 16:02:35 <itidus20> i have imagined the poor humans who have to shift the pieces one row this way or that way 16:02:54 <zzo38> itidus20: You can make a chessboard on 8x8 display with printable ASCII, but no extra information would be displayed. You could use flashing for cursor. 16:03:43 <itidus20> uh.. im not sure if i am making sense.. 16:03:52 <itidus20> suppose there is a 9x9 virtual chessboard 16:04:03 <zzo38> You could use uppercase for white pieces and lowercase for black pieces; this is common in ASCII chess diagrams. 16:04:06 <itidus20> you could lay out the pieces on the board according to the camera 16:05:40 <itidus20> "RkBQKBkR" >> "kBQKBkR " 16:05:51 <itidus20> "RkBQKBkR" << " RkBQKBk" 16:06:00 <itidus20> well that would be 10x10 16:06:19 <itidus20> 2 extra imaginary columns 16:06:22 <itidus20> empty 16:07:04 <zzo38> FIDE chess uses 8x8 though. You could have RNBQKBNR PPPPPPPP .:.:.:.: :.:.:.:. .:.:.:.: :.:.:.:. pppppppp rnbqkbnr 16:07:12 <itidus20> its a ridiculous idea of mine as you need to store the actual state of the board somewhere 16:08:23 <itidus20> but at least in a sparsely populated board a DM could use a chessboard to show hte player where he is 16:08:47 <itidus20> in a boring chesslike landscape 16:11:20 <itidus20> ah im going on a boring tangent 16:11:26 <zzo38> When playing D&D we always use graph paper if necessary to show positions. But you could have one 40x40 room involving chess. 16:11:28 <itidus20> your pokemon thing is much better 16:12:03 <zzo38> Yes. The pokemon thing. Attack names and item names are up to five letters long (they can have digits too). 16:13:14 <zzo38> I could fit all relevant information in battle on the 8x8 ASCII display. You used the direction buttons, up for one attack, down for another attack, left for another attack, right for an attack; other buttons means shift, item, or surrender. 16:13:18 -!- ive has joined. 16:13:30 <zzo38> Actually I think I could use only seven buttons, not eight. 16:13:35 <zzo38> For everything. 16:14:15 <itidus20> so yeah, for me the VM would do as much as possible natively as a kind of bios really 16:14:25 <zzo38> That means A is SHIFT, B is ITEM, and C is SURRENDER. 16:15:01 <itidus20> i can see how this would be a problem in the long run.. coders would want direct access to objects to do better effects 16:15:37 <zzo38> (SURRENDER is like "RUN" for wild battles, and "immediately get blacked out automatically" for trainer battles.) 16:15:43 <itidus20> like i could say "you can only put graphics in the game by loading bitmaps" they would then want the ability to access pixel memory 16:19:18 -!- Taneb has quit (Quit: Goodbye). 16:19:46 <zzo38> For battle screen, the first line tells you opponent's active pokemon number and level; second line opponent's active pokemon % of HP remaining, status, and how many opponent's inactive nonfainted pokemon remain (leave blank for wild pokemon); third line your active pokemon number, level, and nickname; fourth line your current/max HP and status; fifth, sixth, seven, and eighth lines for attacks. 16:20:06 <zzo38> Attacks indicate at first ^v<> for which direction to push, next five for attack name, and last two for remaining PP. 16:22:26 <itidus20> basically considering that any interpreted instructions are likely slower, you don't want people implementing anything technical in vm code 16:25:39 <itidus20> hmm 16:27:04 -!- derdon has joined. 16:32:01 -!- elliott has joined. 16:33:50 <elliott> 21:01:23: <ais523> hey, channel, want something to rage at? http://www.reddit.com/r/programming/comments/k9cbj/trollscript_an_esoteric_dialect_of_brainfuck/ 16:33:54 <elliott> we saw ages ago :P 16:34:13 <zzo38> I had everything written. On the map where you can move and stuff, you activate objects by walking into them, not by pushing the "A" button. A is MONSTER, B is INVENTORY, and C is STATUS. The status menu had two pages, and was also the menu you used if you want to use HM moves. 16:34:28 <elliott> 21:43:22: <Phantom_Hoover> ais523, my faith in /r/programming is vastly increased by the fact that they hated it too. 16:34:37 <elliott> Phantom_Hoover: they probably aren't too fond of esolangs in general :P 16:35:21 <twice11> the how many'th brainfuck dialect is that? 16:35:29 <elliott> twice11: 9 billionth 16:35:44 <twice11> Still not aleph-0? fine then... 16:36:35 <zzo38> Make aleph-0 dialects if you want to. 16:36:41 <elliott> no please don't 16:36:57 <elliott> "Bitcoin Forum: Password hashes may have been leaked" 16:37:05 <elliott> l o l 16:37:13 <elliott> bitcoin PRO CRYPTOGRAPHERS 16:37:47 <twice11> how is cryptography related to IT security? The hashes *have* to be stored somewhere. 16:38:03 <Phantom_Hoover> elliott, well true, but their reasons for hating it were exactly the right ones. 16:38:03 <Phantom_Hoover> `quote 16:38:05 <HackEgo> 70) <Oranjer> oohhh <Oranjer> ha <Oranjer> heh <madbrain> and what are your other characteristics? <Oranjer> oh, many, madbrain <Oranjer> but it's hardly worth it to go on with listing that list here 16:38:26 <elliott> twice11: In my fanfiction, they were using crypt() to store their Unix passwords, and that's how the attacker got in. 16:38:47 <Phantom_Hoover> `quote 16:38:49 <HackEgo> 642) <ais523> this strikes me as probably better than a singularity, because you can't trust a random AI, but you can probably trust olsner 16:38:50 -!- Phantom_Hoover has quit (Quit: Leaving). 16:38:57 <elliott> wat 16:39:00 -!- Phantom_Hoover has joined. 16:39:02 <elliott> wat 16:39:13 <Phantom_Hoover> elliott, so wait, you knew and you didn't tell me? 16:39:31 <elliott> Phantom_Hoover: Knew what? 16:39:34 <elliott> Trollscript? 16:39:37 <elliott> It was talked about in here 16:39:42 <elliott> It's not my fault you don't logread 16:39:46 <Phantom_Hoover> I'm the premier world expert on hating BF derivatives and substitutions! 16:39:54 <twice11> bad web forums typically use MD5 hashes, albeit sometimes unhashed. Better forum products use salted SHA1... 16:40:23 <zzo38> I think I remember I once invented a chess variant with a googolplex kinds of pieces, or was it a chess variant schema defining a googolplex chess variants, etc, I don't quite remember. But I had proven that the number was exactly one googolplex. 16:40:47 <elliott> twice11: It's SMF, which I think is "meant" to be decent, but... well, PHP coders. 16:41:12 <twice11> I guess their server was compromised somehow... 16:52:32 -!- ive has quit (Ping timeout: 276 seconds). 16:52:40 -!- ive has joined. 16:55:13 -!- Taneb has joined. 16:55:44 <Taneb> Hello! 16:55:52 <zzo38> I updated proposal of more-notation; I added a note to tell you that you can use _ as names of parameters of a more-notation in a record syntax. 16:56:02 <Taneb> I'm going to try my hand at BytePusher 16:56:21 <zzo38> Taneb: Try doing what with it, specifically? 16:56:32 <Taneb> I really don't know 16:56:34 <elliott> handing it 16:56:46 <zzo38> Learn about it? Write an implementation? Write a program to run in BytePusher? 16:56:54 <Taneb> All three 16:56:58 <Taneb> Simultaneously 16:57:50 <itidus20> im reading DM's piet samples page. its truely amazing what has been accomplished with it i think 16:57:53 <zzo38> If you make an implementation which programming language and libraries would you use? For writing programs running in BytePusher, which programming languages would you use to make tat? 16:58:08 <zzo38> s/make tat/make that/ 16:58:13 <Taneb> Former, I have no idea 16:58:21 <Taneb> Latter, probably gedit 16:58:41 <Taneb> Not actually sure what format BytePusher likes 16:58:53 <zzo38> No, I mean which programming language. Such as C, Python, PUSHEM, hex editor, ... 16:58:53 <elliott> it's binary 16:59:19 <Taneb> zzo38: hex editor 16:59:23 <zzo38> Or you could also write your own assembler or programming language to compile into it 17:00:05 <Taneb> I could write a tool to translate ASCII representation of Hex into Hex... in BRAINFUCK 17:00:22 <Vorpal> elliott, hi there. Played any Magicka? Quite a fun game. 17:01:00 <Taneb> What is the program counter initially? 17:01:05 <elliott> nope 17:01:33 <Taneb> Oh wait, I've figured it out 17:01:34 <elliott> maybe i should but BLAH DWARF FORTRESS AND MCMAP CODING ARE THE ONLY GAMES 17:01:38 -!- Lymee has quit (Read error: Connection reset by peer). 17:01:41 <Taneb> That's tricky 17:01:49 <Taneb> But surprisingly logical 17:02:21 <zzo38> I wrote this BytePusher program: http://zzo38computer.cjb.net/prog/BytePusher/Munching_Squares.pushem 17:03:23 <Phantom_Hoover> elliott, have you seen the Yogscast Magicka videos 17:03:26 <zzo38> The binary of the program is: http://zzo38computer.cjb.net/prog/BytePusher/Munching_Squares.BytePusher 17:03:27 <Phantom_Hoover> They are the best. 17:03:57 -!- Lymee has joined. 17:04:36 <zzo38> I also wrote a BytePusher implementation (the first one available public, but not the first one written) in CWEB. 17:04:54 <elliott> Phantom_Hoover: No I am so behind on my yagsoccost. 17:05:02 <elliott> Yoghurt. 17:07:03 <zzo38> There are now three implementations of BytePusher. If you write one, add that one too! 17:07:27 -!- kmc has quit (Quit: Leaving). 17:07:41 <zzo38> All three of them are C programs, two using Allegro and one using SDL. 17:08:45 <zzo38> If you make a hardware implementation, you can post that too. 17:12:00 <elliott> enhanced cweb is c? 17:14:05 <zzo38> Enhanced CWEB is a format that has C codes, so the C codes can be compiled by a C compiler once tangled. 17:14:38 <elliott> lots of things compile to c 17:15:19 <elliott> 10:24:47: <Taneb> I am trying to avoid monads, mainly because I haven't learnt them yet 17:15:44 <Taneb> I think I'm getting closer to monads 17:15:47 <elliott> Taneb: monads aren't A Thing to avoid, they're just two functions that a lot of types happen to implement 17:16:02 <elliott> please, stop thinking like that, WAY too much importance is put on monads by people who don't know Haskel 17:16:16 <elliott> it's like "I'm avoiding <specific library function> because I don't know it yet" 17:16:20 <twice11> Taneb: You should read the guide "You could have invented monads yourself, and you most likely already have", in my oppinion. 17:16:23 <elliott> you just learn things whenever they become convenient to use 17:16:41 <elliott> twice11: do we really need a monad tutorial war? :p 17:16:50 <Taneb> I'm working through lyah 17:17:42 <twice11> I'm not entering a war. I'm not fighting other monad tutorials. 17:18:43 <zzo38> What I mean is, the codes in @c blocks and named chunks are C codes, although they can also reference other named chunks, and can include formatting codes. In standard CWEB that is basically all of it. In Enhanced CWEB, you can do that too (and BytePusher.w uses no extensions other than @r and @s !), but you can also have @{ ... @} (interpreted blocks), @m (metamacros), and more. 17:18:50 <elliott> twice11: I am! 17:18:54 <elliott> Nuclear waste or DIE. 17:19:12 <zzo38> Neither @r nor @s ! are needed for tangling though. You might get error message but it will compile correctly anyways. 17:19:42 <twice11> Ask the japanese guys: Nuclear waste *and* die! 17:20:08 <zzo38> "@s TeX !" means to not index anything defined using @s before this point 17:21:56 <zzo38> These things are what I meant when I said it is a C code. 17:21:58 <elliott> 12:19:20: <oklopol> the perfect place for backspace is see typematrix.com 17:21:59 <elliott> 12:20:21: <monqy> ah, yes 17:21:59 <elliott> 12:20:34: <monqy> I should get one of those 17:22:08 <elliott> unfortunately they're scissor-switch. 17:22:13 <elliott> you can buy non-slanted keyboards with decent switches, though. 17:29:04 <oklopol> what's scissor switch 17:30:04 <oklopol> or what's the problem with it 17:30:23 <twice11> It's not buckling spring, I guess. 17:31:04 <oklopol> so the touch is bad? i've only used laptops in the last many years so i don't really notice anything wrong 17:31:19 <elliott> oklopol: scissor switch = laptop-style keys 17:31:24 <elliott> better than rubber dome but 17:31:29 <elliott> twice11: buckling spring is overrated 17:31:36 <oklopol> yes, i know 17:31:38 <elliott> i mean, unless you have pneumatic fingers it's not very comfortable 17:31:51 <elliott> oklopol: get one of these http://upload.wikimedia.org/wikipedia/en/8/8c/Kinesis-keyboard.jpg :P 17:32:00 <elliott> i think they have dvorak switches too but who cares you can do that in software 17:32:31 <oklopol> much nicer if it's in the kb tho 17:32:39 <oklopol> but umm that's a bit ugly 17:32:47 <elliott> they come in black :D 17:32:49 <twice11> So if rubber dots are out, buckling spring is overrated, and scissor switch is also "unfortunately", what would you recommend? Microswitch? 17:32:55 <oklopol> let's see 17:33:08 <elliott> twice11: standard mechanical switch? 17:33:40 <oklopol> this is certainly nicer than the usual type of keyboard in touch 17:33:41 <elliott> oklopol: http://kinesis-ergo.com/images/kb_adv-blk720x471.jpg http://kinesis-ergo.com/images/kb_adv-pro_met720x471.jpg ok those are still pretty ugly 17:33:45 <twice11> That's mostly is what you call microswitch, if the keyboard is smaller than your desk, isn't it? 17:33:49 <elliott> no slanted rows though :P 17:33:57 <elliott> twice11: Who the hell buys a keyboard smaller than their desk? 17:34:04 <elliott> I just kind of roll from one key to another. 17:34:07 <elliott> It's like a bouncy castle. 17:34:10 <oklopol> well i wouldn't call that pretty nor ugly 17:34:18 <oklopol> whereas my typematrix is just plain fucking sexy 17:34:29 <elliott> Get a Datahand, Datahands are awesome. 17:34:40 <elliott> http://desktopped.s3.amazonaws.com/wp-content/uploads/2009/09/datahand-keyboard.jpg 17:34:56 <oklopol> oh that thing, i have certainly considered that 17:34:57 <elliott> you just flick your fingers around... it also has a pointing device built in, i don't remember how it works though 17:35:04 <oklopol> but it costs like a million right 17:35:22 <elliott> they stopped producing them... maybe they started again 17:35:25 <elliott> "We are currently out of stock and awaiting delivery of DataHand Pro II units ... our supplier has had difficulty moving to a new facility which has delayed our production...we will post the schedule as soon as it is known, in the interim, please contact DataHand sales at sales@datahand.com." 17:35:33 <elliott> i think its like a thousand bucks though 17:35:39 <elliott> Professional II-USB Mouse 17:35:39 <elliott> $995.00 17:35:39 <elliott> Buy Now 17:35:42 <elliott> less :D 17:35:52 <oklopol> yeah not really feeling like spending another thousand right away 17:36:03 <elliott> another? :p 17:36:16 <oklopol> well a third one within 30 days 17:36:40 <elliott> twice11: Topres are kind of cool but that's really just a combination of switches. 17:36:50 <twice11> come on, is there anything more important than keyboards? 17:37:05 <elliott> I forget the exact construction... it's something like a rubber dome with a buckling spring underneath it and a mechanical switch above it. 17:37:06 <oklopol> no 17:37:15 <Vorpal> elliott, what? $995 for a MOUSE? 17:37:15 <elliott> I think velvet is involved somewhere, but that might just be my imagination. 17:37:15 <Vorpal> what 17:37:22 <elliott> twice11: This isn't exactly the channel for important things. 17:37:28 <elliott> Vorpal: No, a typing and pointing device. 17:37:34 <elliott> http://desktopped.s3.amazonaws.com/wp-content/uploads/2009/09/datahand-keyboard.jpg 17:37:41 <elliott> It uses MAGNETS. 17:37:51 <Vorpal> how does it, erm, work? 17:37:59 <oklopol> there was a 3d mouse that was 400 17:38:02 <Vorpal> it certainly looks futuristic though 17:38:06 <elliott> You put your hands in those little dimple things, and push up/down/left/right/downwards to type. 17:38:12 <elliott> They use really light magnets or something. 17:38:14 <twice11> As keyboard are as important as I expect, the problem was spending $1k on two other things, but not for the keyboard... 17:38:23 <elliott> There's also a pointing thing, I think that's where the thumbs go, but I dunno how it works. 17:38:36 <oklopol> twice11: those two other things were my first real computer in years 17:38:37 <elliott> twice11: Oh, I misread the line. 17:38:38 <Vorpal> elliott, wow. Is it any good? 17:38:44 <oklopol> including a keyboard 17:38:46 <elliott> I thought you were complaining about all this unimportant keyboard talk. :p 17:39:23 <Vorpal> I wouldn't spend 1k on a keyboard. 17:39:26 <elliott> Vorpal: Well, I gather it's as ergonomic as they come. I can't imagine it'd be any less efficient than a keyboard with practice, although maybe if you type a bunch of punctuation and modifier keys it might be inconvenient? Dunno. 17:39:36 <elliott> I think some users use foot pedals for ctrl and alt. 17:39:41 <Vorpal> elliott, so not for C coding? 17:39:43 <Vorpal> or gaming 17:39:43 <oklopol> if i had an extra thousand, i would buy all the keyboards. 17:39:56 <elliott> Vorpal: I meant a _lot_ of punctuation. 17:40:05 <Vorpal> elliott, oh, mkry? 17:40:07 <elliott> Like if your job was to write comic expletives all day. 17:40:25 <elliott> But I haven't really hard anything bad about them apart from, you know, the price. :p 17:40:35 <elliott> http://elitekeyboards.com/images/topre_keysw.png 17:40:37 <elliott> This is how topres work. 17:40:51 <elliott> The springs look cool: http://scalable.com/conversation/wp-content/uploads/2010/02/topre.jpg 17:40:54 <Vorpal> elliott, with work I meant more like, how do you use them 17:41:03 <Vorpal> yes kind of 17:41:10 <elliott> Vorpal: <elliott> You put your hands in those little dimple things, and push up/down/left/right/downwards to type. 17:41:10 <elliott> <elliott> They use really light magnets or something. 17:41:19 <elliott> DataHand =/= Topre, I'm talking about two things at once. 17:41:24 <Vorpal> elliott, yeah, right, but shift? and so on 17:41:33 <Vorpal> emacs might be painful with it too 17:41:42 <elliott> Not with foot pedals it wouldn't. 17:41:50 <elliott> http://www.atpm.com/7.05/images/dh-right-wells.jpg 17:41:55 <elliott> This bigger image of a datahand might answer your questions. 17:42:11 <Vorpal> hm yeah 17:42:15 <Vorpal> what does NAS stand for? 17:42:20 <elliott> nfc 17:43:19 <oklopol> separately moving my fingers in all four directions sounds a bit strainy, but maybe it's actually nice enough 17:43:30 <fizzie> Vorpal: It's related to the numeric mode, or something. 17:43:35 <Vorpal> ah 17:43:37 <elliott> I gather the switches are very light. 17:43:43 <elliott> Hey, fizzie probably knows more about them than me. :p 17:43:46 <fizzie> (I was taking a peek at the http://www.datahand.com/pdfs/ProIIUserGuide.pdf ) 17:43:47 <Vorpal> I can imagine it would have to be 17:43:49 <elliott> At least he answered that ONE QU- oh. 17:44:00 <Vorpal> fizzie the human search engine 17:44:23 <Vorpal> elliott, anyway, have you played Magicka? 17:44:23 <fizzie> Numbers And Symbols, maybe? 17:45:08 <elliott> Vorpal: I answered that. 17:45:13 <elliott> (The answer is no.) 17:45:16 <elliott> Should I? 17:45:25 <Vorpal> elliott, well maybe. It is quite fun. 17:46:08 <Vorpal> elliott, it is however yet another indie game from Sweden 17:46:25 <elliott> God I hate Swedes. 17:47:03 <elliott> The DataHand® System plugs into all personal computers (ATs and newer) 17:47:03 <elliott> and compatibles, without the need for additional hardware or software. The 17:47:03 <elliott> following computers are also supported: 17:47:03 <elliott> · Apple Macintosh, with an adapter for the Apple Desktop Bus (ADB) or 17:47:03 <elliott> Universal Serial Bus (USB) 17:47:04 <elliott> · Hewlett Packard X-Terminal 17:47:06 <elliott> · IBM PS/2 17:47:06 <Vorpal> elliott, why? The voice acting is funny, it is in some invented language with English and Swedish phrases mixed in. 17:47:08 <elliott> · IBM RS6000 17:47:10 <elliott> · IBM 3270 mainframes 17:47:12 <elliott> · NCD 101 X-Terminal 17:47:14 <elliott> · Silicon Graphics’ Indy and Indigo II (currently being tested) 17:47:16 <elliott> · SUN (usable type-5 keyboard using SUN’s interface converter) 17:47:18 <elliott> Heh. 17:47:20 <elliott> Vorpal: FUUUUUCK SWEEEEEEEEEEDES 17:47:28 <elliott> "Utilyzing" -- this manual's spelling sure is OPTOMIZED. 17:47:44 <Vorpal> elliott, that is quite a list of weird and obsolete connectors 17:48:11 <Vorpal> I mean no one really cares about anything but USB these days.l 17:49:03 <elliott> it's an old product 17:49:08 <elliott> thus the amusingness 17:49:11 <Vorpal> ah 17:49:40 <itidus20> i found a nice(but fairly long) quote 17:50:09 <itidus20> 'There is a vitality, a life force, an energy, a quickening that is translated through you into action, and because there is only one of you in all of time, this expression is unique. And if you block it, it will never exist through any other medium and it will be lost. The world will not have it. It is not your business to determine how good it is nor how valuable nor how it compares with other expre 17:50:09 <itidus20> ssions. 17:50:14 <itidus20> It is your business to keep it yours clearly and directly, to keep the channel open. You do not even have to believe in yourself or your work. You have to keep yourself open and aware to the urges that motivate you. Keep the channel open. ... No artist is pleased. [There is] no satisfaction whatever at any time. There is only a queer divine dissatisfaction, a blessed unrest that keeps us marching and 17:50:14 <itidus20> makes us more alive than the others.'" 18:06:48 -!- Taneb has quit (Read error: Connection reset by peer). 18:07:32 <twice11> elliott: Do you have any specific reason to prefer the atomic waste tutorial? 18:08:16 <elliott> twice11: I don't believe there is a real atomic waste tutorial, just a gag. 18:08:28 <twice11> There is. 18:08:35 <elliott> Wow. 18:08:44 <twice11> It even is one of the "classical" tutorials. 18:08:59 <twice11> http://en.wikibooks.org/w/index.php?title=Haskell/Understanding_monads&oldid=933545 18:09:06 <elliott> I'm kind of glad I know less about monad tutorials than I thought. 18:09:31 <twice11> http://www.haskell.org/haskellwiki/Monad_tutorials_timeline is more than you ever wanted to know 18:09:37 <elliott> Yeah, I just found that. 18:10:02 <elliott> "The most recommended Haskell tutorial ever." I wonder if LYAH has overtaken that yet. 18:10:45 <twice11> I didn't read monad tutorials since years. 18:11:05 <twice11> Maybe I should read the lyah one to know what's currently "in". 18:12:20 <elliott> I think it's just a chapter on them in the context of a larger tutorial. 18:12:25 <elliott> Certainly it comes after applicative functors, which is nice. 18:12:34 <twice11> Yes. Also linked from that timeline. 18:12:41 * Sgeo vaguely remembers the atomic waste tutorial 18:13:13 <twice11> And maybe I should read the "applicative functors" tutorial more urgently than the monad tutorial. 18:13:19 <Phantom_Hoover> I like the monadsplosion in 2006. 18:13:34 <elliott> Suddenly EVERYONE was asking what a monad was. 18:13:44 -!- nooga has joined. 18:13:51 <elliott> ("was"; we revised the definition in two thousand and twelve to include Applicative as a superclass.) 18:14:26 <Phantom_Hoover> "This delightful "tutorial" presents monads as monsters which devour values, use them to feed other monsters and regurgitate them when slain." 18:14:49 <twice11> "There's a monster in my Haskell"? 18:14:59 <twice11> (OK, admit, read that title some hours ago) 18:15:30 <elliott> When the moon hits your eye like a big pizza pie, that's a monad. 18:15:55 <elliott> OK that was brilliant I need recognition for tat. 18:15:56 <elliott> that. 18:16:02 * Sgeo clap 18:16:30 <Sgeo> Sound of one hand clapping 18:22:40 -!- Zuu has quit (Read error: Connection reset by peer). 18:23:57 -!- oerjan has joined. 18:27:07 <oklopol> voice acting in a game? grow up 18:27:43 -!- Zuu has joined. 18:34:01 -!- cheater has quit (Ping timeout: 240 seconds). 18:36:53 <Gregor> Phantom_Hoover: Sort of a monadic human centipede. 18:41:21 <itidus20> why are happy languages like c# and c++11 veering towards lambda :-? 18:41:38 <elliott> "Happy" languages? 18:41:47 <elliott> C# has had lambdas for years. 18:41:51 <itidus20> yeah 18:41:56 <elliott> What does happy language mean 18:41:58 <itidus20> but why 18:42:11 <elliott> What does happy language mean 18:42:26 <Gregor> I can only assume that "happy" is a euphemism for "terrible" here 18:42:32 <itidus20> haha. 18:42:34 <oerjan> `addquote <Gregor> Phantom_Hoover: Sort of a monadic human centipede. 18:42:36 <HackEgo> 649) <Gregor> Phantom_Hoover: Sort of a monadic human centipede. 18:43:27 <itidus20> oh nevermind wiki answered 18:43:30 <oerjan> itidus20: because every language which doesn't have lambda feels arbitrarily restricted. 18:43:42 <itidus20> big post here sadly 18:43:46 <itidus20> "In C++03, particularly when used with C++ standard library algorithm functions such as std::sort and std::find, users will often wish to define predicate functions near the place where they make the algorithm function call. The language has only one mechanism for this: the ability to define a class inside of a function. This is often cumbersome and verbose, and it interrupts the flow of the code. Add 18:43:46 <itidus20> itionally, C++03's rules for classes defined in functions do not permit them to be used in templates, so using them is simply not possible." 18:45:37 <itidus20> "The return type can be omitted only if the lambda function is of the form return expression (or if the lambda returns nothing)." -- when does it not. haha. 18:46:10 <oerjan> 16:36:35: <zzo38> Make aleph-0 dialects if you want to. 18:46:11 <oerjan> 16:36:41: <elliott> no please don't 18:46:20 <oerjan> shouldn't be too hard. 18:47:00 <itidus20> maybe 5 is not an expression 18:47:11 <elliott> itidus20: What does happy language mean 18:47:11 <oerjan> brainfuck-n: like brainfuck, except > means go right n steps instead of 1. q.e.d. 18:47:25 <elliott> oerjan: nooooooooo 18:47:26 <itidus20> <Gregor> I can only assume that "happy" is a euphemism for "terrible" here 18:48:30 <itidus20> happy basically means 'mostly' imperative 18:48:30 -!- sebbu2 has joined. 18:48:39 <elliott> How's that related to happiness 18:48:45 <elliott> Those two languages are mostly OOP 18:48:50 <elliott> Not procedural 18:48:52 <elliott> Though they are imperative 18:49:15 -!- sebbu has quit (Ping timeout: 252 seconds). 18:49:51 <itidus20> maybe if i actually understood any of this stuff i might change my mind 18:51:12 <oklopol> i understand only one thing 18:51:13 <zzo38> I was going to make a computer, I will if I have the stuff to do so, I plan it include BASIC and Forth built-in. For commands OPEN LOAD SAVE COPY DISPLAY should support these URI schemes I think (I might expand or reduce the list later): h o s x tape ftp http gopher telnet sprunge 18:51:33 <oerjan> is itidus20 the anthropomorphic personification of the dunning-kruger effect? watch the next episode of # e s o t e r i c 18:51:49 <zzo38> Where h means hard drive, o means optical drive, s means saver directory, and x means external devices and Plan 9 protocol. 18:52:21 <itidus20> i considered making a cpu which implements haskell_without_monads machine 18:53:05 -!- cheater has joined. 18:53:14 <elliott> So it's Haskell, but without one arbitrary typeclass that can be defined identically by any user? 18:53:25 <itidus20> it doesn't actually have any instuctions i think 18:53:48 <zzo38> itidus20: It doesn't need monads, as long as there is something representing system access 18:53:50 <itidus20> its like a blank dictionary entry 18:54:27 <zzo38> Probably in a CPU, you would not represent system access by monads anyways; you should implement the monads to access them as a Haskell program. 18:54:54 <zzo38> (Or even something else; monads are not required.) 18:55:40 <itidus20> the cpu only exists if there is something for it to do 18:55:59 <itidus20> shrugs 18:57:30 -!- ais523 has joined. 18:58:15 <oerjan> Phantom_Hoover: you can now hate me infinitely much, yay 18:58:45 <Phantom_Hoover> Yay? 18:58:59 <oerjan> IT IS AN OPPORTUNITY 18:59:20 <Phantom_Hoover> oerjan, YOU ARE SCUM DIE DIE DIE 18:59:33 <oerjan> waaaaaaaah 19:00:27 <itidus20> is it best to understand any lambda expression as a machine? 19:00:52 <Phantom_Hoover> no 19:00:54 <Phantom_Hoover> as a bird 19:00:59 <itidus20> by machine i mean (input|process|output) 19:01:11 <itidus20> oops no thats not what i mean 19:02:08 <itidus20> sorry the regular expression is too tough to figure out 19:02:34 <zzo38> It doesn't have to be a regular expression 19:03:08 <itidus20> by machine i mean, a combination of inputs, processes and outputs which have at least one input, process or output 19:03:26 <oerjan> expression = /\ variable expression | ( expression expression ) | variable 19:03:53 <itidus20> eg. "input" is a machine, "process" is a machine, "output" is a machine", "input process" is a machine, "input process output" is a machine 19:04:08 <itidus20> i dont know how to say this as a regex 19:04:11 -!- azaq231 has joined. 19:04:13 <zzo38> OK 19:04:34 <itidus20> just an arbitrary definition.. 19:04:41 <itidus20> for the scope of what i am trying to say 19:05:16 <oerjan> itidus20: i don't think lambda expressions really distinguish process from output 19:05:43 <itidus20> in that, if a lambda expression is not reciving input, or processing something, or outputting something, then it is waiting to input or process or output something 19:06:21 <zzo38> Is my proposal of more-notation in Haskell good now? I can improve it if you tell me anything wrong with it 19:06:23 -!- azaq23 has quit (Ping timeout: 260 seconds). 19:07:00 <itidus20> ok like for example.. can i construct a lambda expression which represents an adding machine? 19:07:25 <elliott> itidus20: lambda expressions have no notion of "time". 19:07:29 <itidus20> then plug in 2 inputs and an output 19:08:43 <zzo38> I suppose it could also be a state machine, where the outputs represent the output value, how it expects next input, and next state. 19:09:56 <itidus20> a function might be of the type: output (input1, input2) 19:11:26 <itidus20> z = f(x,y) 19:12:10 <itidus20> z = f(x,y) = x + y 19:12:15 <itidus20> that trips me right out 19:13:34 <itidus20> you would have to graph it in 3 dimensions 19:14:51 -!- Taneb has joined. 19:14:57 <Taneb> Hello! 19:16:52 <itidus20> (0,0,0) (0,1,1) (1,0,1) (1,1,2) 19:17:34 <zzo38> f = uncurry (+) 19:17:39 <oerjan> itidus20: addition in lambda calculus using church numerals is (haskell syntax): \m -> \n -> \f -> \x -> m f (n f x) 19:17:49 <itidus20> im confusing myself 19:17:56 <itidus20> is addition a curve in 3d space? 19:18:00 <oerjan> or \m n f x -> m f (n f x) even short 19:18:07 <oerjan> itidus20: a surface 19:18:36 <itidus20> is it flat? 19:18:46 <oerjan> z = x + y is a plane, so flat yes 19:19:17 <oerjan> *+er 19:19:47 <itidus20> and what if you warp that plane in 4d? haha 19:20:04 <zzo38> Is there a function existing in Haskell having that definition already? 19:20:16 <oerjan> itidus20: i find it mind-boggling that this boggles your mind 19:20:17 <zzo38> (I mean the addition of church numerals) 19:20:40 <elliott> oerjan: everything boggles your mind when you try to invent everything from scratch rather than learning 19:20:49 <oerjan> @pl \m n f x -> m f (n f x) 19:20:49 <lambdabot> liftM2 (.) 19:21:03 <zzo38> OK 19:21:12 <oerjan> zzo38: well that's pretty short if not a named function 19:21:46 <zzo38> Of course you can name it if you want to, and make a library using that 19:22:27 <zzo38> Possibly with a symbol name so that you can use it as an operator 19:22:37 <itidus20> nevermind... i am only lost in confusion 19:22:39 <oerjan> itidus20: that 3d/4d stuff is afaict pretty basic calculus + analytic geometry 19:23:04 <oerjan> or linear algebra, take your pick, they both give perspective 19:23:49 <elliott> 22:41:55: <oklopol> naive exploration is fun but there's a rich theory you should look into first, your ideas will become richer as wekk. 19:23:49 <elliott> 22:41:58: <oklopol> *well 19:23:49 <elliott> i find this pertinent 19:24:09 <itidus20> im only confusing myself :P 19:24:31 <elliott> yes, that is indeed how you learn things 19:24:45 <zzo38> I think multiplication would then be (.) and power is (flip id) 19:24:51 <oerjan> well reinventing stuff yourself is fun, but you need enough skill at the underlying level 19:24:52 <elliott> as opposed to someone who gave up whenever they went outside the boundaries of their existing knowledge. they would never learn anything, but I cannot for the _life_ of me think of an example of such a person. 19:25:27 <itidus20> i wonder what Also is like as a thinker 19:25:35 <oerjan> zzo38: yes. 19:28:06 <oerjan> @pl \m f x -> m f (f x) 19:28:07 <lambdabot> ((.) =<<) 19:28:15 <oerjan> @pl \m f x -> f (m f x) 19:28:16 <lambdabot> ap (.) 19:28:26 <oerjan> increment. 19:29:25 <oerjan> decrement is left as an exercise for the reader *runs away* 19:30:04 <elliott> ap :( 19:30:09 <elliott> ((.) <asterisk>) is not nicer though :P 19:30:31 <itidus20> well i stopped worrying and started trying to deal with anxiety that abstract ideas gives me 19:30:47 <elliott> ?pl \m n f x -> m (n f) x 19:30:47 <lambdabot> (.) 19:30:52 <elliott> oerjan: whoaaaaaaaaaaaaaahhhhhhhhhhh 19:30:58 <elliott> it's just like underload :DDDDDDDDDddddddddddd 19:31:10 <oerjan> elliott: zzo38 already mentioned that 19:31:24 <oerjan> and i nearly mentioned underload as response, so yeah 19:31:37 <elliott> ?pl \m n -> n (\n f x -> m (n f) x) 1 19:31:37 <lambdabot> flip flip 1 . flip id . const . (. join id) 19:31:40 <elliott> NO 19:31:42 <elliott> EXPONENTIATION SHOULD BE PRETTY 19:31:45 <elliott> WHY WONLT; YOU PBE PRETTY 19:31:56 <elliott> now we just need to find how that relates to underload function calls :P 19:32:17 <elliott> ?pl \n f x -> n (\g h -> h (g f)) (\u -> x) (\u -> u) 19:32:17 <lambdabot> flip flip id . (flip .) . flip flip const . ((.) .) . (. ((flip id .) . flip id)) 19:32:21 <elliott> ?pl \n f x -> n (\g h -> h (g f)) (const x) id 19:32:22 <lambdabot> flip flip id . (flip .) . flip flip const . ((.) .) . (. ((flip id .) . flip id)) 19:32:24 <elliott> :( 19:32:31 <elliott> oh wait that's just predecessor 19:32:34 <elliott> time for SUBTRACT 19:32:44 <elliott> ?p\m n -> (n (\n f x -> n (\g h -> h (g f)) (const x) id)) m 19:32:44 <lambdabot> (line 1, column 3): 19:32:44 <lambdabot> unexpected ">" or "-" 19:32:44 <lambdabot> expecting variable, "(", operator or end of input 19:32:52 <elliott> ?p\m n -> (n (\n f x -> n (\g h -> h (g f)) (const x) id) m 19:32:52 <lambdabot> (line 1, column 3): 19:32:52 <lambdabot> unexpected ">" or "-" 19:32:52 <lambdabot> expecting variable, "(", operator or end of input 19:32:56 <elliott> ?p\m n -> n (\n f x -> n (\g h -> h (g f)) (const x) id) m 19:32:57 <lambdabot> (line 1, column 3): 19:32:57 <lambdabot> unexpected ">" or "-" 19:32:57 <lambdabot> expecting variable, "(", operator or end of input 19:33:00 <elliott> ?pl \m n -> n (\n f x -> n (\g h -> h (g f)) (const x) id) m 19:33:01 <lambdabot> flip ($ const (flip flip id . (. const) . ap id ((flip id .) . flip id))) 19:33:04 <elliott> oerjan:SO BEAUTIFUL 19:33:22 <elliott> ?pl \n -> n (const const) (flip const) 19:33:22 <lambdabot> flip ($ const const) (const id) 19:33:24 <elliott> heh 19:37:07 <oerjan> <elliott> WHY WONLT; YOU PBE PRETTY 19:37:22 -!- kmc has joined. 19:38:42 <oerjan> @pl \m n f x -> n m f x 19:38:42 <lambdabot> flip id 19:38:46 <oerjan> as zzo38 said 19:39:39 <oerjan> also i suspect most of this is mentioned on madore's unlambda page 19:39:40 <elliott> oh is that exponentiation? 19:39:45 <elliott> someone fix the wikipedia article to have the nicer :( 19:40:42 <oerjan> :t \n f x -> n (\g h -> h (g f)) (\u -> x) (\u -> u) 19:40:43 <lambdabot> forall t t1 t2 t3 t4 t5 t6. (((t -> t2) -> (t2 -> t3) -> t3) -> (t4 -> t1) -> (t5 -> t5) -> t6) -> t -> t1 -> t6 19:41:25 -!- saptarshi7sinha has joined. 19:41:27 <zzo38> Yes, (flip id) is exponentiation; which is I already describe it. And (.) is multiplication 19:41:46 <oerjan> elliott: is that decrement from wikipedia too? 19:41:50 <elliott> oerjan: yes 19:42:15 <saptarshi7sinha> anyone there/ 19:42:18 <saptarshi7sinha> ? 19:42:22 <elliott> no 19:42:30 <elliott> what's your favourite esolang? 19:42:35 <elliott> brainfuck? intercal? underload? 19:42:41 <elliott> saptarshi7sinha? :) 19:42:49 <saptarshi7sinha> fuck! 19:42:52 <saptarshi7sinha> i guess! 19:43:04 <ais523> is that like brainfuck without the brains? 19:43:23 <saptarshi7sinha> :) 19:43:25 <oerjan> ais523: hm, sounds like another derivative in the making 19:43:43 <elliott> fuck is brainfuck but without the [] 19:43:56 <ais523> oerjan: there's already fuckfuck, which is just a swap of commands for swearwords 19:43:57 <oerjan> elliott: hey stop precisely reading my mind 19:43:59 <saptarshi7sinha> yeh..slangs do have a lot of derivatives! 19:44:00 <ais523> elliott: a bit like deadfish, then? 19:44:13 -!- saptarshi7sinha has left. 19:44:18 <elliott> there we go 19:44:30 <elliott> my new method for driving away the mislead works perfectly 19:44:49 <elliott> and /probably/ wouldn't drive away anyone who was in the right place 19:44:51 <oerjan> ais523: bf without [] still would require many memory cells 19:45:22 <oerjan> elliott: let me guess, the indian-sounding name made you suspicious too? 19:45:32 <ais523> oh right 19:46:09 <zzo38> ais523: Well, not necessarily swearwords; swearwords just happen to fit the required template. The template only requires a four-letter word with the specific first and last letter; the second and third letter can be whatever you want it to be. 19:46:16 <elliott> oerjan: well maybe. but that's horrible :P 19:46:24 <oerjan> except the 7 might indicate a chinese tone. but mandaring has only 4. cantonese has more, and also more final consonants 19:46:25 <elliott> "anyone there/" was what made me decide to try it 19:46:32 <oerjan> *mandarin 19:46:38 <elliott> s/horrible/awful/ 19:47:02 <twice11> The upper bound of the required tape length in "fuck" seems to be much easier to determine than in brainfuck. 19:47:38 <elliott> constant-time, even :P 19:47:42 <oerjan> does anyone here know if saptarshi7sinha means something in cantonese? 19:47:49 <zzo38> twice11: Well, yes. Brainfuck without [] you can easily determine of course 19:48:07 <twice11> elliott: Only if you have a constant time length operation. 19:48:20 <twice11> So yes for files. No for programs received from a TCP stream. 19:48:31 <oerjan> hm is on twitter 19:49:01 <elliott> twice11: oh hm right 19:49:13 <oerjan> ...twitter claims i don't have javascript enabled and refuses to load :( 19:50:00 <Vorpal> twice11, that isn't true for files. Consider /dev/ttyS0 for example 19:50:14 <twice11> Vorpal: That's a *device*. 19:50:19 <ais523> "yes for regular files", I think is what twice11 meant 19:50:28 <elliott> oerjan: what IE are you on nowadays? :P 19:50:29 <Vorpal> twice11, it is a file. You meant a "regular file or block device" I presume 19:50:36 <Vorpal> ais523, you forgot block devices there 19:50:48 <Vorpal> pretty sure there is an ioctl for them 19:50:49 <ais523> actually, I'd call the device 4,6 and say that /dev/ttyS0 is just a pointer to it 19:51:06 <oerjan> elliott: 8, the highest which works on XP afaik 19:51:14 <twice11> /dev/ttyS0 is a name for the device. 19:51:23 <Vorpal> ais523, you actually do call it "device 4,6" normally?... 19:51:25 <twice11> just as two hard links are two names for the same file. 19:51:44 <Vorpal> twice11, point is, it is a file. which happen to be a name for a device. 19:52:00 <ais523> Vorpal: well, I don't call it /dev/ttyS0 normally either, I don't normally have a reason to name it at all 19:52:08 <ais523> I'd more likely call it "the serial console" 19:52:12 <Vorpal> right 19:52:27 <twice11> define: file 19:52:42 <Vorpal> oerjan, XP is pretty much dead. 19:52:46 <Vorpal> sure it is still used. 19:52:47 <elliott> no it isn't 19:52:48 <Vorpal> just dead 19:52:51 <elliott> XP has a massive userbase 19:53:12 <Taneb> Including, at current, me 19:53:22 <elliott> Microsoft can't kill something by deciding they don't care about it any more 19:53:38 <elliott> According to web analytics data generated by W3Schools, from September 2003 to July 2011, Windows XP was the most widely used operating system for accessing the internet. As of August 2011, Windows XP market share is 38% after having peaked at 76.1% in January 2007.[3] 19:53:39 <elliott> AHAHAHA 19:53:43 <Vorpal> elliott, well they are not supporting IE 9 on it. Nor any directx after version 9c iirc. 19:53:47 <elliott> Wikipedia citing W3Schools for OS census information 19:54:00 <elliott> someone remove that who isn't a faceless anon :P 19:54:30 <Vorpal> elliott, yeah, wouldn't alexa be a better source for this... 19:54:51 <elliott> not really 19:54:56 <elliott> but W3Schools is the worst possible source 19:54:59 <Vorpal> elliott, though tell me, what is so bad about W3Schools? I mean, I never much looked at the site, I know it exists, that is about it. 19:55:01 <ais523> elliott: what overtook it? 7? 19:55:06 <ais523> or Vista? 19:55:33 <Taneb> Vorpal: skewed data: most visitors are interested in web developement 19:55:39 <twice11> I am quite confident that the relation is 7 > XP > Vista 19:55:39 <elliott> not only is it targeted at web developers and so will have a /completely/ inaccurate userbase, but W3Schools is a site which makes money selling worthless "certifications" and reeling people in with terrible tutorials that don't care at all about security in the slightest (SQL injections ahoy) 19:55:40 <Vorpal> ah yeah 19:55:47 <elliott> and deluding people into thinking that W3C supports it 19:55:54 <elliott> (W3C have asked them to change their name several times) 19:55:56 <Vorpal> elliott, ah 19:56:38 <Vorpal> elliott, so what is a good source for OS census info? 19:56:40 <ais523> elliott: the theory is that only Microsoft have accurate statistics of Linux adoption 19:56:44 <elliott> Vorpal: I don't know 19:56:53 <Vorpal> google I guess, not sure if they make anything public about that 19:57:01 <ais523> because the number of PCs running Mac OS X is basically insignificant, ditto the number of PCs running something other than Windows/Linux 19:57:16 <ais523> and they have the most accurate details on Windows adoption (including pirated Windows) 19:57:38 <ais523> Vorpal: Google would be weighted in favour of lower stats for IE users, so lower stats for Windows users 19:57:44 <oerjan> saptarshi sinha is definitely indian, anyway 19:57:45 <Vorpal> hm true 19:57:47 <ais523> as it's the default search engine in most major browsers, but not in IE 19:57:57 <Taneb> Facebook, maybe? 19:57:59 <Vorpal> ais523, what about average of several sites? Google, MSN and so on 19:58:18 <Vorpal> Taneb, I don't use facebook for example. I know many people who dont 19:58:19 <ais523> Taneb: or perhaps DoubleClick 19:58:20 <Vorpal> don't* 19:58:33 <ais523> Vorpal: Facebook's a good example because its Like buttons are all over the place 19:58:35 <elliott> does anyone know how to uncommit the latest commit on git? 19:58:39 <ais523> so it has accuratish statistics for half the web 19:58:43 <elliott> I haven't pushed it anywhere 19:58:45 -!- sebbu2 has changed nick to sebbu. 19:58:46 <elliott> so I'd like to just obliterate it 19:58:57 <twice11> elliott: also clear working tree? 19:59:00 <ais523> elliott: you can obliterate via git rebase -i HEAD~2 19:59:09 <elliott> twice11: indeed, I've copied out the relevant file 19:59:13 <ais523> and deleting the line describing the commit from the resulting list 19:59:20 <elliott> ais523: thanks 19:59:25 <twice11> to reset everything to the state before the last commit: 19:59:26 <elliott> protocol.pl: needs merge 19:59:26 <elliott> Working tree is dirty 19:59:27 <elliott> oh come on 19:59:31 <twice11> git reset --hard HEAD 19:59:32 <elliott> do I have to commit my merge and then obliterate that too? :P 19:59:33 <twice11> git reset --hard HEAD^ 19:59:34 <twice11> sorry 19:59:35 <elliott> twice11: right 19:59:39 <Vorpal> ais523, hm, does facebook provide OS census info though? 19:59:47 <elliott> there we go 19:59:48 <Vorpal> only a site which actually provides it would be interesting 19:59:51 <ais523> Vorpal: I don't know; I'm talking about who has the info, rather than who provides it 20:00:30 <twice11> to just clear the commit and the "index" (what you have added), but keep your working dir, use "--mixed" instead of "--hard" 20:01:01 <elliott> thanks 20:01:03 <ais523> I rather like git rebase -i because it lets you do all the edit-history options without having to worry about the individual syntax for each 20:01:08 <twice11> OTOH, I never use "git reset --mixed", I just use "git commit --amend -a" to replace a bad commit by a good one. 20:01:25 <twice11> Yes, "git rebase -i" is quite cool. 20:01:32 <elliott> ais523: incidentally, I think modifying history is perfectly possible in sg 20:01:34 <ais523> heh, git commit --amend? I'll have to remember that 20:01:45 <elliott> git commit --amend is useful for changing the commit message :P 20:01:49 <ais523> elliott: so do I, but isn't it best done via history modification patches? 20:01:51 <fizzie> Vorpal: http://en.wikipedia.org/wiki/Usage_share_of_operating_systems lists a couple of different sources and the median of them. 20:01:59 <elliott> ais523: haha 20:02:06 <elliott> ais523: that's perverse 20:02:31 <ais523> elliott: that way, it'd avoid the problems that modifying history normally causes to a VCS 20:02:42 <ais523> (in particular, you'd get conflicts between the old and new version otherwise, I think, in sg) 20:02:42 <elliott> ais523: and also remove the point 20:02:57 <elliott> modifying history obviously doesn't work post-push 20:03:00 <ais523> well, the point isn't to conceal the history, but to make it look neater, right? 20:03:08 <ais523> if modifying history should work at all, it should be done post-push 20:03:13 <ais523> *it should work post-push too 20:03:28 <ais523> what if someone pulls from you just after you accidentally commit half a patch? 20:03:33 <elliott> personally, I think it should simply be another layer 20:03:54 <Vorpal> fizzie, so more windows xp than windows 7... heh 20:04:35 <fizzie> Vorpal: Yes, though on some of those sources it goes the other way around; and most of them are themselves from multiple sites. 20:05:09 <Vorpal> I see 20:05:58 <ais523> is vista behind both or beating both? 20:06:26 <fizzie> Behind both in all the lines of the table, unless I missaw. 20:06:47 <fizzie> (~11% vs. 30+% in the median numbers.) 20:06:54 <ais523> ouch 20:07:13 <twice11> Why would you want to use Windows 7 beta, when there is Windows 7 final? 20:07:18 <ais523> I wonder if the final end of XP support will actually drive down Windows adoption 20:07:38 <ais523> my guess is no, because it'll correspond to a time where all the viable alternatives to Windows have screwed up their UIs 20:07:58 <ais523> (unless Apple get their act together again; I doubt Gnome will in time, perhaps KDE will) 20:07:59 <Vorpal> http://en.wikipedia.org/wiki/File:Smartphone_share_current.png <-- now that is interesting. I was under the impression that apple had a larger share than android 20:08:10 <ais523> nah, Android is the Windows of smartphones 20:08:16 <twice11> ais523: xfce? 20:08:19 <ais523> lowest-common-denominator, and often programmed quite badly 20:08:27 <Vorpal> ais523, so android is bad? 20:08:37 <fizzie> ais523: While Apple is the Apple of smartphones. 20:08:38 <ais523> twice11: Linux is pretty small market-share-wise as it is, and xfce is a pretty small fraction of /that/ 20:08:45 <ais523> so I'd say xfce use is statistically insignificant 20:08:48 <ais523> fizzie: yes, I'll agree with that 20:08:50 <ais523> Vorpal: I'm wary of it 20:09:03 <Vorpal> ais523, oh? 20:09:05 <ais523> I don't hear "Linux-based" and immediately think "good" like Slashdot or Groklaw seem to 20:09:16 <ais523> Android is basically a race to the bottom 20:09:22 <Vorpal> hm 20:09:30 <Vorpal> ais523, surely there are some good android products? 20:09:34 <ais523> lots of applications available, most of which are really bad 20:09:36 <ais523> some of which are good 20:09:38 <ais523> just like Windows 20:09:58 <ais523> and heavily varying in how locked-down it is, which isn't identical to Windows but a similar situation when you consider corporate installs 20:10:19 <twice11> lots of bad and some good apps: Isn't that typical for any high-market-share system with open application development? 20:10:29 <Vorpal> oh and linux have a massive dominance for servers it seems. 20:10:31 <elliott> ais523: most iPhone apps are terrible too, mind you 20:10:33 <ais523> twice11: I think so 20:10:53 <Sgeo> Oh, twice11 isn't tswett 20:10:57 <ais523> I'm just saying that Android is the standard high-market-share system with open application development, and so corresponds quite strongly to Windows 20:11:16 <elliott> though I think the proportion of good iPhone apps that are great is higher than the proportion of good Android apps that are great 20:11:18 <Vorpal> hm 20:11:23 <Vorpal> ais523, but the OS itself? 20:11:27 <ais523> whereas Linux corresponds to Moblin or something 20:11:41 <ais523> the OS itself, in Android, is mostly a reimplemented language very close to Java 20:11:52 <twice11> But also for Linux, there are a lot of bad application in the interwebs and some good ones... 20:11:54 <ais523> so close that Oracle sued them over it 20:12:22 <Sgeo> It isn't Java? I know it's not the standard Java VM, but 20:12:24 <ais523> twice11: bad Linux programs rarely reach the depths of badness that bad Windows programs reach 20:12:33 <ais523> bad Linux programs tend to merely not work 20:12:40 <ais523> bad Windows programs can do all sorts of absurd things 20:13:01 <ais523> presumably because the really bad programmers typically haven't heard of Linux and couldn't get Visual Studio running on it 20:13:07 <twice11> Don't get me started on trying to work with LibreOffice (which OTOH is x-platfrom, not linux only) 20:13:13 <Vorpal> so linux have a huge dominance on publicly accessible servers, and a near total dominance on HPC. hm 20:13:29 <ais523> Sgeo: it's Java as in the language Java (syntax/semantics), but the standard libraries are reimplemented and not the same as standard Java 20:13:37 <Vorpal> and heh, mainframes are mostly IBM system z 20:13:43 <Vorpal> (who the hell still uses mainframes?) 20:13:51 * Sgeo now wants an IBM System Z emulator 20:14:01 <oerjan> `addquote <elliott> When the moon hits your eye like a big pizza pie, that's a monad. 20:14:03 * Sgeo feels nostalgia for mainframes 20:14:03 <ais523> companies doing what mainframes are good at: very very large quantities of easy work 20:14:03 <HackEgo> 650) <elliott> When the moon hits your eye like a big pizza pie, that's a monad. 20:14:05 <Sgeo> ^^not true 20:14:25 <ais523> I think a mainframe is what you want if you have ten billion additions that need doing 20:14:59 <Vorpal> heh 20:15:09 <Vorpal> ais523, wouldn't a cluster of cheap PCs work better? 20:15:37 <zzo38> If there is something mathematically correct in category theory and is also computable, is it supposed to be representable in Haskell? 20:17:27 <ais523> the standard mainframe applications are things like processing payrolls for an entire company or taxes for an entire country 20:18:59 <zzo38> awk 'gsub(/./,"&\n")' | awk '/>/&&++p>r{r++}/</&&--p<l{l--}END{print r+1-l}' 20:19:09 <Vorpal> ais523, ah 20:19:26 -!- azaq231 has left ("Leaving."). 20:19:31 <ais523> there's probably some way to do that with a cluster and distributed database 20:19:33 <Vorpal> ais523, payrolls for a company doesn't sound like a hard problem. 20:19:40 <ais523> but doing it on a mainframe is probably simpler 20:19:43 <ais523> Vorpal: I mean a really really big company 20:19:48 -!- azaq23 has joined. 20:19:48 <Vorpal> taxes for an entire country perhaps 20:19:55 <Vorpal> ais523, such as IBM or Microsoft? yeah 20:19:59 <Vorpal> not really hard still 20:20:29 <ais523> that's the point, what mainframes are best at isn't /hard/ 20:20:29 <Vorpal> I realised I have no clue about the size of companies outside IT 20:20:35 <ais523> it's just really large in scale 20:21:10 <Vorpal> ais523, again, cheap cluster sounds saner. Well, maybe not for reliability 20:21:14 <elliott> can someone fire every OS developer? 20:21:15 <Vorpal> that could be a reason 20:21:17 <elliott> thanks 20:21:24 <Vorpal> elliott, what for 20:21:41 <elliott> Vorpal: making IO ridiculously slow for no benefit 20:21:53 <Vorpal> elliott, thinking of Synthesis? 20:21:56 <ais523> elliott: what sort of IO specifically? 20:22:25 <ais523> (note: you are not using @ so you are allowed to use traditional OS concepts in your answer) 20:22:43 <elliott> Vorpal: Synthesis solves the problem, but in a much too difficult manner 20:22:48 <elliott> it's not very maintainable 20:22:50 <Vorpal> elliott, right 20:22:54 <elliott> ais523: mostly network, but file IO too 20:22:56 <Vorpal> that is true 20:23:01 <elliott> the overhead of kernel<->userspace transition is the cause 20:23:03 <Vorpal> elliott, what about pipes? 20:23:10 <elliott> Vorpal: probably those too 20:23:11 <elliott> all IO, really 20:23:21 <Vorpal> vmsplice()? 20:23:24 <elliott> heh 20:23:34 <ais523> elliott: aha, I see, the problem's that reading from a network socket requires too many context switches 20:23:37 <Vorpal> okay that is kind of cheating 20:23:46 <elliott> but anyway, Synthesis takes the route of heavily optimising user<->kernelspace communication/switches 20:23:50 <ais523> and Linux does have a syscall to connect two pipes, I've forgotten what it's called (it may well be vmsplice) 20:23:52 <elliott> it's much simpler just to run everything in kernelspace 20:23:54 <Vorpal> elliott, I guess Inferno wouldn't have this problem? 20:23:56 <elliott> (cough @ cough) 20:24:10 <elliott> I don't know how Inferno works, but it presumably inherits the host OS' underlying IO 20:24:25 <Vorpal> elliott, well it can run natively iirc 20:24:28 <Vorpal> not just hosted 20:24:38 <elliott> ais523: anyway, if you eliminate the distinction, then all the fancy hacks Linux has for fast IO are completely unnecessary 20:24:55 <elliott> you don't need syscalls that do a lot, because you can just compose the operations in the obvious way 20:24:56 <Vorpal> elliott, so lisp machine and DOS do it right? 20:25:05 <ais523> I actually don't get why a call to kernelspace needs a context switch 20:25:09 <ais523> a switch between processes does 20:25:13 <elliott> I don't know much about Lisp machine's security... DOS is way too different to a modern system to compare 20:25:21 <elliott> ais523: hardware ring bullshit, I believe 20:25:24 <ais523> but to the kernel and back, I don't see why it would 20:25:37 <elliott> whoever invented rings: I hope you feel bad 20:25:47 <Vorpal> elliott, multics 20:25:48 <ais523> elliott: oh, I was assuming that most of the overhead of a context switch was in doing things like copying registers 20:25:51 <Vorpal> that is where rings come from 20:25:54 <elliott> Vorpal: oh, really? 20:25:57 <elliott> scratch that, don't feel bad 20:25:59 <elliott> I like Multics 20:26:06 <elliott> Vorpal: wait, Multics invented /hardware/ rings? 20:26:11 <Vorpal> elliott, pretty sure that is where rings first showed up. At least Multics had 7 rings 20:26:11 <elliott> they used existing computers, dude 20:26:17 <elliott> I'm talking about hardware ring 20:26:17 <elliott> s 20:26:20 <Vorpal> hm 20:26:50 <Vorpal> elliott, not sure then, but multics made heavy use of them I know. Would need checking for where they were invented. 20:27:18 <zzo38> I wrote the text of section 5.4 of proposal of more-notation. At least, some texts. Probably many sections still incomplete 20:28:08 <elliott> ais523: in fact, even select/epoll are obsolete 20:28:27 <ais523> in favour of what? 20:28:36 <ais523> (don't say pselect/ppoll) 20:28:47 <elliott> ais523: in a ring-0 system, given cheap threads, you can just spawn off a bunch and blocking-read -- note that "coroutines" count as cheap threads here 20:29:11 <elliott> blocking-read just translates to "call/cc (\k -> install k as handler for 'when data comes in'); yield" 20:29:22 <elliott> well 20:29:36 <elliott> blocking-read just translates to "r = call/cc (\k -> install (k 'hi) as handler for 'when data comes in'; 'bye); if r == 'bye {yield}" 20:29:42 <elliott> you get the idea 20:29:52 <elliott> because you can literally just hook into the kernel's IO multiplexing 20:29:54 <ais523> yep 20:29:58 <Vorpal> ais523, wait, wtf is "ppoll"? 20:30:11 <Taneb> I still don't get how Red Hot Chilli Peppers rhyme "wall" and "bra" 20:30:15 <ais523> the /concept/ of select, etc., is a useful one for programming, it just doesn't have to be a primitive 20:30:28 <ais523> Vorpal: a syscall that does much the same as pselect but with a different interface 20:30:33 <elliott> ais523: (note that node.js has become popular by deluding people into thinking that if you do this, but use a /manual/ CPS transform rather than call/cc, and _keep_ all the existing kernel overhead, somehow your servers will magically be fast) 20:30:38 <Vorpal> ais523, ... why 20:30:45 <elliott> I'm not sure select is that useful; threads are much nicer 20:30:48 <ais523> because select is limited in how many FDs it can handle 20:30:50 <elliott> (threads aren't nice, but they're nicer than select) 20:30:57 <Vorpal> ais523, okay why select at all then 20:31:01 <Vorpal> or pselect 20:31:05 <ais523> elliott: select is perfect for writing an event loop 20:31:29 <ais523> doing that with threads can be messy 20:31:33 <elliott> ais523: yep, but event loops are performance hacks 20:31:59 <Vorpal> eh 20:32:02 <elliott> ais523: the right level of abstraction is: callbacks, and then a continuation-based blocking interface on top of that 20:32:03 <pikhq_> Yeah, you basically can't even think about DOS in modern terms. It's not so much an OS as it is a lightweight library and a program loader. 20:32:13 <Vorpal> pikhq_, true 20:32:22 <ais523> elliott: well, the two are obviously equivalent 20:32:22 <elliott> the beauty of continuations rather than just e.g. for (;;); until the callback trips a variable saying "it's done", 20:32:25 <pikhq_> (though, given that, you can easily do optimal IO if you feel like it) 20:32:30 <elliott> is that the thread can die in-between 20:32:34 <elliott> so it's 0-cost to block 20:32:41 <elliott> and as efficient as possible 20:35:07 <Vorpal> at least windows 7 seems to have no traces of 16 bit support left, though that could be just the 64-bit edition (since 16-bit obviously won't work there) 20:35:25 <ais523> bleh, what's up with Windows' famous backward compatibility? 20:35:35 <elliott> ais523: in conclusion, all the work gone into efficient IO has been obsolete from the start, and writing efficient network and file (imagine processing gigabytes of data) programs is now needlessly awkward and FUD abounds 20:35:39 <ais523> how will I run my old 16-bit applications now? 20:35:47 <Vorpal> ais523, well 16- bit won't work in long mode. Blame AMD for that. 20:35:48 <elliott> it's ridiculous! 20:35:59 <Vorpal> it is specified in the ISA. 20:36:09 <elliott> ais523: large IO buffers are another thing that is completely useless, btw 20:36:11 <Vorpal> s/- /-/ 20:36:22 <elliott> I forget what buffer size Synthesis was using to completely outperform everything else, but it was something like sixteen bytes 20:36:25 <Vorpal> elliott, not really, what about DMA? 20:36:33 <elliott> as opposed to the kilobytes we use nowadays because of the kernelspace overhead 20:36:50 <elliott> Vorpal: well, that's a lower-level kind of buffering 20:36:51 <Vorpal> elliott, writing an entire sector to disk might be a better idea 20:37:00 <Vorpal> especially for SSD 20:37:08 <Vorpal> elliott, still it needs to be done 20:37:12 <elliott> sure, that's abstracted in @ though 20:37:16 <ais523> elliott: mmap() doesn't seem to run into the problems you talk about, unless the page faults cause timeconsuming context switches 20:37:40 <elliott> ais523: I have a feeling they might; but yes, mmap is nice, but it only works on files; in @, of course, all disk access works like mmap 20:37:46 <elliott> and is basically as efficient as possible 20:37:54 <Vorpal> ais523, mmap is limited in that it won't work on char devices 20:38:06 <Vorpal> and it performs implicit buffering on the page level 20:38:18 <elliott> I wonder how the CPU talks to the soundcard these days? 20:38:27 <Vorpal> elliott, DMA probably 20:38:33 <ais523> elliott: it's going to be either in/out or DMA at the lowest level 20:38:44 <elliott> It'd be fun if @ had a demo doing a bunch of fancy animation + real-time "play audio from file applying expensive effects" thing with a tiny buffer. 20:39:06 <elliott> (Probably buffered underneath because of DMA, but eh, that's not the kind of buffers we see in stdio these days.) 20:39:12 <elliott> (Or in the kernel.) 20:39:17 <Vorpal> elliott, likely DMA considering how much data must be passed for, for example, 5.1 48 kHz sound 20:39:23 <Vorpal> in/out just wouldn't cut it 20:39:50 <ais523> elliott: what about things like buffering done by curses, which is for the purpose of ignoring screen writes that overwrite each other? 20:40:06 <ais523> a curses-alike would be useful if, say, streaming textish data across a network 20:40:09 <Vorpal> elliott, anyway, video: DMA too. 20:40:21 <Vorpal> well kind of 20:40:45 <elliott> ais523: streaming textish data across a network? 20:40:51 <elliott> why not just send a description of the widgets? 20:40:55 <ais523> I mean screen-oriented textish 20:41:05 <elliott> ais523: "curses-alike is useful if you have a VT"? 20:41:06 <elliott> no shit 20:41:14 <Vorpal> elliott, what about when logging into remote systems 20:41:21 <elliott> Vorpal: with what method? 20:41:24 <ais523> say I want to play NetHack on @ 20:41:26 <Vorpal> ssh for example 20:41:46 <Vorpal> elliott, anyway it is more efficient to send larger TCP packages than small ones. Best is matching MTU of course 20:41:59 <elliott> ais523: if you want to play NetHack with the original UI, of course you need a VT 20:42:06 <Vorpal> elliott, so there buffering is good when transferring bulk data 20:42:11 <elliott> ais523: otherwise, look at nethack-el 20:42:18 <elliott> you just send the same kind of data structures across the network 20:42:27 <elliott> (note: I don't know exactly how nethack-el sends things) 20:42:31 <ais523> well, I'm saying that that updating sort of data sensibly requires buffering 20:42:33 <ais523> elliott: in lisp, obviously 20:42:39 <ais523> or well, as a sequence of sexps 20:42:39 -!- Taneb has quit (Read error: Connection reset by peer). 20:42:39 <elliott> ais523: no? 20:42:41 <elliott> it sends sexps 20:42:45 <elliott> but I don't know how it sends the _map_ 20:42:49 <elliott> which is what's important 20:42:56 <ais523> it doesn't send the map 20:43:00 <ais523> it sends map update instructions 20:43:00 <fizzie> Vorpal: Didn't 7 have some sort of a VM-based (built on Virtual PC) backwards schmombatility "XP mode" thingie? 20:43:02 <ais523> also as sexps 20:43:05 <elliott> ais523: anyway, I don't see why it requires buffering at all; nethack screens don't change much each frame 20:43:09 <elliott> you can just send a diff 20:43:15 <Vorpal> fizzie, think so. 20:43:15 <ais523> elliott: it needs buffering to calculate the diff 20:43:19 <elliott> aka map update structures 20:43:19 <ais523> that's what I was trying to get at all along 20:43:20 <elliott> ais523: what? 20:43:40 <ais523> elliott: because you're often overwriting a square with itself in NetHack 20:43:43 <ais523> and that shouldn't show up in the diff 20:43:47 <Vorpal> fizzie, not around on my windows 7 system I have here. Which is windows 7 pro from MSDNAA. Might need to take it from add/remove programs or such 20:43:51 -!- azaq23 has quit (Quit: Leaving.). 20:44:29 <Vorpal> elliott, what about network buffering as I mentioned above? 20:44:46 <Vorpal> elliott, you want to buffer up to MTU if the data isn't time critical. 20:45:15 <elliott> Vorpal: I don't think you've been listening the first, second, or tenth times I clarified I was only talking about one kind of buffering 20:45:28 <elliott> so I stopped trying to clarify and started ignoring your examples of buffering instead 20:45:29 <Vorpal> elliott, well this one is relevant to the application layer 20:45:39 <ais523> network buffering is an implementation detail of the network driver 20:45:47 <elliott> <ais523> elliott: because you're often overwriting a square with itself in NetHack ;; how is this relevant to buffering? 20:45:56 <fizzie> Vorpal: Yes, I think it's a separate download. I'm not sure my Ultimate Seven here has it installed either. 20:46:01 <ais523> Vorpal: yes, but only in the sense that the application layer says "I want to optimise for throughput" or "I want to optimise for latency" 20:46:15 <ais523> elliott: because you need to remember what was there before 20:46:20 <Vorpal> ais523, indeed, and that might change over a session too, for different parts of the data. 20:46:23 <ais523> to know whether to send the diff or not 20:46:24 <elliott> ais523: that's not buffering... 20:46:31 <elliott> ais523: that's caching 20:46:40 <ais523> hmm, OK, perhaps you have different definitions to me 20:46:41 <elliott> that has nothing to do with stdio buffering or anything 20:46:48 <ais523> I'd say it's the opposite of caching 20:46:52 <elliott> it might be buffering in the technical sense, but it's not the kind of IO buffering I'm talking about at all 20:46:56 <elliott> <fizzie> Vorpal: Yes, I think it's a separate download. I'm not sure my Ultimate Seven here has it installed either. 20:46:58 <elliott> fizzie: it's Ultimate-only 20:46:59 <Vorpal> fizzie, you have ultimate? heh 20:47:00 <ais523> fair enough 20:47:03 <zzo38> Why does Haskell not allow infixr 10? 20:47:10 <elliott> zzo38: because that's function application 20:47:11 <fizzie> elliott: "Windows XP Mode is available free of charge to users of Windows 7 Professional, Enterprise, and Ultimate.[30]" 20:47:16 <elliott> fizzie: Oh, hunh. 20:47:22 <zzo38> O, that's why. 20:47:49 <fizzie> Vorpal: It's a "for the university staff" license, I think it cost 7.50 EUR or so, and the price was identical for Professional and Ultimate, so I went with the more grandiose name. 20:47:58 <Vorpal> heh 20:48:19 <fizzie> Actually I picked the "N" variant. 20:48:21 <Vorpal> fizzie, ultimate isn't available here. Only pro, no other version. 20:48:26 <Vorpal> fizzie, N? 20:48:42 <fizzie> It's the "no media player" thingie they were obligamated to make for some reason or another. 20:48:47 <Vorpal> heh 20:48:55 <fizzie> Then turned out something quite essential needed the "media functionality package", so I had to install it after all. 20:49:06 <Vorpal> fizzie, anyway, I went for ultimate with visual studio. Not that I use visual studio much. But hey why not 20:49:15 <fizzie> (Turns out it wasn't just the media player application, it was other components too.) 20:50:07 <fizzie> "The features in the N and KN Editions are the same as their equivalent full versions, but do not include Windows Media Player or other Windows Media-related technologies, such as Windows Media Center and Windows DVD Maker.[12]" 20:50:16 <Vorpal> the only reason to use visual studio would be windows C# development. For everything else there are better solutions. 20:50:17 <fizzie> The description made it sound like it'd just lack a bit of bloat. 20:50:27 <fizzie> I've already forgotten what it exactly was that it was lacking. 20:50:39 <Vorpal> well okay, .NET in general for the supported languages, but I would never touch VB.NET 20:50:52 * Sgeo was just about to ask about F# 20:51:09 <ais523> one of the courses I'm teaching this year is in common-subset-of-OCaml-and-F# 20:51:10 <Vorpal> Sgeo, I have never used F# nor do I have any opinion on it. 20:51:16 <ais523> that is, polyglot levels of common subset 20:51:19 <ais523> I'm not sure how large it i 20:51:21 <ais523> *is 20:51:26 <Vorpal> ais523, heh... 20:51:31 <ais523> probably unusably small 20:51:40 <Vorpal> ais523, so why that subset then... 20:51:42 <Sgeo> 0? I mean, OCaml has ;; to end things and iirc, F# doesn't? 20:52:06 <ais523> you don't actually need any ;;s in a program, it's a separator 20:52:19 <Vorpal> ais523, why, is this some sort of eso-course? 20:52:22 <ais523> programs are typically definition ;; main 20:52:27 <ais523> Vorpal: no, it's a basic CS concepts course 20:52:41 <ais523> and the lecturer thinks it doesn't need anything beyond function calls and pattern matching 20:52:44 <Vorpal> ais523, still, a stupid subset 20:53:07 <ais523> hmm, I'd prefer elliott's opinion here before concluding it's definitely stupid 20:53:22 <ais523> I don't actually know F#, and apparently it's deliberately similar to OCaml, so the subset might be larger than I think 20:54:08 <Vorpal> ais523, how viable would an INTERCAL/C polyglot be? 20:54:16 <elliott> ais523: ? 20:54:38 <ais523> elliott: opinions on whether "common subset of OCaml and F# that has the same syntax" is a completely useless language or not 20:54:54 <elliott> ais523: you asked me that before 20:55:03 <ais523> ah right; but I can't remember the answer 20:55:12 <elliott> <ais523> one of the courses I'm teaching this year is in common-subset-of-OCaml-and-F# 20:55:14 <elliott> augh 20:55:19 <elliott> ais523: well I was asking for context 20:55:29 <elliott> I thought it was about your weird ultra-portability thing 20:55:33 <ais523> Vorpal: hmm; I think the only way to avoid a syntax error in one or other of the langauges would be to start with DONOT; 20:55:35 <elliott> but teaching it to innocent children???? 20:55:42 <ais523> elliott: it's not up to me what I teach 20:55:56 <ais523> the "GNU C99 and assembler and one lecture on C++" was not a good idea either 20:56:30 <elliott> haha 20:56:38 <elliott> hey, does anyone know if you can merge just /one/ commit into another branch on git? 20:56:48 <elliott> I accidentally committed something to a quite-diverged development branch rather than master 20:56:53 <elliott> and I'd like to avoid just applying the diff again, that's gross 20:56:56 <ais523> elliott: that operation isn't meaningful in git 20:57:07 <elliott> ais523: no, but I thought there might be some porcelain for it 20:57:09 <ais523> you can do git cherrypick, but that just automates applying the diff again 20:57:14 <elliott> sigh 20:57:38 <elliott> elliott@katia:~/Code/mcmap$ git diff 8f6f820~ 8f6f820 | git apply 20:57:40 <elliott> that should do it, right? 20:57:44 <ais523> IIRC, this was my example of the simplest thing you couldn't do in git 20:57:48 <elliott> heh 20:57:48 <ais523> I don't know what git apply does 20:57:56 <elliott> NAME 20:57:56 <elliott> git-apply - Apply a patch to files and/or to the index 20:57:59 <elliott> applies a git-diff :P 20:58:06 <fizzie> The cherry-pick interface isn't so bad either. 20:58:07 <ais523> seems about right 20:58:07 <elliott> error: patch failed: world.c:941 20:58:08 <elliott> error: world.c: patch does not apply 20:58:08 <elliott> ah good 20:58:11 <Vorpal> <elliott> I thought it was about your weird ultra-portability thing <-- hm, what thing? 20:58:17 <elliott> it, um, what 20:58:19 <Vorpal> secret project? 20:58:27 <ais523> secret project is not ultra-portable 20:58:29 <Vorpal> ah 20:58:34 <elliott> oh, it's already on that branch 20:58:35 <ais523> as you might have guessed from my questions about Linux kernel internals 20:58:36 <elliott> how did that happen? 20:58:37 <elliott> oh, hmm 20:58:38 <Vorpal> so different project then 20:58:44 <elliott> never mind, I know what happened 20:58:53 <elliott> it says I pushed that to the wrong branch because I was pushing the merge of it 20:58:56 <elliott> as well as some other stuff 20:59:00 <elliott> I got it right after all :) 21:03:13 -!- oerjan has quit (Quit: Good night). 21:05:16 -!- kmc has quit (Quit: Leaving). 21:05:55 <Vorpal> ais523, so what is that ultra-portability thing 21:06:09 <ais523> I don't know 21:06:16 <ais523> ask elliott, it's him who claimed it existed 21:06:25 <Vorpal> right 21:06:28 <Vorpal> elliott, what is it? 21:06:34 <elliott> Vorpal: mu 21:11:04 <Vorpal> elliott, what was/is that ultra portable thing you mentioned 21:11:49 <elliott> Vorpal: you misread 21:13:04 -!- nooga has quit (Ping timeout: 258 seconds). 21:22:44 <zzo38> Have the "which left right" like has been described before, but False is on the left. You can generalize (&&) and (||) for the Choose class and if it is swappable you can also generalize not. 21:23:23 <zzo38> (||) = flip $ flip which $ right 21:23:28 -!- DHeadshot has joined. 21:23:58 <zzo38> (&&) = flip $ which left 21:24:02 <zzo38> not = which right left 21:26:23 -!- DH____ has quit (Ping timeout: 260 seconds). 21:26:47 <elliott> you should use (f . g $ x) rather than (f $ g $ x) 21:27:09 <zzo38> OK 21:27:25 <elliott> (indeed many Haskellers would like to see $ become infixl) 21:27:34 <zzo38> OK 21:27:38 <elliott> (so that you can say (f $ really long argument $ really long argument) to apply a function with two arguments) 21:27:40 <zzo38> I understand you 21:27:53 <ais523> elliott: I like $'s current associativity 21:28:01 <ais523> perhaps because of the way I think about Haskell 21:28:05 <ais523> it basically becomes a pipeline 21:28:10 <elliott> ais523: no, you use . for that 21:28:13 <zzo38> I can understand why you want $ to be infixl 21:28:23 <Lymee> :t ($) 21:28:24 <lambdabot> forall a b. (a -> b) -> a -> b 21:28:25 <Lymee> :t (.) 21:28:25 <elliott> unix | is (.) not ($) 21:28:26 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 21:28:32 <elliott> (well, it's >>=, but it's definitely not ($)) 21:28:37 <Lymee> Is there really a big difference? 21:29:06 <zzo38> I think the UNIX | is (>=>), not ($) or (.) or (>>=) 21:29:36 <zzo38> The argument to the pipeline is then the stdin handle. 21:30:32 <zzo38> Result is stdout handle. 21:30:52 <zzo38> Or something like that. 21:31:12 <elliott> actually, | is like >>= in a way: http://okmij.org/ftp/Computation/monadic-shell.html 21:32:50 <zzo38> I read that and I disagree, because >>= requires a monad value and a function to monad value, while >=> is both the same like the command on both side of | is both the same. 21:33:31 <elliott> fair enough 21:36:01 <oklopol> i just measured my english speed wpm and got 206 21:36:09 <oklopol> how about you guys= 21:36:10 <oklopol> ? 21:36:20 <oklopol> erm 21:36:22 <oklopol> speech, not speed 21:37:42 <elliott> lol i was thinking you meant typing 21:37:51 <elliott> i just felt inferior, wasn't even the slightest bit sceptical 21:38:02 -!- quintopia has quit (Ping timeout: 250 seconds). 21:39:57 <oklopol> i'm not a very fast typist 21:40:12 <oklopol> i'm way slower than you for instance 21:40:19 <oklopol> mainly i'm just a very slow thinker though 21:41:21 <oklopol> 200 wpm is not *that* slow for speech 21:42:27 <oklopol> i should prolly measure in finnish though, english is hard to speak fast since it flows so nicely 21:42:35 <oklopol> because that means it also blurs nicely 21:45:30 <oklopol> 252, but there were some weird names in the text i read 21:45:41 -!- quintopia has joined. 21:45:52 <oklopol> that's less than a half of the world record :DD 21:46:03 <oklopol> interestingly it seems speaju 21:46:14 <oklopol> king is something women are better at than men 21:46:27 * oklopol keeps pressing the return button that's perfectly located 21:53:49 <oklopol> 150 with a longer sample :( 21:53:58 <oklopol> but finnish words are really long! 21:55:00 <oklopol> that was still 30 letters a second (including spaces :D) 21:56:14 <oklopol> http://www.youtube.com/watch?v=MzbnwASIFKU she's my idol 21:56:44 <oklopol> i wish i had books that weren't full of formulas i don't know how to read 21:58:39 <elliott> <oklopol> king is something women are better at than men 21:58:40 <elliott> king? 21:58:56 <oklopol> you have to read the next sentence 21:59:15 <oklopol> return button? aka enter 21:59:26 <elliott> speajuking 21:59:49 <oklopol> yes 22:00:10 <oklopol> did you measure yet 22:02:10 * Phantom_Hoover → sleep 22:02:36 -!- Phantom_Hoover has quit (Quit: Leaving). 22:02:55 -!- DHeadshot has quit (Quit: Bye). 22:03:13 -!- DH____ has joined. 22:07:31 -!- pikhq has joined. 22:07:46 -!- pikhq_ has quit (Ping timeout: 260 seconds). 22:12:29 <itidus20> back 22:13:27 -!- jix_ has joined. 22:13:49 -!- jix has quit (Read error: No route to host). 22:13:58 <itidus20> so the addition plane i was asking about, if x is 5 and y is 4 then z will be 9 22:14:30 <itidus20> and if x is 4 and y is 5 then z wll be 9 22:15:06 <oklopol> so the plain generated by (1, 0, 1) and (0, 1, 1), common example in linear algebra 22:16:00 <oklopol> what about it? 22:16:28 <oklopol> erm 22:16:29 <oklopol> plane 22:16:44 -!- Milo_ has joined. 22:16:47 <itidus20> i am curious what it looks like 22:17:34 <oklopol> it's just a slanted version of the xy plane 22:17:49 <itidus20> a 45 degree slant? 22:18:02 <oklopol> i don't think so 22:18:07 <itidus20> heheh ok ok 22:18:14 <oklopol> lemme see 22:19:26 -!- Milo_ has left. 22:20:45 <oklopol> the vector (1, 1) is lifted the most and it is lifted by 54 degrees 22:21:31 <itidus20> ok :P 22:21:37 <itidus20> fascinating 22:21:42 <itidus20> it sounds so arbitrary 22:22:13 <oklopol> well if you just look at the x axis, you see 45, and same with y axis 22:22:46 <oklopol> when you go along both, you get something similar to the "arbitrary" fact that the length of (1, 1) is sqrt 2 22:24:10 <itidus20> ahh 22:24:13 <itidus20> i see now 22:24:41 <itidus20> i think :P .. enough to let it go 22:25:42 -!- monqy has joined. 22:25:51 <itidus20> so if you view it by rotating x plane 45 degrees towards y plane, it will be 54 degrees 22:26:14 <itidus20> no that doesnt make sense.. ah i should just drop it 22:26:34 <itidus20> letting it go... ,,, 22:27:35 -!- FireFly has quit (Quit: FireFly). 22:27:55 <oklopol> another way to think about it is you take the unit circle and lift it with the addition plane. now the height at which points of the circle end up roughly tell you the change in angle, points of the x axis turn 45 degrees, but the point (1, 1)/sqrt2 is lifted more 22:28:06 <itidus20> http://www.wolframalpha.com/input/?i=z+%3D+x+%2B+y 22:28:27 <itidus20> this site tries its best 22:28:47 <oklopol> alpha is good for this sorta stuff 22:29:15 <itidus20> i might not have asked if i had this much faith in alpha 22:31:17 <itidus20> so binary mathematical operations can be defined as planes 22:31:31 <itidus20> or in the case of multiplication a hyperplane 22:31:44 <oklopol> continuous ones produce 2d manifolds yes 22:31:45 <itidus20> oops no i mean 22:31:49 <oklopol> not planes though 22:31:51 <itidus20> hyperbolid paraboloid 22:31:58 <itidus20> ^bolic 22:32:02 <oklopol> manifold means it doesn't have to grow linearly 22:32:09 <oklopol> it can have hills too 22:33:39 <itidus20> so division operation is funny looking.. would it be better in 4d? 22:36:07 <itidus20> ok sorry for 20 questions 22:37:30 -!- ive has quit (Remote host closed the connection). 22:37:36 -!- ive has joined. 22:40:21 -!- Jafet has quit (Quit: Leaving.). 22:42:32 -!- derdon has quit (Remote host closed the connection). 22:42:44 <oklopol> how would you do it in 4d? 22:44:03 <oklopol> the division operator is not continuous at y = 0 22:44:15 <oklopol> so you get a cut there 22:45:28 <zzo38> Are church numerals the only function of type forall a. (a -> a) -> a -> a ? 22:45:45 <elliott> yes 22:45:48 <elliott> modulo _|_s 22:45:51 <elliott> (i think) 22:46:23 <oklopol> i think so too, all you can do is apply the function to the a instance n times 22:46:28 <Sgeo> Dear Facebook: I consider myself to be more secure without a "security question", so don't conisider me to be at a medium level of security 22:46:42 <oklopol> heh 22:46:44 -!- CakeProphet has joined. 22:46:44 -!- CakeProphet has quit (Changing host). 22:46:44 -!- CakeProphet has joined. 22:46:56 <oklopol> well depends on the definition of security i guess 22:47:18 <elliott> Dear Sgeo: We give so many shits about what you think, and in our daily #esoteric logread, saw this, and immediately corrected the problem. Keep up the good work! Love, Facebook. 22:47:21 <oklopol> by a definition like that, i suppose a complicated password is very very insecure 22:47:47 <Vorpal> Sgeo, so fill in some random junk? Or the password itself? 22:47:49 <oklopol> choose something easy to remember like poop instead 22:48:08 <elliott> Vorpal: the response is probably stored with less security than the password 22:48:17 <Vorpal> oh true 22:48:20 <Sgeo> Vorpal, fortunately, I don't have to fill it in, unless I want Facebook to show me as more secure 22:48:28 <Vorpal> ah 22:48:30 <elliott> Can you _sleep_ without that being shown? 22:48:51 <Vorpal> depends on who he sleeps with I would guess. 22:49:04 <oklopol> true 22:49:09 <Vorpal> I mean, probably not with the facebook security manager. 22:49:17 <Vorpal> (or whatever) 22:50:45 <Vorpal> night → 22:50:51 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 22:52:28 <elliott> vorpal quits on nights now? 22:53:42 <oklopol> weiiiiiiird 22:53:55 <elliott> I know, right? 22:54:16 <oklopol> you do know right. 22:59:28 <elliott> I know rong. 22:59:35 <elliott> [asterisk]wrong 22:59:43 <elliott> hi im elliott and i have no number keys 22:59:48 -!- elliott has quit (Remote host closed the connection). 23:00:17 -!- elliott has joined. 23:00:27 <elliott> ais523: why on earth does git only push the current branch by default? 23:00:29 <elliott> it's infuriating 23:01:34 <elliott> ais523: also, admin question: can I move [[User:Javamannen]] to [[User talk:Javamannen]] on the wiki? it's ridiculous 23:01:45 <ais523> is there actually a discussion there? 23:01:57 <elliott> _three_ 23:02:03 <elliott> with _replies_ 23:02:05 <elliott> no wait, four 23:02:06 <ais523> heh 23:02:11 <elliott> one of them started by himself and the only reply being himself 23:02:16 <elliott> actually, that last section should be part of his user page 23:02:19 <elliott> but the rest is talk content 23:02:40 -!- augur has quit (Remote host closed the connection). 23:02:41 <ais523> elliott: restore the userpage section as it should be, copy/paste move the rest to talk (with a pointer to the history if you really care) 23:02:45 <ais523> and put a comment explaining 23:02:58 <elliott> it's probably best to move to talk, then copy-paste-move the section from talk to main 23:03:00 <ais523> (as it'll you-have-new-messages him, so there should at least actually /be/ a new message) 23:03:02 <elliott> as talk has had more activity 23:03:11 <ais523> perhaps, but that'll leave confusing redirects in the history 23:03:26 <elliott> that's just a merge commit :D 23:03:32 <elliott> actually, can't you move a page without redirecting? 23:03:34 <elliott> at least on wikipedia 23:04:06 <ais523> I can, you can't 23:04:08 <ais523> you have to be an admin 23:04:18 <elliott> ah 23:04:20 <elliott> you wanna do it, then? :P 23:04:24 <elliott> or make me admin ;D 23:04:25 <ais523> (well, I'm not an admin there either, technically, but it's unlikely that I wouldn't get admin rights by just asking for them) 23:04:33 <ais523> I can't on Esolang, the software's too old 23:04:38 <elliott> oh 23:04:42 <ais523> nor can I make you an admin either, I don't have the perms 23:04:48 <elliott> MY PLANS KEEP FAILING 23:15:36 <elliott> ais523: Is it a character flaw if I try and eliminate any linear search of a list? 23:16:08 <elliott> I just realised that this structure means I'll have to traverse UP TO LIKE SIX ELEMENTS sometimes, so I'm replacing it with a hash table 23:16:10 <elliott> [asterisk]table. 23:16:31 <ais523> elliott: heh 23:16:46 <ais523> I've been known to do lsearches deliberately and not lose sleep about it 23:17:24 <elliott> ais523: The comparison would even be a pointer equality, so it's not even six string comparisons. :( 23:17:45 <elliott> And it's a C array, so it's literally just for (unsigned i = 0; i < nfields; i++) if (array[i] == blah) return i; 23:17:58 <elliott> Where nfields is like seven at most 23:19:02 -!- Jafet has joined. 23:19:19 <elliott> Yeah, I think it's time to admit that I Have A Problem. 23:19:34 <elliott> Linearsearchophobes Anonymous. 23:21:33 <elliott> You know what, fuck it, I'm doing the linear search. 23:21:52 <oklopol> you can't do that by yourself 23:22:36 <elliott> I need whatshisname matrix. 23:23:06 <oklopol> james 23:23:15 <elliott> Yes. 23:23:24 <oklopol> jack might be better actually 23:23:32 <oklopol> maybe he's jack james matric 23:23:35 <oklopol> *x 23:24:32 <olsner> oh noes, too late for coding 23:25:05 <elliott> it's never too late for coding 23:25:27 <oklopol> -- jack james matrix 23:26:11 <oklopol> hey that's actually a great idea 23:26:15 <oklopol> elliott: say something really smart 23:27:18 <oklopol> elliott: please, this is the important 23:27:42 <elliott> oklopol: yes 23:28:03 <elliott> oklopol: you should do some coding, just to be really out of character 23:28:33 <oklopol> please say a general philosophical wisdomness 23:28:36 <elliott> ok 23:28:38 <elliott> an friend is a house 23:28:39 <oklopol> so i can try this 23:28:40 <elliott> but when a house disappears 23:28:43 <elliott> is the friend a friend? 23:28:53 <oklopol> -- oklopol ominovorol, when he was like 5 23:28:59 <elliott> yes 23:29:06 <elliott> <elliott> it's never too late for coding 23:29:06 <elliott> <oklopol> -- jack james matrix 23:29:09 <elliott> oh i thought that was a correction 23:29:12 <elliott> but you already corrected it 23:29:14 <elliott> i do that 23:29:15 <elliott> a lot :( 23:29:18 <oklopol> yes, that's why i needed to do this 23:29:18 <elliott> (attributing thigns) 23:29:20 <elliott> (to poeople) 23:29:21 <elliott> yes 23:30:07 <oklopol> actually i did some coding yesterday 23:30:16 <oklopol> and i've gotten sooooo slow :DDSDSD 23:30:19 <quintopia> is anyone here good at electronics? >.> 23:30:56 <itidus20> oklopol: so you could construct a calculator by modelling z = x + y as a solid object .. using two rods to position a variable height rod over a plane 23:31:12 <elliott> oklopol: what coding was it 23:31:24 <oklopol> elliott: making this game just to see if i still can.... 23:31:36 <itidus20> oklopol: does that make sense easy enough? 23:31:48 <oklopol> sure, i get it 23:31:54 <itidus20> nice idea huh 23:32:00 <oklopol> yes, totally awesome 23:32:05 <oklopol> i would so buy that 23:32:07 <itidus20> lol 23:32:14 <elliott> oklopol: what game 23:32:37 <oklopol> elliott: it's called claustrophobia, you are in this infinite matrix of blocks and all of them want to kill you 23:33:25 <elliott> oklopol: it's your mc-alike right 23:33:45 <oklopol> not really, but it's a subset of it i suppose, what isn't 23:34:18 <oklopol> well, okay it's not even a subset 23:34:47 -!- cheater has quit (Quit: Ex-Chat). 23:36:00 -!- cheater has joined. 23:36:17 <itidus20> i dunno how trivial those rods are that i described.. but a generalized version of the machine would involve loading in prebuilt formulas as phsyical manifolds 23:36:27 <oklopol> i have four grandiose projects i hope to create if i ever relearn programming, one if the total mc ripoff, one is the 2d space exploration game, two are secretish 23:36:53 <elliott> ph got gravity working btw 23:36:58 <oklopol> yeah right 23:37:03 <elliott> and then we found this javascript simulation of two-dimensional gravity that was way better 23:37:05 <elliott> and actually had controls :P 23:37:07 <oklopol> can i see it 23:37:11 <elliott> if I can find it 23:37:14 <oklopol> the better one 23:37:23 <elliott> I know 23:37:52 -!- cheater has quit (Client Quit). 23:38:21 <elliott> Well, the stuff I have in /msg is just babbling about Star Trek gravity, so no. 23:38:25 <elliott> It might be in the channel logs. 23:38:57 <elliott> oklopol: It did work in a stable manner, though. 23:39:54 <oklopol> so it didn't work, that was the whole issue 23:40:00 <elliott> oklopol: Eh? 23:40:16 <oklopol> well obviously you can implement newtonian gravity in 5 minutes 23:40:23 <elliott> oklopol: I said _did_ work, not didn't. 23:40:33 <oklopol> :D 23:40:37 <oklopol> ooooooops 23:40:43 <elliott> oklopol - an stupids. 23:40:54 <oklopol> -- everyone, all the time 23:41:23 -!- augur has joined. 23:41:23 <elliott> -- oklopol 23:41:30 <elliott> "* augur (~augur@129.2.129.32) has joined #esoteric" --oklopol 23:41:43 <oklopol> i'm a profound dude. 23:42:30 -!- sllide has quit (Read error: Connection reset by peer). 23:43:07 <quintopia> halp 23:43:15 <oklopol> that's not english 23:43:24 <monqy> hlep 23:43:30 * augur bits oklopol 23:43:43 <quintopia> monqy: hepl 23:44:00 <quintopia> tell me you know 23:44:04 <quintopia> things that i dont 23:44:59 <augur> bites even! D: 23:44:59 <quintopia> about voltage regulators 23:45:40 <oklopol> ah that's better. 23:46:02 <oklopol> voltage regulators? you mean those things that keep the voltage at a constant 23:46:32 <quintopia> i take it you cant help 23:46:44 <quintopia> where do i find some electronics makers 23:46:45 <Sgeo> I don't think this monitor is meant to be detatchable 23:46:52 <oklopol> i'm pretty sure i can't, now answer mine 23:47:04 -!- Patashu has joined. 23:47:46 <oklopol> or just some thingie that removes spikes and shit and is of no theoretical interest 23:48:04 <oklopol> augur: i still have a scar from this guy biting me in the fifth grade 23:48:33 <augur> oklopol: oh my 23:48:43 <augur> that fun huh 23:49:05 <oklopol> hmm? 23:49:23 <oklopol> i only had straight sex in the fifth grade, and it was just finger sex 23:49:44 <Gregor> ... 23:50:13 <copumpkin> that's a good quote to remember 23:50:19 <copumpkin> what's the quote bot around here? 23:50:37 <itidus20> ^style ff7 23:50:37 <fungot> Selected style: ff7 (Full script of the game Final Fantasy VII) 23:50:41 <Gregor> Use `addquote <whatever> 23:50:44 <quintopia> yes oklopol. it maintains a voltage near a constant 23:50:46 <itidus20> thank you sir fungot 23:50:47 <fungot> itidus20: now's our chance. we must search for him too! it's attacking!? talk! 23:51:10 <itidus20> fungot do you like haskell? 23:51:10 <fungot> itidus20: corel was burned down by the gold saucer... think his name was close ever since that time. never know what time it wasn't a mistake bringing you here before you catch the chocobo race, please leave. so almost everything here can compare with the shinra up to shinra, inc. 23:51:19 <oklopol> i dated the school slut for a while but she dumped me for a 15yo, wanted me back later but i guess i was still mad at her, such great drama 23:51:43 <oklopol> quintopia: ah we play with those all day in circuit theory 23:52:07 <itidus20> ^style 23:52:07 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7* fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube 23:52:15 <quintopia> who should i ask questions about them 23:52:30 <oklopol> is there something to know about them? 23:52:30 <itidus20> ^style nethack 23:52:30 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal) 23:52:34 <quintopia> who knows the emag equations and shit 23:52:37 <oklopol> quintopia: ais might know 23:52:47 <oklopol> ais523 to be precise 23:52:56 <quintopia> ais523 is a smart gu6 23:53:07 <oklopol> he's an electronics guy 23:53:30 <ais523> "emag equations"? 23:53:44 <ais523> I might be an electronics person, but I'm bad at remembering nontrivial equations 23:53:52 <oklopol> emag? 23:54:04 <oklopol> with just voltage regulators and resistors, the equations are trivial 23:55:11 <elliott> ais523 is definitely an electronics guy 23:55:13 <elliott> SORRY MAN 23:55:23 <quintopia> yes they should be trivial 23:55:28 <quintopia> but i dont remember them 23:55:35 <quintopia> so they are nontrivial to me 23:55:40 <oklopol> remember them? 23:55:40 <ais523> someone tell me what emag stands for! 23:55:53 <oklopol> oh emag was mentioned by quintopia 23:56:07 <quintopia> ais523: can pm you a question? 23:56:24 <ais523> quintopia: unless I have you on ignore, yes, that's how IRC works 23:56:27 <ais523> and I don' think I have you on ignore 23:56:36 <quintopia> im being polite 23:56:38 <ais523> or I wouldn't have been able to notice you'd asked me in-channel 23:56:42 <ais523> well, fair enough 23:56:53 <ais523> it just seems like a bit of a redundant question 23:58:00 <elliott> everyone ask ais523 private questions 23:58:09 <elliott> we must destroy the forces of politeness :( 23:58:10 <oklopol> http://www.utdallas.edu/~cantrell/ee4302/memorize.pdf i certainly have never heard most of these 23:58:28 <elliott> memorize.pdf good name 23:59:10 <oklopol> i just know abstract circuits with voltage regulators and resistors, you don't need to remember anything to solve those 23:59:37 -!- ubuntu__ has joined. 23:59:42 <oklopol> well, except U = RI 2011-09-12: 00:01:15 -!- ubuntu__ has changed nick to cheater. 00:04:46 <elliott> ais523: git is the only VCS which gets worse the better you use it 00:04:49 <elliott> except for maybe CVS and SVN 00:05:15 <ais523> heh 00:05:19 <ais523> SourceSafe? 00:07:28 <elliott> ais523: does that even classify as a VCS? 00:08:06 <ais523> it's an, umm, attempt at a VCS 00:10:15 <elliott> sg. we really need sg. sg. 00:10:38 <monqy> sg 00:10:54 <elliott> sg. 00:11:06 <elliott> ais523: did you like my idea to avoid the clash with the Unix sg? 00:11:12 <elliott> (see if our argument is a group, and if so, behave like sg) 00:11:25 <elliott> just don't have a group named commit 00:11:47 <ais523> haha, that's ridiculous 00:12:01 <Gregor> Alternative: Name Scapegoat's command s🐐 00:12:38 <ais523> Gregor: a little hard to type 00:12:43 <Gregor> Pff 00:12:52 <elliott> ais523: btw, you know how you proposed hashing minichanges as hash/0, hash/1, etc.? 00:13:12 <elliott> where hash is the hash of the containing changeset 00:13:28 <ais523> yep 00:13:54 <elliott> ais523: I figured out why that wouldn't work, which is a better objection than me just not liking it 00:14:03 <elliott> ais523: the hash of the changeset /depends on the hashes of the contents/ 00:14:21 <elliott> so hash_of(changeset {hash/0, hash/1}) must == hash 00:14:30 <ais523> ah, hmm 00:14:33 <ais523> it's possible to work around that 00:14:34 <elliott> which is (a) ridiculous, (b) hopefully impossible, or the hash function picked is really weak :P 00:14:37 <ais523> but I see why you might not want to 00:14:43 <elliott> ais523: probably; what were you thinking? hash /without/ the contents? 00:14:52 <elliott> in that case, a change with identical metadata hashes identically, despite being non-equal 00:14:56 <ais523> name the contents as self/0, self/1, etc 00:14:59 <elliott> rare, yes, but it means you know the guarantees are broken from the start 00:15:02 <elliott> ais523: ah, ew 00:15:17 <ais523> the whole point of the plan was to make the things smaller 00:15:23 <elliott> well, yes 00:15:24 <elliott> but still, ew 00:15:43 <elliott> I think you can still avoid making them bigger 00:15:53 <elliott> but I also think that we should get something that works before worrying about that 00:16:26 <ais523> fair enough 00:18:34 <elliott> ais523: btw, one of the most important parts of sg that we haven't figured out yet -- 00:18:37 <elliott> ais523: the diff algorithm 00:18:55 <elliott> as in, going from filetree A and B, and producing a scapegoat change that turns A into B, and is preferably quite intelligent, using move changes and the like 00:18:58 <ais523> just using diff(1) should be enough to get something working, I think 00:19:03 <elliott> it's not 00:19:11 <elliott> because it doesn't handle things that are very important for sg, like moving 00:19:33 <elliott> ais523: also, if there /is/ an underlying diff algorithm, I'd prefer patience diff 00:19:41 <elliott> (advantages and example of betterness at http://bramcohen.livejournal.com/73318.html) 00:19:45 <ais523> what's patience diff? 00:19:48 <elliott> see link :P 00:19:58 <elliott> it's supposedly a bit slower than traditional diff, but who cares 00:20:11 <ais523> ah, hmm 00:20:16 <elliott> it also links to examples 00:20:20 <elliott> like http://kerneltrap.org/mailarchive/git/2009/1/2/4574424 00:23:04 <elliott> does anyone know how to go to a previous verison of a moinmoin page? 00:23:07 <elliott> recent changes doesn't help much 00:25:05 -!- DH____ has quit (Read error: Connection reset by peer). 00:25:14 -!- DH____ has joined. 00:25:16 <elliott> ais523: so incidentally, I'd be interested in seeing how sg's merge compares to precise codeville merge 00:25:30 <elliott> and whether that merge might be useful as the first thing sg tries if the standard application fails 00:25:54 <elliott> (description at http://revctrl.org/PreciseCodevilleMerge, but it's partially spambotted) 00:26:04 <ais523> sg's merge is very conservative; if the merge works at all, it's pretty much 100% going to be correct (anything short of 100% is an error) 00:26:21 <elliott> aha 00:26:22 <elliott> http://revctrl.org/PreciseCodevilleMerge?action=recall&rev=19 00:26:25 <elliott> there's a non-spambot version 00:26:34 <elliott> ais523: it's easy to prove it's less than 100% 00:26:45 <ais523> hmm, how? 00:26:54 <elliott> the only definition of "correct" is "what would be written if the changes were written by developers acting sequentially" 00:27:02 <elliott> consider if someone adds A(); somewhere in file a.c 00:27:08 <elliott> and someone else adds B(); somewhere in b.c 00:27:16 <elliott> and it turns out that you can't call B() after A() ever, it causes a complete segfault 00:27:21 <ais523> ah, I see 00:27:25 <elliott> that obviously applies cleanly, but it's an incorrect merge 00:27:50 <ais523> I think my definition is "the obvious combination of the two pieces of code without looking at context" 00:28:14 <ais523> a program where A() and B() had that sort of dependency would be pretty unmaintainable, unless the two functions were designed to do basically the same thing and yet added in different locations for some reason 00:28:28 <elliott> that's a pathological example, there are obviously others 00:28:30 <ais523> hmm, in fact, suppose someone adds a call to free() at the start of a list of deallocations 00:28:36 <ais523> and someone else adds a call to free() at the end 00:28:43 <elliott> yep 00:28:45 <elliott> i was just about to say something similar 00:28:50 <elliott> I typed "for instance, two people printing the same debug info in a different manner" 00:28:52 <elliott> and was going to add 00:28:55 <elliott> but separated by whitespace a bit 00:28:59 <ais523> I can't think of any plausible way for a VCS, not even sg, to automatically realise it should take one version not both 00:29:00 <elliott> so it's not in the "same" place but it effectively is 00:29:07 <ais523> without knowing the semantics of free 00:29:10 <elliott> ais523: indeed; a merge algorithm is necessarily imperfect 00:29:15 <ais523> TODO: tell sg the semantics of free 00:29:19 <elliott> haha 00:29:32 <elliott> ais523: thankfully, static analysis can catch that one 00:29:39 <elliott> I bet clang warns for a double-free like that 00:30:20 <elliott> ais523: but yeah, it's about minimising false positives 00:30:40 * elliott reads more about precise codeville merge 00:31:04 <ais523> I think clang's overrated 00:31:09 <elliott> really? 00:31:15 <elliott> the kind of warnings they do are very impressive 00:31:19 <ais523> I thought it was amazing based on what I heard about it, but after comparing it to gcc, gcc just looked like the better system all round 00:31:25 <elliott> howso? 00:31:41 <ais523> clang makes it easier to add new analyzers, so it's better for writing new sorts of warnings in 00:31:49 <ais523> but gcc's internals are more flexible 00:31:51 <elliott> the only place where it's inferior to gcc that I know are: some gcc extensions not implemented, and it produces slightly less speed-efficient code at gcc's best 00:31:55 <ais523> clang just makes so many assumptions, it makes my head hurt 00:32:03 <ais523> even if the assumptions are all correct in practice 00:32:12 -!- DHeadshot has joined. 00:32:14 -!- DH____ has quit (Read error: Connection reset by peer). 00:32:20 <elliott> ais523: with all due politeness (<-- this is how I say I'm about to be rude), comparing two C compilers based on how suitable for gcc-bf they are is bullshit 00:32:30 <ais523> haha 00:32:55 <ais523> platonically, gcc is the only suitable compiler for gcc-bf 00:33:01 <ais523> or it wouldn't be gcc-bf, but clang-bf or whatever 00:33:05 <elliott> yes yes 00:33:11 <elliott> "Convergence is the behavior where an identical change is made in two different branches, like this:" 00:33:17 <elliott> wow, people have actually /thought/ about this? 00:33:28 <ais523> elliott: git doesn't work at all unless that's implemented 00:33:49 <elliott> "Currently hardly any version control system properly supports convergence." 00:33:50 <elliott> heh 00:33:50 <ais523> because its view of the world is broken and it needs to count changes made twice as made once to avoid breaking whenever three-way merges are done at all 00:33:57 <elliott> "Convergence is sometimes referred to as 'implicit cherry-picking' because it allows cherry-picking to be done offline using diff and patch, and the system figures out what happened. This is in contrast to explicit cherry-picking, which requires the user give semantic input describing the cherry-pick to the system, which is the style supported by Darcs." 00:33:58 <elliott> hmm 00:34:13 <elliott> I think sg can do convergence just fine, in its "first-try" merge algorithm 00:34:20 <elliott> (it's not a merge if it cleanly applies :P) 00:34:22 <ais523> yep, it's just not necessary 00:34:31 <elliott> well, 00:34:32 <elliott> "Convergence is sometimes referred to as 'implicit cherry-picking' because it allows cherry-picking to be done offline using diff and patch, and the system figures out what happened. This is in contrast to explicit cherry-picking, which requires the user give semantic input describing the cherry-pick to the system, which is the style supported by Darcs." 00:34:33 <elliott> is quiet nice 00:34:34 <elliott> quite 00:34:35 <ais523> as in, sg works fine without convergence being implemented 00:34:38 <elliott> right 00:34:40 <ais523> but convergence just makes it better 00:34:44 <elliott> ais523: btw, what I was going to say but then forgot to: 00:35:11 <elliott> ais523: the whole "two filetrees into a change" thing is Yet Another Example of Reifying Intent, Which Has Plagued Computing For A Long Time 00:35:31 <ais523> oh dear, a Kelly misquote 00:35:50 <elliott> the idea is to reconstruct the changes the user intended from the "before" and "after"; the more accurately you reify that intent, the higher-quality the result (because it merges better, etc.) 00:36:10 <elliott> you can even ask the user to help it by telling the system some of the intent explicitly, e.g. "sg mv a.c b.c" 00:36:18 <elliott> or "sg split bigfile.c smallfilea.c smallfileb.c" 00:36:38 <elliott> (which basically means "I removed this file, created two new ones; and inside both of those new ones, there's a move change from bigfile.c" 00:36:39 <elliott> ) 00:36:47 <ais523> indeed 00:36:58 <ais523> in fact, all Unix shell commands should be prefixable by sg 00:37:05 <ais523> to tell it what you're doing 00:37:11 <elliott> haha 00:37:12 <ais523> imagine if you could do sg cut 00:37:14 <elliott> that's probably not a good idea :P 00:37:21 <ais523> and it knew that you were separating the files into columns 00:37:45 <ais523> at least sg tr is a semantically sensible operation 00:42:44 <elliott> ais523: incidentally, instrumenting an editor to use sg, not to commit every single change done, but to, when the time to commit comes, use its information on what editing commands were run to provide a more accurate change than a system that had to reify more intent, would work well 00:42:50 <elliott> ais523: the problem is, psychology 00:43:07 <ais523> what do you mean by psychology, there? 00:43:14 <elliott> ais523: if I knew my editor was watching my every move to try and figure out what I'm doing, I'd be utterly paranoid not to run editing commands that "don't match my intent" 00:43:23 <elliott> so I'd be slowed down immensely trying to Do The Right Thing 00:43:25 <ais523> oh, I see 00:43:30 <elliott> maybe it's just me, but IMO that kills the idea :) 00:43:41 <elliott> which is annoying; why can't we all be robots, it'd work great then 00:45:25 <elliott> incidentally, who the hell designed cpp? 00:46:10 <ais523> C++, or the preprocessor? 00:46:19 <elliott> preprocessor 00:46:34 <ais523> I don't know, but it seems to already have been in common use by the time of K&R1 00:46:54 <elliott> it's awful :( 00:46:57 <ais523> the preprocessor's a hack around a lot of deficiencies of languages at the time (specifically C, but others too I think) 00:47:01 -!- MDude has quit (Read error: Connection reset by peer). 00:47:11 <elliott> here, you need to suffer a bit; incoming flood 00:47:11 <elliott> #define PACKET(id, cname, scmname, nfields, ...) \ 00:47:12 <elliott> /* terminate the last field_num++ of the previous packet */ \ 00:47:12 <elliott> ; \ 00:47:12 <elliott> packet_id = id; \ 00:47:12 <elliott> field_num = 0; \ 00:47:13 <elliott> __VA_ARGS__ 00:47:15 <elliott> #define FIELD(type, cname, scmname) \ 00:47:17 -!- MSleep has joined. 00:47:17 <elliott> packet_field_symbol_names[packet_id][field_num] = scm_from_utf8_symbol(scmname); \ 00:47:20 <elliott> field_num++ /* a comma appears next */ 00:47:21 <elliott> #include "protocol.def" 00:47:23 <elliott> /* terminate the very last field_num++ */ 00:47:25 <elliott> ; 00:47:27 <elliott> #undef FIELD 00:47:29 <elliott> #undef PACKET 00:47:47 <Jafet> You can't read that? 00:47:50 <ais523> haha; did you write that? 00:47:51 <Jafet> What's wrong with you? 00:47:55 <ais523> Jafet: it's an inside-out function call, I think 00:48:10 <ais523> elliott: the Secret Project has a #define / #include / #undef sequence 00:48:14 <ais523> but that's to avoid name clashes in header files 00:48:36 <elliott> <ais523> Jafet: it's an inside-out function call, I think 00:48:45 <elliott> umm, that part's a standard technique 00:48:46 <Jafet> Actually, the last part is quite funny 00:48:51 <elliott> it's just X-Macros 00:48:54 <Jafet> I don't suppose protocol.def is C, is it. 00:48:57 <ais523> I had to include both the kernelspace and userspace versions of a particular struct (I forget which), and they had the same name 00:49:03 <elliott> Sure it is, Jafet 00:49:03 <elliott> PACKET(0x00, KEEPALIVE, "keepalive", 0, 0) 00:49:03 <elliott> PACKET(0x01, LOGIN, "login", 4, FIELD(FIELD_INT, ID, "id"), FIELD(FIELD_STRING, NAME, "name"), FIELD(FIELD_LONG, SEED, "seed"), FIELD(FIELD_BYTE, WORLD, "world")) 00:49:06 <elliott> PACKET(0x02, HANDSHAKE, "handshake", 1, FIELD(FIELD_STRING, DATA, "data")) 00:49:07 <elliott> PACKET(0x03, CHAT, "chat", 1, FIELD(FIELD_STRING, MESSAGE, "message")) 00:49:09 <ais523> elliott: it may be a standard technique, but that doesn't prevent it being an inside-out function call 00:49:10 <elliott> PACKET(0x04, TIME, "time", 1, FIELD(FIELD_LONG, MINUTES, "minutes")) 00:49:11 <elliott> [...] 00:49:13 <elliott> Like I said, X-Macros 00:49:21 <elliott> ais523: true, but that's not the terrifying part 00:49:26 <elliott> and yes, I wrote it 00:49:34 <elliott> it was the only thing that would work :( 00:49:55 <ais523> after doing that for a bit, people normally end up inventing DSLs 00:49:58 <ais523> at least, I do 00:49:59 <elliott> here's another great one 00:50:00 <elliott> switch (p->type) 00:50:00 <elliott> { 00:50:00 <elliott> #define PACKET(id, cname, scmname, nfields, ...) \ 00:50:00 <elliott> case id: \ 00:50:00 <elliott> return sym_packet_##cname; 00:50:03 <elliott> #include "protocol.def" 00:50:06 <elliott> #undef PACKET 00:50:08 <elliott> default: 00:50:10 <elliott> wtff("Invalid packet type %u", p->type); 00:50:11 <elliott> } 00:50:12 <ais523> OIL improved the maintainability of C-INTERCAL's optimiser by orders of magnitude 00:50:13 <elliott> ais523: a DSL that did what? compile to C? 00:50:18 <ais523> yep 00:50:19 <elliott> this is embedded in a bunch of other C code 00:50:27 <elliott> ais523: well, protocol.def /is/ compiled 00:50:37 <elliott> from protocol.txt, which just looks like 00:50:37 <elliott> entity_equipment: 0x05 00:50:37 <elliott> - int entity: entity ID 00:50:37 <elliott> - short slot: slot (0 = held, 1..4 = armor) 00:50:37 <elliott> - short item: item ID 00:50:37 <elliott> - short damage: damage 00:50:38 <ais523> yep, you've basically written a DSL in cpp 00:50:43 <elliott> no 00:50:47 <elliott> protocol.def is compiled 00:50:49 <elliott> from the above 00:50:52 <elliott> (well, a bunch of the above) 00:51:00 <ais523> oh, I see, you're compiling from a text description to some code that cpp compiles into some other code 00:51:00 <elliott> the thing is, the protocol.pl script that processed it was creating a C file and a header 00:51:10 <elliott> and I needed to use the same information in a bunch of places 00:51:20 <elliott> it'd suck to make it even more complicated and spit out a bunch of files 00:51:26 <elliott> which would then have to be pasted slapdash with cpp into other files 00:51:32 <elliott> even though the usage was strictly localised 00:51:37 <elliott> so I made it spit out an X-Macro file instead 00:51:50 <elliott> it's simplified everything a lot, but occasionally it gets ugly like that :P 00:51:58 <ais523> OIL generates a bunch of files as its output purely to stop gcc running out of memory trying to compile it 00:52:09 <elliott> incidentally, all that comma termination stuff would be unnecessary if you could turn 00:52:10 <elliott> a, b, c 00:52:10 <elliott> into 00:52:11 <elliott> a; b; c 00:52:12 <elliott> with cpp 00:52:14 <elliott> I think you _can_ 00:52:16 <elliott> but it'd be really ugly 00:52:43 <Jafet> elliott: how does a C file have "field_num++" at the end 00:52:58 <ais523> elliott: you can for any finite number of fields, I think; I'm not sure about infinite numbers of fields 00:53:06 <ais523> as in, unbounded 00:53:41 <elliott> Jafet: the field_num++ is in that FIELD() declaration 00:53:52 <elliott> read the macros more carefully, then look at my pasted snippet of protocol.def 00:53:54 <elliott> (it's all like that) 00:54:00 <elliott> ais523: chaos-pp does that kind of stuff 00:54:21 <elliott> and various other seemingly impossible cpp things 00:54:31 <elliott> "The documentation for CHAOS_PP_IS_EMPTY_NON_FUNCTION says: [quote] If __VA_ARGS__ is empty, this macro expands to 1. Otherwise, it expands to 0." 00:54:35 <elliott> combined with iteration, that should make it pretty easy 00:54:56 -!- CakeProphet has quit (Ping timeout: 260 seconds). 00:55:08 <elliott> hmm, that shouldn't even be possible 00:55:17 <elliott> you have to specify at least one variable argument, according to C 00:55:27 <elliott> oh, wait 00:55:29 <elliott> you can pass an empty argument 00:55:32 <elliott> which isn't the same thing as passing nothing 00:55:36 <elliott> cpp has /really/ weird semantics 00:55:49 -!- DHeadshot has quit (Ping timeout: 260 seconds). 00:56:25 <elliott> ais523: yikes, take a look at the macro at the bottom of http://bytes.com/topic/c/answers/541521-behavior-variadic-macro#post2113119 00:56:27 -!- CakeProphet has joined. 00:56:27 -!- CakeProphet has quit (Changing host). 00:56:27 -!- CakeProphet has joined. 00:56:30 <elliott> s/macro/macros/ 00:57:43 <ais523> how does it manage that without any additions? 00:58:09 <ais523> oh, it seems to have dependencies on macros not mentioned, like FPP_IF 00:59:44 <elliott> yep, but still, yikes 01:06:01 <elliott> I'm terrible at cpp programming :( 01:06:06 -!- Jafet1 has joined. 01:06:53 <monqy> one time I tried cpp programming 01:06:57 <monqy> it was hellish 01:07:11 -!- Jafet has quit (Ping timeout: 276 seconds). 01:07:18 <monqy> maybe I should try again 01:08:30 -!- Jafet1 has changed nick to Jafet. 01:12:07 -!- MSleep has changed nick to MDude. 01:17:22 <ais523> `addquote <monqy> one time I tried cpp programming ​ <monqy> it was hellish ​ <monqy> maybe I should try again 01:17:24 <HackEgo> 651) <monqy> one time I tried cpp programming ​ <monqy> it was hellish ​ <monqy> maybe I should try again 01:17:55 <ais523> such a great description of this channel in three lines of IRC 01:18:54 <elliott> it bothers me that cpp is the one programming language ican't learn 01:19:15 <elliott> s/ican't/i can't/ 01:27:31 <Sgeo> cpp as in C preprocessor? 01:27:49 <monqy> hi 01:27:54 <elliott> Yes. 01:28:22 <ais523> elliott: can you learn INTERCAL? 01:29:00 <elliott> ais523: wow, what a zzoesque phrasing 01:29:12 <elliott> but, admittedly, probably not 01:29:21 <elliott> I might be able to, but it'd be a slow process 01:29:23 <ais523> elliott: I know, but it wouldn't have been a correct statement if I'd phrased it more normally 01:29:30 <ais523> well, correct reference in the question 01:29:38 <ais523> I should teach INTERCAL 01:29:48 <ais523> it really isn't as bad as it looks, although it's still quite bad 01:30:33 -!- CakeProphet has quit (Quit: Reconnecting). 01:30:52 -!- CakeProphet has joined. 01:31:14 <CakeProphet> cpp is the best language of all. 01:31:18 <elliott> ais523: I'd attend 01:31:22 <ais523> anyone here confident about Windows 8, btw? 01:31:28 <elliott> confident howso 01:32:09 <ais523> that it's going to sell well (relative to other Windows versions)? that it's going to be usable without driving you mad? that it's going to have features you'd want in an OS (or Windows version specifically)? 01:32:29 <elliott> I can say that the latter is false, mostly because it's false for every OS in existence 01:32:43 <elliott> (it's probably false for @ too; by no means will @ be good) 01:33:04 <ais523> well, hmm, a greater proportion of the features you want than Windows typically has atm? 01:33:13 <elliott> ais523: really though, the tablet-focused stuff looks nice fo a tablet, but not for a mouse 01:33:14 <ais523> as in, you can think an OS is very bad but still admit it's an improvement 01:33:16 <elliott> or tocuhpad 01:33:19 <monqy> regarding < ais523> elliott: can you learn INTERCAL? i thought zzo too 01:33:26 <ais523> I think so too 01:33:40 <elliott> I have a feeling Windows 7 is somewhat of a local maxima 01:33:48 <elliott> as in, the best you can make Windows without Doing Something Different 01:33:52 <elliott> so I'm not surprised they're trying something radical 01:34:21 <elliott> personally, I wish everyone would stop Doing Something Different, it's driving me away from Linux DEs 01:34:36 <elliott> at least my Something Different is something entirely new, not an upgrade :) 01:34:47 <ais523> Windows 7 was pretty Something Differenty in several ways 01:35:00 <elliott> it was? 01:35:01 <ais523> I was so glad when I discovered I could change the taskbar back to a reasonably XP-like style 01:35:05 <elliott> it was pretty similar to Vista 01:35:14 <elliott> haha, that's insane 01:35:25 <elliott> the taskbar is the best taskbar in any OS, as long as Aero is on 01:35:30 <elliott> (otherwise the window switch is useless) 01:35:31 <ais523> although doing that causes it to break muscle memory on the quick launch area 01:35:51 <ais523> elliott: it becomes unusable as soon as you open two windows of one program 01:36:11 <ais523> as it then requires two clicks in order to open either of them via the taskbar, and you don't know where the second click should be until you've already made the first one 01:36:30 <ais523> which is pretty much unforgivable design 01:36:35 <elliott> that's acceptable for me, because the alternative is a taskbar with a hundred windows 01:36:41 <elliott> so I don't know where to click... full stop 01:36:47 <ais523> doing this for tabs within IE is even worse, why can I not open IE then use its normal tab-change method? 01:36:59 <elliott> every browser does that now, not IE 01:37:03 <elliott> but that's also incredibly useful for me 01:37:07 <ais523> even worse 01:37:16 <ais523> I typically have 4-6 windows open per desktop 01:37:24 <elliott> I don't use desktops 01:37:25 <ais523> and arrange them in a standard order on the taskbar so that muscle memory works 01:37:31 <ais523> neither to I, normally 01:37:34 <ais523> *do 01:37:43 <ais523> but I'll use a second one to do an entirely unrelated bunch of work 01:37:45 <elliott> your computer has fooled you being a manual window manager :) 01:38:00 <ais523> elliott: I'm not sure if it's "fooled" 01:38:05 <ais523> rather, my computer allows me to be a manual window manager 01:38:19 <elliott> well, it's making you waste your time 01:38:28 <elliott> that's fooling whether you think you want it or not 01:38:34 <ais523> nah, I can rearrange the windows while waiting for them to load 01:38:44 <ais523> loading KDE takes a while 01:38:50 <ais523> umm, Qr 01:38:52 <ais523> *Qt 01:39:01 <ais523> together with whatever KDE stuff's needed to run KDE stuff outside its shell 01:39:13 <elliott> your only windows are KDE? 01:40:03 <ais523> no, but Konversation loads first 01:40:08 <ais523> Evolution and Firefox take longer 01:40:24 <ais523> (actually, Epiphany consistently loads first, but I don't use it until after everything else is loaded, and don't always use it anyway) 01:40:42 <ais523> my windows are Konversation/Evolution/Firefox/Epiphany atm 01:40:48 <ais523> sometimes there'll be a terminal window too; there was earlier 01:40:53 <elliott> Have you considered using ratpoison? :p 01:41:13 <ais523> I might need to change DE if Gnome have screwed up as badly as I've heard 01:41:23 <ais523> but what I'm doing atm works, and doesn't take anything away from my workflow 01:41:31 <ais523> also, I use Compiz features on a regular basis 01:41:33 <elliott> I wsa referring to the fact that you have a constant set of windows 01:41:36 <elliott> was 01:41:39 <ais523> so I'm not sure I'd be happy with any other compositor 01:41:42 <ais523> elliott: oh, that's only when online 01:41:48 <elliott> ratpoison doesn't even composit 01:41:48 <ais523> I have a completly different constant set of windows when offline 01:42:00 <ais523> normally terminal/emacs/sometimes epiphany 01:42:09 <ais523> and five or more, which is the game I use to pass time while compiling 01:42:18 <elliott> well, with ratpoison basically just lets you have a constant set of windows full-screened... you can even create a new fullscreened window 01:42:24 <elliott> and if you're /really/ daring, manually tile them 01:42:47 <ais523> also, although I normally keep windows constantly fullscreened (with the exception of five or more), I rely on the ability to unfullscreen them on occasion 01:43:00 <ais523> really, I suppose my case is that there are many things I do as standard 01:43:03 <elliott> for what purpose, out of curiosity? 01:43:04 <ais523> but I like to be able to deviate from them too 01:43:19 <ais523> elliott: say I have two terminal windows, and want to turn one always-on-top and semitransparent, then line them up 01:43:22 <ais523> so I can visual-diff them 01:43:31 <elliott> that's awful 01:43:44 <ais523> I use always-on-top a lot for watching people play NetHack in a corner of the screen while doing other things, too 01:43:49 <ais523> why are you calling that awful? 01:43:57 <elliott> diff via compositing 01:43:58 <ais523> it's a useful operation and one that couldn't be achieved easily by other means at all 01:44:04 <pikhq> man diff 01:44:13 <ais523> elliott: well, how else are you supposed to diff two telnet sessions? 01:44:21 <ais523> or, well, more commonly ssh sessions 01:44:25 <ais523> but it's the same principle 01:44:34 <ais523> a compositor is clearly the right program for that 01:44:36 <pikhq> man expect 01:44:37 <elliott> ;__________-; 01:44:40 <ais523> likewise, how do you diff GUI images 01:44:41 <elliott> s/-;/;/ 01:44:42 <ais523> pikhq: screen-oriented 01:44:58 <ais523> I could probably write an expect program combined with a VT100 parser, and spend a week or so to get something around half as useful 01:45:02 <ais523> or I could just use Compix 01:45:04 <ais523> *Compiz 01:46:06 <pikhq> So... You're having to automate screen-oriented UIs? 01:46:22 <pikhq> Have you considered grabbing a bludgeoning weapon and hunting down the author? 01:46:35 <elliott> what? 01:46:41 <elliott> ais523 never said he was automating anything 01:46:48 <pikhq> Oh, right. 01:47:05 <pikhq> Have you considered just grabbing a bludgeoning weapon regardless? 01:47:07 <pikhq> :P 01:47:41 <ais523> pikhq: the actual use-case is that I have a NetHack game, and a map that I'd like to change that NetHack level to look like 01:47:53 <ais523> so I can see a shadow of the map and can try to alter the level itself to look the same 01:48:58 <ais523> can you suggest a simpler way to do that than using a compositor feature that's just perfect for the purpose? 01:49:12 <ais523> (admittedly, one that leads me to occasionally invisibilise windows by mistake) 01:49:17 <elliott> btw, I can't think of a better way either, and I'm going to blame it on Unix 01:49:25 <elliott> because I blame almost everything on Unix 01:49:42 <ais523> you /will/ shout at me for my second-most-common use of the feature, which is seeing a compile happen behind my editor 01:49:50 <elliott> augh 01:49:51 <ais523> giving me two full-screen programs running at once 01:49:53 <elliott> it's going to be worse than shouting 01:49:58 <elliott> you're in Birmingham, right? 01:50:05 <ais523> yes 01:50:18 <elliott> expect me 01:50:20 -!- elliott has quit (Quit: Leaving). 01:50:24 <ais523> but you can't shout loud enough to reach Birmingham from Hexham 01:50:55 <ais523> what would be awesome: if elliott just wanted to go to bed and thought that was a perfect moment to make an amusing exit 01:51:08 <ais523> it'll take him a while to get here unless he can afford a taxi over that distance 01:51:23 <ais523> most public transport doesn't work at night, and elliott doesn't have a driving license 01:51:32 -!- elliott has joined. 01:51:34 <elliott> turns out there aren't trains at this time 01:51:39 <pikhq> No shit. :P 01:51:47 <ais523> [02:51] <ais523> it'll take him a while to get here unless he can afford a taxi over that distance 01:51:48 <ais523> [02:52] <ais523> most public transport doesn't work at night, and elliott doesn't have a driving license 01:52:00 <elliott> hmm, I wonder what a taxi to Birmingham would cost? 01:52:04 <pikhq> It's, what, 01:00 there? 01:52:09 <ais523> almost 3am 01:52:15 <pikhq> Blah. 01:52:19 * Sgeo mutters at planes costing a lot more than busses 01:52:19 <elliott> all I know about taxi costs is, I gawp when I see the little indicator inside going up 01:52:23 <elliott> at an alarming rate 01:52:26 <elliott> at least it's not exponential 01:52:32 <elliott> Sgeo: No... shit? 01:52:52 <Sgeo> It would be fun to roam the world on a few dollars 01:52:57 * Gregor mutters at people pluralizing "buses" in weird ways. 01:53:12 <elliott> Sgeo: people do it 01:53:12 <Sgeo> busi 01:53:18 <elliott> I don't think they use planes much 01:53:21 <ais523> elliott: the thing that always amuses me is the £300 or so surcharge there is from most companies for calling a taxi on Christmas Day 01:53:32 <elliott> haha 01:53:33 <ais523> also, I got a taxi from Wales to England once 01:53:37 <ais523> admittedly, it was just across the border 01:53:37 <elliott> but seriously, how much would a taxi to Birmingham cost? 01:53:50 <ais523> but even so, the taxi driver had to ring his boss and ask for permission to go that far out of usual territory 01:53:50 <pikhq> elliott: People who can get to a different country in less than 1,000 miles travel do. :P 01:54:02 <ais523> elliott: my guess is on the order of £1000 01:54:08 <pikhq> Well. Sgeo's in New York. He could get to the Canadian border with much less effort. 01:54:15 <elliott> ais523: wow 01:54:25 <Sgeo> I was stung by a wasp in Canada once 01:54:35 <elliott> And then I NEVER RETURNED TO THE WRETCHED PLACE 01:54:38 <Gregor> I like trains. 01:54:43 <Gregor> *smack* 01:54:45 <elliott> I like trains too. 01:54:53 <pikhq> I wish we had some. 01:54:54 <Sgeo> elliott, turns out to be true that I never returned to Canada 01:55:12 <elliott> Sgeo: You're calling Canada a wretched place, I see. 01:55:28 <ais523> elliott: interestingly, Google Maps suggests two entirely different routes from Hexham to Birmingham 01:55:41 <ais523> one via the A1, the other via the M6 01:55:58 <elliott> I wonder how easy it is to walk the A1 01:56:04 <ais523> the A1 goes east of Leeds, whilst the M6 goes west of Manchester 01:56:12 <elliott> it has a little space at the side, right 01:56:13 <elliott> ? 01:56:14 <ais523> also, I didn't really appreciate that Hexham was that far North 01:56:26 <elliott> we're practically Scottish, with the distinct advantage that we're not Scottish 01:56:28 <ais523> well, much of it's a motorway, so yes but you technically aren't allowed to walk there 01:56:38 <elliott> I wonder how technical that is 01:56:50 <ais523> you're at a similar latitude to Newcastle! 01:56:55 <elliott> if I ever get stranded on the A1, it would be useful to know that a police car would be happy to export me to somewhere warm 01:57:00 <elliott> ais523: umm, yes, we're right next to Newcastle 01:57:06 <elliott> geoip says I'm in newcastle IIRC 01:57:16 <ais523> that'd make sense, who'd put Hexham in a geoIP? 01:57:21 <elliott> :'( 01:57:54 <ais523> also, evidence that AJAX is stupid and I hate it: there's an actual "link" button that you need to click on Google Maps to get a link to what you're viewing 01:58:00 <ais523> because the URL doesn't change according to what you've entered 01:58:04 <elliott> ais523: that's in htmlfive 01:58:08 <elliott> and current browsers implement it 01:58:09 -!- kmc has joined. 01:58:13 <elliott> (changing the url appropriately and adding to history) 01:58:14 <ais523> elliott: but does Google use it? 01:58:21 <elliott> nope, that's evidence that google is stupid and you hate it 01:58:31 <elliott> "We could not calculate directions between Hexham, UK and Birmingham, AL." 01:58:32 <elliott> google... 01:58:33 <ais523> fair enough, I knew that already 01:58:47 <elliott> neat, I can walk to birmingham in two days and... I... 01:58:50 <elliott> ais523, you have to see this 01:58:55 <ais523> http://maps.google.com/maps?saddr=hexham+uk&daddr=birmingham+uk&hl=en&sll=37.0625,-95.677068&sspn=34.122306,85.869141&geocode=FWjHRgMdAf3f_ykVmDENYpB9SDEEwA0heCs6qA%3BFZHTIAMdKBvj_ylzcUEbLZRwSDGYee6u8P6Byg&vpsrc=0&mra=ls&t=m&z=7 01:59:04 <pikhq> elliott: Give it a couple decades and that will be SOlved. 01:59:07 <pikhq> SOLVED, even. 01:59:08 <ais523> really, if you want to walk that distance, you should be using the NCN 01:59:14 <elliott> ais523: http://ompldr.org/vYWI5aQ 01:59:19 <elliott> ONE OF THOSE ROUTES IS VERY PRACTICAL INDEED 01:59:21 <ais523> it's the /other/ Year 2000 project, the one that isn't the Millenium Dome 01:59:42 <ais523> and it got only a fraction of the funding and is way more useful 01:59:50 <elliott> CLICK THAT LINK 01:59:54 -!- kmc has quit (Remote host closed the connection). 01:59:58 <ais523> it basically made a network of cyclepaths (that can also be walked along) connecting all the major cities in the UK 02:00:01 <elliott> CLICK THAT LINK 02:00:03 <ais523> and many of the minor ones 02:00:06 <elliott> >:( 02:00:41 <Sgeo> elliott, better yet: Go west to get to Asia 02:01:38 <elliott> ais523: huh, I was unaware that there were cycle roads separate from car ones 02:01:58 <ais523> so is everyone else, more or less 02:02:03 <ais523> they have to go along car roads sometimes 02:02:07 <ais523> especially in the countryside 02:02:10 <ais523> but they try to make them minor ones 02:02:14 <elliott> http://upload.wikimedia.org/wikipedia/commons/a/ab/Openstreetmap-ncn-20101217.jpg neat, you can cross the island with them 02:02:20 <ais523> in Birmingham, they mostly go along floodplains 02:02:26 <elliott> as in, placewhosenameiforgetinscotland to lands end 02:02:40 <ais523> places that they can't build anything but cycle paths because they get flooded every now and then 02:02:46 <elliott> haha 02:03:11 <ais523> route 5 goes along Birmingham, and is mostly along the banks of the River Rea; I use it to walk to the city centre occasionally 02:04:16 <ais523> wow, this Sustrans website is doing Flash-like things without Flash, it looks like it's a proper HTML thing 02:04:21 <elliott> I've been to remarkably few places in the UK now that I think about it 02:04:34 <elliott> ais523: flash-like things? 02:04:57 <ais523> things that people normally use Flash for, like scrollable zoomable maps that react to things like the mouse wheel 02:05:28 <elliott> those are almost universally google-maps based, which is js 02:05:39 <elliott> or, well, yahoo maps or whatever 02:05:41 <elliott> but that's js, too 02:05:52 <elliott> http://www.sustrans.org.uk/map?searchKey=hexham&searchType=search&Search=Find this is not very pleasant to use 02:05:54 <ais523> anyway, route 72 seems to go through hexham 02:06:08 <ais523> I agree, it seems pretty awkward to use 02:06:17 <elliott> hmm, I wonder if that path is part of it 02:06:23 <ais523> sufficiently so that I can't figure out where else route 72 goes, or where it connects to 02:06:38 <elliott> (there's a pretty wide, very long path next to the Tyne that seems to have no actual purpose; when I've been on it cyclers have passed every now and then IIRC) 02:06:45 <ais523> the NCN is reasonably noticeable if you look: it has blue signs with a white bicycle symbol, and a patch of red background with a white number on 02:06:53 <elliott> it doesn't seem to go anywhere, though; after hours of walking, it just ended up in some nowhere village 02:06:58 <ais523> and they're relatively frequent 02:07:04 <elliott> oh, I don't recall any signs though 02:07:06 <ais523> heh, that sounds like an adequate description of the NCN 02:07:20 <elliott> hmm, there /was/ that fork 02:07:25 <elliott> maybe the interesting places was down that 02:07:27 <elliott> s/was/were/ 02:07:29 <elliott> s/were/are/ 02:07:53 <ais523> the route seems to be mostly along the north of Hexham, and makes a small detour to visit the railway station 02:08:15 <elliott> heh 02:08:22 <elliott> I don't recall any cycle path at the railway station 02:08:57 <ais523> elliott: 72/68/54/5 02:09:03 <elliott> hi 02:09:03 <ais523> that should be your walking route from Hexham to Birmingham 02:09:06 <elliott> haha 02:09:11 <elliott> will that take less than two days? 02:09:28 <ais523> depends on how fast you walk, I guess 02:09:34 <ais523> but Hexham's so far north of Birmingham that I doubt it 02:09:42 <ais523> can you walk over 200 miles in two days? 02:09:59 <ais523> at 4mph, a fast walking speed, that's 25 hours of walking, so I think it's doable 02:10:03 <ais523> umm, 50 hours of walking 02:10:06 <ais523> so probably not doable 02:10:11 <ais523> three days seems possible 02:10:19 <elliott> I ran five miles once when I was a kid... I think it took an hour? 02:10:24 <elliott> felt like running to me, not walking 02:10:35 <elliott> also I forgot to eat anything, which made the aftermath fun 02:10:39 <ais523> 5mph is plausible for jogging 02:10:49 <elliott> I was like ... uh ... young :P 02:10:59 <ais523> running's more like 15mph, but you need to be a top athlete to keep that up for even a mile 02:11:04 <ais523> and sprinting faster still 02:11:38 <ais523> (the difference between normal people and Olympic athletes is more in how long they can keep a speed up than maximum speed, except for sprints) 02:11:48 <elliott> I have rather terrible stamina, so I expect it'd take me quite many days to get to Birmingham 02:13:36 <ais523> I'm just amused that we're even discussing this 02:13:45 <ais523> and that I'm giving advice, given your stated purpose for walking to Birmingham 02:13:49 <elliott> if you start teaching INTERCAL, I'll make a good-faith effort to walk the distance 02:14:16 <ais523> I doubt I could get it added to the syllabus 02:14:18 <elliott> I don't think it's worth it just to try and stop you using translucency for that, though 02:14:26 <elliott> ais523: underground INTERCAL classes 02:14:43 <elliott> the classes will be held in building whatever, at midnight. please note that the door will be locked, so you may have to break the window. 02:15:15 <elliott> wow, XSLT is a functional programming language 02:15:34 <ais523> we could hold it in the secret underground maintenance tunnels, I suppose 02:15:38 <ais523> except I have no idea where the entrance is 02:15:39 <elliott> that sounds fun 02:15:42 <ais523> and they're very cramped and dangerous 02:15:48 <elliott> why dangerous? 02:16:01 <ais523> their existence became obvious to absolutely everyone a while back as they spent several months replacing the roofs 02:16:05 <ais523> and because they mostly carry hot water 02:16:10 <elliott> heh 02:16:12 -!- DH____ has joined. 02:16:14 <ais523> hot enough that steam came up from them constantly while the roof was removed 02:16:23 <elliott> I suspect there's a good few people there anyway 02:16:28 <elliott> urban exploration, and all that 02:16:39 <ais523> also, they're incredibly narrow in places 02:16:49 <elliott> don't worry, I'm incredibly narrow in all places 02:18:00 <elliott> "Some steam tunnels have dirt floors, no efficient lighting and have temperatures upwards of 45 °C (113 °F)." 02:18:01 -!- kmc has joined. 02:18:02 <elliott> Sounds like Australia. 02:18:05 <elliott> [rimshot] 02:18:14 <elliott> Okay that was bad. 02:18:17 <elliott> I apologise. 02:19:19 <Gregor> I must inform you on behalf of Australia that your apology has not been accepted, and you should probably not be surprised if a large and oddly poisonous animal shows up in your bed tonight. 02:19:38 <elliott> So they're punishing me by giving the honorary Australian treatment? 02:21:20 <zzo38> Once I was in the school one teacher was teaching computer programming. I suggested that he learn INTERCAL. 02:21:31 <elliott> oh dear 02:21:46 <ais523> elliott: bear in mind that zzo38's teachers probably have met zzo38 02:22:05 <elliott> heh 02:22:12 <elliott> "probably" 02:23:26 <elliott> hmm 02:24:08 <CakeProphet> homespring is the best language 02:24:10 <zzo38> I don't know whether he tried to even figure out what INTERCAL is, though. 02:24:24 <CakeProphet> any other programming metaphor is obsolete. 02:26:01 -!- calamari has joined. 02:30:52 <zzo38> The ADOM wish program does strange things. If you type "blind" it assumes you mean "goblin", type "weapon mastery" it assumes you meant "dwarven weaponmaster", typing "sheep" it assumes you mean "banshee"; all of them summon hostile creatures of that type. "human corpses" just results in random corpses. 02:31:44 <zzo38> Typing "sickness" gives you a temporary speed boost (I don't know why). "kobold corpses" results in kobold corpses, but "blink dog corpse" results in live (and hostile) blink dogs. 02:32:14 <CakeProphet> probably to make cheating more exciting. 02:32:50 <zzo38> Maybe. 02:33:30 <CakeProphet> http://df.magmawiki.com/index.php/Fun 02:33:57 <ais523> I think it's trying to match the maximum number of consecutive letters 02:34:01 <zzo38> Typing "visibility" does *not* result in visibility, it results in rings of invisibility. "cold" results in gold (probably in many cases it tries an approximate match, this is one such case). 02:34:18 <ais523> e.g. "/blin/d" -> "go/blin/" 02:34:30 <ais523> that would explain the vast majority of zzo38's cases, except the sickness one 02:34:32 <CakeProphet> ah 02:34:37 <zzo38> ais523: I did notice those kind of things. 02:34:39 <CakeProphet> quickness 02:34:40 <CakeProphet> ? 02:34:45 <ais523> CakeProphet: aha, that must be it 02:34:50 <elliott> haha 02:35:42 <zzo38> Some things I read elsewhere. "Thomas Biskup" results in a message saying that you should not mock the creator of this game. 02:35:44 <CakeProphet> if I made some kind of wish system or cheating tool I would make it to completely random things for typed phrases. 02:36:03 <CakeProphet> just to make life interesting. 02:36:31 <zzo38> While "death" apparently results in a lot of aging (not necessarily death). 02:36:44 <Patashu> http://www.youtube.com/watch?v=_4JTlR_ltRo LOL 02:37:21 <elliott> I'd buy it 02:38:36 <CakeProphet> that's pretty exciting 02:39:23 * CakeProphet is working on an esolang that uses a completely made up particle physics oriented programming model. 02:39:27 <zzo38> There are also various sets of restrictions you can try. One is to win the game, but select the highest number of kills of any individual kind of creature; the lower the highest such number is, the better your score. One is again win the game but your score is the number of different kind of creatures you have killed and the high number is best. 02:39:29 <CakeProphet> best metaphor of all 02:39:37 <CakeProphet> better than homespring 02:39:58 <zzo38> Another is you must enter the small cave at first (no exceptions), and stay there. Do not go up or down stairs. Goal is to reach 50th experience level. 02:40:18 <CakeProphet> that's pretty exciting. 02:40:59 <zzo38> Another is to win with the lowest experience total. (Someone has completed the special ending with only 1 experience point.) 02:42:12 <CakeProphet> they must be really good, or the game isn't very difficult. 02:43:01 <ais523> CakeProphet: it's more that it's one of those games that is difficult but gets easier with spoilers 02:43:01 <zzo38> Here is another: Win the game but a restriction is that you can never carry more than 100 stones worth of inventory (this counts both equipped and nonequipped equipment). If you start with more than 100 then drop some on the road before you continue. (To win the game, you need five orbs, each of which weighs 100s. This means you must place each orb individually and then get the next one; and while doing so, no other items are permitted) 02:43:59 -!- Patashu has quit (Ping timeout: 250 seconds). 02:44:21 <monqy> so yesterday or so I had a good nap dream 02:44:35 <zzo38> Another restriction is no use of the downstairs command. Goal is reaching 50th experience level. This means the only places you can enter are wilderness encounters. 02:45:00 <monqy> it's the future or something and my family and I are in outer space and one of my teeth falls out mysteriously and this troubles me so I decide I need to see a space dentist 02:45:33 <monqy> but my dad drags me to space church instead and it's boring and he makes me talk to the space priest so I get up but then this child bumps into me and spills wafers everywhere 02:45:47 <ais523> wow, I failed to follow the line wrap there 02:45:59 <ais523> and ended up reading "This means the only places you can enter are wilderness space dentist" 02:46:09 <monqy> good reading 02:46:31 <coppro> the completion of eternium man is awesome 02:46:34 <monqy> I help him pick up the wafers but then the priest sits down and I guess he had to be standing for me to talk to him or something? I stand up and he asks me what the matter is and I say I was just a bit late standing up. everyone finds this hilarious and laughs a lot. 02:47:05 <ais523> monqy: I found that hilarious too 02:47:28 <monqy> But then it gets weird: gashes open up everywhere and there are tentacles everywhere and some of the tentacles burst and my father comes to the conclusion that the place is evil and we flee 02:48:05 <monqy> we don't have enough fuel to get anywhere but my dad remembers there's this woman who goes to space church who lives nearby and is a space dentist so we go to her place 02:48:34 <monqy> there's a really long staircase leading up to a spall 1-room house with a glass door and an old lady inside cleaning up instead of noticing us 02:48:59 <monqy> I ring the doorbell and explain I was at space church and require dental assistance so she gets her tooth inspection kit 02:50:00 <monqy> while inspecting my teeth she rambles about how wonderful they are and explains how I'm her only patient with good enough teeth to see the full majesty and she shows me this chart relating teeth to flavours 02:50:15 <monqy> and points out the different tooth flavour relations 02:50:26 <monqy> like one tooth is for milk and another one is for strength (these are flavours) 02:50:41 <monqy> then she plunges a knife into my stomach and I wake up 02:50:42 <monqy> the end 02:51:18 <ais523> that was a bizarre thing for her to do 02:51:25 <monqy> I didn't understand it either 02:52:41 <monqy> maybe it's part of space dentistry. maybe she was evil too. 02:53:25 <ais523> perhaps stabbing someone is how you cure space tooth problems 02:54:54 <elliott> oh is this 02:54:55 <elliott> dream talk 02:54:55 <elliott> me read 02:56:56 <elliott> monqy: good dream 02:57:10 <monqy> i liked it too 02:57:40 <monqy> last night I had a really complicated dream with a huge backstory but I can't remember any of the interesting parts 02:58:02 <coppro> they were about frogs 02:58:40 -!- azaq23 has joined. 03:01:41 <Sgeo> Great, Wolfram Alpha, alternate forums 03:01:43 <Sgeo> forms 03:01:50 <Sgeo> Now how about giving me the answer already 03:02:25 <Sgeo> Unless it refuses to for inconsistent systems? 03:03:59 <Sgeo> Seems to be happy enough to give solutions to systems with unique solution 03:05:40 <monqy> what are you doing 03:06:56 <Sgeo> Linear algebra homework, wanted to check my result that the system of equations is inconsistent 03:14:17 <pikhq> Have you considered just implementing the algorithms and omitting the manual computation that is, of course, devoid of value? 03:15:19 <zzo38> Sometimes in Haskell, it is unable to deduce a type even though there is a match. Maybe there should be a type deduction command to specify more precisely how types should be derived in certain situations 03:15:29 <Sgeo> This is the last problem in this homework. If I get more homework of this style, I'll consider it 03:15:46 <pikhq> Hint: you will. 03:16:17 <Sgeo> Well, currently this involves shuffling around equations and doing what seems like will be easiest 03:16:40 <Sgeo> Not going to try to automate that in a believable way 03:16:45 <elliott> how do you abort a commit of a merge in git? 03:16:47 <Sgeo> Although actually that might not be that heard 03:16:48 <elliott> git normally aborts with no message 03:16:49 <Sgeo> hard 03:16:54 <elliott> will just deleting the automatic message work 03:16:54 <elliott> ? 03:17:04 <pikhq> Sgeo: Um, what the fuck are you doing, precisely? 03:17:04 <elliott> yep, it does 03:17:06 <elliott> thanks :P 03:17:14 <Sgeo> pikhq, the class pretty much just started 03:17:43 <pikhq> The question still stands. 03:19:04 <Sgeo> Solving systems of linear equations by using elementary row operations to get an identity matrix for ... one part? and the constants on the other 03:19:46 <pikhq> Yeah, you're doing that for the next few months. 03:19:56 <pikhq> And there is a very simple algorithm for it. 03:20:25 * Sgeo hopes pikhq is joking about the "next few months" thing 03:20:46 <pikhq> No. 03:21:02 <pikhq> Computing O(n^3) algorithms by hand makes pikhq sad. 03:21:03 * Sgeo hopes that maybe his school will actually, somehow, prove to be better? 03:21:17 <pikhq> Though O(n!) algorithms are worse. 03:21:28 <pikhq> Both will happen. 03:21:56 <monqy> sgeo your school is the worst you have no hope of it being better 03:22:34 * Sgeo hopes his other homework assignment won't be more of the same. Hmm, it shouldn't be. Although there will be overlap with that class and the linear algebra class near the beginning :/ 03:22:43 <azaq23> Sgeo: Regarding wolframalpha, you could write the system as a matrix and test if it is singular (det x = 0) 03:24:25 <pikhq> azaq23: He's not even learned the row reduction algorithm yet. 03:24:26 <elliott> pikhq: Look at this awful crock: https://github.com/fis/mcmap/blob/guile/scheme.c#L318 03:24:32 <elliott> Warning: cpp hackery. 03:24:35 <elliott> It's even worse than before. 03:24:57 <pikhq> (void)__VA_ARGS__? 03:25:00 <pikhq> Gag. 03:25:05 <ais523> hahaha 03:25:27 <elliott> ais523: did you lok at it, or do you not even visit GitHub pages? :P 03:25:34 <coppro> Sgeo: wait, do you actually now know how to row-reduce? 03:25:36 <pikhq> That's a lot of hackery. 03:25:37 <elliott> I had to add a (void) cast and some parentheses to stop clang complaining about an unused 0 expression result 03:25:41 <elliott> because -Werror 03:25:44 <pikhq> coppro: He just started a linear algebra class. 03:25:45 <ais523> elliott: I was laughing at pikhq's line 03:25:55 <elliott> hmm, actually -pedantic might be the one doing it but whatever 03:26:00 <ais523> I have been known to visit github pages when there's no other option, but they often don't work anyway 03:26:12 <elliott> #define PACKET(id, cname, scmname, nfields, ...) \ 03:26:12 <elliott> /* terminate the last field_num++ of the previous packet */ \ 03:26:13 <elliott> ; \ 03:26:13 <elliott> packet_id = id; \ 03:26:13 <elliott> field_num = 0; \ 03:26:13 <elliott> /* packets with no fields have a dummy "0" variable argument for strict 03:26:15 <elliott> C99 compliance. we use (void) here so that clang doesn't generate 03:26:17 <elliott> a warning about an unused expression as it's expanded here */ \ 03:26:19 <elliott> (void) __VA_ARGS__ 03:26:21 <elliott> #define FIELD(type, cname, scmname) \ 03:26:23 <elliott> /* parentheses around this assignment so that the previous (void) cast 03:26:25 <elliott> doesn't mess it up */ 03:26:27 <elliott> (packet_field_symbol_names[packet_id][field_num] = scm_from_utf8_symbol(scmname)); \ 03:26:29 <elliott> field_num++ /* a comma appears next */ 03:26:31 <elliott> #include "protocol.def" 03:26:35 <elliott> /* terminate the very last field_num++ */ 03:26:37 <elliott> ; 03:26:39 <elliott> #undef FIELD 03:26:41 <coppro> pikhq: haha 03:26:41 <elliott> #undef PACKET 03:26:43 <elliott> now you can enjoy, too 03:26:54 -!- hagb4rd has quit (Ping timeout: 260 seconds). 03:27:02 <coppro> pikhq: actually, you know what the worst part is? 03:27:07 <coppro> I bet he doesn't know what a vector space is 03:27:12 <coppro> and they claim it's linear algebra 03:27:23 <pikhq> coppro: Well, that would be in the course. 03:27:32 <pikhq> coppro: I hope, at least. 03:27:35 <coppro> Sgeo: you better know what a vector space is 03:27:53 <pikhq> This is like expecting someone who just started calculus to know what an integral is. :P 03:28:01 <coppro> uh what 03:28:06 <coppro> dude you start with vector spaces 03:28:36 <pikhq> In a sane course perhaps. But more generally, you start with 0 knowledge at all. 03:28:38 <Jafet> No, this is like expecting someone who just started "calculus" to know what a real number is 03:28:42 <pikhq> And he is at the 0 knowledge point. 03:28:53 <Jafet> Most people graduate from calculus courses without knowing what a real number is 03:29:37 <Sgeo> I know what vectors are 03:29:44 <monqy> (thumbs up) 03:29:49 * Sgeo wikis vector space 03:29:50 <pikhq> Sgeo: Quite different from a vector space. 03:29:58 <pikhq> Though it is a related concept. 03:30:29 <Sgeo> Although my other class expected me to know what sets are. I did, but I don't remember ever learning them in school 03:30:52 <elliott> proxy.c:226: error: overflow in implicit constant conversion 03:30:53 <elliott> proxy.c:226: error: overflow in implicit constant conversion 03:30:53 <elliott> uh oh 03:30:57 <coppro> Again, I disagree 03:31:01 <coppro> (with Jafet, this time) 03:31:04 <zzo38> target :: Entity e => Predicate e -> Target e; opponent :: Predicate Player; artifact :: Predicate Object; -- I think it won't work if "Predicate" is simply function resulting to boolean; more complicated kind of selection would be used if you are making a card game 03:31:28 <coppro> Linear algebra should start by defining vector spaces, and introduce matrices as convenient representations of linear operators 03:31:34 <elliott> static const char prefix[4] = { 0xc2, 0xa7, 'b', 0 }; 03:31:36 <elliott> umm... what? 03:31:42 <elliott> how can there be any overflow there? 03:31:46 <pikhq> coppro: Mathematical pedagogy is pretty dang terrible, though. 03:31:59 <elliott> ais523: he;pl 03:32:01 <pikhq> So it introduces matrices and their operations, and then moves on to vector spaces later. 03:32:01 <elliott> he;lp 03:32:29 <ais523> elliott: wow, I've looked at your ping at me about 3 times trying to figure out why I had he;pl as a stalkword 03:32:36 <elliott> hahahahahaha 03:32:48 <zzo38> I have represented a transaction in accounting as a matrix (possibly with extra information attached, such as comments) 03:33:02 <ais523> elliott: 0xc2 may well overflow a signed char 03:33:14 <elliott> ais523: really? 03:33:19 <ais523> and thus, a plain char, if it happens to be signed 03:33:23 <elliott> hmm... 03:33:26 <elliott> would 03:33:28 <ais523> signed char only goes up to 0x7f on an 8-bit system 03:33:35 <zzo38> Specify typedef unsigned char byte; and then you can use the shortcut to ensure unsigned when wanted 03:33:38 <elliott> static const unsigned char prefix[4] = { 0xc2, 0xa7, 'b', 0 }; 03:33:39 <elliott> work? 03:33:40 <ais523> try '\xc2' 03:33:44 <elliott> that'll work too, yes 03:33:52 <ais523> or use unsigned chars, depending on what you want the sequence for 03:34:15 <elliott> oh well, thanks clang's scan-build, although I doubt that would ever do the wrong thing :P 03:34:20 <elliott> ais523: it's just 03:34:21 <elliott> static const char prefix[4] = { '\xc2', '\xa7', 'b', 0 }; 03:34:21 <elliott> char *cmsg = g_strjoin("", prefix, msg, NULL); 03:34:26 <elliott> s/just /just/ 03:34:31 <elliott> ais523: those two bytes are the UTF-eight section sign 03:34:36 <elliott> which Minecraft uses for colour codes 03:34:43 <ais523> how bizarre 03:34:43 <elliott> (previously, it used the latin-one byte for that...) 03:34:48 <elliott> but then it changed to utf 03:34:55 <elliott> so I guess it automatically started doing that :DD 03:35:00 <ais523> somehow I think it's doing it wrong 03:35:10 <elliott> you have no idea 03:35:14 <ais523> is that embedded into arbitrary text? 03:35:25 <elliott> not arbitrary; the server boots you off if you use bad characters 03:35:27 <elliott> like the section sign, say 03:35:34 <ais523> text that should be arbitrary but isn't? 03:35:36 <coppro> pikhq: not at my school! 03:35:37 <elliott> also, the font only covers that one DOS codepage 03:35:43 <elliott> so the Unicode is quite useless 03:35:52 <elliott> also, some parts of the protocol use utf-sixteen, and others utf-eight 03:37:03 <Gregor> "Section sign"? 03:37:05 <zzo38> Why don't they use control characters for the colors and so on? And why do they use sometimes UTF-16 and UTF-8 even though Unicode is not used anyways? 03:37:23 <Gregor> Oh, that symbol. Didn't know what it was called ... 03:37:25 <elliott> Gregor: Google it. 03:37:26 <elliott> :p 03:37:27 <zzo38> In case of CP437 (probably others too), the section sign is one of its characters. 03:37:28 <ais523> Gregor: it doesn't seem to be in my compose, but it looks like two overlapping S characters 03:37:41 <ais523> compose s s is taken for ß, obviously 03:37:42 <elliott> Lawyers who play Minecraft must not be amused. 03:38:14 <zzo38> ais523: What happen if you use uppercase "S" instead? 03:38:29 <Gregor> 03:38:33 <Gregor> ais523: It's s-o 03:39:16 <zzo38> Gregor: Are you using some encoding other than UTF-8? (I currently have terminal emulator set to UTF-8) 03:39:27 <Gregor> I'm using UTF-8 03:39:39 <zzo38> Well, that is not a section sign in UTF-8. 03:39:43 <elliott> Gregor: XChat? 03:39:48 <elliott> Gregor: No yer note. 03:39:49 <elliott> not. 03:39:50 <zzo38> It seem not valid UTF-8 code at all 03:39:55 <elliott> Gregor: Go into network list, find freenode, Edit 03:40:01 <elliott> Observe character set being set to "IRC" 03:40:02 <Gregor> I thought I configured X-Chat to be UTF-8 on Freenode >_< 03:40:05 <elliott> Which is latin-one "if it would fit" 03:40:06 <elliott> Otherwise utf 03:40:09 <elliott> Which is THE STUPIDEST ENCODING 03:40:14 <Gregor> Oh, I only configured that on my desktop I guess. 03:40:34 <Gregor> 03:40:44 <zzo38> Still wrong 03:40:46 <Gregor> Bleh 03:40:57 <elliott> Try reconnecting. 03:41:07 <ais523> elliott: what about UTF-8 if it'd fit and otherwise Latin-1 to save on bytes? 03:41:17 <elliott> ais523: it would always fit into UTF 03:41:26 <ais523> elliott: different meaning of "fit" 03:41:31 <ais523> there's a 510-byte limit 03:41:32 <zzo38> PuTTY does not have such encoding anyways 03:41:42 <Gregor> 03:41:47 <elliott> ais523: oh, heh 03:41:47 <zzo38> Still wrong 03:41:51 <elliott> Gregor: Try quitting :P 03:41:54 <Gregor> Feh 03:42:02 <elliott> hmm, I'm going to compile putty on linux 03:42:03 <elliott> JUST BECAUSE I CAN 03:42:10 <elliott> also, because most people don't realise you can 03:42:27 <zzo38> And probably some people use PuTTY 03:42:33 <Gregor> BE UTF-8 YOU STUPID § 03:42:33 <elliott> Lots of people do 03:42:43 <zzo38> Gregor: It is OK now. 03:42:47 <elliott> Yaaaaaaaaaay 03:42:53 <Gregor> I just had to yell at it. 03:43:08 <pikhq> Yeah, PuTTY is really convenient if you want to SSH from Windows. 03:43:29 <elliott> # Persuade automake to give us a copy of its install-sh. This is a 03:43:29 <elliott> # pain because I don't actually want to have to _use_ automake. 03:43:29 <elliott> # Instead, I construct a trivial unrelated automake project in a 03:43:29 <elliott> # temporary subdirectory, run automake so that it'll copy 03:43:29 <elliott> # install-sh into that directory, then copy it back out again. 03:43:30 <elliott> # Hideous, but it should work. 03:43:34 <elliott> ais523: PuTTY's build system sure is fun 03:43:37 <zzo38> elliott: OK, do so. Sometimes that is the kind of terminal emulation you need, even though it try to emulate xterm 03:43:40 <elliott> echo Some news > automake-grievous-hack/NEWS 03:43:40 <elliott> echo Some text > automake-grievous-hack/README 03:43:40 <elliott> echo Some people > automake-grievous-hack/AUTHORS 03:43:42 <elliott> echo Some changes > automake-grievous-hack/ChangeLog 03:43:46 <zzo38> As well as other features of PuTTY 03:44:03 <ais523> elliott: why not just include a copy of install-sh? 03:44:03 <Gregor> elliott: You are not allowed to complain about bad build systems until you build WebKit. 03:44:23 <ais523> what PuTTY's doing is equivalent to downloading it from a package manager 03:44:28 <ais523> Gregor: have you built gcc? 03:44:29 <elliott> Gregor: I probably will, once musl, clang and libc++ work harmoniously 03:44:34 <elliott> ais523: building gcc is easy 03:44:35 -!- azaq23 has quit (Read error: Operation timed out). 03:44:37 <ais523> elliott: well, OK 03:44:42 <ais523> but have you looked at the build system? 03:44:48 <elliott> admittedly, no :) 03:44:50 <Gregor> ais523: Not only have I built GCC, I've built cross-compilers with arbitrarily-screwy requirements. 03:45:08 <elliott> Gregor has such an interesting life. 03:45:13 <ais523> gcc's build system is basically what you get by repeatedly editing compiler output, for many years 03:45:31 <elliott> haha 03:45:33 <ais523> such that there's no corresponding original source, and much of it is inline <s>asm</s> m4 03:45:45 <Gregor> Not only have I built arbitrarily-screwy cross compilers, I've implemented new platforms (only OS, not arch or bin format) 03:45:54 <pikhq> It also predates automake. 03:46:00 <elliott> Gregor: JSMIPS? :P 03:46:03 <Gregor> Ayup :P 03:46:09 <pikhq> Gregor: Jesus you are a glutton for punishment. 03:46:18 <elliott> "Users could see what was happening on another's terminal (using a command called OS for "output spy"). A target of OS could detect and kill it using another command called JEDGAR, named for FBI Director J. Edgar Hoover). This facility was later disabled in an interesting way: it looked like the session was killed, but was not.[1]" 03:46:39 <elliott> (/me is looking into ITS to find that open ITS telnet server to try putty on) 03:48:32 <elliott> "SV is running ITS. Please be very careful." 03:48:41 <Gregor> My point to that whole diatribe was this: GCC's build system screwiness ain't got nothin' on WebKit. 03:48:57 <Gregor> At least GCC has /one build system/. 03:49:00 <elliott> Gregor: I suspect WebKit is easy to build as long as you don't want to change anything 03:49:05 <zzo38> Are there any terminal emulators that causes ASCII DLE control code to make next character forced treated as a normal character? 03:49:11 <Gregor> elliott: True. 03:49:46 <elliott> I don't know how people even develop gcc, or WebKit, or anything. I can't work unless I can build in less than ten seconds. 03:50:12 <elliott> How can you deal waiting a minute for your build system to figure out what it has to do? 03:50:23 <Gregor> elliott: With WebKit, it's "change on .h file -> wait 40 minutes -> find you made the wrong change" 03:50:26 <elliott> pikhq: BTW, how's musl C++ support? 03:50:30 <elliott> Gregor: How many minutes is it really? :P 03:50:31 <Sgeo> You get it right on the first try? 03:50:33 <Sgeo> >.> 03:50:34 <Gregor> elliott: 40. 03:50:38 <elliott> Gregor: No but really. 03:50:41 <Gregor> elliott: I am not exaggerating. 03:50:47 <elliott> Forty? 03:50:50 <elliott> Please tell me you're exaggerating. 03:50:52 <Gregor> Four times ten. 03:51:03 <Gregor> WebKit will steal four times ten minutes. 03:51:06 <Gregor> And that's terrible. 03:51:08 <elliott> How receptive are they to patches ripping the build systems out and replacing them all with a single tup? 03:51:09 <elliott> :p 03:51:34 <Gregor> To be fair, I suspect that's mostly not the build system, but just the fact that it's an enormous bloated C++ mess. 03:51:34 <elliott> Or is that time actually spent linking things and shit? 03:51:48 <elliott> It's probably at least PARTIALLY the build system, though :P 03:51:51 <elliott> How many files are there in that thing? 03:52:02 <Gregor> If you do the Qt build, which links everything into a single library, and you have the conventional (non-gold) linker, it can take 10 minutes or so to link. 03:52:09 <elliott> Wow. 03:52:18 <Gregor> Even with gold it takes a few minutes. 03:52:26 <coppro> win 15 03:52:35 <elliott> So... NetSurf, anyone? 03:52:40 <Gregor> As per how many files, roughly a metric fuckton. 03:52:43 <elliott> Hey, it renders Wikipedia and the BBC properly. 03:52:43 <zzo38> How many modules do those programs have? 03:52:49 <elliott> http://www.netsurf-browser.org/about/screenshots/images/gtk-bbc.png 03:52:50 <elliott> Anyone? No? 03:53:29 <zzo38> elliott: Which skins of Wikipedia does it work with? 03:53:36 <Gregor> "Web standards: HTML 4.01 and CSS 2.1" 03:53:40 <elliott> Probably all of them, if it does Vector. 03:53:41 <zzo38> Does it work with Nostalgia skin? 03:53:51 <elliott> Gregor: They're RISC OS people, man, they talk weird. 03:53:58 <elliott> Gregor: But that rendering ain't bad :P 03:54:03 <zzo38> Of course Nostalgia skin is very simple it ought to work 03:54:04 <elliott> I don't think it does JS though. 03:54:16 <elliott> Yeah, no JS. 03:54:27 <CakeProphet> what a shame. 03:54:44 <zzo38> Other programs such as Lynx also does no JS 03:55:08 <CakeProphet> JS should be replaced by HaskellScript 03:55:16 <Gregor> JS should be replaced by Fythe 03:55:31 <elliott> JS should be @ @ @ @ @ @ @ 03:55:44 <elliott> Really though, how hard is it to add JS to browsers nowadays? 03:55:48 <elliott> Step one: Grab an existing JS implementation. 03:55:51 <zzo38> Perhaps don't use webpages and don't have to worry about it unless using other JS programs. 03:55:53 <elliott> Step two: Implement the DOM API. 03:55:54 <Gregor> JS itself is boringly simple. 03:55:54 <elliott> Step three: Uh. 03:55:55 <elliott> Lots. 03:55:58 <elliott> Lots of other APIs. 03:55:59 <Gregor> The DOM is stupidly complex. 03:56:12 <elliott> OK but the BASICS could be integrated into a browser in, like, a few weeks? 03:56:17 <Gregor> Mostly because it's a mish-mash of incompatible APIs. 03:56:20 <elliott> Not enough for gmail, but enough for simple shit :P 03:56:26 <Gregor> Sure, probably. 03:56:33 <zzo38> JavaScript (just as itself, not having specific to do with webpages or anything) is not bad, though. 03:56:39 <elliott> I'm just sayin' that the language part has been beaten to death, so you can just reuse that. 03:57:22 <CakeProphet> zzo38: I disagree completely. 03:57:29 <elliott> Gregor: Looks like NetSurf uses an HTML5 parser, so their main page is out of date :P 03:57:32 <elliott> (Hubbub) 03:57:45 <Gregor> One of the major problems w.r.t. implementing JS in text browsers is that the whole DOM API assumes there are pixels. 03:57:56 <elliott> NetSurf isn't a text browser, dude :P 03:58:04 <Gregor> No, but somebody mentioned lynx :P 03:58:10 <elliott> zzo38 did :P 03:58:20 <elliott> Well, w[three]m does images. :p 03:58:32 <Gregor> Not well 03:58:33 <elliott> Heh, Hubbub is part of the NetSurf thing 04:00:25 <CakeProphet> elliott: duplicate characters in regex character class. 04:00:36 <CakeProphet> bad. 04:00:41 <elliott> Shaddap 04:01:03 <elliott> Gregor: Holy crap NetSurf renders quickly. 04:01:12 <CakeProphet> ^....\s...!$ 04:01:19 <zzo38> Is why, I will make the computer, it will have both Forth and BASIC built-in, but no web browser program (although you can still use HTTP (as well as Gopher, and possibly also FTP and Plan 9 protocol) to download programs). 04:01:20 <elliott> Although it doesn't quite do the rendering of Google I'd expect :P 04:01:41 -!- azaq23 has joined. 04:01:42 <Gregor> It's easy to be fast when you're wrong ... 04:01:58 <elliott> Gregor: It's trivial wrongness, I think mostly CSS3 stuff 04:02:09 <Gregor> lynx's rendering is fast ;) 04:02:14 <elliott> Indeed :P 04:02:29 <Gregor> Unless you're running it in Terminal.app. 04:02:32 <CakeProphet> my brain renders images near instantaneously. 04:02:50 <CakeProphet> not quite so good at HTML parsing though. 04:03:06 <CakeProphet> er, "executing". displaying? what is the verb? 04:03:26 <Gregor> CakeProphet: Rendering :P 04:03:27 <zzo38> But telnet is likely to be supported, as well as gopher menus (but not all gopher types; the minimum requirements are types 0, 1, and 7; and that should be good enough) 04:03:38 -!- Jafet has quit (Ping timeout: 276 seconds). 04:03:58 <CakeProphet> so uh, what has become of Rezzo? we need more warriors. I need more time. 04:04:44 <zzo38> The operating system will be stored in ROM BIOS and is not readable unless you trigger NMI. 04:04:54 <Gregor> CakeProphet: Nothing has become of it, it's stagnating. 04:05:06 <elliott> RIP Rezzo? 04:05:06 <zzo38> Hard drive and optical drive are also completely inaccessible unless you trigger NMI. 04:05:08 <Gregor> I got tired writing my warrior, because as it turns out it's an enormous pain X-D 04:05:19 <Gregor> elliott: It's not dead, it's stagnant! :P 04:05:47 <CakeProphet> Gregor: perhaps it could be redesigned? 04:06:03 <Gregor> CakeProphet: It probably could, but I'm yet to think of how. 04:06:09 <Gregor> (Or put any effort into thinking of how :P ) 04:06:11 <zzo38> Actually, network access shall also be inaccessible unless NMI. 04:06:17 <CakeProphet> probably being no 2D would make it less of a pain I think. 04:06:33 <CakeProphet> so, basically, complete redo everything. :P 04:08:06 <Gregor> "Being no 2D" 04:08:49 -!- Jafet has joined. 04:09:56 <zzo38> (And it will not be too large or too heavy to defenestrate; in case you care. But I don't recommend it unless you intend to test its physical properties) 04:10:00 <CakeProphet> Gregor: s/no/not (and Gregor is a silly dong) / 04:10:31 <Gregor> CakeProphet: Are you suggesting that it become 1D, which is terrible, or 3D, which is even more terrible? 04:10:44 <CakeProphet> well it could be neither. 04:10:58 <CakeProphet> as in like, redesign the objective and the environment entirely. 04:11:07 <Gregor> Ah :P 04:11:12 <CakeProphet> so that dimensions no longer make sense. 04:12:20 <CakeProphet> there are other possibilities, I suppose. 04:12:56 <Gregor> Instead, have some electromusic: http://codu.org/tmp/drell2-2011-09-11-2.ogg 04:12:57 <elliott> SCM_C_HOOK_NORMAL 04:12:57 <CakeProphet> but I think adding or removing complexity from the original design will not make it more fun to write programs for. 04:12:57 <elliott> Type of hook for which all the registered functions will always be called. 04:12:57 <elliott> SCM_C_HOOK_OR 04:12:57 <elliott> Type of hook for which the sequence of registered functions will be called only until one of them returns C true (a non-NULL pointer). 04:12:57 <elliott> SCM_C_HOOK_AND 04:12:59 <elliott> Type of hook for which the sequence of registered functions will be called only until one of them returns C false (a NULL pointer). 04:13:03 <elliott> this isn't offered for the scheme functions wtf 04:13:42 <elliott> Gregor: ten seconds in, i like this 04:13:55 <Gregor> "20 seconds in, it's garbage" 04:14:14 <elliott> :P 04:14:55 <aspect> elliott: what are you working on? 04:14:58 <CakeProphet> what tools are you using to produce this 04:15:08 <Gregor> CakeProphet: Rosegarden and VSTi's. 04:15:18 <elliott> aspect: mcmap... it's a thing. If you don't play Minecraft, you probably don't care. 04:15:33 <CakeProphet> Gregor: have you ever tried using csound? I'm not masochistic enough... 04:15:43 <Gregor> CakeProphet: I have not :P 04:16:00 <Gregor> CakeProphet: Although I like the wonderful possibilities w.r.t. repeatability. 04:16:05 <elliott> Gregor: this is nice 04:16:16 <aspect> I've managed to resist minecraft since my first 16-hour exposure to it, but I'm curious about most things that involve Scheme 04:16:23 <zzo38> From what I have read about Csound, I like it. But there could be a preprocessor to work with MML and other kind of macros stuff too 04:16:31 <elliott> Gregor: Two and a half minutes in or so, the little pulse in the background sounds remarkable like an electric guitar :P 04:16:44 <Gregor> Hah 04:16:57 <Gregor> I'm super-proud of the low-fi piano. 04:17:01 <Gregor> I basically munged that myself. 04:17:44 <zzo38> I once wrote a music synthesis program in QBASIC that make WAV file output. 04:17:56 <Gregor> zzo38: That ... is terrifying. 04:17:57 <elliott> aspect: mcmap is basically a proxy that sits between a badly-coded Minecraft client and a badly-coded Minecraft server. (The badly-codedness is irrelevant to everything except the fact that we have to deal with it on our end). It provides a fancy map with isometricness and all sorts of deep cross-section poking. It also used to provide its most commonly-used feature, an arbitrary teleportation command, but the server code got /slightly/ better an 04:17:57 <elliott> d that stopped working. I'm working on binding Guile to it, so that you'll be able to script all sorts of fun commands and automation and custom proxying. 04:18:10 <elliott> There ya go :P 04:18:34 <aspect> nice! thanks for the summary :) 04:18:57 <zzo38> The input is a text file describing instrument sound and notes to play, volume of notes, and so on; it is more limited than most programs, but does allow some things that most other program do not have, including to define any temperament. 04:19:04 <CakeProphet> Gregor: Faust is interesting in that it's a functional audio processing language. 04:19:05 <Gregor> So, does aspect have a highlight on "SCM" or what :P 04:19:11 <CakeProphet> I believe it has like 4 basic combinators. 04:19:19 <elliott> aspect: The Scheme bit isn't really relevant to being Scheme, but all the other good-to-embed languages are terrible :P 04:19:20 <aspect> I haven't actually used scheme in anger for about four years, but the recent press around guile has got me itching to build something in it and see just how good the FFI and freedesktop-y stuff actually is 04:19:30 <elliott> freedesktop-y stuff is terrible, as a rule. 04:19:55 <Gregor> xdg-open wtf://kill/elliott 04:19:55 <elliott> Guile isn't really what I'd pick for a standalone implementation, to be perfectly honest. But it has a very nice C interface. 04:20:58 <elliott> Well, you know, I say nice. 04:20:59 <elliott> https://github.com/fis/mcmap/blob/guile/scheme.c 04:21:01 <elliott> It's not all that nice. :p 04:21:02 <aspect> as a user, that much is obvious. I've a nagging hope staying with me that I can replace some of the most annoying freedesktop and dbus monstrosities with some of my own code without too much pain -- originally this was to be done in Tcl but I'm wondering if Guile will make it a bit easier 04:21:06 <elliott> But it isn't hideously surprising. 04:21:08 <zzo38> The computer design I was discussing, it is also the idea, in Forth and BASIC, if a URL is completely omitted it assumes you meant "tape:" 04:21:18 <elliott> aspect: Most of the time, you don't have to replace it. 04:21:25 <elliott> It's like PulseAudio; you can just drop it and absolutely nothing gets worse. 04:22:18 <elliott> Gregor: So is that electric-guitary sound meant to be piano? :P 04:22:18 <aspect> without PA I don't sem to have a convenient way to default output to bluetooth iff it is present 04:22:42 <elliott> aspect: I'm sure you could script that by just triggering on bluetooth state changing. 04:22:47 <Gregor> elliott: Nono, it /started/ as a piano. 04:22:52 <elliott> Gregor: lol 04:23:07 -!- sebbu2 has joined. 04:23:26 <aspect> elliott: true. But the blessed way to receive bluetooth events seems to be via dbus 04:24:52 <Gregor> I HAS KITTY 04:25:16 <elliott> aspect: Well, dbus is relatively unavoidable, but thankfully dbus is not all that bad. 04:25:21 <elliott> The rest of the xorg stuff... 04:25:50 <CakeProphet> the only things that are blessed are the objects of Perl. 04:26:01 * CakeProphet sings a Gregor-ian chant. 04:26:02 -!- sebbu has quit (Ping timeout: 252 seconds). 04:35:45 <CakeProphet> ^style europarl 04:35:45 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006) 04:35:51 <CakeProphet> fungot: make me into flour 04:35:51 <fungot> CakeProphet: mr president, commissioner, ladies and gentlemen, the alavanos, mendiluce and titley reports submitted to us on social rights and the principles which i have tried it out on other innocent parties. 04:36:45 <CakeProphet> fungot: tognuf 04:36:45 <fungot> CakeProphet: madam president, i think that we must hope that a compromise will be given the opportunity to discuss the problem of farmers' quotas, would lead to legislation whereby programs used to run equipment became patentable. it would be in trouble. the applicant countries to continue giving their support. 04:37:10 <CakeProphet> fungot: tognu F. 04:37:10 <fungot> CakeProphet: mr president, in the best egyptian judicial traditions has now been put off to friday. but i want my money back'. we know it generally deals with major infrastructure projects which could form part of the emergency package for korea, on christmas eve, in the interests of consumers and the environment of gmos. 04:40:39 <elliott> `addquote <fungot> CakeProphet: mr president, in the best egyptian judicial traditions has now been put off to friday. but i want my money back'. we know it generally deals with major infrastructure projects which could form part of the emergency package for korea, on christmas eve, in the interests of consumers and the environment of gmos. 04:40:40 <fungot> elliott: mr president, i wish to raise, namely that it is able, to assume responsibilities and commitments in the context of an anti-smoking policy, reduce and even ban tobacco imports. it should not be done away with. it is quite definitely a greenhouse effect. recently a small movement has emerged in record time. this is the case with italy. on the proposal, not only politically responsible, but also on the question of portfo 04:40:41 <HackEgo> 652) <fungot> CakeProphet: mr president, in the best egyptian judicial traditions has now been put off to friday. but i want my money back'. we know it generally deals with major infrastructure projects which could form part of the emergency package for korea, on christmas eve, in the interests of consumers and the environment of gmos. 04:41:11 <elliott> ais523: hmm, can sg merge implicitly? 04:41:14 <CakeProphet> > nub . permutations $ "elliott" 04:41:16 <lambdabot> ["elliott","leliott","lleiott","illeott","lileott","llieott","iellott","eil... 04:41:16 <elliott> or are merges only caused by a changeset? 04:41:18 <elliott> I think the latter 04:41:21 <elliott> but I'm not sure 04:41:26 <elliott> the talk of whitelisting things seems to imply not 04:41:33 <elliott> as changes would merge into a branch without a changeset commit 04:41:43 <ais523> elliott: a merge is itself a patch, so it doesn't come into being spontaneously 04:42:05 <ais523> whitelisting things and merging them might be bundled together into a command as it'd be a useful thing to combine 04:42:15 <ais523> but the two concepts make sense on their own 04:42:15 <elliott> ais523: right, but the point is that a major advantage is lost 04:42:21 <ais523> which major advantage? 04:42:24 <elliott> in that you can commit a bug fix to master and have it automatically merge into branches 04:42:28 <elliott> without doing anything 04:42:30 <elliott> because it's compatible 04:42:37 <ais523> oh, that isn't even a merge 04:42:45 <ais523> you only need an explicit merge if there's a conflict 04:42:51 <elliott> I'm talking about merges at the lower sense 04:42:57 <ais523> ah, fair enough 04:42:59 <ais523> yes, those are implicit 04:43:01 <elliott> how? 04:43:04 <ais523> except when conflicts are involved 04:43:06 <elliott> merges only happen in a changeset, you can see it in the apply function I defined 04:43:07 <ais523> by having both patches involved 04:43:17 <ais523> the changeset itself changes according to an algo 04:43:25 <elliott> that's not an answer, there is no changeset 04:43:30 <ais523> whether whitelist or take-all-from-master or etc 04:43:37 <ais523> elliott: well, with no changeset, there is no repo 04:43:41 <ais523> a repo /is/ a changeset, right? 04:43:47 <elliott> ais523: no 04:43:53 <elliott> ais523: that's not what a changeset is 04:44:00 <elliott> changeset :: Set Change -> Change 04:44:06 <CakeProphet> needs moar changesetsets 04:44:11 <elliott> it's how you do something more than just inserting one line in a commit 04:45:31 <elliott> ais523: there's definitely a model inconsistency here 04:45:31 <aspect> wait, so the set of all changes *is* a change? 04:45:47 <elliott> aspect: if you don't understand scapegoat, you won't understand talk about scapegoat :) 04:45:47 <ais523> elliott: well, a repo is one of those too 04:45:57 <elliott> ais523: no it's not; at least if it is, it's just started being one 04:46:00 <elliott> because it's never been one before 04:46:07 <ais523> elliott: what was the definition before? 04:46:13 <ais523> one of us is confused, and I'm willing to admit it's me 04:46:18 <ais523> but I'd like evidence 04:46:30 <elliott> of what? 04:46:37 <ais523> me being confused rather than you 04:46:42 <ais523> as in, what was the definition? 04:46:50 <elliott> of what? 04:47:00 <ais523> a repo 04:47:16 <elliott> just an object database 04:47:24 <ais523> aha, I'm thinking of a branch 04:47:31 <ais523> a branch is a subset of all changes developed according to an algo 04:47:37 <elliott> you are mistaking the fact that a repository contains a set of changes for the fact that there is a changetype that consists of a set of other changes 04:47:48 <ais523> and the difference between a branch and a changeset is that changesets are explicit changes made by listing other changes 04:47:54 <ais523> and branches are implicit and generated according to an algo 04:48:02 <ais523> agreed? 04:48:30 <elliott> ais523: well, yes, but this seems like "and the difference between an apple and an orange is that an orange is orange rather than green and also totally different" 04:49:31 <ais523> so your "merges only happen in a changeset" is misleading, the whole point is that you can calculate the result of any set of changes 04:49:34 <ais523> whether it's a changeset or not 04:49:40 <ais523> so low-level merges should happen in branches too 04:50:37 <elliott> ais523: well, OK 04:50:57 <elliott> ais523: the problem with that is that merges might not even /appear/ in the history of a branch 04:51:07 <elliott> which causes problems for (a) viewing the history, and (b) things like bisect 04:51:08 <ais523> they shouldn't 04:51:25 <ais523> I agree that bisect is a bit of a problem, as you're trying to bisect an unordered history 04:51:46 <ais523> for proper bisection, though, instead of having merges, you should have a history of which patches were considered part of the branch 04:51:48 <ais523> then bisect that history 04:51:56 <elliott> why isn't that the real history? 04:52:09 <ais523> in a sense, it is 04:52:12 <elliott> actually, implicit merges are scary for various reasons, which is why typical branches shouldn't get them; I'm wondering if they're a good idea at /all/ 04:52:32 <ais523> elliott: well, they only happen if the branch is set up to automatically include patches 04:52:41 <ais523> which is something you were in favour of and I was against, IIRC 04:53:00 <ais523> if you're explicitly whitelisting, you only get an implicit merge as a result of a whitelist operation 04:53:21 <ais523> anyway, the problem with explicit merges is that in git, you're supposed to edit them out, and you have huge numbers of them in a normal workflow 04:53:53 <elliott> you're meant to edit out branch merges in git? really? 04:53:59 * Sgeo decides not to say something stupid 04:53:59 <elliott> I have like fifty of them in the Guile branch 04:54:06 <elliott> Sgeo: too late, go on 04:54:38 <Sgeo> Near impossible to use a trackpad with wet fingers, even if you tried to dry them off 04:54:41 <ais523> elliott: this is part of the reason I dislike git fans 04:54:52 <elliott> what is? 04:54:54 <ais523> it's to "make the history neater" or something, and so that various tools will work properly 04:55:08 <elliott> I agree that merge commits are ugly, but that's a tool problem, IMO 04:55:20 <Sgeo> Tools won't work properly if you don't prettify history? 04:55:25 <Sgeo> That's.... disturbing 04:55:31 <ais523> aha, I think I know what we should do 04:55:45 <ais523> a whitelist should be represented as a changeset, as they're the same concept 04:56:01 <ais523> then, the dependency chains of that changeset is how you do bisection and visualise merges for the history 04:56:18 <elliott> hmm, maybe a branch is just a changeset, then; or rather, a computation of a changeset 04:56:24 <elliott> hmm, but wait 04:56:26 <elliott> shouldn't it just be a _change_ 04:56:31 <elliott> the tip is a branch; the tip is also a change 04:56:37 <elliott> the dependency of that changes is the rest of the tip branch 04:56:39 <elliott> and a branch can only have one head 04:56:44 <elliott> that's what makes it a branch, after all 04:56:48 <elliott> so a branch is a computation producing a change 04:56:53 <elliott> (that change could be a changeset, though) 04:56:58 <elliott> (but usually, it's just the latest commit in the branch) 04:57:03 <ais523> right, that's more general and makes sense 04:57:30 <elliott> hmm... a changeset is isomorphic to that changeset, plus all its dependencies 04:57:34 <elliott> or indeed plus any of its dependencies 04:57:42 <elliott> omg, maybe changes are groups?? 04:57:47 <elliott> they're obviously monoids 04:58:03 <elliott> quick, we have to make this mathematical! 04:58:19 <elliott> hmm, the identity element is obviously just the null change 04:58:20 <elliott> changeset {}, say 04:58:36 <elliott> ais523: does every change have an inverse, such that changeset {c, c'} ~ changeset {}? 04:58:42 <elliott> I think yes, and I think if the answer is no, that's a bug 04:59:18 <ais523> I can't think of one that doesn't 04:59:31 <elliott> ais523: what about those reassign-hash things? 04:59:50 <ais523> just reassign it again 05:00:05 <elliott> hmm, right 05:00:32 -!- augur has quit (Remote host closed the connection). 05:00:35 <elliott> (delete C)' = C 05:00:37 <elliott> heh 05:00:39 <elliott> that's lovely 05:01:12 <elliott> ais523: well, changes are at least an abelian group 05:01:17 <elliott> that's a pretty good sign 05:01:24 <elliott> I doubt they're a ring, at least I can't think of a sane + 05:01:24 <ais523> yay 05:01:33 <elliott> but abelian groups are still pretty good :P 05:02:00 <elliott> ais523: incidentally, how does one reify an intent for a hash-reassign commit? 05:02:01 <elliott> it sounds really hard 05:02:22 <elliott> I think you can't produce good merge commits in sg just by giving it the final product 05:02:23 <ais523> now I'm trying to remember what hash-reassign commits were for 05:02:29 <elliott> ais523: solving conflicts 05:02:52 <ais523> ah, right, "changes to version A should be edited into this version from version B" 05:03:12 <elliott> I've always been kind of uneasy about them 05:03:27 <ais523> what do you mean by "reify intent", again? 05:03:29 <elliott> I wonder if they're needed at all? Changes have inverses; you could just do changeset {A, B, invert of part of A, invert of part of B, additional stufF} 05:03:53 <elliott> ais523: well, it's a general term; in the context of sg, it's going from before + after to a change that tries to represent the user's intent in editing 05:04:04 <elliott> but to resolve a commit, you need to produce hash-reassign commits; or at least that's the status quo 05:04:08 <ais523> elliott: that was my original plan; the idea's that say we both make the same change 05:04:12 <elliott> and it seems very difficult to reify that intent 05:04:19 <ais523> and the merge resolves the change in favour of my version 05:04:23 <elliott> at least, without an additional merge tool that takes additional info 05:04:27 <ais523> elliott: aha, I know how you reify it 05:04:35 <ais523> the before is two conflicting versions 05:04:38 <ais523> and the after, one version 05:04:41 <elliott> indeed 05:04:58 <ais523> it's reified by diffing the after to each of the befores, and finding lines that are conflicting in the befores but the same in the before and the after 05:05:16 <ais523> i.e. lines that were in conflict, but not changed by the conflict resolution 05:05:21 <elliott> what if there are none? 05:05:37 <ais523> then hash-reassign commits probably aren't needed 05:05:41 <ais523> for the purpose of conflict solution 05:05:43 <elliott> ah, you mean it'll apply cleanly 05:06:01 <ais523> well, say we're using line-based diff 05:06:04 <elliott> ais523: I've always been a bit uneasy about them, though... is there a case when they help more than just including a partial inverse? 05:06:05 <ais523> and the original line is a = x; 05:06:10 <ais523> and you write a = x + i; 05:06:14 <ais523> and I write a = x + j; 05:06:22 <ais523> and the conflict fix is a = x + i + j; 05:06:39 <ais523> then there are no hash-reassign commits, because any edit to the x+i or x+j line can't easily be translated in terms of the x+i+j line 05:06:56 <ais523> the obvious case when they help more is if we both make the exact same change 05:07:06 <ais523> the obvious conflict fix there is to include that fix once 05:07:06 <elliott> hmm 05:07:07 <elliott> wait a second 05:07:09 <elliott> let me diagram this out 05:07:14 <elliott> -- 05:07:17 <elliott> ABC: a = x; 05:07:17 <elliott> -- 05:07:21 <elliott> DEF: a = x + i; 05:07:23 <elliott> -- 05:07:30 <elliott> AEC: a = x + i + j; 05:07:31 <elliott> -- 05:07:40 -!- ive has quit (Quit: leaving). 05:07:42 <elliott> changeset {ABC, DEF, replace ??? with "a = x + i + j;"} 05:07:46 <elliott> is ??? ABC or DEF? 05:07:55 <elliott> hmm 05:08:01 <elliott> changeset {ABC, DEF, delete ABC, replace DEF with "a = x + i + j;"} 05:08:06 <elliott> changeset {ABC, DEF, delete DEF, replace ABC with "a = x + i + j;"} 05:08:11 <elliott> ais523: the problem here, is that we want to /unify/ ABC and DEF 05:08:21 <elliott> OH 05:08:22 <elliott> ais523: wait 05:08:22 <elliott> wait 05:08:24 <ais523> changeset {ABC, DEF, delete ABC, delete DEF, insert between X1 and X2 "a = x + i + j;"} 05:08:26 <elliott> bit of a eureka 05:08:29 <elliott> bit of a eureka 05:08:32 <elliott> ais523: yes, but that merges terribly 05:08:33 <elliott> here's what we need 05:08:40 <ais523> elliott: the point is it's meant to merge terribly 05:08:44 <elliott> ais523: no, wait, _listen_ 05:09:11 <ais523> I am 05:09:13 <elliott> a change "unify A and B as C"; what it means is, A and B are deleted, _but_, whenever they are mentioned, consider it a mention to C instead 05:09:14 <ais523> that's why I stopped talking 05:09:24 <elliott> erm 05:09:30 <elliott> a change "unify A and B as STRING"; what it means is, A and B are deleted, _but_, whenever they are mentioned, consider it a mention to this change instead 05:09:31 <ais523> elliott: that's basically a special case of a hash-reassign 05:09:36 <elliott> ais523: it isn't 05:09:42 <elliott> because it does it to /all/ changes 05:10:00 <elliott> wait, here's what it looks like: 05:10:03 <ais523> so does a hash-reassign, that's the point 05:10:17 <elliott> changeset {ABC, DEF, unify ABC and DEF as DEF, (DEF) insert "a = x + i + j;" between X0 and Xone} 05:10:35 <elliott> ais523: how can you express that with a hash-reassign without deleting ABC or DEF? 05:10:36 <ais523> err, why have you given two different commits the same hash? 05:10:41 <elliott> erm 05:10:44 <ais523> elliott: well, the example there shouldn't have a hash-reassign 05:10:48 <elliott> changeset {ABC, DEF, unify ABC and DEF as QQQ, (QQQ) insert "a = x + i + j;" between X0 and Xone} 05:10:50 <elliott> ais523: it should 05:10:52 <ais523> now, say ABC and DEF are identical but for metadata 05:10:58 <ais523> /then/ you should have a hash-reassign 05:11:00 <elliott> because otherwise the history is broken 05:11:14 <ais523> but say, someone decides to replace "a = x + i;" with "a = x + i*2;" in my version 05:11:23 <elliott> sorry, but you are essentially arguing "they shouldn't merge" on no grounds other than maybe "it should break so the developer can look at it beacuse there's been a merge there" 05:11:23 <ais523> should that automatically replace the whole, merged line with "a = x + i*2;" 05:11:25 <ais523> obviously, no 05:11:27 <elliott> that's not a good reason to tarnish the history forever 05:11:30 <elliott> ABC and DEf weren't deleted 05:11:33 <elliott> they were merged 05:11:56 <elliott> ais523: I think, obviously yes 05:12:03 <elliott> it's "wrong", but that's for the merger to fix 05:12:06 <ais523> no, that's not how programming works at all 05:12:08 <ais523> it overwrote your change 05:12:11 -!- MDude has changed nick to MSleep. 05:12:29 <elliott> sg will inevitably overwrite changes 05:12:37 <ais523> no, it won't 05:12:44 <elliott> yes it will, per the Merging Full Employment Theorem 05:13:01 <ais523> it shouldn't disregard a change from a file just because a different line that was merged with it was changed 05:13:03 <elliott> s/Merging/Merger/ 05:13:11 <elliott> ais523: I think the problem is that this example is far too small 05:13:12 <ais523> if the merge of A+B produces something that's neither A nor B 05:13:23 <elliott> we need an example C function to do examples on :) 05:13:26 <ais523> then in general, you don't know what A'+B is 05:13:35 <ais523> elliott: let me go write one in a pastebin 05:13:40 <elliott> ais523: noo, I was going to 05:13:48 <ais523> two, in fact 05:13:51 <ais523> so you'll see what I'm getting at 05:14:01 <elliott> I just meant a generic one, for all merge talks 05:15:21 <elliott> I'm waiting, though 05:16:33 <CakeProphet> ...are you guys trying to make merges completely unsupervised? 05:16:46 <elliott> CakeProphet: what 05:17:11 <CakeProphet> as in. you don't have to manually merge ever. 05:17:17 <elliott> no. 05:19:38 <ais523> http://sprunge.us/TICU?c 05:20:11 <elliott> are A and B equal? 05:21:07 <elliott> ais523: ? 05:21:09 <ais523> yes, except for metadata 05:21:54 <elliott> hmm, OK, you've defeated me :) 05:22:00 <elliott> I still think we need more interesting examples of conflicts 05:22:02 <elliott> over multiple lines 05:22:32 <CakeProphet> make changes to the same file in an existing repo at the same time. 05:22:33 <CakeProphet> fun and profit. 05:24:08 <zzo38> Why does [d| type T = $(return $ TupleT 3) |] results in error about cycle in type synonym declaration? 05:25:13 <CakeProphet> because there's a cycle in the type synonym declaration. 05:25:32 <elliott> ais523: so anyway, do you still think we need hash changes? 05:25:40 <elliott> I'm honestly wondering whether partial reverts are ever worse 05:26:17 <zzo38> CakeProphet: But there isn't. It does that regardless of type name and regardless of the expression in $() even if it is not a Q Type expression. 05:26:19 <monqy> zzo38: what is the error in full? 05:26:52 <ais523> elliott: how do you get the A'+B+conflict resolution 1 case without them? 05:26:54 <zzo38> I tried 0 instead of 3 it is same error regardless. 05:27:00 <monqy> zzo38: also, is your use of return/TupleT intentional for stylistic purposes or do you not know of tupleT (Int -> Q Type)? 05:27:02 <ais523> the other reason I wanted them was for move-within-file changes 05:27:12 <ais523> which is an entirely different use for the same thing 05:27:17 <ais523> and seeing two uses for one thing left me convinced 05:27:22 <ais523> they weren't part of the original sg concept, though 05:27:24 <monqy> most if not all TH constructors have versions that work something like that 05:27:52 <zzo38> Cycle in type synonym declarations: <interactive>:1:5-33: type T = $(return $ TupleT 0) In the Template Haskell quotation [d| type T = $(return $ TupleT 0) |] In the expression: [d| type T = $(return $ TupleT 0) |] In an equation for `it': it = [d| type T = $(return $ TupleT 0) |] 05:28:02 <elliott> ais523: I'm not sure, the differences are subtle enough that I find this hard to read, but I'll give it a try 05:28:10 -!- augur has joined. 05:28:29 <elliott> ais523: well, let's see 05:28:37 <ais523> elliott: doing it with argv is a little silly; the intended use there would be for an AIish program where you're adding more factors into an evaluation algorithm 05:28:46 <elliott> ??? argv?? 05:28:55 <elliott> oh 05:28:57 <elliott> I see 05:29:06 <elliott> I just meant that they're like switching numbers and stuff 05:29:08 <elliott> so it's hard to keep track :) 05:29:08 <elliott> anyway 05:29:40 <elliott> changeset {A, B, delete MAINLINE_A, delete MAINLINE_B, insert "return atoi(argv[1])+atoi(argv[2]);" between ORIGINAL_PROTOTYPE and ORIGINAL_CLOSEBRACE} 05:29:45 <elliott> that's a+b+conflict resolution patch one 05:29:50 <elliott> A' is 05:30:02 <elliott> replace MAINLINE_A with "return atoi(argv[1])+atoi(argv[2])*2;" 05:30:15 <elliott> ais523: hey, now _your_ algo silently wipes out that change 05:30:37 <ais523> what change is it silently wiping out? 05:30:40 <elliott> A' 05:31:00 <ais523> A'+B+conflict res 1 is identical to A' 05:31:04 <ais523> and should be, because A was identical to B 05:31:45 <elliott> <elliott> changeset {A, B, delete MAINLINE_A, delete MAINLINE_B, insert "return atoi(argv[1])+atoi(argv[2]);" between ORIGINAL_PROTOTYPE and ORIGINAL_CLOSEBRACE} 05:31:45 <elliott> <elliott> that's a+b+conflict resolution patch one 05:31:46 <elliott> <elliott> A' is 05:31:46 <elliott> <elliott> replace MAINLINE_A with "return atoi(argv[1])+atoi(argv[2])*2;" 05:31:58 <elliott> changeset {A',B,conflict res 1} now... oh, conflicts 05:32:01 <elliott> because MAINLINE_A doesn't exist 05:32:03 <elliott> no wait, yes it does 05:32:05 <elliott> it was just replace 05:32:06 <elliott> d 05:32:08 <elliott> so it gets deleted 05:32:15 <elliott> and "return atoi(argv[1])+atoi(argv[2]);" inserted in its place 05:32:21 <elliott> so yes, your algorithm _can_ wipe out changes 05:32:29 <ais523> what change is being wiped out? 05:32:33 <elliott> <elliott> <elliott> replace MAINLINE_A with "return atoi(argv[1])+atoi(argv[2])*2;" 05:32:45 <ais523> that change is still in the result 05:32:51 <elliott> no it isn't 05:33:02 <ais523> oh, I made a typo 05:33:02 <elliott> changeset {A, replace MAINLINE_A with "return atoi(argv[1])+atoi(argv[2])*2;", B, delete MAINLINE_A, delete MAINLINE_B, insert "return atoi(argv[1])+atoi(argv[2]);" between ORIGINAL_PROTOTYPE and ORIGINAL_CLOSEBRACE} 05:33:07 <ais523> no wonder you're confused 05:33:11 <ais523> it's shown as wiped out in that example 05:33:11 <elliott> how is that replacement still in the result? 05:33:13 <ais523> but it shouldn't be 05:33:15 <elliott> >_< 05:33:21 <ais523> let me repaste 05:33:53 <elliott> "Suppose you are a former INTERCAL hacker and you truly miss the 05:33:54 <elliott> language." 05:33:54 <monqy> zzo38: in case there's no way to fix it, have you tried $(tySynD (mkName "T") [] (tupleT 0)) ? 05:33:57 <elliott> didn't expect to see that 05:33:57 <ais523> http://sprunge.us/iidQ?c (better?) 05:34:36 <elliott> ais523: it looks OK... but I still think this one-line example is completely impossible to follow, cognitively 05:34:42 <monqy> oh wait I think I did that wrong 05:35:04 <monqy> I've never worked with Dec splices before. 05:35:05 <elliott> gah, is anyone any good at debugging Scheme macros? 05:35:08 <ais523> elliott: change that line to ten copies of itself, if you like 05:35:13 <elliott> ais523: that doesn't help :) 05:35:30 <elliott> ais523: but yes, OK 05:35:31 <zzo38> monqy: OK, but is it a bug in GHC? Even if it is supposed to be error, the error message is wrong. 05:35:32 <elliott> I think it's right 05:35:33 <monqy> what's the macro? I don't have much experience with debugging them but maybe I can notice something 05:35:47 <elliott> monqy: 05:35:48 <elliott> (define-syntax on-packet 05:35:48 <elliott> (syntax-rules () 05:35:48 <elliott> ((on-packet origin (type binding) ...) 05:35:48 <elliott> (add-hook! 05:35:48 <elliott> (packet-hook 'type) 05:35:49 <elliott> (lambda (from binding) 05:35:51 <elliott> (if (or (eq? 'origin 'any) (eq? from 'origin)) 05:35:53 <elliott> (begin ...))))))) 05:35:54 <monqy> zzo38: I'm guessing it's a problem with [d||] quotes 05:35:55 <elliott> I ge 05:35:57 <elliott> t 05:35:59 <elliott> build/../scheme/init.scm:8:2: syntax: missing ellipsis in form (syntax (add-hook! (packet-hook (quote type)) (lambda (from binding) (if (or (eq? (quote origin) (quote any)) (eq? from (quote origin))) (begin ...))))) 05:36:09 <elliott> ais523: but yes, OK, I think you're right 05:36:26 <elliott> ais523: I still wish we could do without hash-changing commits though... I don't know, I realise they cause no _problems_, but they feel like a wedge in the language 05:36:32 <ais523> sorry about that typo 05:36:38 <elliott> because they /change the interpretation/ of commits they're not "directly" linked to, e.g. just adjacent in the same changeset 05:36:46 <elliott> which means you have to keep some sort of state 05:36:48 <ais523> elliott: I'd be glad to consider other solutions to the same problem 05:36:52 <elliott> which does just Does Not Gel With Me 05:36:56 <elliott> s/does just/just does/ 05:37:00 <elliott> s/just does/just/ 05:37:16 <ais523> I think I know the reason you're uneasy 05:37:18 <copumpkin> zzo38 05:37:19 <copumpkin> [01:36:33 AM] <dankna> a shame zzo38 didn't stick around 05:37:19 <copumpkin> [01:36:37 AM] <dankna> I see what his problem was :) 05:37:21 <ais523> imagine a search-and-replace commit 05:37:35 <ais523> that replaces all instances of "foo" with "bar" 05:37:56 <ais523> changes made in other repos that add "foo" should change to adding "bar" when merged with it 05:38:09 <ais523> /but/, changes made with knowledge of the foo->bar commit that add "foo" should still add "foo" 05:38:15 <ais523> and "with knowledge" isn't recorded anywhere 05:38:20 <elliott> heh 05:38:30 <elliott> (I don't think search-and-replace changes should exist, you probably agree but I'm just noting this) 05:38:31 <monqy> elliott: I can see where the problem is, but I cannot deduce the fix because I do not know what you are trying to do. If I knew the intended syntax and result of the macro I may be able to fix it 05:38:33 <ais523> so this is a general problem with change-interpretation patches 05:38:44 <elliott> monqy: what's the problem, out of curiosity? 05:38:47 <elliott> but the intent is: 05:38:55 <monqy> bad usage of ... 05:39:00 <elliott> monqy: http://sprunge.us/GPJA 05:39:06 <elliott> above is syntax, below is desire 05:39:10 <ais523> in the case of commits-not-directly-linked-to, the same problem doesn't occur as if you're referring to the old hash, it can only be because you don't know it's been superseded 05:39:29 <elliott> ais523: But really, my main problem with it, beyond general uneasiness about ugliness and ... sheer brute-force-ness, is that it means the "apply" function must take state. 05:39:31 <ais523> as you'd refer to the new one instead if you had knowledge of the hash-replacement 05:39:31 <elliott> i.e. the hash remapping. 05:39:35 <ais523> but you're right in that it's a bit ugly 05:39:46 <elliott> Which is horrible, because source + patch should → target or failure. 05:39:49 <ais523> I'm willing to consider other solutions to the same problem 05:39:53 <elliott> so you said 05:39:55 <elliott> I can't think of any, though 05:40:01 <elliott> hmm... 05:40:09 <elliott> what about "delete X with heir Y"? 05:40:11 -!- azaq23 has quit (Ping timeout: 260 seconds). 05:40:22 <elliott> it deletes X, but any changes that reference X /indirectly/ use Y instead 05:40:22 <ais523> actually, I'm not against search-and-replace patches if they can be made to work, but I'm not sure they can be 05:40:23 <elliott> by indirectly 05:40:24 <elliott> I mean 05:40:28 <elliott> they don't change Y 05:40:34 <elliott> so, e.g., a before or after-hash is an indirect reference 05:40:42 <elliott> as is the start/end (source and destination) of a move hash 05:40:44 <elliott> but not a replace, insert, delete, etc. 05:40:56 <ais523> elliott: well, the operation isn't just "for X use Y" but "delete X and refer to Y instead" 05:41:22 <aspect> elliot: the ... in the body of your macro doesn't correspond to any useful pattern to repeat. (begin begin begin) obviously isn't what you mean 05:41:31 <elliott> ais523: indeed 05:41:35 <elliott> aspect: ah 05:41:41 <elliott> aspect: I'm obviously confused about how ... works... 05:41:50 <ais523> I don't think that resolves the fundamental problems, though 05:41:53 -!- azaq23 has joined. 05:42:02 <ais523> why not use … instead? 05:42:05 <elliott> ais523: yes, it feels ugly to me too 05:42:06 <aspect> ITYM (syntax-rules () ((on-packet origin (type binding) body ...) and then (begin body ...) 05:42:10 <monqy> ok i have what i think is the fix: replace both instances of "..." with ". action" 05:42:13 <elliott> aspect: oh, thanks 05:42:22 <elliott> monqy: that seems less nice than aspect's 05:42:25 <monqy> aspect's fix would work too 05:42:26 <aspect> (foo body ...) is similar to (foo . tail) 05:42:47 <elliott> thanks 05:42:49 <aspect> but ... gives you some more flexibility on the rewrite form 05:42:50 <elliott> to both of you 05:42:59 <elliott> let's see if it works :P 05:43:44 <elliott> hmm, not quite... but it's a weird bug so it's probably mine 05:43:54 <aspect> you might run into some hygeine issues with what you're trying here 05:43:57 <elliott> oh, there we go 05:44:08 * aspect strokes chin and thinks 05:44:10 <elliott> aspect: Really? The only thing I bind is named in the macro usage. 05:44:12 <elliott> And it works. 05:44:28 <aspect> hm true, that should be ok 05:45:02 <aspect> (eq? 'origin 'any) is an odd condition 05:45:18 <elliott> yeah, it's so that you can say 05:45:19 <aspect> and you're quoting 'type ... 05:45:22 <elliott> (on-packet any (chat ...) ...) 05:45:27 <elliott> quoting type is correct 05:45:46 <elliott> because you say (packet-hook 'chat) 05:46:23 <aspect> I probably need to put a full-brian to understanding this 05:46:30 <aspect> which I can't atm with work on :/ 05:46:37 <elliott> wel,l it works now, so you can just ignore it ;-) 05:46:44 <aspect> but that quoting strikes me as wrong 05:46:48 <aspect> oh even better :) 05:47:03 <elliott> I'm pretty sure the quoting is right -- I want to check whether the passed "origin" is any 05:47:05 <monqy> there is a better way 05:47:15 <monqy> i can write it out 05:47:30 <CakeProphet> monqy has the power 05:49:13 <elliott> monqy: im wait, 05:49:15 <monqy> hm maybe it's not so better because it gets a bit messy? but the idea is to --i don't know how to describe this-- make any a keyword for the macro by putting it in the () after syntax-rules and then pattern matching against it at some point 05:49:22 <monqy> but I forget how to do this cleanly 05:49:33 <elliott> yeah, the problem is that I'd have to duplicate all the code, I think? 05:49:35 <elliott> maybe I'm wrong 05:49:39 <elliott> oh hmm I can think of a way 05:50:25 <monqy> would syntax-case work? 05:50:28 <monqy> that's a thing right 05:50:40 <monqy> I've never used it :( 05:50:46 <elliott> (define-syntax on-packet 05:50:47 <elliott> (syntax-rules (any) 05:50:47 <elliott> ((on-packet (any from) (type binding) body ...) 05:50:47 <elliott> (add-hook! 05:50:47 <elliott> (packet-hook 'type) 05:50:47 <elliott> (lambda (from binding) 05:50:49 <elliott> (begin body ...)))) 05:50:51 <elliott> ((on-packet origin (type binding) body ...) 05:50:53 <elliott> (on-packet (any from) (type binding) 05:50:56 <elliott> (if (eq? from 'origin) 05:50:57 <elliott> (begin body ...)))) 05:50:59 <elliott> that would work 05:51:01 <monqy> yuck 05:51:03 <elliott> I think 05:51:06 <monqy> there must be a better way 05:52:09 -!- Jafet has quit (Quit: Leaving.). 05:52:33 <fizzie> syntax-case can do everything, but nobodt knows how to use it, except some #scheme weirdoes. 05:52:41 <monqy> :( 05:52:59 <elliott> :D 05:53:02 <elliott> and oleg 05:53:38 <monqy> making a local macro or whatever it's called with let-syntax or something like that might be able to make it a tiny bit nicer... 05:54:17 <aspect> can oleg write a program so obscure that he cannot understand it? 05:54:40 <CakeProphet> fizzie: http://www.cs.indiana.edu/~dyb/pubs/tr356.pdf 05:54:51 <CakeProphet> google sure is neat. 05:55:05 <elliott> CakeProphet: lol @ being a jackass at someone clearly joking 05:55:22 <elliott> monqy: what I really want is a nicer way to dereference fields... :( 05:55:27 <elliott> (packet-field packet 'message) is not the most concise thing 05:56:09 <monqy> hm 05:56:22 <fizzie> (define p-f packet-field), of course. 05:56:59 <fizzie> Whoop, 9 characters of conciseness for free! 05:57:22 <elliott> Oh hey, the fizzie is here too. 05:57:27 <elliott> I was... I was going to ask the fizzie a question. 05:57:49 <fizzie> Not for long; I should be bicycling to wurk right about now. 06:01:38 <fizzie> Oh ho, Guile manual actually has a human-readable syntax-case description, with datum->syntax "this is how you introduce a binding" examples: http://www.gnu.org/software/guile/manual/html_node/Syntax-Case.html 06:02:04 <elliott> Indeedy. 06:04:42 <aspect> (set! packet (lambda (arg) (packet-field packet arg))) 06:04:58 <elliott> aspect: Groooooooooooooooooooss. 06:05:36 <aspect> arguably prettier than record types 06:05:56 <aspect> which stomp all over le hygiene 06:06:07 <CakeProphet> > let ba_ha = 2 in 2 06:06:08 <lambdabot> 2 06:06:18 <monqy> if all packets come from a common source you could wrap them there, rather than mutating them like that?? 06:06:20 <CakeProphet> I_am_going_to_write_all_Haskell_identifiers_like_this_from_now_on 06:06:59 <CakeProphet> I don't think I ever see that style used. 06:07:17 <monqy> best-haskell-identifier-style 06:07:27 <elliott> monqy: eh? 06:07:35 <elliott> Oh, I see what aspect was getting at. 06:07:48 <CakeProphet> > let what-is-this-help = 2 in what-is-this-help 06:07:48 <lambdabot> <no location info>: Parse error in pattern 06:08:04 <monqy> and my line was suggesting a clean alternative 06:08:22 <CakeProphet> oh, nevermind. I was going to disagree and say that syntax errors are wonderful. 06:08:30 <CakeProphet> s/dis// 06:08:42 <CakeProphet> but now I disagree completely. 06:08:49 <monqy> hm? 06:09:22 <monqy> did you miss the joke? or do you disagree with the serious part? 06:11:00 <CakeProphet> what joke? I am serious business right now. 06:11:22 <monqy> it not being valid haskell identifier syntax was the joke 06:11:43 <monqy> and the serious part is that having identifiers like that is how I'd prefer things 06:12:34 <aspect> best—haskell—identifier—style 06:12:54 <CakeProphet> best haskell identifier style 06:13:08 <monqy> gross 06:13:32 <CakeProphet> yeah spaces sure are a bad delimiter for words. 06:14:33 <ais523> you can use spaces in variable names in Algol 68 06:15:08 <aspect> (string->symbol "The best identifier of all!") 06:15:34 <aspect> the best part is you can bind a name like T to that in your code, so if you want to translate your identifier names it's a one-place operation 06:16:20 <monqy> I forget what languages do this but in some you can have identifiers of the form |spaces are permitted here| 06:17:35 <elliott> lisp 06:18:19 <monqy> probably was 06:18:52 <Lymee> > let some variable=1 in some variable 06:18:52 <aspect> it rings bells from scheme but apparently not in gambit, which is the only impl I seem to have installed on this laptop 06:18:53 <lambdabot> Not in scope: `variable' 06:18:55 <Lymee> :< 06:19:18 <Lymee> > let あ=1 in あ 06:19:19 <lambdabot> 1 06:19:40 <monqy> I might have encountered it in reading draft 1 of the r7rs spec? maybe? 06:19:59 <aspect> would have been r6rs surely if it were scheme 06:20:08 <monqy> heheh 06:20:21 * aspect got disgusted with scheme by the time r6rs was a few months old 06:20:33 <Sgeo> So, Dash will be Google's replacement for Javascript? 06:20:40 * Sgeo hopes they don't fuck it up 06:20:41 <monqy> I never payed much attention to r6rs 06:20:57 <aspect> Sgeo, I hope they allow - in variable names 06:21:15 <aspect> r6 made me cry 06:21:33 <aspect> but then I discovered tcl and was enlightened 06:23:00 <monqy> is tcl good 06:23:47 <aspect> perhaps surprisingly, it's quite wonderful 06:24:11 <elliott> no lambdas 06:24:16 <monqy> ;_; 06:24:21 <aspect> there are problems of course, but a refreshingsimplicity which gives rise to a lot of nice things 06:24:22 <elliott> also, use of the worst data structure as code 06:24:32 <monqy> ;_; 06:24:38 <aspect> EIS 06:24:43 <aspect> true homoiconicity 06:24:52 <aspect> also: http://wiki.tcl.tk/22049 06:25:22 <aspect> and there are lambdas of a sort, they're just not much like you expect 06:25:33 <elliott> no, nothing is a string; the widespread use of strings is an artefact of our current inadequate OS ecosystems 06:25:40 <elliott> and no, Jim had proper lambdas, but nobody uses lambdas 06:25:45 <aspect> err 06:25:50 <elliott> pikhq used to use Tcl, so he can probably make arguments better than me :) 06:25:55 <aspect> Jim was fucked 06:26:07 <monqy> ew strings really? ahahahahahahahahaha 06:26:08 <elliott> it also had lambdas 06:26:29 <aspect> there's a page on the wiki called "Jim closures", which goes on for about 500 words before pointing out they're not actually closures 06:26:33 <CakeProphet> elliott: wait weren't you trying to convince me that tcl is awesome? 06:26:38 <aspect> but cam emulate them if you add references, which are actually boxes 06:26:49 <elliott> CakeProphet: no, I was trying to convince you you disliked Tcl for stupid reasons 06:26:51 -!- Vorpal has joined. 06:27:01 <elliott> I would argue vigorously against anyone saying that Microsoft was a baby-killing machine, too 06:27:12 <aspect> you say "ew strings", but the result is a much friendlier language for metaprogramming than Scheme 06:27:25 <CakeProphet> ...I don't see how. 06:27:35 <CakeProphet> strings = flat lists = structured programs = structured 06:27:38 <aspect> dealing with hygiene is a little messy .... but see syntax-case 06:27:41 <Sgeo> <insert standard joke about atheists here> 06:27:54 <monqy> hi Sgeo 06:28:00 <Sgeo> hi 06:28:18 <monqy> aspect: for once CakeProphet is right 06:28:32 <aspect> strings + quoting = structured 06:28:43 <CakeProphet> yes you cannot deny my amazing equational reasoning 06:28:50 -!- sebbu3 has joined. 06:29:29 * Sgeo hasn't been following the discussion, but what about Picolisp? 06:29:36 <aspect> see http://wiki.tcl.tk/10259 for an explication of string structure 06:30:25 <aspect> also, see the first link I pasted. Less than a few hundred lines of code to turn Tcl into Scheme. Now try the reverse 06:30:28 * Sgeo wrote some ... module thingy for Picolisp 06:30:34 <Sgeo> Never put it anyplace accessible :/ 06:30:44 <elliott> doesn't look like scheme to me; anyway I never compared tcl to scheme 06:31:03 <elliott> yes, I have read the Dodekalogue. please don't assume I know nothing about Tcl 06:31:06 <aspect> (okay, I lack call/cc .. but with uplevel and a bit of cleverness, one could write call/cc as a procedure that re-writes its caller) 06:31:42 <aspect> the dodekalogue link was more for CakeProphet 06:31:53 <Sgeo> elliott is to blame for me getting interested in Picolisp 06:31:55 <aspect> and you don't think playing-scheme looks like scheme? 06:32:24 -!- sebbu2 has quit (Ping timeout: 260 seconds). 06:32:31 <elliott> since when is gensym scheme 06:33:28 * Sgeo finds his rename code 06:34:06 <aspect> gensym is a scheme for generating symbols, duh 06:34:41 <Sgeo> I... uh... what? 06:35:13 <Sgeo> Then again, I'm easily confused 06:35:42 * aspect hopes elliott was trolling me; if not, [Number] is the example you should be looking at -- [gensym] belongs behind the curtain 06:36:08 <elliott> I'm a very trolly troll. 06:38:04 <aspect> your name is practically an anagram for it 06:38:56 <ais523> toll tie 06:46:41 <CakeProphet> http://nyan.cat/ :3 06:47:52 <ais523> please tell me that's not a real URL 06:47:57 <CakeProphet> it is. 06:48:35 <monqy> :| 06:49:02 <CakeProphet> though it's buttered toast and not a pop-tart 06:49:53 <CakeProphet> oh god I just opened the youtube video and this site 06:49:56 <CakeProphet> nyanning at the same time. 06:50:02 <CakeProphet> oh god I'm going to have a seizure. 06:50:13 * CakeProphet closes one. 06:50:22 <monqy> ok 06:51:43 -!- nooga has joined. 06:55:47 <CakeProphet> my goal in life: get rich off of a meme. 06:56:20 <monqy> :( 06:56:48 <monqy> I hope you hate people like that and are secretly mocking them 06:58:05 <CakeProphet> monqy: I'm actually not a complete idiot. 06:58:08 <CakeProphet> by the way. 06:58:43 <monqy> it's hard to tell with you sorry :( 06:59:11 <CakeProphet> my sarcasm stealth is obscene. 06:59:27 <CakeProphet> or, well, stealthfully obscene. 06:59:34 <CakeProphet> though I'm pretty sure that's not possible. 07:00:02 -!- sebbu2 has joined. 07:00:02 -!- sebbu2 has quit (Changing host). 07:00:02 -!- sebbu2 has joined. 07:00:44 <CakeProphet> can something be offensive and also hidden? 07:00:47 <CakeProphet> I guess so. 07:01:28 <monqy> enpvfg wbxr urer 07:01:56 <CakeProphet> !rot13 enpvfg wbxr urer 07:02:01 <EgoBot> racist joke here 07:02:25 <aspect> that would be better hidden in a dark font 07:02:36 <monqy> +c :( 07:02:52 <monqy> also hhehe ehehh 07:03:05 <CakeProphet> I crack the codes. I end the war. 07:03:25 -!- sebbu3 has quit (Ping timeout: 258 seconds). 07:04:08 <CakeProphet> are there any other "encryption" algorithms that are self-decrypted, besides the rot* family? 07:05:37 <ais523> xor with onetime pad 07:05:54 <ais523> or with multipletime pad, come to think of it, but that's not a very good encryption algo 07:05:55 <monqy> anything with the property forall letters a, b; if a maps to b, b maps to a 07:06:00 <ais523> (that said, nor is rot13) 07:06:27 <CakeProphet> monqy: woah, you just blew my mind. 07:06:52 <CakeProphet> ais523: what are you xoring in that algorithm? 07:06:59 <ais523> the plaintext with the onetime pad 07:07:07 <CakeProphet> right what is a onetime pad... 07:07:22 <ais523> basically, a key the same length as the message, that you only use once 07:07:22 * CakeProphet does not know a lot about crytography. 07:07:26 <CakeProphet> ah okay. 07:07:31 <CakeProphet> short for padlock? 07:07:37 <ais523> it's theoretically perfect encryption, the issue is in distributing the keys in the first place 07:07:37 <CakeProphet> perhaps? 07:07:43 <ais523> I'm not sure if it's short for anything 07:07:43 <zzo38> XOR with one time pad is as secure as the one time pad is. 07:08:04 <zzo38> There are no weaknesses. 07:08:35 <zzo38> A one time pad also has no inherent weaknesses; only weakness in the way the key is generated or transferred or whatever are weakness. 07:08:35 <CakeProphet> :t (.^.) 07:08:35 <lambdabot> Not in scope: `.^.' 07:08:42 <CakeProphet> :t xor 07:08:43 <lambdabot> forall a. (Bits a) => a -> a -> a 07:08:44 <fizzie> "The "pad" part of the name comes from early implementations where the key material was distributed as a pad of paper, so the top sheet could be easily torn off and destroyed after use." 07:08:55 <ais523> quantum cryptography is mostly focused on ingenious ways to calculate a one-time pad in such a way that you can detect whether it's known by anyone else 07:09:01 <ais523> (and not use it if it is) 07:09:05 <fizzie> The pad is short for pad, then. 07:09:12 <zzo38> fizzie: That isn't very good; you will get impressions on the next page from the writing. 07:09:27 <ais523> zzo38: I think it was meant to be read rather than written on 07:09:36 <CakeProphet> > zipWith "The cats out of the bag" "oskdjfuai ofjekrisoxkzlektiqoeirskdfhwerhiuhdfiuhweiuhd" 07:09:36 <lambdabot> Couldn't match expected type `a -> b -> c' 07:09:37 <lambdabot> against inferred type `[... 07:09:46 <CakeProphet> > zipWith xor "The cats out of the bag" "oskdjfuai ofjekrisoxkzlektiqoeirskdfhwerhiuhdfiuhweiuhd" 07:09:46 <lambdabot> No instance for (Data.Bits.Bits GHC.Types.Char) 07:09:46 <lambdabot> arising from a use of `D... 07:09:48 <zzo38> But how can you read it if there is nothing written on there? 07:09:49 <fizzie> Yes; you can write first and then stample the sheets into a pad. 07:09:49 <CakeProphet> ...wat 07:09:57 <CakeProphet> I don't really understand this Bits typeclass. 07:10:01 <zzo38> fizzie: That would work better. 07:10:02 <ais523> zzo38: the information would be printed on there in advance 07:10:16 <CakeProphet> @hoogle Char -> Word8 07:10:16 <lambdabot> Data.ByteString.Internal c2w :: Char -> Word8 07:10:17 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b 07:10:17 <lambdabot> Prelude error :: [Char] -> a 07:10:33 <CakeProphet> er, is there a better way to do that? 07:10:48 <monqy> :t (chr . xor . ord) 07:10:49 <zzo38> What? The @hoogle does not always match types properly 07:10:49 <lambdabot> Couldn't match expected type `Int' against inferred type `a -> a' 07:10:49 <lambdabot> In the first argument of `(.)', namely `xor' 07:10:49 <lambdabot> In the second argument of `(.)', namely `xor . ord' 07:10:52 <monqy> oops 07:10:53 <monqy> I uh 07:10:57 <monqy> messed that one up 07:11:19 <zzo38> toEnum . fromEnum 07:11:52 <fizzie> > zipWith xor (ord <$> "abc") (ord <$> "efg") 07:11:53 <lambdabot> [4,4,4] 07:12:10 <fizzie> ISTR 'ord' is just fromEnum type-restricted to Char. 07:12:30 <monqy> ?src ord 07:12:30 <lambdabot> Source not found. 07:12:34 <monqy> oops 07:12:35 <CakeProphet> > zipwith (chr . (xor `on` ord)) "abc" "efg" 07:12:36 <lambdabot> Not in scope: `zipwith' 07:12:41 <CakeProphet> > zipWith (chr . (xor `on` ord)) "abc" "efg" 07:12:42 <lambdabot> Couldn't match expected type `b -> c' 07:12:42 <lambdabot> against inferred type `GHC.Ty... 07:12:50 <CakeProphet> oh rite 07:13:53 <CakeProphet> uh, I'm bad at pointfree. :P 07:13:55 <fizzie> > chr <$> zipWith (xor `on` ord) "abcdef" "foobar" 07:13:56 <lambdabot> "\a\r\f\ACK\EOT\DC4" 07:13:58 <fizzie> Ooh, nice escapes. 07:14:09 <ais523> wait, which one is \a? alert? 07:14:14 <CakeProphet> I believe so. 07:14:19 <CakeProphet> if it's the same as C. 07:14:31 <ais523> the \ACK\EOT\DC4 stuff is pretty unusual as escapes go, at least 07:14:56 <CakeProphet> isn't there a .: or something? 07:15:00 <fizzie> Apparently \BEL also works, but it seems to default to the one-character escapes which exist. 07:15:03 <CakeProphet> :t (.:) 07:15:04 <lambdabot> forall a b (f :: * -> *) (g :: * -> *). (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b) 07:15:45 <CakeProphet> > zipWith ( chr .: (xor `on` ord)) "hello" "GOODBYE" 07:15:47 <lambdabot> "/*#(-" 07:16:02 <CakeProphet> > zipWith ( chr .: (xor `on` ord)) "/*#(-" "GOODBYE" 07:16:03 <lambdabot> "hello" 07:16:07 <CakeProphet> cool. 07:16:31 <CakeProphet> @hoogle (.:) 07:16:31 <lambdabot> No results found 07:16:35 <CakeProphet> ..what is that. 07:16:54 <CakeProphet> what is this magical nonexistant operator I just used. where is it. 07:16:55 -!- Taneb has joined. 07:17:04 <Taneb> Hello 07:17:08 <CakeProphet> *nonexistent 07:17:09 <monqy> hi 07:17:10 <CakeProphet> hello. 07:18:18 <CakeProphet> man I wish my teacher didn't give me a participation grade for listening to a recording of the class, when the recording is partially missing. 07:19:00 -!- Taneb has quit (Client Quit). 07:19:13 -!- ais523 has quit (Remote host closed the connection). 07:20:04 <CakeProphet> help what is .: help 07:21:21 <monqy> :t fmap . fmap 07:21:22 <lambdabot> forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) 07:21:34 -!- oerjan has joined. 07:22:42 <CakeProphet> :t (fmap . fmap) id id 07:22:43 <lambdabot> forall a (f :: * -> *). (Functor f) => f a -> f a 07:22:55 <CakeProphet> :t (id.).id 07:22:55 <lambdabot> forall a (f :: * -> *). (Functor f) => f a -> f a 07:23:05 <CakeProphet> man I'm so bad at composition. 07:23:20 <CakeProphet> :t (id.) 07:23:20 <lambdabot> forall a (f :: * -> *). (Functor f) => f a -> f a 07:23:35 <oerjan> caleskell strikes again 07:23:48 <CakeProphet> :t ((id$).) 07:23:48 <lambdabot> forall a (f :: * -> *). (Functor f) => f a -> f a 07:23:58 <oerjan> :t (id P..) 07:23:59 <lambdabot> Couldn't find qualified module. 07:24:03 <oerjan> :t (id Prelude..) 07:24:04 <lambdabot> forall b a. (a -> b) -> a -> b 07:24:17 <CakeProphet> er 07:24:25 <CakeProphet> oh okay. 07:24:37 <oerjan> heaps of shortened moduled names, but the one you actually need most often... 07:25:12 <CakeProphet> :t ((1>) Prelude..) 07:25:12 <oerjan> :t ($) 07:25:12 <lambdabot> forall t a. (Num t, Ord t) => (a -> t) -> a -> Bool 07:25:13 <lambdabot> forall a b. (a -> b) -> a -> b 07:25:22 <CakeProphet> yeah I noticed that. 07:25:36 <CakeProphet> hmmm, okay. 07:25:53 <oerjan> :t (id <<<) 07:25:54 <CakeProphet> that's still a little confusing, but I know the idiom (f.).g 07:25:54 <lambdabot> forall b a. (a -> b) -> a -> b 07:26:48 <monqy> :t id 07:26:49 <lambdabot> forall a. a -> a 07:27:01 <CakeProphet> ...oh wait I've got it. 07:27:03 <oerjan> > id "entical" 07:27:04 <lambdabot> "entical" 07:27:09 <monqy> I find it a bit strange that caleskell id and (.) aren't the Category id and (.) 07:27:29 <oerjan> monqy: i think caleskell is slightly older 07:27:32 <CakeProphet> (f.).g 1 == (f.g 1) 07:27:33 <monqy> ah 07:27:34 <CakeProphet> right? 07:27:36 <monqy> (.) being fmap is kind of weird 07:28:00 <oerjan> CakeProphet: er no? 07:28:10 <CakeProphet> ...oh okay. 07:28:14 <CakeProphet> then I don't understand. :P 07:28:36 <monqy> CakeProphet: sometimes it's easier to think in terms of fmap and the Functor instance for (a ->) when constructing those sorts of things 07:28:53 <oerjan> @unpl ((f.).g) x y 07:28:54 <lambdabot> (f (g x y)) 07:28:54 <CakeProphet> er, actually I mean ((f.).g) 1 == (f.g 1) 07:29:10 <CakeProphet> @unpl (f.g 1) 07:29:10 <lambdabot> (\ c -> f (g 1 c)) 07:29:23 <CakeProphet> yeah 07:29:25 <CakeProphet> same thing. 07:29:49 <CakeProphet> okay I've got it. I just had to work out the equational substitutions. 07:29:59 <monqy> ok 07:30:17 <CakeProphet> now let's see if I can to it with three arguments. 07:30:45 <monqy> anything beyond two arguments and I start using fmap instead of . in a few places or just doing it pointfully. two arguments is pushing it, too. 07:31:24 <CakeProphet> > (((f.).).g) 1 2 3 07:31:25 <lambdabot> Ambiguous type variable `a' in the constraints: 07:31:26 <lambdabot> `SimpleReflect.FromExpr ... 07:31:31 <CakeProphet> @unpl (((f.).).g) 1 2 3 07:31:31 <lambdabot> (f (g 1 2 3)) 07:31:36 <CakeProphet> alright. 07:32:15 <monqy> I guess it's okay when all arguments are in the right order and there aren't any other arguments or anything 07:32:45 <CakeProphet> and that's... fmap (fmap (fmap f)) g ? 07:32:55 <oerjan> `addquote <oklopol> king is something women are better at than men 07:33:00 <HackEgo> 653) <oklopol> king is something women are better at than men 07:33:37 <CakeProphet> monqy: how would you go about flipping arguments correctly? 07:33:44 <monqy> I dunno 07:33:45 * CakeProphet wants to write Haskell like pl does. For fun. 07:33:51 <monqy> I forget how I'd do it :( 07:34:10 <CakeProphet> well flip g would flip the first two obviously. 07:34:36 <CakeProphet> @pl (\f g x y z -> f ( g z y x)) 07:34:36 <lambdabot> (. (flip . (flip .) . flip)) . (.) . (.) . (.) 07:34:37 <oerjan> CakeProphet: hey @pl doesn't know how to use Arrow functions 07:34:51 <CakeProphet> that's fine neither do I. :P 07:34:55 <CakeProphet> well I can kind of use &&& I think. 07:34:59 <monqy> actually I think the point at which I switch to fmap is when composing compositions because that's weird 07:35:05 <zzo38> I managed to make a program in Haskell for type-level natural numbers that allows you to do this: valcon (undefined :: Add $(3) $(4)) 07:35:09 <zzo38> The result will then be 7 07:35:12 <aspect> @unpl (f . g) 1 2 3 07:35:12 <lambdabot> f (g 1) 2 3 07:35:16 <CakeProphet> @pl (\f g x y z -> f ( g y x z)) 07:35:16 <lambdabot> (. flip) . (.) . (.) . (.) 07:35:18 <aspect> ok, cool 07:35:39 <CakeProphet> man that is so bad.. 07:35:49 <CakeProphet> @pl (\x y z -> f ( g y x z)) 07:35:49 <lambdabot> ((f .) .) . flip g 07:35:53 <CakeProphet> okay that is better. 07:35:58 <zzo38> (It uses an instance Num (Q Type), although it is not really the proper way to make a Num instance, of course!!) 07:36:01 <CakeProphet> @pl (\x y z -> f ( g z y x)) 07:36:01 <lambdabot> ((f .) .) . flip (flip . flip g) 07:36:10 <monqy> flip 07:36:17 <CakeProphet> monqy: well right I knew I'd want flip 07:36:35 <CakeProphet> ah okay so flip . flip g 07:37:01 <CakeProphet> @pl (\x y z -> f ( g x z y)) 07:37:01 <lambdabot> ((f .) .) . flip . g 07:37:17 <CakeProphet> yeah those make sense now. 07:37:41 <zzo38> Is it good, what I made with type-level natural number? Or, is strange? Or, something else? 07:38:21 <oerjan> zzo38: i don't recall seeing type-level programming and template haskell combined before 07:38:25 <CakeProphet> :t flip flip 07:38:26 <lambdabot> forall (f :: * -> *) a b. (Functor f) => a -> f (a -> b) -> f b 07:38:35 <oerjan> but i haven't seen everything, either 07:38:40 <CakeProphet> wat 07:38:41 <CakeProphet> :t flip 07:38:41 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 07:38:44 <monqy> what is $(3) 07:38:59 <CakeProphet> TH for a type-level natural I'd imagine. 07:39:02 <zzo38> oerjan: Are you sure? I have never seen it either, but it would be possible. 07:39:24 <zzo38> And in fact I have been able to do so. 07:39:24 <oerjan> zzo38: well you've just proved it is possible, it seems :P 07:39:44 <CakeProphet> I'm guessing caleskell also makes flip work on functors? 07:39:47 <monqy> maybe $(3) was just zzo shorthand 07:39:50 <monqy> which is why I asked 07:40:22 <CakeProphet> > flip [(+3), (+4), (+5)] 6 07:40:24 <lambdabot> [9,10,11] 07:40:28 <zzo38> monqy: Actually I made it so that $(3) is valid where a type is expected. 07:40:31 <oerjan> monqy: there would be no reason to parenthesize 3 if it were shorthand, i think 07:40:51 <CakeProphet> :t (<*>) 07:40:51 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b 07:40:52 <zzo38> It is not normally allowed for a TH splice to have only a number 07:40:58 <CakeProphet> so basically flip is <*> for functors. 07:41:12 <CakeProphet> @src flip 07:41:12 <lambdabot> flip f x y = f y x 07:41:30 <zzo38> oerjan: Yes, I believe you. 07:42:47 <monqy> CakeProphet: didn't you see the type signatures? 07:43:01 <oerjan> :t flip 07:43:02 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 07:43:11 <zzo38> Although the program uses Template Haskell only for the purpose of writing things such as $(3) and does everything else with classes and type families. 07:43:12 <CakeProphet> monqy: right but I don't believe that is the standard type signature for flip. 07:43:21 <monqy> CakeProphet: also it can't be <*> for functors, for fundamental reasons 07:43:26 <oerjan> :t flip (fmap (flip id)) 07:43:27 <lambdabot> forall a b a1. a1 -> (a1 -> a) -> (a -> b) -> b 07:43:27 <monqy> behind <*>'s nature 07:43:30 <oerjan> eek 07:43:53 <oerjan> :t flip (fmap . flip id) 07:43:54 <lambdabot> forall b (f :: * -> *) a. (Functor f) => f (a -> b) -> a -> f b 07:44:32 <monqy> CakeProphet: the fundamental reason is that there'd be no reason to have to declare <*> in Applicative if you could write it for any old Functor 07:44:33 <CakeProphet> wait, how do you flip id. 07:44:42 <oerjan> @unpl flip id 07:44:43 <lambdabot> (\ b c -> c b) 07:44:50 <CakeProphet> oh right. 07:44:54 <azaq23> <*> for function is the S combinator 07:45:00 <zzo38> (flip id) is Church exponentiation. 07:45:14 <monqy> CakeProphet: the type signature difference is that the second argument of flip is of type a, whereas in (<*>) it is of f a 07:45:32 <oerjan> :t Prelude.flip 07:45:33 <lambdabot> forall a b c. (a -> b -> c) -> b -> a -> c 07:45:47 <CakeProphet> okay so then what is the source for this new flip? 07:45:50 -!- GreaseMonkey has joined. 07:46:02 <oerjan> CakeProphet: i just showed above 07:46:08 <CakeProphet> it's recursive? 07:46:09 <oerjan> :t flip (fmap (flip id)) 07:46:10 <lambdabot> forall a b a1. a1 -> (a1 -> a) -> (a -> b) -> b 07:46:31 <oerjan> CakeProphet: well that flip used is supposed to be the standard one, of course 07:46:32 <azaq23> :t ((<*>) :: (t -> t1 -> t2) -> (t -> t1) -> t -> t2) 07:46:32 <lambdabot> forall t t1 t2. (t -> t1 -> t2) -> (t -> t1) -> t -> t2 07:46:36 <CakeProphet> oerjan: oh okay. 07:46:41 <aspect> is this like sudoku for haskellers? 07:46:49 <oerjan> aspect: heh 07:46:59 <azaq23> @djinn (t -> t1 -> t2) -> (t -> t1) -> t -> t2 07:46:59 <lambdabot> f a b c = a c (b c) 07:47:53 <monqy> flip (fmap (flip id))? wasn't your definition flip (fmap . flip id)? 07:48:08 <monqy> or were you doing something else there 07:48:20 <oerjan> monqy: gah i miscopy/pasted 07:48:26 <oerjan> :t flip (fmap . flip id) 07:48:27 <lambdabot> forall b (f :: * -> *) a. (Functor f) => f (a -> b) -> a -> f b 07:48:51 -!- calamari has quit (Quit: Leaving). 07:49:04 <oerjan> :t (<*>.($)) 07:49:05 <lambdabot> Not in scope: `<*>.' 07:49:08 <oerjan> eek 07:49:14 <oerjan> :t ((<*>).($)) 07:49:15 <lambdabot> forall a b a1. (a1 -> a -> b) -> (a1 -> a) -> a1 -> b 07:49:46 <CakeProphet> :t ((<*>).(<*>)) 07:49:47 <lambdabot> forall a b a1. (a -> a1 -> b) -> ((a -> a1) -> a) -> (a -> a1) -> b 07:50:06 <CakeProphet> @djinn ((<*>).(<*>)) 07:50:06 <lambdabot> Cannot parse command 07:50:09 <monqy> :t ((<*>)<$>(<*>)) 07:50:09 <lambdabot> forall a b a1. (a -> a1 -> b) -> ((a -> a1) -> a) -> (a -> a1) -> b 07:50:19 <CakeProphet> @djinn forall a b a1. (a -> a1 -> b) -> ((a -> a1) -> a) -> (a -> a1) -> b 07:50:19 <lambdabot> f a b c = a (b c) (c (b c)) 07:50:36 <CakeProphet> exciting. 07:50:38 <monqy> ?unpl ap.ap 07:50:38 <lambdabot> (\ c h -> (\ n -> c >>= \ k -> n >>= \ j -> return (k j)) >>= \ e -> h >>= \ d -> return (e d)) 07:50:45 <monqy> exciting 07:51:46 <CakeProphet> :t (<*>).(<*>).(<*>) 07:51:47 <lambdabot> forall b a a1. (a -> a1 -> b) -> (((a -> a1) -> a) -> a -> a1) -> ((a -> a1) -> a) -> b 07:51:49 <CakeProphet> weeeee 07:52:12 <azaq23> @@ @do @unpl ap . ap 07:52:12 <lambdabot> (\ c h -> do { e <- (\ n -> do { k <- c; j <- n; return (k j)}); d <- h; return (e d)}) 07:52:35 <oerjan> i suppose @unpl doesn't work too well with ap 07:53:15 <monqy> ?. ?do ?unpl ap 07:53:15 <lambdabot> Plugin `compose' failed with: Unknown command: "?do" 07:53:17 <monqy> oops 07:53:20 <monqy> ?. do unpl ap 07:53:20 <lambdabot> (\ d e -> do { b <- d; a <- e; return (b a)}) 07:53:36 <oerjan> @list do 07:53:37 <lambdabot> undo provides: undo do 07:54:09 <monqy> ?unpl ap 07:54:09 <lambdabot> (\ d e -> d >>= \ b -> e >>= \ a -> return (b a)) 07:57:38 <CakeProphet> @pl (\a b c -> a (b c) (c (b c))) 07:57:38 <lambdabot> (`ap` ap id) . liftM2 07:58:04 <CakeProphet> you've lost my trust, @pl 07:58:32 <monqy> ?unpl (`ap` ap id) . liftM2 07:58:32 <lambdabot> (\ j -> (\ f g -> f >>= \ d -> g >>= \ c -> return (j d c)) >>= \ r -> (\ o -> (\ a -> a) >>= \ l -> o >>= \ k -> return (l k)) >>= \ q -> return (r q)) 07:58:38 <monqy> thanks 07:59:10 <CakeProphet> I wonder which provides obfuscated code more often. 07:59:14 <oerjan> that second c probably complicates the plumbing a lot 07:59:38 <oerjan> @unpl ap id b c 07:59:39 <lambdabot> ((\ a -> a) >>= \ e -> b >>= \ d -> return (e d)) c 08:00:07 <CakeProphet> oerjan: pl should just magically know that it's (<*>).(<*>) because it's an awesome cat eye operator thing. 08:00:27 <monqy> pl uses ap instead of (<*>) 08:00:27 <oerjan> you don't say 08:00:29 <zzo38> I did something might be a bit strange, which is accessing a field which is incapable of ever having a value in the circumstances where the field is being accessed. (There might be possibility of the field having values, but not in the program I wrote.) 08:00:43 <oerjan> :t ap.ap 08:00:44 <lambdabot> forall a b a1. (a -> a1 -> b) -> ((a -> a1) -> a) -> (a -> a1) -> b 08:01:01 <oerjan> @@ @djinn @type ap.ap 08:01:02 <lambdabot> f a b c = a (b c) (c (b c)) 08:01:20 <oerjan> oh you already did that 08:01:23 <CakeProphet> yep. 08:02:51 <oerjan> :t ap.ap.ap 08:02:52 <lambdabot> forall b a a1. (a -> a1 -> b) -> (((a -> a1) -> a) -> a -> a1) -> ((a -> a1) -> a) -> b 08:02:55 <oerjan> :t ap.ap.ap.ap 08:02:56 <lambdabot> forall b a a1. (a -> a1 -> b) -> ((((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> (((a -> a1) -> a) -> a -> a1) -> b 08:03:02 <oerjan> :t ap.ap.ap.ap.ap 08:03:03 <lambdabot> forall b a a1. (a -> a1 -> b) -> (((((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> ((a -> a1) -> a) -> a -> a1) -> ((((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> b 08:03:09 <monqy> how much ap is too much ap 08:03:19 <oerjan> :t ap.ap.ap.ap.ap.ap.ap.ap 08:03:20 <lambdabot> forall b a a1. (a -> a1 -> b) -> ((((((((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> ((a -> a1) -> a) -> a -> a1) -> (((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> ((((a -> a1) -> a) -> a - 08:03:20 <lambdabot> > a1) -> (a -> a1) -> a) -> ((a -> a1) -> a) -> a -> a1) -> (((((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> ((a -> a1) -> a) -> a -> a1) -> (((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> ( 08:03:20 <lambdabot> ((((((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> ((a -> a1) -> a) -> a -> a1) -> (((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> ((((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> ((a -> 08:03:20 <lambdabot> a1) -> a) -> a -> a1) -> b 08:03:36 <oklopol> "<elliott> ais523: well, changes are at least an abelian group" <<< please elaborate 08:03:37 <oerjan> monqy: a lot 08:04:05 <oerjan> :t fix (ap.) 08:04:06 <lambdabot> Occurs check: cannot construct the infinite type: m = (->) (m a) 08:04:06 <lambdabot> Expected type: f (m (a -> b)) 08:04:06 <lambdabot> Inferred type: f (m a -> m b) 08:04:57 <monqy> (ap ap ap ap ap ap ap) gives a really long infinite type error 08:04:58 <elliott> oklopol: how would you like me to elaborate? 08:05:00 <zzo38> This is program I made: http://sprunge.us/PKiW 08:05:05 <oerjan> :t ap ap 08:05:05 <lambdabot> forall (m :: * -> *) a b. (Monad m) => (m (a -> b) -> m a) -> m (a -> b) -> m b 08:05:08 <oerjan> :t ap ap ap 08:05:09 <lambdabot> Occurs check: cannot construct the infinite type: m = (->) (m a) 08:05:09 <lambdabot> Probable cause: `ap' is applied to too few arguments 08:05:09 <lambdabot> In the second argument of `ap', namely `ap' 08:05:57 <oklopol> elliott: what are the elements and what's the operation i guess 08:06:48 <CakeProphet> :t ((<*>).(<*>)) (const ((:[])>=>(:[])>=>(:[]))) (const ((:[])>=>(:[])>=>(:[]))) ((:[])>=>(:[])>=>(:[])) 08:06:48 <lambdabot> forall b. [[b -> [b]]] 08:06:52 <elliott> oklopol: well changes look roughly like change := start-of-file | end-of-file | insert <string> between <change> and <change> | replace <change> with <change> | delete <change> | move (<change>,<change>) to (<change>,<change>) | changeset <set of change> 08:07:00 <CakeProphet> okay I definitely need to obfuscate something with that line... 08:07:02 <elliott> the operation is a . b = changeset {a,b} 08:07:22 <elliott> the inverse is 08:07:34 <oklopol> where do you get that that's a group lolol 08:07:40 <oklopol> hmm 08:07:46 <elliott> inverse(insert x between a and b) = delete (insert x between a and b) 08:07:50 <elliott> inverse(delete x) = x 08:07:57 <elliott> inverse(replace x with y) = delete (replace x with y) 08:08:00 <elliott> inverse(move) = cba to write 08:08:05 <elliott> inverse(changeset) = blah blah recurse 08:08:07 <CakeProphet> ((<*>).(<*>)) (const ((:[])>=>(:[])>=>(:[]))) (const ((:[])>=>(:[])>=>(:[]))) ((:[])>=>(:[])>=>(:[])) <$> (<*> 3) 08:08:10 <CakeProphet> > ((<*>).(<*>)) (const ((:[])>=>(:[])>=>(:[]))) (const ((:[])>=>(:[])>=>(:[]))) ((:[])>=>(:[])>=>(:[])) <$> (<*> 3) 08:08:10 <lambdabot> Couldn't match expected type `a -> b' against inferred type `[b1]' 08:08:23 <elliott> inverse(start-of-file) = probably changeset {}, sof and eof act as nops in practice 08:08:36 <elliott> but yeah, changes are an abelian group. 08:08:43 <elliott> if they're not it's a bug :P 08:09:15 <CakeProphet> one day I will be a great Haskell programmer, telling hieroglyphic stories with my programs 08:09:20 <CakeProphet> epic tales of cats and totem poles. 08:09:20 <oklopol> and it doesn't matter in which order you say insert two strings? 08:09:29 <oklopol> i suppose i have no idea what we're talking about 08:09:32 <elliott> oklopol: changeset takes a set, not anything ordered, so yes. 08:09:36 <elliott> the context is scapegoat 08:09:51 <elliott> ais' vcs design that I'm working on him with, based around recursive changes 08:10:17 <oklopol> but umm do you have x * x = x when x is a value 08:10:23 <oklopol> or is it added twice 08:11:06 <elliott> x * x = changeset {x, x} 08:11:13 <elliott> = changeset {x} that's how sets fucking work :P 08:11:30 <oklopol> so x * x = x? 08:11:38 <oerjan> zzo38: couldn't you avoid the getPred field by using valcon _ = 1 + valcon (undefined :: x) ? 08:11:45 <elliott> oklopol: yes. 08:11:46 <oklopol> then it's not a group 08:11:57 <elliott> er hm oh :P 08:12:08 <elliott> hmmmm 08:12:11 * oklopol saves the day and goes to work 08:12:15 <elliott> x * x might actually want to conflict 08:12:25 <elliott> hey oerjan help us fix scapegoat 08:12:27 <CakeProphet> > (<*> [3]) <$> ((<*>).(<*>)) (const ((:[])>=>(:[])>=>(:[]))) (const ((:[])>=>(:[])>=>(:[]))) ((:[])>=>(:[])>=>(:[])) 08:12:29 <lambdabot> [[[3]]] 08:12:46 <aspect> does x*x -> x imply idempotent changesets? 08:12:52 <zzo38> oerjan: That doesn't seem to work when I tried 08:12:58 <aspect> because I don't understand what you're doing, but that sounds like it would be bad 08:13:05 <elliott> that's correct. 08:13:08 <elliott> and right 08:13:15 <elliott> but it actually just implies that {x,x} = x 08:13:18 <elliott> but yes :P 08:15:37 <oklopol> actually it implies that x = nop for all x 08:15:39 -!- nooga has quit (Ping timeout: 260 seconds). 08:15:45 <oerjan> zzo38: huh. maybe the type x isn't actually in scope. i vaguely recall something about that. 08:15:51 <zzo38> What it seems to do is x in (undefined :: x) is a new variable 08:16:12 <zzo38> That is why I put getPred instead. 08:16:12 <oerjan> zzo38: perhaps if you add the ScopedTypeVariables extension? 08:16:26 <oerjan> (iirc the name) 08:16:44 <CakeProphet> @hoogle a -> [a] 08:16:44 <lambdabot> Prelude repeat :: a -> [a] 08:16:44 <lambdabot> Data.List repeat :: a -> [a] 08:16:44 <lambdabot> Prelude iterate :: (a -> a) -> a -> [a] 08:16:47 <zzo38> Maybe it will, but it also works the way I have it. 08:16:59 <monqy> :t return :: a -> [a] 08:16:59 <lambdabot> forall a. a -> [a] 08:17:02 <monqy> :t pure :: a -> [a] 08:17:02 <lambdabot> forall a. a -> [a] 08:17:10 <CakeProphet> > repeat >=> repeat $ 3 08:17:11 <lambdabot> [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,... 08:17:17 <oerjan> zzo38: ok. anyone i think that's the kind of thing that extension allows. 08:17:21 <oerjan> *anyhow 08:17:30 <aspect> :t >=> 08:17:30 <lambdabot> parse error on input `>=>' 08:17:34 <CakeProphet> > repeat >=> (+1) $ 3 08:17:34 <lambdabot> No instance for (GHC.Num.Num [c]) 08:17:34 <lambdabot> arising from a use of `e_113' at <inte... 08:17:37 <aspect> :t (>=>) 08:17:37 <lambdabot> forall a (m :: * -> *) b c. (Monad m) => (a -> m b) -> (b -> m c) -> a -> m c 08:17:52 <CakeProphet> > (+3) >=> repeat $ 3 08:17:52 <lambdabot> No instance for (GHC.Num.Num [b]) 08:17:52 <lambdabot> arising from a use of `e_133' at <inte... 08:17:57 * aspect eyes glaze over 08:18:08 <CakeProphet> repeat is not an acceptable return. :( 08:18:18 <zzo38> oerjan: OK. 08:18:19 <elliott> <oklopol> actually it implies that x = nop for all x 08:18:24 <elliott> that's certainly not true. 08:18:27 <elliott> i accept it isn't a group though. 08:18:45 <CakeProphet> > repeat >=> (return.(+1)) $ 3 08:18:46 <lambdabot> [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,... 08:19:09 <zzo38> Would you ever have some use of this "TypeNatural" program? 08:19:21 <CakeProphet> not I/. 08:19:55 <oerjan> CakeProphet: actually repeat is essentially the pure of the ZipList Applicative, which _may_ be extensible to a monad. 08:20:10 <CakeProphet> > repeat >=> (repeat.(+1)) $ 3 08:20:11 <lambdabot> [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,... 08:20:26 <oerjan> but not with the same monad bind 08:20:34 <CakeProphet> ah 08:20:50 <oerjan> basically join for it is taking the diagonal of a matrix 08:21:13 <monqy> and that satisfies the monad laws? 08:21:25 <oerjan> but the monad laws may subtly fail because of bottoms if you do that naively 08:21:33 <monqy> ah 08:21:49 <CakeProphet> aspect: learn you a haskell for great good. 08:22:40 <CakeProphet> release the shackles of OOP, er... AOP I guess, based on your name. :P 08:22:43 <oerjan> monqy: i _think_ it works if you require the entire square above and to the left of a diagonal element to be filled in order for that element to be put in the join 08:22:49 <elliott> i think aspect knows haskell, CakeProphet. 08:22:55 <aspect> CakeProphet: cutesy-styled tutorials don't turn me on 08:22:59 <oerjan> during my previous experimentations 08:23:03 <CakeProphet> it's not obnoxiously cute. 08:23:03 <elliott> oerjan: iirc ZipList is well known to not be a monad, but... 08:23:08 <elliott> aspect: disable images 08:23:18 <zzo38> Is it a comonad? 08:23:22 <CakeProphet> aspect: it's not as bad as this one Ruby tutorial I read. 08:23:31 <oerjan> elliott: i have never seen it written up... 08:23:32 <monqy> elliott: is the writing not cutsey as well? 08:23:43 <elliott> CakeProphet: note: insulting why's poignant guide will cause me to travel to your house and kill you. 08:23:43 <CakeProphet> not really. it's mostly informative. 08:23:57 <oerjan> elliott: so i am still suspicious they just haven't defined join properly... 08:24:03 <elliott> oerjan: heh 08:24:15 <CakeProphet> elliott: it was an interesting read. but... I mean 08:24:21 <CakeProphet> the huge monologues were kind of not needed. 08:24:27 <aspect> no, I don't really know haskell -- certainly not OOP shackled though ... but watching @pl games in here doesn't do a lot to attract me 08:24:49 <elliott> #esoteric is not really about a marketable face. 08:24:53 <oerjan> elliott: oh. the thing that makes me almost sure it's a monad is because it is nearly isomorphic to (Integer ->) 08:24:59 <aspect> the Squiggol paper was more obvious 08:25:01 <elliott> everything here is pointless, no matter what the medium. 08:25:02 <oerjan> well, (Nat ->) 08:25:13 <elliott> oerjan: except that ZipLists can be finite. 08:25:35 <monqy> aspect: just like how ioccc makes me hate c 08:26:22 <monqy> oerjan: nearly isomorphic? 08:26:22 <oerjan> elliott: yes. so it's subtle but i haven't seen a proof that it _must_ break 08:26:29 <elliott> oerjan: heh 08:26:47 <oerjan> monqy: if all lists involved are infinite, then it is isomorphic 08:26:56 <monqy> ah 08:27:02 <aspect> well, I like to see the dark corners of new things early. I gets the hate out of the way 08:27:10 <oerjan> l <-> (l !!) 08:27:16 <CakeProphet> aspect: pl is a very good obfuscatory / code concisor 08:27:32 <CakeProphet> *obfuscator 08:28:05 <CakeProphet> it serves both purposes well. 08:28:57 <zzo38> Send my program of type-level natural numbers to the Cabal or whatever, if you want to do so. It is public domain it is OK to do anything with it, modified or not, etc 08:29:30 <CakeProphet> can I modify it into a cat program? 08:30:01 <zzo38> CakeProphet: You probably can but it would be better to write your own cat program, since this is a completely different program 08:30:44 <elliott> oerjan: so anyway, help us make scapegoat changes some itneresting structure :P 08:33:20 <CakeProphet> aspect: http://pastebin.com/yXJAs7ft here is a program I made in Haskell that outputs an infinite list of palindromes in an alphabet. 08:33:30 <oerjan> tetraphilomorphic streptocobordisms 08:33:32 <CakeProphet> this will either make you interested or scare you away more perhaps. 08:34:01 <aspect> no, scares me away more 08:34:10 <aspect> what's wrong with simple recursive equations 08:34:21 <monqy> they suck 08:34:23 <monqy> that's what 08:34:32 <CakeProphet> they can be rewritten as re-usable combinators. 08:34:32 <aspect> or let .. in .. rather than where 08:34:40 <CakeProphet> just syntactic preference. 08:34:46 <monqy> what's so bad about where 08:34:49 <CakeProphet> there's let .. in .. as well 08:34:57 <CakeProphet> it can be used. 08:35:06 <elliott> monqy: hey, antezepto is still a thing that exists 08:35:07 <aspect> it reverses the order I'm used to seeing things in 08:35:16 <monqy> elliott: I forgot about antezepto 08:35:20 <oerjan> where has the nice property of not suggesting the definitions are evaluated first 08:35:22 <monqy> elliott: how existing is it 08:35:38 <elliott> monqy: i have almost three hundred lines of haskell purporting to be it here... 08:35:48 <monqy> does it work 08:35:53 <elliott> dunno, let's find out 08:36:05 <elliott> apparently 08:36:08 <aspect> oerjan: wow, implications about evluation order are considered a risk in haskell? : 08:37:27 <elliott> monqy: i am thinking... maybe i do not need the mutability that is in this code... 08:37:29 <elliott> (I probably do) 08:37:34 <elliott> (I think you can't define variables without it) 08:37:35 <CakeProphet> expressions are lazily evaluated, so there isn't really a definite order of evaluation 08:37:48 <elliott> CakeProphet: s/lazily/non-strictly/. 08:38:04 <monqy> aspect: sometimes it's more natural/readable to have the defintions first...sometimes it isn't 08:38:24 <monqy> aspect: a lot of the time I want the high-level picture first with the implementation details and helper functions after it 08:38:34 <elliott> let...in is never idiomatic in haskell imo 08:38:57 <monqy> I use let...in for pattern-matching chains 08:39:03 <aspect> monqy: there are idioms. I never read academic papers top to bottom, for example, often the same is true of programs 08:39:10 <aspect> perhaps the ones I'm used to don't work here though 08:39:28 <aspect> like having operators that resemble what people might have seen elsewhere in the world and are less than three symbols long :) 08:39:32 <CakeProphet> > let y = undefined; x = f x in x 08:39:32 <lambdabot> Ambiguous type variable `a' in the constraints: 08:39:33 <lambdabot> `GHC.Show.Show a' 08:39:33 <lambdabot> a... 08:39:39 <CakeProphet> > let y = undefined; x = f x in x :: Expr 08:39:40 <lambdabot> f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 08:40:00 <monqy> aspect: "people can skip around" is not reason to say you shouldn't strive to make things natural/sensible/easy to read and understand 08:40:31 <monqy> it'd be awful to have a bunch of helper functions before the real stuff 08:40:47 <CakeProphet> I could probably rewrite palindromes to be more readable but I prefer the concise code. 08:40:57 <CakeProphet> monqy: see: Python 08:41:03 <CakeProphet> well, sometimes. 08:41:10 <monqy> CakeProphet: a pity it's not very concise :( 08:41:17 <CakeProphet> monqy: could it be more concise? 08:41:21 <monqy> perhaps! 08:42:09 <CakeProphet> @pl joinMirrors x y = (x++y) : map ((x++).(:y)) alphabet 08:42:09 <lambdabot> joinMirrors = ap (ap . ((:) .) . (++)) (flip flip alphabet . (map .) . (. flip (:)) . (.) . (++)) 08:42:14 <CakeProphet> we're not friends anymore pl 08:42:18 <monqy> ;_; 08:42:55 <CakeProphet> I think that's the best mixture of concise/readable that I can think of. 08:43:03 <CakeProphet> I had joinMirrors as a lambda originally 08:43:57 <monqy> > let palindromes alphabet = fmap (join $ (++) . reverse) ([0..] >>= (`replicateM` alphabet)) in palindromes "abc" 08:43:59 <lambdabot> ["","aa","bb","cc","aaaa","baab","caac","abba","bbbb","cbbc","acca","bccb",... 08:44:05 -!- zzo38 has left. 08:44:07 <monqy> oops 08:44:16 <monqy> that's only evens 08:44:24 <CakeProphet> yep. 08:45:03 <CakeProphet> that's close to what I had originally though. 08:45:11 <CakeProphet> and then I realized I also needed the odd ones. 08:45:18 <CakeProphet> which is what joinMirrors does. 08:47:44 <CakeProphet> @unpl (++) . reverse 08:47:44 <lambdabot> (\ c -> (++) (reverse c)) 08:48:01 <CakeProphet> hmmm, I could use . instead of ap 08:48:07 <CakeProphet> I think. 08:48:39 <CakeProphet> @unpl flip ap (++) reverse 08:48:40 <lambdabot> (reverse >>= \ e -> (++) >>= \ d -> return (e d)) 08:48:50 <CakeProphet> @unpl flip <*> (++) reverse 08:48:51 <lambdabot> ((\ a b c -> a c b) <*> ((++) reverse)) 08:48:55 <CakeProphet> .. 08:51:35 <monqy> hm? 08:52:46 <CakeProphet> nothing. 08:55:18 <CakeProphet> monqy: bahahaha you cannot make my code better. 08:55:32 <monqy> hm???? 08:55:40 <CakeProphet> I challenge you. 08:55:42 <CakeProphet> to do it. 08:56:43 <elliott> ?pl join (f `fmap` x `ap` y) 08:56:43 <lambdabot> join (liftM2 f x y) 08:56:47 <elliott> oerjan: he;lp 08:57:07 <elliott> ?pl join (f `fmap` x `ap` return y) 08:57:07 <lambdabot> join (liftM2 f x (return y)) 08:57:27 <monqy> idiom brackest time??? 08:58:40 <CakeProphet> elliott: also, a delayed reply to your s/// above: is there a difference between lazy and non-strict 08:58:46 <CakeProphet> +? 08:58:47 <elliott> yes. 08:58:55 <elliott> call by name is non-strict, for instance. 08:59:18 <CakeProphet> so Haskell is not call-by-need? 08:59:30 <elliott> no. GHC is. 08:59:42 <elliott> GHC is specifically call-by-need with sharing. 08:59:49 <elliott> oerjan: (with sharing isn't implicit there, right?) 09:00:10 <CakeProphet> so the Haskell Report only specifies non-strict? 09:00:13 <oerjan> call-by-need implies sharing, i think 09:00:26 <oerjan> otherwise it's just call-by-name 09:00:28 <CakeProphet> call-by-need = lazy evaluation 09:00:32 <elliott> monqy: so i sketched up... what i think might be a very zepto... thing... 09:00:37 <CakeProphet> which implies sharing. 09:00:41 <monqy> ooh? 09:01:11 <elliott> monqy: it... may SHOCK you... 09:01:23 <elliott> http://sprunge.us/WheA 09:02:17 <monqy> zepto 09:02:29 <elliott> monqy: oh good... i thought... you would reject it... 09:02:32 <elliott> for its SYNTAX... 09:02:38 -!- BeholdMyGlory has quit (Ping timeout: 258 seconds). 09:02:41 <elliott> but the rules... are simple... (I think...) 09:02:52 <oerjan> > forM [tail, id] (join . (++) . reverse .) =<< (`replicateM` alphabet) =<< [1..] 09:02:53 <lambdabot> The operator `L..' [infixr 9] of a section 09:02:53 <lambdabot> must have lower precedence ... 09:02:56 <elliott> although a weird thing there is that => isn't actually done as abinary operator... 09:03:03 <elliott> while + and times are 09:03:05 <monqy> the only part of the syntax I'm iffy about is the special syntax for cons 09:03:05 <oerjan> argh wrong way 09:03:13 <oerjan> > forM [tail, id] ((join . (++) . reverse) .) =<< (`replicateM` alphabet) =<< [1..] 09:03:14 <lambdabot> Not in scope: `alphabet' 09:03:21 <elliott> monqy: it's actually special syntax for (list ...) 09:03:24 <oerjan> > forM [tail, id] ((join . (++) . reverse) .) =<< (`replicateM` "abcd") =<< [1..] 09:03:26 <lambdabot> Occurs check: cannot construct the infinite type: m = (->) (m a) 09:03:26 <monqy> or are all constructors in [] 09:03:31 <oerjan> gah! 09:03:33 <CakeProphet> so basically what I'm learning from this class is that software engineering is a neat way to waste a lot of time not writing code. 09:03:33 <elliott> monqy: http://arcanesentiment.blogspot.com/2011/08/why-use-keywords-as-symbols.html inspired me a bit 09:03:37 <elliott> monqy: basically quote isn't very usable 09:03:46 <elliott> you just want a constructor, and all _sub_expression arguments to be evaluated, usually 09:03:55 <elliott> so [(+ 9 9)] is (list (+ 9 9)) 09:04:11 <elliott> [a b c . xs] is (lolreplacenilwith xs (list a b c)) 09:04:59 -!- BeholdMyGlory has joined. 09:05:04 <oerjan> :t forM [tail, id] ((join . (++) . reverse) .) 09:05:05 <lambdabot> Occurs check: cannot construct the infinite type: m = (->) (m a) 09:05:05 <lambdabot> Probable cause: `++' is applied to too few arguments 09:05:05 <lambdabot> In the first argument of `(.)', namely `(++)' 09:05:08 <monqy> oh so lists aren't constructed normally? 09:05:59 <elliott> monqy: eh? 09:06:07 <elliott> the point is that [...] isn't '(...) 09:06:09 <monqy> i tried describing what i meant but that didn't work 09:06:11 <elliott> it's more like (list ...) 09:06:15 <elliott> all sub-expressions are evaluated 09:06:25 <monqy> my gripe was a bit different... 09:06:27 <monqy> than that 09:06:28 <elliott> go on then 09:06:43 <oerjan> :t forM [tail, id] ((ap . (++) . reverse) .) 09:06:44 <lambdabot> Couldn't match expected type `a -> b' against inferred type `[a1]' 09:06:44 <lambdabot> In the second argument of `(.)', namely `reverse' 09:06:44 <lambdabot> In the second argument of `(.)', namely `(++) . reverse' 09:07:30 <monqy> well i guess it depends on how zepto handles its analogue to haskell data types, which I assumed it has, from the pattern matching 09:07:52 <oerjan> :t forM [tail, id] (ap . (++) . reverse) 09:07:53 <lambdabot> Couldn't match expected type `[a] -> [a]' 09:07:53 <lambdabot> against inferred type `[a1]' 09:07:53 <lambdabot> In the second argument of `(.)', namely `reverse' 09:08:11 <elliott> monqy: i'm not really decided on data types 09:08:15 <monqy> ah 09:08:21 <elliott> monqy: but yes, pattern matching on constructors will work "haskell-style" 09:08:26 <oerjan> :t ((ap . (++) . reverse) .) 09:08:27 <lambdabot> Couldn't match expected type `a -> b' against inferred type `[a1]' 09:08:27 <lambdabot> In the second argument of `(.)', namely `reverse' 09:08:27 <lambdabot> In the second argument of `(.)', namely `(++) . reverse' 09:08:41 <oerjan> :t (((++) . reverse) .) 09:08:42 <lambdabot> forall a (f :: * -> *). (Functor f) => f [a] -> f ([a] -> [a]) 09:08:52 <elliott> monqy: also everything is immutable 09:08:57 <monqy> then I don't see why (Cons x xs) must be written specially as [x . xs] unless ther'es something really special important about lists 09:09:00 <monqy> immutability is good 09:09:01 <elliott> and maybe even typed??? 09:09:09 <elliott> monqy: look further down 09:09:09 <elliott> [c '=> e] . rest => 09:09:11 <elliott> that's list syntax 09:09:14 <elliott> you can write 09:09:15 <elliott> def foo 09:09:19 <elliott> [a b c] => a + b + c 09:09:22 <elliott> or 09:09:23 <elliott> def foo 09:09:31 <elliott> [a b c . rest] => a + b + c + sum rest 09:09:41 <elliott> [x . xs] is just a special case of one element before the dot 09:10:56 <monqy> ok...special cases sort of make me sad though...also how is [x . xs] different from a single-element list with a list inside of it, where x is the first element and xs is the rest of the elements 09:11:14 <monqy> or did i misinterpret 'special case' 09:11:17 <elliott> you misinterpreted 09:11:18 <elliott> i meant that 09:11:19 <elliott> [x . xs] 09:11:20 <oerjan> :t (ap ((++) . reverse)) 09:11:20 <lambdabot> forall a. ([a] -> [a]) -> [a] -> [a] 09:11:22 <elliott> is NOT SPECIAL SYNTAX 09:11:25 <elliott> it is just a special case of list syntax 09:11:37 <elliott> "also how is [x . xs] different from a single-element list with a list inside of it, where x is the first element and xs is the rest of the elements" 09:11:40 <elliott> because that's not how you write it at all? 09:11:43 <elliott> show me a scheme where 09:11:44 <elliott> 0 . 9 09:11:47 <elliott> produces the pair (0 . 9) 09:11:54 <oerjan> :t forM [tail, id] (ap ((++) . reverse)) 09:11:55 <lambdabot> forall a. [a] -> [[a]] 09:12:14 <oerjan> > forM [tail, id] (ap ((++) . reverse))) =<< (`replicateM` "abc") =<< [1..] 09:12:15 <lambdabot> <no location info>: parse error on input `)' 09:12:25 <oerjan> > forM [tail, id] (ap ((++) . reverse)) =<< (`replicateM` "abc") =<< [1..] 09:12:27 <lambdabot> ["a","aa","b","bb","c","cc","aaa","aaaa","bab","baab","cac","caac","aba","a... 09:12:29 <monqy> elliott: ??? 09:12:35 <elliott> monqy: ugh 09:12:42 <monqy> ugh??? 09:12:46 <elliott> monqy: what is your complaint? you haven't said anything that makes sense 09:12:47 <oerjan> CakeProphet: \o/ 09:12:48 <myndzi> | 09:12:48 <myndzi> /| 09:13:17 <CakeProphet> oerjan: I'm not even sure I understand how that works... 09:13:37 <monqy> what oerjan did looks like what I was working on 09:13:47 <monqy> but a bit different 09:15:15 <elliott> monqy: seriously, it sounds to me like you incredibly misunderstand list syntax 09:15:21 <elliott> do you understand how this might work: 09:15:25 <elliott> (list 'a 'b 'c) 09:15:25 <elliott> ? 09:16:22 <oerjan> CakeProphet: lots of -> Monad 09:16:24 <monqy> oh i see what you were saying. 'special' threw me off. 09:16:35 <elliott> and then see how this might work 09:16:37 <elliott> (list 'a 'b 'c . 'd) 09:16:38 <CakeProphet> oerjan: I'm just bad at composition still :P 09:16:39 <elliott> then contract 09:16:42 <elliott> (list 'a . 'd) 09:16:44 <elliott> ['a . 'd] 09:16:47 <elliott> but pattern match 09:16:48 <elliott> [x . xs] 09:17:01 <oerjan> CakeProphet: well you may have noted all the errors i had underway >_< 09:17:25 <CakeProphet> oerjan: why tail? 09:17:34 <elliott> monqy: does it make sense now? 09:17:40 <monqy> (as i usually use "special case" to mean a case that's handled specially, and just "case" when it's a single normally-handled case) 09:17:44 <monqy> i think so? 09:17:47 <elliott> good :P 09:17:59 <oerjan> CakeProphet: to get the odd ones by removing the first element of what's appended 09:18:22 <CakeProphet> ....huh. okay. 09:18:28 <CakeProphet> I noticed yours has a different ordering so I guess that's why. 09:18:59 <monqy> actually there is one thing that's throwing me off 09:19:12 <monqy> about lists 09:19:30 <elliott> monqy: go on 09:19:45 <monqy> in map you have [f x . map f xs] but elsewhere you seem to use spaces to separate list elements? 09:20:07 <CakeProphet> I believe . is like : in Haskell and space is like , sort of 09:20:09 <elliott> hm yes. that's an error 09:20:14 <elliott> should be [(f x) . map f xs] 09:20:17 <monqy> CakeProphet: you're wrong 09:20:20 <elliott> (the spaces don't matter after a . for obvious reasons) 09:20:49 <elliott> monqy: incidentally I think pairs are isomorphic to size-two vectors; [a . b . c . d] making a size-four vector 09:20:53 <elliott> not decided on that though 09:22:29 <oerjan> CakeProphet: space is only like , if there are no .'s. if there is a . then both it and the spaces are like : 09:22:59 <elliott> oerjan: wat 09:23:01 <oerjan> oh and also the bracketing changes 09:23:19 <oerjan> (a b c) -- [a,b,c] but (a b . c) -- a : b : c 09:23:39 <CakeProphet> (a b c) in a pattern is like (a:b:c:_) I think? 09:23:51 <CakeProphet> maybe I'm not really paying attention. :P 09:23:53 <monqy> in when, is | alternative syntax for putting the pattern on the next line? And in cond, is nothing as a pattern the same as []? 09:24:05 <oerjan> i don't know lisp/scheme patterns, if they even have any 09:24:19 <oerjan> standard that is. 09:25:06 <elliott> monqy: | is just like dollar sign in haskell 09:25:07 <elliott> basically 09:25:07 -!- GreaseMonkey has quit (Quit: The Other Game). 09:25:08 <elliott> f | x 09:25:09 <elliott> is 09:25:10 <elliott> f 09:25:10 <elliott> x 09:25:15 <elliott> except that 09:25:16 <elliott> f | x 09:25:17 <elliott> y 09:25:18 <elliott> is 09:25:19 <elliott> f 09:25:21 <elliott> x 09:25:22 <elliott> y 09:25:24 <elliott> you get the idea 09:25:33 <elliott> it fakes an additional layer of nesting/indentation 09:25:36 <elliott> and no, nothing is not the same as [] 09:25:40 <elliott> nothing handles the 0-argument case 09:26:07 <monqy> oh the other case isn't matching on lists then I guess 09:26:24 <monqy> that was part of what threw me off about list syntax and then I forgot about it 09:27:20 <elliott> it's matching on a list, followed by other arguments 09:27:27 <CakeProphet> help make dupdog TC 09:28:01 <CakeProphet> my professor just said that object code is a living thing you can date. 09:28:50 <monqy> elliott: I meant the matching on arguments. So I guess it's like list syntax but without brackets? 09:28:56 <monqy> elliott: the syntax, I mean 09:28:58 <monqy> CakeProphet: what 09:29:01 <oerjan> CakeProphet: tell your professor not to bring his ...preferences... into the class. 09:29:06 <elliott> monqy: in that all pattern matching is like list pattern matching, yse. 09:29:08 <elliott> yes. 09:29:22 <monqy> ah, that's nice and good 09:29:44 <CakeProphet> she was talking about "artifacts" in software engineering. an artifact being something that's produced as the result of an "activity". she said object code is a tangible, living thing 09:29:51 <CakeProphet> and then said you can date, as in.... put a date on it. 09:29:56 <CakeProphet> but out of context it is quite hilarious. 09:30:17 <CakeProphet> I'm not sure why she said living though. 09:30:58 <oerjan> she's just preferring you for your robot overlords 09:31:01 <monqy> elliott: what does eval do? 09:31:07 <CakeProphet> basically this is a terrible class and I'm probably going to fail it. 09:31:53 <monqy> I do not understand this class 09:32:34 <monqy> and I do not understand what she was trying to say 09:32:38 <CakeProphet> it's basically a class about all of the boring job-related planning stuff that isn't programming. 09:32:56 <CakeProphet> most of it is meaningless to me, as well. 09:32:57 <monqy> yucke 09:32:58 <elliott> monqy: what do you think it does 09:33:08 <monqy> elliott: evals??? who knmows..... 09:33:14 <CakeProphet> I bet it evals somethingt. 09:34:29 <monqy> my guess as to what it does doesn't jive with it being in cond 09:36:02 <CakeProphet> here are some questions I have to answer: 1. What is a RFP? 2. Explain a WBS 3. Explain a forever client 4. Name two informational data shown in a PERT 5. Name two informational data shown in a GANT 6. What do you understand about planning activities? 09:36:07 <CakeProphet> meaningless. acronym. meltdown. 09:36:10 <elliott> monqy: note how cond is defined with fexpr 09:36:14 <elliott> well defexpr but 09:36:37 <monqy> oh fexprs 09:36:49 <monqy> I don't know much about those :( 09:37:03 <elliott> monqy: exactly like a function, but gets called by name 09:37:09 <CakeProphet> why can't I just vomit code and not worry about this stuff? :( 09:37:09 <fizzie> I went through one of those "software development" courses too; it was mandatory for the telecommunications minor I accidentally got. 09:37:10 <elliott> as in, all parameters are the AST, not their evaluated form 09:37:21 <CakeProphet> fizzie: mandatory for my CS major. 09:37:27 <elliott> things you get: non-confusing macro declarations, hygiene for free, no abstraction leak of compile vs. runtime 09:38:38 <monqy> so why is e the only thing that gets evaled? im confue 09:38:59 <elliott> why not? 09:39:09 <elliott> do you _know_ what cond does? 09:39:13 <fizzie> CakeProphet: It was notable for asking several questions of the form "[a question], according to Mr X?" in the exam; where Mr X was one of the half a dozen visiting lecturers (mostly) from the Industry. 09:39:14 <monqy> maybe not 09:39:29 <monqy> I thought I knew what it did though..... 09:39:51 <fizzie> So that you couldn't give a justified answer; you just had to know what $some_random_dude thinks of it. 09:40:33 <monqy> :( 09:40:51 -!- kmc has quit (Quit: Leaving). 09:44:58 <fizzie> "Documentation and evaluation of software architectures according to Mr. Juha Savolainen." 09:45:07 <fizzie> I see that latter exams on that course have been slightly more sensible. 09:45:53 <elliott> monqy: (cond (a => b) (c => d)) === (if a b (if c d)) 09:45:57 <CakeProphet> ....she never explains what a request for proposal is... how am I suppose to answer this question. 09:46:10 <CakeProphet> TO WIKIPEDIA 09:46:14 -!- DH____ has quit (Read error: Connection reset by peer). 09:46:20 <monqy> elliott: that's what I thought. recently I realized I might have been thinking of eval incorrectly though 09:46:24 -!- DH____ has joined. 09:46:27 <elliott> eval is just eval 09:46:29 <elliott> (eval 'x) === x 09:46:34 <elliott> (eval '(print 99)) prints 99 09:46:37 <fizzie> It's when you request that someone makes a proposal. 09:46:48 <monqy> elliott: where by realized I mean I always had the suspicion but I realized another thing it could be--oh I had the right idea about it originalkly???? 09:46:54 <monqy> now im confused again 09:47:32 <monqy> CakeProphet: is it not when you request that someone makes a proposal? 09:47:45 <elliott> monqy: do you understand fexprs? 09:47:50 <elliott> monqy: ok let me put it this way 09:47:52 <CakeProphet> well, I assumed she would want something more specific. 09:47:53 <monqy> 02:37:58 < monqy> oh fexprs 09:47:53 <monqy> 02:38:10 < monqy> I don't know much about those :( 09:47:57 <elliott> monqy: if we used "e" directly 09:47:58 <elliott> rather than eval e 09:47:59 <elliott> then 09:48:06 <elliott> (cond (truething => (print 99)) 09:48:07 <elliott> would return the list 09:48:08 <elliott> (print 99) 09:48:10 <elliott> rather than printing 99 09:48:18 <elliott> because 09:48:22 <elliott> (cond (truething => (print 99)) 09:48:25 <elliott> passes the LIST 09:48:28 <elliott> (truething => (print 99)) 09:48:29 <elliott> to cond 09:48:34 <elliott> _no_ evaluation of arguments is done 09:48:40 <monqy> right i knew that much 09:49:16 <elliott> so why do you think eval should not be called? 09:49:23 <elliott> i mean 09:49:27 <elliott> why do you not understand why eval is called? 09:49:30 <CakeProphet> A work breakdown structure (WBS) in project management and systems engineering, is a deliverable oriented decomposition of a project into smaller components. 09:49:33 <CakeProphet> uuuuuuugh 09:49:38 <elliott> note that _everything_ is runtime, there is no need to recourse to any macro-related thinking 09:49:43 <CakeProphet> can I please just write a bunch of code instead of doing this stuff? 09:49:43 <monqy> right right 09:49:47 <elliott> and indeed lambdas are totally implementable on top of fexprs, you just evaluate every arg and pass it on 09:51:10 <monqy> elliott: I'm confused because eval is not used in any other instance in which values are introduced 09:51:22 <elliott> monqy: cond is the only fexpr in that file. 09:51:25 <elliott> the rest are all functions. 09:51:33 <monqy> except for when? 09:51:48 <CakeProphet> you only need to eval things that are quoted. 09:51:49 <monqy> also, is c not a value? 09:51:58 <CakeProphet> otherwise it is already evaluated. 09:52:03 <elliott> <monqy> except for when? 09:52:04 <elliott> erm right 09:52:05 <monqy> CakeProphet: are you paying attention 09:52:07 <CakeProphet> no 09:52:10 <elliott> oh hm i may have fucked up when 09:52:26 <elliott> monqy: ok yeah i apologise deeply 09:52:28 <elliott> defexpr when | cond . body => 09:52:29 <elliott> if cond 09:52:29 <elliott> body 09:52:29 <elliott> #void 09:52:29 <elliott> should be 09:52:31 <elliott> defexpr when | cond . body => 09:52:33 <elliott> if cond 09:52:35 <elliott> eval body 09:52:37 <elliott> #void 09:52:45 <monqy> ah ok 09:53:14 <monqy> and if handles eval on cond? or am I going the wrong way here 09:53:30 <elliott> oh oops 09:53:36 <elliott> defexpr when | cond . body => 09:53:36 <elliott> if (eval cond) 09:53:37 <elliott> eval body 09:53:37 <elliott> #void 09:53:38 <elliott> i'm not very awake :) 09:53:43 <monqy> ok it all makes sense now 09:53:52 <elliott> yeah this is all my fault :( sorry for being impatient 09:54:09 <elliott> even cond is broken 09:54:11 <elliott> missing eval on the c 09:54:12 <elliott> eugh 09:54:29 -!- Jafet has joined. 09:56:23 <CakeProphet> Haskell > Scheme 09:56:36 <monqy> except when it isn't 09:56:39 <Jafet> If ordered by size. 09:56:50 <monqy> hehehe 09:56:56 <CakeProphet> eh eh eh 09:57:00 <CakeProphet> bleigh! 09:57:10 * CakeProphet covers his face with a cape. 09:57:16 * CakeProphet turns into a bat and disappears. 09:57:28 <monqy> bye 09:58:15 <CakeProphet> my professor just said depictiated. 09:59:34 <fizzie> > "Haskell" > "Scheme" 09:59:34 <lambdabot> False 09:59:35 <monqy> training for the work environment 09:59:44 <fizzie> Even the Haskell-bot agrees. 10:00:04 <fizzie> (That it's not.) 10:00:15 <CakeProphet> don't forget to dequote those. 10:00:24 <CakeProphet> otherwise you're just comparing strings. 10:01:12 <CakeProphet> http://www.ratemyprofessors.com/ShowRatings.jsp?tid=406506 "I can depictiate her obiquous senergy." bahahahahaha 10:01:50 <monqy> !haskell data Language=Haskell|Scheme deriving(Eq,Ord);main=print$Haskell>Scheme 10:01:57 <EgoBot> False 10:02:37 <Jafet> "I'm not a schemer. I try to show the schemers how pathetic their attempts to control things really are." 10:03:48 <monqy> CakeProphet: good reviews 10:03:55 <monqy> CakeProphet: especially that one 10:04:56 <monqy> CakeProphet: she doesn't sound like such a good professor 10:05:02 <CakeProphet> I am receiving reverse education. 10:05:20 <CakeProphet> I've only had maybe 3 good professors so far. 10:05:55 <fizzie> I don't think there's any ratings for our school anywhere. :/ 10:06:03 <CakeProphet> my discrete math teacher was fuckign amazing. I will be taking him again for advanced mathematics and topology 10:06:14 <elliott> Aha, the fizzie RETURNS. 10:06:17 <elliott> <fizzie> oh no, 10:06:24 <fizzie> Oh no. 10:06:40 <CakeProphet> thanks to Dr. Griffiths I can now count things like mad. 10:06:42 <elliott> <fiz,oh,NO > 10:06:44 <fizzie> Oh, look at the time, I think I need to be going, bye. 10:06:54 <fizzie> Going, uh, somewhere. 10:06:56 <fizzie> Over there. 10:06:57 <fizzie> Bye. 10:07:55 <elliott> fizzie: Hi. 10:08:02 <fizzie> http://www.math.upenn.edu/~wilf/DownldGF.html <- that's a nice book if you want to pretend you're counting things. 10:08:08 <CakeProphet> @let subset x s = filterM (const [True, False]) s `elem` x 10:08:09 <lambdabot> Defined. 10:08:24 <CakeProphet> :t subset 10:08:24 <lambdabot> forall a. (Eq a) => [[[a]]] -> [a] -> Bool 10:08:28 <CakeProphet> ....no 10:08:34 <CakeProphet> @undefine 10:08:44 <elliott> fizzie: SO ABOUT DEM MCMAPS 10:08:54 <fizzie> (Also "generatingfunctionology" is an awesome name.) 10:08:58 <monqy> generatingfunctionology 10:09:01 <monqy> yes 10:09:05 <CakeProphet> @let subset x s = x `elem` filterM (const [True, False]) s 10:09:05 <lambdabot> Defined. 10:09:07 <CakeProphet> :t subset 10:09:08 <lambdabot> forall a. (Eq a) => [a] -> [a] -> Bool 10:09:18 <CakeProphet> > subset [2,3] [1,2,3] 10:09:19 <lambdabot> True 10:09:57 <oerjan> > subset [2,1] [1,2,3] -- *whistles innocently* 10:09:58 <lambdabot> False 10:10:08 <CakeProphet> OH WHAT NOW? 10:10:10 <monqy> hehehehehe 10:10:19 <elliott> what does it mean to be frend 10:10:26 <CakeProphet> help list is not set? 10:10:58 <monqy> > let subset x s = all (`elem` s) x in subset [2,1] [1,2,3] 10:10:58 <lambdabot> True 10:11:12 <CakeProphet> not as elegunt 10:11:17 <monqy> more elegant 10:11:20 <CakeProphet> noep 10:11:27 <monqy> oyurs is disgusteing 10:11:43 <CakeProphet> better mathemathecally 10:11:44 <elliott> ?pl \x s -> all (`elem` s) x 10:11:44 <lambdabot> flip (all . flip elem) 10:11:44 <monqy> mine even reads naturally...... 10:12:45 <CakeProphet> power sets are more powerful 10:13:53 <CakeProphet> > let subset x s = x `elem` (filterM (const [True, False]) . nub . permutations s) in subset [2,1] [1,2,3] 10:13:54 <lambdabot> No instance for (GHC.Num.Num [a]) 10:13:54 <lambdabot> arising from the literal `2' at <inter... 10:13:57 <CakeProphet> :( 10:14:24 <CakeProphet> > let subset x s = x `elem` (filterM (const [True, False]) . nub . permutations $ s) in subset [2,1] [1,2,3] 10:14:25 <lambdabot> No instance for (GHC.Num.Num [a]) 10:14:25 <lambdabot> arising from the literal `2' at <inter... 10:14:28 <CakeProphet> :( 10:14:59 <CakeProphet> man that sure is a bad idea. :P 10:15:06 <monqy> instead of nubbing permuations......what if you did......conversitons to sets.......and maybe even back to lists again (but this time nubbed and sorted).......what then......... 10:15:11 <CakeProphet> :(nope 10:15:15 <monqy> ;_; 10:15:33 <CakeProphet> > let subset x s = x `elem` (filterM (const [True, False]) s =<< nub . permutations) in subset [2,1] [1,2,3] 10:15:34 <lambdabot> Couldn't match expected type `a -> GHC.Bool.Bool' 10:15:34 <lambdabot> against inferred ... 10:15:37 <CakeProphet> baaaah 10:15:40 <monqy> if you want it for Eq not Ord just go with my definition it's the best (thumbs up) 10:15:44 <CakeProphet> > let subset x s = x `elem` (filterM (const [True, False]) s >>= nub . permutations) in subset [2,1] [1,2,3] 10:15:46 <lambdabot> True 10:15:48 <CakeProphet> weeee 10:16:08 <CakeProphet> mine is more efficient though. 10:16:24 <monqy> good one 10:16:41 <monqy> nub . permutations: efficient function for efficient people 10:16:59 <CakeProphet> filterM (const [True, False]) and >>= for lists are all very efficient. 10:17:05 <CakeProphet> > let subset x s = x `elem` (filterM (const [True, False]) s >>= nub . permutations) in subset [2,1] [1,2,3..1000] 10:17:06 <lambdabot> <no location info>: parse error on input `..' 10:17:11 <CakeProphet> > let subset x s = x `elem` (filterM (const [True, False]) s >>= nub . permutations) in subset [2,1] [1..1000] 10:17:15 <lambdabot> mueval-core: Time limit exceeded 10:17:21 <monqy> but beyond that it's a mess of inefficiency 10:17:24 <CakeProphet> what? nonbelievable!? 10:17:45 <monqy> > let subset x s = all (`elem` s) x in subset [2,1] [1..1000] 10:17:45 <lambdabot> True 10:17:48 <monqy> 8) 10:18:28 <CakeProphet> > 2 ^ 1000 10:18:28 <lambdabot> 107150860718626732094842504906000181056140481170553360744375038837035105112... 10:18:39 <CakeProphet> ...and that's not counting the permutations. 10:19:40 <CakeProphet> that's just the elements of the power set of [1..1000] 10:21:25 <elliott> Does anyone know the intricacies of exec? 10:21:55 <fizzie> Does any man really know that. A question for the ages. 10:22:07 <monqy> A generating function is a clothesline on which we hang up a sequence 10:22:07 <monqy> of numbers for display. 10:22:17 <elliott> fizzie: Good question. 10:22:27 <elliott> Really I'm just trying to figure out how easy it is to implement an //upgrade in mcmap. 10:22:28 <monqy> i am laughing too much 10:22:29 <oerjan> > product [1..1000] 10:22:30 <lambdabot> 402387260077093773543702433923003985719374864210714632543799910429938512398... 10:23:24 <fizzie> The "exec without closing sockets" is a nifty trick, but are you absolutely sure people's mcmap sessions are really that long-running? 10:23:34 <CakeProphet> > 2 ^ (product [1..1000]) 10:23:52 <lambdabot> thread killed 10:24:19 <elliott> fizzie: Well, no. But let's face it, it'll require a couple dozen lines of code at most, and it is _so_ _cool_. 10:24:35 <elliott> fizzie: I mean, as an mcmap developer, I would very much like to be able to test my changes without restarting and reconnecting. :p 10:24:46 <elliott> I suspect people might want to test their ~/.mcmap/init.scm changes just as easily. 10:24:49 <elliott> 'Slike emacs. 10:25:14 <fizzie> Yesssss.... but I don't think reloading the Scheme config necessitates a real restart, does it? 10:25:39 <CakeProphet> surely I must have some kind of talent for writing non-trivially inefficient code. 10:25:52 <monqy> CakeProphet: what 10:26:01 <elliott> fizzie: Well, no, but (a) having removed variables and the like staying around, and things like it re-registering hooks, is totally annoying. And re-initialising the Scheme interpreter from scratch is not really a thing that's possible, to my knowledge. Plus, (b), mcmap "starts" so quickly that an exec + jump into the main code is both cleaner and perfectly fast. 10:26:27 <elliott> I know Windows doesn't have fork, but does it have the right kind of exec? 10:26:28 <CakeProphet> monqy: O(2^n!) for list subset. 10:26:45 <CakeProphet> well, worst case. 10:27:07 <fizzie> elliott: It'll forget all the stored world-tiles until someone does the regionfile persistence right; then you don't actually see the map until you move real far, since the server won't resend the tiles. 10:27:18 <monqy> CakeProphet: by non-trivially inefficient do you mean "inefficient by a nontrivial amount" or "inefficient in a manner that is not trivial in some way (please specify way)" 10:27:24 <fizzie> Our university logo is a randomly selected from the three alternatives A! A? A" (and randomly of three alternative colors for the punctuation) -- some people have posed the question that since A! (factorial of A) equals A" (the second derivative of A), what is A? 10:27:39 <fizzie> http://users.ics.tkk.fi/htkallas/aalto.jpg -- this is unfortunately only in Finnish. 10:27:41 <elliott> fizzie: Well, the regionfile persistence is at least half-done, isn't it? 10:27:43 <CakeProphet> monqy: second, as in I'm not just adding stupid computation steps that are not directly related to the goal. 10:28:02 <elliott> And it's not like mcmap has much other state that you wouldn't _want_ to be reset. 10:28:25 <fizzie> elliott: Current map mode! 10:28:45 <elliott> fizzie: So that's one command-line argument. :p 10:28:51 <fizzie> Current Y-level for the non-following cross-section map. 10:28:58 <fizzie> Current lights-on/off/night mode. 10:29:04 <fizzie> These are all Important Things. 10:29:09 <elliott> fizzie: That's all "map shit"; it can be packed up into like three arguments. 10:29:29 -!- oerjan has quit (Quit: Later). 10:29:41 <fizzie> Also the current window size and position. 10:29:51 <fizzie> (Assuming you've dragged it somewhere.) 10:29:59 <elliott> That... is not really problematic to lose. :p 10:30:05 <elliott> fizzie: Obviously a "proper" state-sending mechanism would be nicer, but I don't see you writing that. :P 10:30:14 <fizzie> It makes the reload non-seamless, that's all it is. 10:30:32 <fizzie> Current "it's been moved to the floating layer from the tiled layer" state that you can't actually persist in any way from within the program. 10:30:59 <fizzie> (Well, except by keeping the window open, but that doesn't sound doable.) 10:31:51 <elliott> Well, if windows were sockets... 10:32:38 <fizzie> The X connection is a socket; it's just that I don't think SDL makes keeping it alive a possibility. 10:33:10 <elliott> We could try and hide the fact that we're "quitting" from SDL. 10:33:14 <elliott> Then memory-write-in the fd. 10:34:48 <elliott> I like how you can't actually get at the sockets from outside of the proxy. 10:34:50 <CakeProphet> the sun never sets on the haskell british empire. 10:34:55 <CakeProphet> ":?> 10:34:55 <CakeProphet> 1 10:35:31 <monqy> doesn't have the same ring to it 10:37:38 <elliott> Wow, that crap compiled cleanly /first time/? 10:37:48 <elliott> fizzie: Inca-dentistry (god I love that), irssi does this same hacky stuff. 10:37:50 <CakeProphet> don't be deceived. 10:38:00 <elliott> fizzie: Try /upgrade. 10:38:02 <fizzie> elliott: I know, I know. 10:38:03 <elliott> "Upgrade irssi to new version on-the-fly without disconnecting from server, so other people won't even notice you quit from IRC. This ONLY executes the new binary, it does NOT download/compile/whatever irssi." 10:38:18 <fizzie> elliott: It loses the scrollback buffer state too. :p 10:38:23 <fizzie> (There's a perl script to fix that.) 10:38:27 <elliott> hahaha. 10:38:34 <elliott> Maybe we need a Scheme script to persist window crap. 10:38:42 <elliott> Have I mentioned how easy this would be with @? 10:38:45 <CakeProphet> no perl is the only tool for hacks. 10:39:30 -!- derdon has joined. 10:40:10 <CakeProphet> elliott: just use your Haskell perl interpreter thing? or wait, this is all scheme right? 10:40:28 <monqy> wh 10:40:51 <CakeProphet> write a perl interpreter macro. 10:41:03 <elliott> yuore uppsetting my CakeProphet 10:41:11 <elliott> int err = execl(argv0, argv0, "--upgrade", g_strdup_printf("%d", sock_cli), g_strdup_printf("%d", sock_srv), NULL); 10:41:13 <monqy> CakeProphet: mcmap is in c 10:41:13 <fizzie> elliott: As for Windows, no, I don't think it has the proper sort of exec; it's all by CreateProcess there. But at least for files you can specify SECURITY_ATTRIBUTES that let the handle be inherited by child processes; presumably that could be possible for sockets *somehow*. 10:41:14 <elliott> fizzie: Look at my production-quality code. 10:41:28 <monqy> CakeProphet: its scriptextended with guile scheme 10:41:40 <elliott> 11:42:14 [DIED] Failed to set video mode: Invalid width or height 10:41:42 <elliott> Well, it's a start. 10:41:53 <fizzie> elliott: At least do (char *)NULL for the final value. (The absolutely most important problem!) 10:42:37 <fizzie> (Unless vararg function argument promotion thing made void * the right thing; not absolutely sure here.) 10:42:45 <elliott> fizzie: I, um, eh? 10:42:56 <elliott> 11:43:31 [DIED] Unknown packet id: 0x5a 10:43:00 <elliott> fizzie: Haha, we have desync issues. 10:43:18 <elliott> OK, so the proxies need to be told "finish a packet, then hang". 10:43:27 <elliott> VOLATILE BOOL TIME 10:43:38 <elliott> volatile bool wanna_hang; 10:43:40 <elliott> im matuer 10:45:10 <CakeProphet> a cleverly named variable is a wonderful thing. 10:45:21 <elliott> fizzie: Holy crap, it actually kind of works. 10:45:28 <elliott> Scratch that: entirely. 10:45:29 <fizzie> Oh, it is even explicitly defined that you can pass a void * and read it with va_arg(char *); but do cast the NULL to (char*) anyway, because "#define NULL 0" is legal, and then it'd get passed as an integer. 10:45:44 <CakeProphet> booleans, the best concurrency construct. 10:45:47 <elliott> fizzie: Dude. Dude, it works. 10:45:54 <elliott> WANNA TRY? 10:46:03 <elliott> SO THE BEST 10:46:14 <elliott> Oh, it quite thoroughly messes up the console though. 10:46:47 <fizzie> elliott: Not at work. Anyway, I'm pretty sure there are cases where it may fail. In particular, there are those buffers in packet_state_t; you'd really need to handle those for propriety. 10:47:00 <elliott> Clearly mcmap is mission critical to your work, you know. 10:47:11 <elliott> And yes, there are... a great many issues as it currently stands. :p 10:47:17 <elliott> But, like, it works. 10:47:40 <CakeProphet> why scheme out of curiosity? 10:47:42 <fizzie> The console hack is such a hack I'm not surprised it breaks. 10:47:48 <elliott> CakeProphet: As opposed to? 10:47:57 <CakeProphet> -shrug- nothing in particular. 10:48:05 <elliott> fizzie: When mcmap was failing before, it dumped me to my terminal with all the raw stuff still on. That was fun. :p 10:48:34 <elliott> CakeProphet: I evaluated Lua, Ruby, Python, Perl, Haskell, MiniScheme, rep, nasal, and god there must have been others. 10:48:41 <elliott> Even various JavaScripts. 10:49:16 <elliott> Problems with Lua: The C API is certainly convenient, but also it's quite ugly; manual stack machine munging. Also, I have this quite strong but yet somehow apathetic dislike of the language, and seemingly so does fizzie too. 10:49:20 <elliott> Ruby: No. Just no. 10:49:27 <elliott> Python: I don't like it, and IIRC Vorpal said the C API wasn't that nice. 10:49:29 <elliott> Perl: No. 10:49:35 <CakeProphet> lol 10:49:44 <elliott> (C API is unbelievably horrid, language also.) 10:49:45 <fizzie> Perl doesn't even qualify for a "just no", I see. 10:49:53 <elliott> fizzie: Have you _seen_ XS? 10:49:54 <elliott> Haskell: Just doesn't embed. At least not GHC. At all. 10:50:07 <CakeProphet> if I recall, XS is better than the cpython API 10:50:12 <elliott> MiniScheme: Really exposes less than I'd like. Dunno about the portability. Not so really modern or maintained etc. Probably not a very good Scheme. 10:50:19 <fizzie> elliott: Yes, I have. I've also done a bit of Inline::C, which has to use some of the same stuff. 10:50:21 <elliott> rep: It was okay. But quite Unix-only. 10:50:30 <elliott> nasal: Practically abandoned, bad, didn't like it, nobody knows it, beh. 10:50:31 <fizzie> CakeProphet: If that's true, the cpython api must be something quite horrible. 10:50:40 <elliott> JavaScripts: Don't like the language; C API was either awkward, or non-existent (Veight is C++ only) 10:51:07 <fizzie> Inline_Stack_Push(sv_2mortal(retval)); <- "what." 10:51:14 <elliott> CakeProphet: Whereas Guile has a nice C API, is a pretty good, well-maintained, performant Scheme with a large collection of libraries, which constitutes a nice language, and yeah, it's a nice API. 10:51:18 <CakeProphet> you have to maintain reference counts manually for pythons api I believe. Though you may need to do this for perl as well, but I don't recall seeing anything about it. 10:51:34 <CakeProphet> Wikipedia: Operations on volatile variables are not atomic, nor do they establish a proper happens-before relationship for threading. This is according to the relevant standards (C, C++, POSIX, WIN32), and this is the matter of fact for the vast majority of current implementations. The volatile keyword is basically worthless as a portable threading construct. 10:51:35 <elliott> Plus being the "official" extension language of GNU, despite its not high use for that, it's really quite thoroughly focused on making things nice on the C coders. 10:51:41 <elliott> Also it supposedly even builds on Windows. 10:51:55 <elliott> Uses pthreads for threads though; but there's pthreads for Windows; but who knows if that'll interoperate; but we'll see. 10:52:09 <fizzie> CakeProphet: You don't necessarily have to "maintain" them manually, but you certainly have to think about them all the time unless you want to leak like a sieve, or have values disappear on you. There's quite a lot of values you need to explicitly make "mortal". 10:52:22 <fizzie> The autogenerated XS glue does do *some* of that stuff automatically though. 10:53:02 <elliott> ...whereas Guile uses Boehm GC, so all you have to do is add scm_remember_upto_here_1(smob) if you extract the data from a smob but don't later reference it. :) 10:54:53 <elliott> fizzie: You know, it kind of would be nice if mcmap could keep a connection for you... 10:54:58 <elliott> (re: long-runningness.) 10:55:05 <fizzie> What, a minecraft bouncer? 10:55:06 <elliott> Minecraft is quite crashy, after all. 10:55:16 <elliott> fizzie: I'm just sayin'... it wouldn't be much cod e:P 10:55:17 <elliott> code :P 10:55:19 <CakeProphet> did you consider Erlang? :D 10:55:27 <elliott> CakeProphet: To /embed/? 10:55:31 <elliott> It's as unembeddable as GHC. 10:55:31 <fizzie> That would mean actually handling the login stuff. Okay, it's not *that* much code. 10:55:38 <elliott> fizzie: Not really? 10:55:41 <elliott> Just drop it from the client. 10:55:48 <elliott> On the server, you just need to keepalive, keepalive, pong, blah. 10:55:55 <fizzie> elliott: You can't just "drop it", you have to respond to the client so that it continues. 10:56:00 <elliott> Well, OK. 10:56:34 <fizzie> Though I guess it's mostly just replaying the packets the server sent. 10:58:00 <elliott> fizzie: In case you're wondering, yes, my goal is to make the name "mcmap" as inaccurate as I possibly can. 10:58:18 <fizzie> Also the client will then do a spurious http://www.minecraft.net/game/joinserver.jsp GET (for which the server won't ever do the corresponding http://www.minecraft.net/game/checkserver.jsp GET), but I guess that probably won't hurt. 10:58:32 <elliott> lol, DRM 10:59:16 <CakeProphet> I often find myself wanting emacs key combinations when in other editors/IDEs 10:59:44 <elliott> OSX has global Ctrl+A/Ctrl+E, IIRC you can make Gtk have htem too 10:59:49 <fizzie> CakeProphet: Re the volatile quote, emphasis on "portable". mcmap's approach to portability is a bit peculiar; on one hand there's these huge unportable hacks, while on the other there's code to manually parse IEEE-754 floats/doubles in case you're on a non-IEEE-float system. 11:00:13 <elliott> fizzie: Basically it's literally designed for the 90s. 11:00:38 <elliott> Everyone has weirdo IRIX boxes and "oh, my sun /usr/ucb/cc is broken" but nobody bats an eye at ... interesting approaches to concurrency. 11:00:45 <CakeProphet> elliott: that's interesting. I can just use home and end for C-a and C-e though. But things like c-k and c-space are quite convenient. 11:00:53 <elliott> IIRC you can get those too. 11:00:57 <elliott> Well, C-k at least. 11:01:21 <CakeProphet> gotos are a little awkward though... 11:01:38 <CakeProphet> (goto line number that is) 11:02:27 <CakeProphet> [numeric arg] M-g M-g 11:02:40 <fizzie> I think I told MonoDevelop (when trying it out) to use Emacs-style keybindings. That made it do all kinds of "C-x (C-)s" stuff for saving, but on the other hand obviously it wasn't a "real" Emacs, so it felt like some sort of misshapen hybrid. 11:03:26 <fizzie> I use "M-g M-g [enter the number in the prompt]" always. 11:03:35 <CakeProphet> oh.... I didn't know that was an option. 11:03:41 <CakeProphet> that makes way more sense. :P 11:04:00 <CakeProphet> are there any other M-g commands? 11:04:26 <fizzie> As for the double-g, I just keep mentally saying "go! go! go!" for that. I don't recall any of the other uses of M-g, but I'm sure there are some. 11:04:43 <elliott> fizzie: At least admire my diff: http://sprunge.us/bRGT 11:05:13 <CakeProphet> it took me about a week before I knew what select-all was. :P 11:06:39 <CakeProphet> I thought I might regret learning Emacs but it's been quite helpful because a lot of unix tools use similar commands. 11:06:57 <fizzie> elliott: usleep(500000) ooh the prettiest. Anyway, I think it would be polite to tell SDL to shut things down right before the execl; it's not going to run any of its atexit handlers and such. (Also shouldn't those common.h things have extern + definitions somewhere?) 11:07:11 <elliott> fizzie: You realise this was a proof-of-concept? :-P 11:07:22 <CakeProphet> :PPPPPPPPPPPPPPPPPPPPP 11:07:26 <fizzie> Yes, but that's no reason not to point things out. 11:07:38 <elliott> Well, yes. 11:07:49 <monqy> CakeProphet: hi 11:07:56 <fizzie> That bouncing around in main is the funny. 11:08:00 <monqy> CakeProphet: what is wrong with your face 11:08:10 <CakeProphet> too many tongues. 11:08:17 <monqy> oh no 11:08:35 <fizzie> It's a hop and a skip and what is that a for (;;) there why doesn't it just "return;"? 11:09:09 <elliott> fizzie: Um because that isn't hanging? 11:09:16 <elliott> :p 11:09:46 <fizzie> Well, uh, I guess it's technically not, but... why would it need to busyloop in a circle instead of just stopping? 11:09:55 <elliott> Because I wasn't thinking? 11:10:00 <fizzie> I guess the variable name makes more sense that way, that much is true. 11:10:18 <elliott> fizzie: I think I might include all the original command-line arguments so that it can parse window size and all. 11:10:22 <elliott> That would also avoid a goto. 11:10:43 <itidus20> goto label5; 11:10:53 * CakeProphet is downloading all of the text logs so that he can count the occurences of :P and :-P 11:11:03 <elliott> Using rsync? 11:11:05 <CakeProphet> ...no. 11:11:09 <CakeProphet> using wget and grep. 11:11:14 <elliott> Wget of where? 11:11:18 <CakeProphet> the... logs. 11:11:20 <elliott> If codu, don't. 11:11:24 <CakeProphet> why? 11:11:26 <elliott> You're meant to use rsync instead. 11:11:29 <elliott> Gregor will get mad. 11:11:30 <CakeProphet> why? 11:11:34 <CakeProphet> why? 11:11:37 <elliott> Type !logs and get the command. 11:11:41 <CakeProphet> !logs 11:11:51 <CakeProphet> >_> 11:11:56 <elliott> What? 11:11:59 <CakeProphet> perhaps I am stealing all the bandwidth. 11:12:04 <CakeProphet> with my massive wget. 11:12:10 <CakeProphet> yes that must be it. 11:12:10 <elliott> It's like fifty megs, so yeah. 11:12:16 <elliott> CakeProphet: It comes in as a notice, you moron. 11:13:47 <CakeProphet> uh that didn't download anything. 11:13:53 <monqy> you did it wrong 11:14:14 <CakeProphet> ah there we go. 11:14:21 <CakeProphet> ah but this includes the raws I didn't want those. 11:14:25 <CakeProphet> but I guess it'll be faster due to compression. 11:15:28 <CakeProphet> I am a tool and just copypaste commands, I didn't realize the source directory was left out. :P 11:16:57 -!- sebbu2 has changed nick to sebbu. 11:19:10 <CakeProphet> oh hey look rsync has an --include 11:19:12 <CakeProphet> too late. 11:19:43 <Gregor> FEE FI FO FUM, I SMELL THE BLOOD OF SOMEBODY WHO TRIED TO USE WGET TO DOWNLOAD ALL THE LOGS INSTEAD OF RSYNC 11:20:11 <CakeProphet> Gregor: like I was just supposed to know. 11:20:18 <CakeProphet> you could like, I dunno, put it on the page? 11:20:26 <Gregor> Nope 11:20:31 <Gregor> It's a sekrit™. 11:20:39 <monqy> "dont wget please" - logs page 11:20:45 <monqy> "theres a better way" - logs page 11:20:55 <monqy> "but its a sekrit™" - logs page 11:20:56 <Gregor> "But I won't tell you what that is" - logs page 11:20:58 <Gregor> :P 11:21:08 <elliott> Wget-spidering an entire fifty meg website: NOT CONSIDERED A GOOD THING TO DO EVEN IF NOT WARNED AGAINST? 11:21:17 <monqy> ™ 11:21:21 <elliott> Gregor: You might wanna use robots.txt to block wget by default. 11:21:37 -!- elliott has left ("Leaving"). 11:21:40 -!- elliott has joined. 11:22:02 <CakeProphet> ~/logs$ grep -P ":P|:-P" * | wc -l 11:22:03 <CakeProphet> 44217 11:22:06 <Gregor> But anyway, I actually only care about the rsync issue for the /sync/ part. If you're just doing a one-time download, it's basically no different (assuming that wget supports Content-encoding: gzip) 11:22:16 <fizzie> CakeProphet: Here's the numbers from my own incomplete set of logs: 11:22:17 <fizzie> > select sum(case when body ilike '%:p%' then 1 else 0 end) as noseless, sum(case when body ilike '%:-p%' then 1 else 0 end) as noseful from event where target = (select id from target where name = '#esoteric'); 11:22:17 <fizzie> noseless | noseful 11:22:17 <fizzie> ----------+--------- 11:22:17 <fizzie> 39989 | 5665 11:22:18 <lambdabot> <no location info>: 11:22:18 <lambdabot> lexical error in string/character literal at chara... 11:22:29 <fizzie> lambdabot: What, you don't do SQL? 11:22:44 <Gregor> SQL, Haskell, it's all the same. 11:22:50 <elliott> Received string length longer than the maximum allowed ([thirty-nine] 11:22:53 <elliott> java ioexception 11:22:53 <CakeProphet> grep -P ":[)]|:-[)]" * | wc -l 11:22:54 <elliott> wtf is that? 11:22:55 <CakeProphet> 27804 11:22:56 <elliott> fizzie? 11:23:20 <elliott> ugh 11:23:21 <CakeProphet> a very wordy grep. 11:23:23 <elliott> something is wrong 11:23:47 <CakeProphet> grep -P ":[(]|:-[(]" * | wc -l 11:23:48 <CakeProphet> 8639 11:24:08 <monqy> what's the name-distribution of :P sayers? This may be the only line in which I have said :P, but now I have said it twice. 11:24:35 <fizzie> elliott: Sounds like most of those are about >16-character player names, but I guess it could be some other strings. 11:25:12 <elliott> fizzie: I literally just made the proxy deset the variable then return, and then changed the usleep to a while (var); 11:25:13 <elliott> Then that started. 11:27:19 <fizzie> This logbase doesn't have name-coalescing, so the top 5 of ":P"-sayers isn't very useful: 11:27:24 <fizzie> > select n.name, count(*) as peeings from event e join nick n on e.nick = n.id where e.target = 2 and e.type = 'msg' and e.body ilike '%:p%' group by n.name order by peeings desc limit 5; 11:27:24 <fizzie> name | peeings 11:27:24 <fizzie> ---------+--------- 11:27:24 <fizzie> elliott | 7591 11:27:24 <fizzie> Gregor | 4370 11:27:24 <lambdabot> <no location info>: parse error on input `,' 11:27:26 <fizzie> ehird | 4229 11:27:28 <fizzie> GregorR | 2772 11:27:29 <fizzie> alise | 2162 11:27:32 <fizzie> lambdabot: Stop *doing* that. 11:27:35 <elliott> fizzie: You need :-p too. 11:27:46 <fizzie> Yes, but the question was about ":P sayers". 11:27:56 <elliott> Pah. 11:28:19 <Gregor> I ... I am not the most severe offender! 11:28:50 <fizzie> Gregor: You do have one more thousand from GregorR-L, but still. 11:29:05 <fizzie> Possibly the pee-fraction is more important than absolute pee amounts, anyway. 11:29:41 <monqy> :urine: 11:30:46 <itidus20> this is a related drawing i made: http://oi54.tinypic.com/ndr48y.jpg 11:31:05 <itidus20> (not just now) 11:31:14 <monqy> D: 11:31:26 <monqy> I do not understand this drawing 11:32:02 <itidus20> the blue blobs are necessarily edible looking.. 11:32:18 <elliott> cmd.c: In function ‘cmd_upgrade’: 11:32:19 <elliott> cmd.c:267: error: initialization makes pointer from integer without a cast 11:32:19 <elliott> cmd.c:270: error: assignment makes pointer from integer without a cast 11:32:19 <elliott> cmd.c:272: error: passing argument 1 of ‘execv’ makes pointer from integer without a cast 11:32:19 <elliott> /usr/include/unistd.h:560: note: expected ‘const char *’ but argument is of type ‘char’ 11:32:19 <elliott> I what... 11:32:31 <elliott> char *argv[999] = { main_argv[0], "--upgrade", g_strdup_printf("%d", sock_cli), g_strdup_printf("%d", sock_srv) }; 11:32:31 <elliott> for (int i = 1; i <= main_argc; i++) 11:32:31 <elliott> { 11:32:31 <elliott> argv[3+i] = main_argv[i]; 11:32:31 <elliott> } 11:32:34 <elliott> int err = execv(main_argv[0], argv); 11:32:38 <elliott> It looks right to me. Well... rightish. 11:32:45 <CakeProphet> uh apparently ^[\s\d:]+ is not matching the timestamp? 11:33:52 <fizzie> What's the type of main_argv then? 11:34:38 <fizzie> Also I think there's some glib helpers you can use to build the new argv without that 999 in there. 11:34:43 <fizzie> > select n.name, sum(case when e.body ilike '%:p%' then 1.0 else 0 end)/count(*) as peefrac from event e join nick n on e.nick = n.id where e.target = 2 and e.type = 'msg' group by n.name order by peefrac desc limit 5; 11:34:44 <fizzie> name | peefrac 11:34:44 <fizzie> ----------------+------------------------ 11:34:44 <fizzie> GregorLOL | 1.00000000000000000000 11:34:44 <fizzie> GregorR-L__ | 1.00000000000000000000 11:34:44 <lambdabot> <no location info>: parse error on input `,' 11:34:45 <fizzie> AMD | 1.00000000000000000000 11:34:47 <fizzie> whoami | 1.00000000000000000000 11:34:49 <fizzie> bsmntbombdood2 | 0.50000000000000000000 11:34:53 <elliott> char *main_argv; 11:34:55 <elliott> Oh, durrr. 11:35:00 <fizzie> Well, there's your there. 11:35:08 <monqy> pee winners 11:35:14 <fizzie> The good old "include also people with no real comments" thing. 11:35:23 <elliott> > XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" 11:35:23 <elliott> after 113 requests (112 known processed) with 0 events remaining. 11:35:24 <lambdabot> Not in scope: data constructor `XIO'Not in scope: `fatal'Not in scope: data... 11:35:25 <elliott> Hmmmm. 11:35:42 <itidus20> monqy: simply put, it's arial 12 bold "D:" rotated 90 degrees counter-clockwise, and arial 12 bold ":P" rotated 90 degrees clockwise, with the bounded spaces coloured in 11:36:02 <monqy> it all makes sense now 11:36:12 <monqy> thanks 11:36:28 -!- Patashu has joined. 11:36:51 <itidus20> it was difficult though to get the anti aliasing right 11:37:07 <elliott> > Segmentation fault 11:37:07 <lambdabot> Not in scope: data constructor `Segmentation'Not in scope: `fault' 11:37:09 <elliott> Well that ain't good. 11:37:15 <fizzie> monqy: One more for the road; here's the real pee-winners: 11:37:17 <fizzie> > select n.name, sum(case when e.body ilike '%:p%' then 1.0 else 0 end)/count(*) as peefrac from event e join nick n on e.nick = n.id where e.target = 2 and e.type = 'msg' group by n.name having count(*) > 1000 order by peefrac desc limit 5; 11:37:17 <fizzie> name | peefrac 11:37:17 <fizzie> -----------+------------------------ 11:37:17 <fizzie> Gregor-W | 0.16866359447004608295 11:37:17 <lambdabot> <no location info>: parse error on input `,' 11:37:18 <fizzie> Gregor | 0.15765359500703488582 11:37:20 <fizzie> GregorR-L | 0.14097390368576809255 11:37:21 <itidus20> so each string character was rendered twice against two different background colours 11:37:21 <fizzie> GregorR | 0.12288323432928451104 11:37:24 <fizzie> GregorR-W | 0.11541244573082489146 11:37:26 <fizzie> It's a very Gregorish list. 11:37:32 <elliott> > 12:38:04 [DIED] Unknown option --upgrade 11:37:32 <elliott> Oh come on. 11:37:33 <lambdabot> Not in scope: data constructor `DIED'Not in scope: data constructor `Unknow... 11:39:54 <elliott> fizzie: Just to calm your nerves, I haven't actually committed any of this horrible stuff yet. 11:41:23 <fizzie> Yes, I've been keeping a watch on the... other channel. 11:42:08 <elliott> X-D 11:42:25 <elliott> Ready to revoke my commit rights? 11:43:05 <elliott> What, more desync issues? 11:44:35 <fizzie> Well, there *are* those buffers there. If you restart in the middle of something busy, it's rather likely there's pieces of another packet stuck in there. (Plus it can also silently drop packets when there are complete packets there.) 11:45:26 <elliott> Oh, right, the buffers. 11:45:55 <fizzie> Speaking of which, you'll also have to replay the initial spawning and somehow force the server to resend the tiles to make the "minecraft bouncer" mode work; otherwise the client won't have the world data the server thinks it already has. 11:46:04 <elliott> Is there a way to tell SDL "hey, don't try to focus the window you open"? 11:46:37 <CakeProphet> perl -n -e 'BEGIN {%c=()} /^.+? <(.*?)>.*?:(P|-P|p).*$/; $c{$1}++ if $1; END {print "$_: $c{$_}\n" for keys%c}' *.txt 11:46:45 <CakeProphet> elliott: 4 11:46:48 <CakeProphet> ....wat? 11:46:57 <monqy> the magic of perl 11:47:12 <CakeProphet> surely perl integers are bignums. 11:47:25 <fizzie> All the numbers are double-precision floats. 11:47:31 <fizzie> Unless you "use integer". 11:47:57 <fizzie> (Or "use bigint".) 11:48:19 -!- boily has joined. 11:48:23 <CakeProphet> nope still 4. must be regex then 11:48:30 <elliott> fizzie: wait, perl integers are floats by default? 11:48:38 <fizzie> Also: $c{$1}++ if /.../. 11:48:40 <monqy> I can't see how that regex could possibly have gone wrong 11:48:49 <fizzie> elliott: All Perl numbers, I believe. 11:48:52 <elliott> Huh. 11:49:05 <monqy> yet enother reason for hate 11:49:05 <fizzie> But doubles work as integers up to 2^52 or so. 11:49:29 <elliott> Sigh, does anyone know a portable SDL way to not focus the window created? 11:49:40 <elliott> Whether I have to just say "hey, show some other window" or whatever; I don't acre. 11:49:41 <elliott> care. 11:49:41 -!- elliott has left ("Leaving"). 11:49:43 -!- elliott has joined. 11:49:44 <elliott> care. 11:49:49 <monqy> care. 11:49:56 <elliott> care. 11:50:05 <fizzie> Care bear stare. 11:51:10 <fizzie> The .*$ suffix of the regex is spurious, but shouldn't hurt. 11:51:35 <fizzie> Well, assuming no newline problems. 11:51:50 <CakeProphet> I'm just trying to avoid matching things in < > 11:51:54 <CakeProphet> that aren't at the start. 11:52:12 <fizzie> Whether . matches newlines, and whether $ matches newline or real end-of-string only depends on the flags. 11:52:25 <fizzie> Try to drop the .*$ anyway, since it serves no purpose. 11:53:26 <elliott> fizzie: How would one detect whether the buffer has a full packet in it? 11:53:56 <elliott> Or can one not do one one that one. 11:54:54 <fizzie> I don't think you really can very well, and I'm not sure it'd really help. If you have a partial packet in the buffer, you can't (well, I guess you *can*, but it's ugly) just keep reading and hope you'll end up at a packet boundary during your half-a-second sleep. 11:55:30 <elliott> Well, I can prolong that sleep indefinitely, theoretically. 11:55:42 <elliott> fizzie: I guess the best thing is just to send the buffers? 11:56:01 <elliott> Is there any... guarantee that argv won't clobber binary data? Oh wait, can the protocol include nul bytes? 11:56:04 <CakeProphet> http://pastebin.com/FFF9nQc4 11:56:06 <CakeProphet> here is the whole list 11:56:23 <CakeProphet> for :P | :-P | :p 11:56:34 <CakeProphet> ....though I'm not sure that matches fizzie's 11:56:37 <monqy> sometimes if I am too tired I fall asleep involuntarily 11:57:06 <fizzie> elliott: The protocol does include lots of 0s, and those probably won't go through argv as-is. 11:57:21 <elliott> fizzie: Any two-five-fives? :p 11:57:36 <fizzie> elliott: Any bytes, in general. Though you can of course escape. 11:57:39 <monqy> I see I have only used it once in that list, presumably from refrencing it, possibly from quoting or mimicking someone else, as :P is not something I would say to emote 11:57:49 <elliott> fizzie: I could Mork-encode it. 11:58:05 <fizzie> elliott: Or just g_base64_{en,de}code, that's in glib and it's a single function. 11:58:10 <elliott> Or that, yes. 11:58:15 <fizzie> It's a bit over-cautious, but still. 11:58:18 <elliott> (This is so perverse, I: love it.) 11:58:24 <CakeProphet> there are also countless other nicks. elliottbuntu, gregorzilla, cakeprop1et, ... 11:58:40 <elliott> fizzie: Is there any guarantee you can pass like 262144 times a lot in a single argument? 11:58:42 <CakeProphet> oklofod 11:58:46 <elliott> That seems... unlikely. 11:58:51 <elliott> (Times a lot for basesixtyfour.) 11:59:00 <CakeProphet> EgoBot: 19 11:59:16 <fizzie> elliott: No; POSIX does define some minimums, but they're quite low. (Base64 only is times 1.25 though.) 11:59:17 -!- DH____ has quit (Read error: Connection reset by peer). 11:59:31 -!- DH____ has joined. 11:59:53 <fizzie> elliott: The alternative solution would be to serialize all relevant state into a single binary blob, and then throw that to the new process with some binary-safe mechanism, like a POSIX shm block. 12:00:24 <elliott> fizzie: Well, I mean, guarantee on Linux. 12:00:46 <elliott> fizzie: What if I opened a pipe, wrote a bunch of data to the write end, then passed the read end to the new process? 12:01:16 <fizzie> elliott: On Linux that's good for 64 kilobytes, IIRC. 12:01:39 <fizzie> (Size of the pipe buffer.) 12:02:03 <elliott> fizzie: Hmm, what happens if you go past that? Writes just fail? 12:02:13 <fizzie> Writes will probably block. 12:02:30 <fizzie> (Waiting for the read end to empty.) 12:02:32 <elliott> Well, if we fork'ed and started the new process ... :p 12:02:47 <elliott> I don't suppose posix guarantees any buffer sizes there. 12:02:55 <fizzie> 4k or something, if that. 12:03:15 <elliott> Mrf. 12:03:40 <CakeProphet> http://pastebin.com/Re2Eznr4 12:03:46 <CakeProphet> total number of lines 12:04:26 <CakeProphet> well, not counting /mes and stuff. 12:04:31 <CakeProphet> just lines with <name> 12:04:35 <elliott> CakeProphet: You need to use the industry-standard merging table, dude. 12:04:44 <CakeProphet> uh, what? 12:04:53 <elliott> The nick merging. 12:04:55 <elliott> Vorpal has a copy. 12:05:17 <CakeProphet> o_o 12:05:21 <CakeProphet> do I have to? 12:05:25 <elliott> Yes. 12:05:30 <elliott> Otherwise my count is way too low. 12:05:31 <fizzie> If you want anyone to take you seriously, yes. 12:05:54 <elliott> fizzie: I like how the net effect of this is turning EVERYTHING into a global. 12:06:09 <monqy> :( 12:06:22 <monqy> is there no way around this hackery 12:06:40 <CakeProphet> elliott: actually your count will be equivalent 12:06:43 <CakeProphet> as in this list you have multiple nicks. 12:06:45 <CakeProphet> :P 12:06:45 <fizzie> elliott: You could have blah_serialize_state/blah_deserialize_state functions for each blah.c, then just call those in sequence, concatenate the blobs, and do something for it. 12:06:48 <CakeProphet> :P 12:06:48 <CakeProphet> :p 12:06:50 <CakeProphet> :P 12:06:55 <CakeProphet> just building up my score. 12:07:01 <elliott> fizzie: It... would be nice, yes. 12:07:11 <elliott> fizzie: I might even do that. 12:07:17 <monqy> CakeProphet: what and what 12:07:39 <CakeProphet> I don't really see how any of that is confusing. 12:08:16 <monqy> it is confusing 12:08:16 <monqy> to me 12:08:17 <elliott> fizzie: Oh god, I'm building a fancy Generic System here, aren't I. 12:08:23 <elliott> fizzie: The main problem is that we /want/ a lot of state to be dropped. 12:08:31 <elliott> e.g., the whole Scheme state. 12:09:07 <CakeProphet> my goal is to beat Phantom_Hoover and Sgeo 12:09:11 <CakeProphet> in the lines race. 12:09:30 <fizzie> elliott: If you don't want a POSIX shm block, you could just use a g_file_open_tmp; on a sensible system it'll end up in a tmpfs anyway. 12:09:32 <monqy> a good goal for good people 12:09:37 <CakeProphet> also who is tusho and why have I never seen him. 12:09:46 <Sgeo> tusho == elliott 12:09:47 <elliott> tusho is me. 12:09:56 <fizzie> (The file handle will stay open, and then you can seek to 0 and slurb the data back in.) 12:09:57 <elliott> fizzie: It... would be nice to be _vaguely_ portable. 12:10:03 <elliott> As in, might someday run on Windows. 12:10:06 <monqy> "im eliot" - toshu 12:10:09 <elliott> So g_file_open_tmp sounds nice. 12:10:31 <elliott> fizzie: Would it be bad if I reused the jint_read/jint_write functions for this? :p 12:10:44 <elliott> (Also, those should _totally_ work on buffers.) 12:10:53 <elliott> Hmm, actually. 12:10:57 <elliott> I can depend on endianness just fine. 12:10:58 <CakeProphet> elliott: I mean for a one-liner it does its job. No need for fancy tables. 12:11:14 <elliott> CakeProphet: No it doesn't, it fails to merge the various nicks a lot of us have. 12:11:21 <elliott> So its results are completely wrong. 12:11:27 <CakeProphet> wrong how? 12:11:30 -!- sllide has joined. 12:11:40 <monqy> it doesn't merge the various nicks a lot of them have 12:11:44 <CakeProphet> it reports how many times a nick said a line. it is correct in that report. 12:12:09 <elliott> fizzie: Are buf_start/buf_pos/buf_end all important to keep? 12:12:10 <monqy> but nicks aren't very meaningufl 12:12:14 <monqy> people are meanignutuflk.... 12:12:25 <CakeProphet> sure. 12:12:43 <CakeProphet> but it was a one-liner, is my defense. 12:12:49 <CakeProphet> well, a one liner with a BEGIN and END line :P 12:12:53 <monqy> a Bad Perl one liner 12:13:22 <CakeProphet> took less time than the equivalent Haskell code.. 12:13:34 <fizzie> elliott: Outside of packet_read, I think buf_start == buf_pos or some such equivalence exists. But of course if you don't want to understand how it works, you can dump all. 12:13:44 <fizzie> (There'll be some useless bytes there, though.) 12:14:12 <monqy> failed to kill less babies than the equivalent haskell code 12:14:20 <fizzie> In particular, I think it should be enough to just dump the bytes from buf_start to buf_end, and the size of that; then on reloading set buf_start = buf_pos = 0, buf_end = size, and load those bytes at the start of the buffer. 12:14:34 <CakeProphet> I'm curious as to what method you would use in Haskell. you would recursively update a Map (of strings! gah) I'd imagine 12:14:37 <fizzie> Incidentally, a file is also what irssi uses for /UPGRADE. (It's a hidden option called "session", defaults to ~/.irssi/session) 12:14:50 <elliott> fizzie: What about that "offset" thing? 12:15:10 <CakeProphet> is a Haskell programmer more likely to use Parsec than regex for this kind of thing? 12:15:11 <monqy> CakeProphet: presumably a fold for that 12:15:31 -!- azaq23 has quit (Quit: Leaving.). 12:15:37 <monqy> I mean the updating the table 12:15:39 <monqy> you'd use a fold 12:15:44 <CakeProphet> right 12:15:46 <monqy> rather than explicit recursion 12:15:49 <elliott> struct buffer result = { sizeof(struct packet_state)*2, g_malloc(sizeof(struct packet_state)*2) }; 12:15:49 <elliott> memcpy(result.data, (unsigned char *) &cfg->state_cli, sizeof(struct packet_state)); 12:15:50 <elliott> memcpy(result.data + sizeof(struct packet_state), (unsigned char *) &cfg->state_srv, sizeof(struct packet_state)); 12:15:51 <elliott> fizzie: Pro, or pro? 12:15:53 <CakeProphet> but should you use Map String a? 12:15:59 <monqy> that is one way 12:16:00 <CakeProphet> because apparently that is a sin. 12:16:16 <monqy> what is that a anyway 12:16:28 <fizzie> elliott: You don't need to save offset[] or the internal struct packet, assuming you don't stop the proxy between the packet_read and the packet_write. 12:16:29 <CakeProphet> (Num a) => a I'm just lazy. 12:16:39 <elliott> fizzie: TOO LAZY TO BOTHER LA LA LA 12:17:02 <fizzie> Well, I think your wanna_hang may have stopped it in the right place already. 12:17:11 <monqy> wanna hang 12:17:49 <elliott> struct buffer proxy_serialize_state() 12:17:49 <elliott> { 12:17:49 <elliott> struct buffer result = { sizeof(struct packet_state)*2, g_malloc(sizeof(struct packet_state)*2) }; 12:17:49 <elliott> memcpy(result.data, (unsigned char *) &cfg->state_cli, sizeof(struct packet_state)); 12:17:49 <elliott> memcpy(result.data + sizeof(struct packet_state), (unsigned char *) &cfg->state_srv, sizeof(struct packet_state)); 12:17:51 <elliott> return result; 12:17:53 <elliott> } 12:17:55 <elliott> void proxy_deserialize_state(unsigned char *state) 12:17:57 <elliott> { 12:17:59 <elliott> memcpy(&cfg->state_cli, (struct packet_state *) state, sizeof(struct packet_state)); 12:18:01 <elliott> memcpy(&cfg->state_srv, (struct packet_state *) (state + sizeof(struct packet_state)), sizeof(struct packet_state)); 12:18:06 <elliott> } 12:18:08 <elliott> fizzie: Et voilbeautifula. 12:18:21 <fizzie> I'm not so sure about that, but I guess it should work. 12:18:37 <elliott> fizzie: The problem is skipping the init in the proxy thread creation stuff. 12:18:45 <elliott> I suppose I can just pass a bool restarting. 12:19:07 <elliott> Or separate out the state initialisation. 12:19:27 -!- monqy has quit (Quit: hello). 12:20:03 <fizzie> elliott: Yes. Though you do need to set the state_cli.sock = sock_cli; state_srv.sock = sock_srv; even when restarting. 12:20:33 <fizzie> (Otherwise it'll end up being copied from that state blob.) 12:20:35 <elliott> fizzie: Well, actually, sockets are part of struct packet_state now... 12:20:43 <elliott> And those will have the right fd. 12:20:43 <elliott> So? 12:20:52 <fizzie> Oh, right. 12:21:01 <fizzie> It actually is the right fd. 12:21:22 <fizzie> You might not need to pass it on the command line at all, then. 12:21:52 <fizzie> Though I suppose duplication won't hurt. 12:22:21 <elliott> fizzie: Yeah, I'm trying to make the only data be original command line args (perhaps not even those) + serialised. 12:22:33 <elliott> http://sprunge.us/AVRj 12:22:38 <elliott> It's starting to look suspiciously like a good design. 12:23:41 <CakeProphet> !perl print (("all nighter", "sleep")[int(rand(2))]) 12:23:43 <EgoBot> all nighter 12:23:48 <CakeProphet> and so it shall be. 12:23:53 <fizzie> CakeProphet: Right now from #perl: http://p.zem.fi/t6uz -- see how you don't have to care about refcounts. (Lie.) 12:24:26 <CakeProphet> ah 12:24:44 <CakeProphet> yes I don't really know much about XS. 12:25:18 <fizzie> The glue between return types and parameters is mostly autoXS'd, but the process of building non-scalar Perl values from inside C code is quite messy. 12:25:24 <elliott> g_file_open_tmp("mcmap.XXXXXX", NULL, NULL) -- yay 12:25:27 <elliott> (Yes, I'll handle errors later.) 12:25:57 <CakeProphet> hmmm, I will perhaps need to stock up on caffeine for the adventure ahead. 12:26:52 <Patashu> so is mcmap an #esoteric project 12:27:26 <elliott> Yes. 12:27:26 <CakeProphet> it's an #esoteric-minecraft project, I'd say. 12:27:28 <CakeProphet> >_> 12:27:33 <elliott> fizzie: Can you even seek an fd? 12:27:45 <fizzie> elliott: Certainly; just lseek it. 12:27:47 <elliott> Oh, lseek. 12:28:38 <elliott> cmd.c:270: error: ignoring return value of ‘write’, declared with attribute warn_unused_result 12:28:41 <elliott> fizzie: Harshing my vibe here. 12:28:44 <CakeProphet> haha, there's an energy shot called "10 hour power" 12:28:57 <fizzie> elliott: That's the thing that even a (void) cast won't cure. 12:29:02 <elliott> fizzie: Yeah, I just tried that. 12:29:07 <elliott> WTF do I have to do to make it happy? 12:29:09 <elliott> (void) (void)? 12:29:23 <fizzie> "if (...) ;" is I think enough. 12:29:27 <elliott> Hah. 12:29:38 <elliott> Indeed. 12:30:04 <fizzie> console.c had a write like that, until people complained too noisily about how bad it was. 12:31:02 <elliott> proxy.c: In function ‘proxy_initialize_socket_state’: 12:31:02 <elliott> proxy.c:57: error: expected expression before ‘{’ token 12:31:02 <elliott> proxy.c:58: error: expected expression before ‘{’ token 12:31:02 <elliott> What. 12:31:10 -!- Sgeo has quit (Ping timeout: 260 seconds). 12:31:11 <elliott> void proxy_initialize_socket_state(socket_t sock_cli, socket_t sock_srv) 12:31:11 <elliott> { 12:31:11 <elliott> cfg->state_cli = PACKET_STATE_INIT(sock_cli); 12:31:11 <elliott> cfg->state_srv = PACKET_STATE_INIT(sock_srv); 12:31:12 <elliott> } 12:31:14 <elliott> I am a confuse.d 12:31:21 <elliott> Oh god, don't tell me I need a (struct blah) inf ront fo that. 12:31:32 <fizzie> Yes, it's a struct initializer. 12:31:58 <fizzie> Or expands into one, anyway. 12:32:31 <fizzie> "Inf ront fo", sounds like a Ultima spell. 12:32:37 <fizzie> KAL VAS FLAM and so on. 12:33:29 <elliott> Heh. 12:36:58 <elliott> GLib-ERROR **: The thread system is not yet initialized. 12:36:58 <elliott> aborting... 12:36:58 <elliott> Aborted 12:36:59 <elliott> fizzie: Good start. 12:37:14 <elliott> Oh, duh. 12:38:56 <elliott> 13:39:18 12:38:56 <elliott> > XIO: fatal IO error 9 (Bad file descriptor) on X server ":0.0" 12:38:56 <elliott> after 122 requests (122 known processed) with 0 events remaining. 12:38:56 <elliott> elliott@katia:~/Code/mcmap$ 12:38:57 <lambdabot> Not in scope: data constructor `XIO'Not in scope: `fatal'Not in scope: data... 12:38:57 <elliott> Well, 'tis a start. 12:39:16 <elliott> XIO: fatal IO error 11 (Resource temporarily unavailable) on X server " o<CTCP>" 12:39:16 <elliott> after 121 requests (121 known processed) with 0 events remaining. 12:39:19 <elliott> That's no X server I ever heard of. 12:39:32 <elliott> They speak X server in what? 12:39:49 <elliott> > XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" 12:39:50 <elliott> after 120 requests (120 known processed) with 0 events remaining. 12:39:50 <elliott> X Error of failed request: BadWindow (invalid Window parameter) 12:39:50 <elliott> Major opcode of failed request: 4 (X_DestroyWindow) 12:39:50 <elliott> Resource id in failed request: 0x5e0000d 12:39:50 <elliott> Serial number of failed request: 120 12:39:50 <lambdabot> Not in scope: data constructor `XIO'Not in scope: `fatal'Not in scope: data... 12:39:52 <elliott> Current serial number in output stream: 120 12:39:54 <elliott> WHAT DO YOU WANT FROM ME 12:40:06 <Jafet> C-M-^H 12:40:21 <elliott> -rw------- 1 elliott elliott 513K 2011-09-12 13:39 /tmp/mcmap.UZ850V 12:40:27 <elliott> fizzie: They're not meant to be that big are they? 12:40:45 <fizzie> Well, a single packet_state_t is around 256K. 12:40:51 <elliott> Fair enough. 12:41:00 <fizzie> It's a bit overdone, but it needs to hold any single packet. 12:41:25 <elliott> Is that using the zlib worst-case guarantees? :p 12:41:48 <fizzie> It's probably well over that. 12:41:52 <elliott> OK, without SDL_Quit(), //upgrade just seems to freeze the whole thing. 12:42:21 <elliott> This ... is not so simple. 12:42:23 <fizzie> But of course that's assuming 16x16x256 is the largest chunk-update ever sent; we do (did?) support cross-chunk updates. 12:42:53 <elliott> So the largest packet is... infinitely big? 12:43:03 <fizzie> Technically-maybe. 12:43:07 <elliott> FIX IT 12:43:21 <fizzie> It's borderline possible that you can only "officially" do SDL_Quit from the SDL UI thread. 12:43:50 <elliott> Yes but even if I don't quit it's completely broken, so. :p 12:44:09 <elliott> I should may-possibly gdb it, but would that even /work/? 12:44:55 <fizzie> I'd guesstimate that gdb can at least optionally follow through exec's. 12:46:24 <fizzie> Do we actually even SDL_Quit in the "clean" shutdown? 12:46:35 <fizzie> (It's not atexit-registered by default.) 12:46:39 <elliott> #0 0x00007ffff6beb36d in nanosleep () at ../sysdeps/unix/syscall-template.S:82 12:46:39 <elliott> #1 0x00007ffff74ad984 in SDL_Delay () from /usr/lib/libSDL-1.2.so.0 12:46:39 <elliott> #2 0x00007ffff746538e in SDL_WaitEvent () from /usr/lib/libSDL-1.2.so.0 12:46:39 <elliott> #3 0x000000000040b73e in start_ui (map=true, scale=1, resizable=true, 12:46:39 <elliott> wnd_w=512, wnd_h=512) at ui.c:112 12:46:40 <elliott> Hmm. 12:46:44 <elliott> fizzie: I don't know. 12:47:29 <Patashu> how did you segfault in there 12:47:41 <elliott> Who said it was a segfault? 12:47:48 <Patashu> I made an ass of u and me 12:47:54 -!- cheater has quit (Remote host closed the connection). 12:50:52 <elliott> fizzie: This is quite the confuzzling code; at least the proxy just stops dead. 12:55:57 * elliott plans how to get fizzie to debug it for him with tricksy thinking. 12:58:47 <CakeProphet> student: "oh, so it's the combination" professor: "no it's the composite. the summing." 12:58:59 <CakeProphet> ...even though that's exactly what he meant in that context. 12:59:22 * CakeProphet hates this class with each passing minute. 12:59:36 <elliott> Hey fizzie... what if... you looked at this diff. 12:59:45 <CakeProphet> !wacro 12:59:46 <EgoBot> CSSHLESS 12:59:50 <elliott> Csshless. 13:00:01 <Patashu> wow 13:00:04 <Patashu> that one is really good 13:00:10 <CakeProphet> yes it is. 13:00:12 <elliott> fizzie... fizzie... http://sprunge.us/XaIC 13:00:13 <Patashu> now what on earth do we use it for 13:01:07 <Patashu> csh blahblah | less 13:02:34 <CakeProphet> !wacro 13:02:35 <EgoBot> HMFHC 13:02:36 <CakeProphet> !wacro 13:02:37 <EgoBot> TEEEIM 13:02:38 <CakeProphet> !wacro 13:02:39 <EgoBot> MZH 13:02:39 <CakeProphet> !wacro 13:02:40 <EgoBot> SBP 13:02:41 <CakeProphet> !wacro 13:02:42 <EgoBot> UDLMSCP 13:02:49 <CakeProphet> TEEEEIM 13:03:51 -!- chickenzilla has quit (Ping timeout: 246 seconds). 13:04:41 -!- chickenzilla has joined. 13:04:49 <fizzie> How did it not work again? 13:05:56 <elliott> fizzie: It just sits there. 13:06:01 <elliott> Minecraft times out, nothing printed on the console. 13:06:09 <elliott> Ctrl+C in gdb shows it's in sdl event loop. 13:06:12 <elliott> But it definitely does cross over. 13:06:21 <CakeProphet> Surprised, since he thought he declared 13:06:21 <CakeProphet> this identifier, JD searches through the source code and discovers that the 13:06:21 <CakeProphet> identifier he declared had and ‘-‘ in it and this one didn’t. He fixes the 13:06:24 <CakeProphet> error then quickly scans the rest of the source code and finds two more places 13:06:27 <CakeProphet> where he left out the ‘-‘ 13:06:31 <CakeProphet> I wonder if my professor is a Lisp programmer. 13:06:34 <fizzie> SDL event loop is the reasonable place, but humm. 13:06:56 <elliott> fizzie: Maybe the proxy got hung by deserialising the wrong stuff and interpreting that? 13:07:16 <CakeProphet> !wacro 5000 13:07:16 <EgoBot> ACDIGDBCUPTDRCWYEAATDFPBB 13:07:30 <CakeProphet> GDBCUP 13:08:48 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 13:09:43 <fizzie> You could at least do if (read(upgrade_fd, data, len) != len) die("OH NO!") or something. 13:10:05 <elliott> fizzie: I doubt that's failing. But okay. :p 13:10:19 <fizzie> So far I haven't seen anything obviously wrong, no. 13:11:25 <elliott> Yeah, no errors. 13:11:28 <CakeProphet> wow I wonder if my professor realizes that most people don't charge by lines of code. 13:11:32 <CakeProphet> most sane people. 13:11:48 <CakeProphet> all Haskell programmers would be homeless. 13:11:56 <fizzie> Aren't they? 13:12:11 <fizzie> My mental image of a Haskell programmer is this hairy homeless person. 13:12:13 <CakeProphet> well, I guess they would be. 13:16:51 <fizzie> Reached the end of the diff, still didn't see anything obviously wrong. Possibly struct proxy_config should hold either both the iq and worldq, or neither, but that's not a real problem. 13:18:11 <fizzie> I suppose you could just add some log_prints in various places of proxy.c to see what happens there, or figure out how to target that particular thread with gdb. I can take a closer peek at home, but that's likely to be at least three hours or so from now. 13:18:25 <elliott> I'll procrasti-think on it. 13:19:18 <CakeProphet> procrasti-thinking could be probably be listed as most of my billable hours. 13:19:21 <CakeProphet> if I were paid by hour. 13:20:37 <fizzie> Are you instead paid by line? 13:20:53 <CakeProphet> billable hours -- 10:00-11:45 compiled code; 11:00 - 12:00 : took hookah break to procrasti-think 13:21:04 <CakeProphet> fizzie: no I'm paid in piecework currently. 13:21:13 <CakeProphet> so, I set a price for something, finish it, get paid. 13:30:50 -!- Sgeo has joined. 13:33:33 -!- cheater has joined. 13:38:58 <Sgeo> *sigh* 13:40:09 <Sgeo> My OS professor is making sure people understand what classes are. Not because of OS theory presumably, but to be able to write plugins for his simulator 13:42:21 <Jafet> Classes are abstract things which appear in your program, and are not meant to be executed. 13:43:22 <Jafet> Perhaps it's better to say "attended" 13:44:40 <elliott> back 13:45:12 <Sgeo> wb 13:46:41 <elliott> Sgeo: I forget, have you ever used mcmap at all? 13:46:50 <Sgeo> No 13:48:32 <elliott> Lame. 13:49:43 <cheater> what does his simulator simulate 13:49:54 -!- copumpkin has quit (Ping timeout: 260 seconds). 13:50:19 -!- copumpkin has joined. 13:52:03 <Sgeo> A CPU and an OS 13:52:03 <elliott> ?src minimum 13:52:04 <lambdabot> minimum [] = undefined 13:52:04 <lambdabot> minimum xs = foldl1 min xs 13:52:30 <Sgeo> ?src min 13:52:30 <lambdabot> min x y = if x <= y then x else y 13:58:15 <elliott> Sgeo: You realise mcmap works on Windows, btw? 13:58:33 <Sgeo> Now I do. But until now, I've been lazy 13:58:42 * Sgeo is in class right now 14:00:09 <elliott> fizzie: Seek state of an fd would be transferred across exec,r ight? 14:02:03 <fizzie> Yes, it's logically speaking part of the fd. 14:04:25 <elliott> Hmm, wait. 14:04:29 <elliott> Does address space carry over exec()? 14:04:38 <elliott> Oh, hmm, shouldn't matter 14:04:42 <elliott> packet_state doesn't contain any pointers 14:04:47 <elliott> Except maybe in the packet p, but that should be ignored at this point 14:04:48 <elliott> I think. 14:05:30 <fizzie> Hmmmmmmmm. 14:05:41 <fizzie> Let me check that thing. 14:06:27 <fizzie> Yes, it should be hokay. 14:06:45 <fizzie> The 'offset' field is used as the packet's field_offset array, but it's reset by packet_read. 14:06:56 <fizzie> (state->p.field_offset = state->offset;) 14:07:49 <elliott> Hokay. 14:09:06 <fizzie> (Same applies for the 'bytes' field of the packet, which is pointed to &state->buf[state->buf_start] in packet_read.) 14:09:39 <fizzie> Aways, moving home. 14:10:00 <elliott> Moove. 14:10:01 <elliott> Mouuuve. 14:14:16 <Sgeo> Half the time when I raise my hand to answer a question: "Someone else" 14:18:29 <oklopol> nerd 14:20:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:20:57 <oklopol> half the time when i raise my hand to answer a question, pigs fly 14:22:16 <CakeProphet> :o 14:23:05 <oklopol> or wait, is it because you just say something random that makes no sense? 14:23:12 <oklopol> because that'd be cool 14:28:02 <Sgeo> Sadly, no 14:36:27 <CakeProphet> [W]hile there are many aspects to software quality, your first quality concern must necessarily be with its defects. ... [E]ven experienced programmers typically make a mistake for every seven to ten lines of code they develop. 14:36:31 <CakeProphet> o rly? 14:36:38 <CakeProphet> but my code always runs correctly the first time. 14:37:15 <cheater> BUT DOES IT HALT 14:37:36 <CakeProphet> Some people mistakenly refer to software defects as bugs. When called bugs, they seem like pesky things that should be swathed or even ignored. This trivializes a criticial problem and fosters the wrong attitude. ... Defects are more like time bombs than bugs. 14:37:44 * CakeProphet submits a time bomb report to gedit. 14:38:07 <cheater> are defects like burritos 14:41:35 <CakeProphet> ...sure. 14:42:54 <Sgeo> burritos encased in nuclear waste 14:43:17 <CakeProphet> help data form hell 14:45:36 <CakeProphet> JD again recompiles the program and gets an error message at the end of the 14:45:37 <CakeProphet> program, unmatched begin 14:45:45 <CakeProphet> ah, she's a pascal programmer. 14:46:12 -!- copumpkin has joined. 14:47:29 <CakeProphet> or perhaps Algol... 14:49:17 <CakeProphet> based on age I would guess Pascal 14:50:05 <fizzie> Does she write in the third person? 14:50:17 <fizzie> Or is this "JD" some sort of a persona? 14:50:19 -!- Sgeo has quit (Ping timeout: 258 seconds). 14:50:33 <CakeProphet> it is a hypothetical character in an example. 14:51:05 <elliott> oh i thought it was the java decompiler 14:51:09 <elliott> fizzie: do you want an diffs 14:51:13 <elliott> with rrchecking 14:51:56 <CakeProphet> Looking at the compiler output, JD sees where the missing semicolon belongs and 14:51:59 <CakeProphet> fixes the source code 14:52:02 <CakeProphet> this is how I know it's a mad example. 14:52:13 <CakeProphet> because the compiler was helpful for finding a missing semicolon. 14:52:19 <CakeProphet> s/mad/made up/ 14:52:31 <CakeProphet> I guess typos get more interesting when you're skipping a night of sleep. 14:55:14 <itidus20> hmm 14:56:34 <itidus20> CakeProphet: once laying in a hospital bed with asthma or something i started stareing at the fabric patterns. i thought i was just tired or whatever but i did start to see some bizzare visual grammar speaking to me 14:56:59 <itidus20> as if i was reading the meaning of the fabric pattern 14:58:04 -!- sebbu2 has joined. 15:00:49 <CakeProphet> I often read the meaning of fabrics. 15:00:56 <CakeProphet> they speak to me in a secret script. 15:01:04 -!- sebbu has quit (Ping timeout: 260 seconds). 15:01:36 <itidus20> some bugs don't matter 15:01:45 <CakeProphet> saying sooth about baked dessert. 15:01:54 <CakeProphet> this is where I get all of my secrets. 15:02:18 <itidus20> CakeProphet: well i keep seeing the word grammar used in strange places lately 15:02:26 <CakeProphet> some bugs are actually just stupid intended features. 15:02:27 <itidus20> "design grammar" for example 15:02:43 <itidus20> like.. uhhh 15:03:11 <CakeProphet> or should I say some stupid intended features are actually just bugs. 15:05:04 <CakeProphet> being a cannibalistic doctor would be fun because you get to cure people in two senses. 15:05:32 <elliott> fizzie did done run away. 15:06:05 <CakeProphet> "done did" is an acceptable idiom of some dialects of southern american english. 15:06:06 <itidus20> now im not sure 15:07:02 <itidus20> ok here we go 15:07:04 <CakeProphet> here "done" is essentially being used like "already" 15:07:15 <itidus20> "Axonometry, and the pictorial grammar that goes with it, has taken on a new significance with the advent of visual computing." 15:07:26 <itidus20> pictorial grammar :P 15:07:53 -!- Phantom_Hoover has joined. 15:08:18 <CakeProphet> yeah that doesn't make sense. 15:09:36 <CakeProphet> like... the... terminology? 15:10:03 <itidus20> im not sure that its supposed to make sense 15:11:01 <itidus20> CakeProphet: hmm.. i would say it's a liberal arts thing except mathematics and science are apparently liberal arts 15:11:02 <Phantom_Hoover> elliott, hello I have a lab coat now. 15:11:10 <Phantom_Hoover> itidus20, science isn't. 15:11:18 <Phantom_Hoover> Mathematics is classed as one by weird people. 15:11:42 <itidus20> yeah i struggle with this wiki sentence too "The contemporary liberal arts comprise studying literature, languages, philosophy, history, mathematics, and science." 15:11:59 <itidus20> i was gonna say "cake, it is because you're not liberal arts type that it doesn't make sense" 15:12:09 <itidus20> but i wanted to check up what liberal arts means... and now i'm in a fix 15:12:16 <CakeProphet> I actually am something of a "literal arts type" though. 15:12:25 <CakeProphet> also by science it might be referring to soft sciences. 15:12:39 <elliott> Phantom_Hoover: noooooooooooooooooooooooooooooooo 15:12:56 <itidus20> i just assumed because of the nature of this room 15:13:13 <Phantom_Hoover> elliott, if it's any consolation, the label says 'laundry coat' because ones that say 'lab coat' cost twice as much. 15:13:25 <itidus20> i don't think i understand the term at all 15:13:29 <CakeProphet> actually I think my interest in programming was kind of a fluke. 15:14:27 <CakeProphet> I was probably going to be an English or Anthropology major had I not learned how to program. 15:14:35 <elliott> Phantom_Hoover: Inferior. 15:14:49 <CakeProphet> I was terrible at math through about half of high school. 15:14:56 <CakeProphet> only class I failed was algebra 2. 15:15:09 <itidus20> CakeProphet: ok then lets say drawing has structure. it isn't just a chaotic set of lines 15:15:11 <Phantom_Hoover> elliott, they are indistinguishable from real lab coats. 15:15:29 <elliott> Phantom_Hoover: except by label. 15:15:31 <itidus20> i think that is part of the meaning :D 15:15:50 <Phantom_Hoover> CakeProphet, so are all too many other programmers. 15:16:05 <Phantom_Hoover> elliott, nah, it was the removable label held on by a bit of plastic. 15:16:22 <CakeProphet> Phantom_Hoover: still terrible at math you mean 15:16:23 <CakeProphet> ? 15:16:31 <CakeProphet> also, 15:16:35 <Phantom_Hoover> Yes. 15:16:38 -!- maniac has joined. 15:16:41 <itidus20> CakeProphet: taking things even further.. analogy appears between art style and constructed language 15:16:44 <CakeProphet> since you are the person above me in lines said on IRC 15:16:50 <maniac> how do you represent numbrs greater then 8 bit in bf 15:16:50 <CakeProphet> I will be competing with you 15:16:51 <CakeProphet> while you are online 15:16:53 <CakeProphet> to say more lines 15:17:01 <elliott> Phantom_Hoover: DO YOU WISH TO HEAR ABOUT ALL THE WONDERFUL MCMAP IMPROVEMENTS COMING 15:17:14 <CakeProphet> maniac: difficultly 15:17:21 <Phantom_Hoover> maniac, same way you do it in everything else with fixed-size words. 15:17:51 <maniac> so i will have to respresent numbers in different bytes? 15:17:57 <elliott> yep 15:18:04 <elliott> nobody ever said it was easy 15:18:15 <itidus20> CakeProphet: well.. if you draw something in an (checks the word) axonometric projection, it means you start following some rules 15:18:35 <itidus20> maybe thats where the grammar part comes in 15:19:17 <CakeProphet> I'm pretty sure he's saying the terminology of axonometric projection has gained a new significance in the advent of visual computing blah blah blah 15:19:56 <CakeProphet> like, if it's a liberal arts dude, he's not thinking about formal grammars. 15:20:14 <CakeProphet> he's just thinking of nice words to say. 15:20:20 <itidus20> i dunno, i might be wrong here 15:20:40 <itidus20> i think that i have missed the point by a wide margin :D 15:21:07 <CakeProphet> itidus20: how many pixels would that margin be? 15:21:36 <itidus20> 20 15:21:46 <CakeProphet> well, if you used em or inches, then it would depend on your display. 15:22:08 <CakeProphet> fucking CSS. 15:28:30 <itidus20> and, slightly related: 15:28:38 <CakeProphet> !wacro 15:28:38 <EgoBot> TEETLP 15:28:50 <itidus20> It is a form in its own right. This work is unprecedented because it is constructed of purely abstract units of Mondrians new system. 15:29:09 <itidus20> As Paul Wood says: They constituted, so to speak, the first elements in a new pictorial grammar, from which subsequent compositions would be built up. The new abstractions were now built up from combinations of the simplest, completely abstract, pictorial units (geometrical forms: lines, rectangles, bars, later coloured planes)." 15:29:49 <CakeProphet> oh okay. 15:30:05 <itidus20> im quoting disparate sources about unrelated things 15:30:15 <CakeProphet> oh... okay. asshole. 15:30:21 <itidus20> i think. 15:30:24 <itidus20> so yeah 15:30:29 <itidus20> what can i say.. 15:33:11 <CakeProphet> !wacro 15:33:12 <EgoBot> RSCBDKK 15:33:14 <CakeProphet> oh... okay. asshole. 15:33:15 <CakeProphet> oh... okay. asshole. 15:33:15 <CakeProphet> oh... okay. asshole. 15:33:15 <CakeProphet> oh... okay. asshole. 15:33:15 <CakeProphet> oh... okay. asshole. 15:33:18 <CakeProphet> ...lol 15:33:22 <CakeProphet> wrong line. 15:33:27 <CakeProphet> !wacro 15:33:27 <EgoBot> SKSMSPFB 15:33:28 <CakeProphet> !wacro 15:33:29 <EgoBot> MCPI 15:33:30 <CakeProphet> !wacro 15:33:31 <EgoBot> MTHNTSIM 15:33:32 <CakeProphet> !wacro 15:33:32 <CakeProphet> !wacro 15:33:33 <EgoBot> BTPL 15:33:33 <EgoBot> TQKOBJSG 15:33:35 <CakeProphet> !wacro 15:33:35 <EgoBot> SSAHTT 15:33:56 <CakeProphet> !wacro 3 5 15:33:57 <EgoBot> RPPGD 15:34:17 <CakeProphet> I think most of the shorter ones are pretty believable acronyms 15:34:26 <CakeProphet> !simpleacro 3 5 15:34:42 <CakeProphet> !acro 3 5 15:34:47 <EgoBot> BMSHEXMJSL 15:35:53 <CakeProphet> professor: "but in Vista, it gets kind of HTML... horrible." 15:36:30 <CakeProphet> distinguished scholar of our age. 15:39:29 <itidus20> what gets kind of HTML? 15:40:18 <CakeProphet> the... HTML gets HTML horrible, I guess. 15:43:34 <itidus20> CakeProphet: http://www.theparisreview.org/blog/tag/line-drawings/ 15:44:38 <itidus20> this link mind you is wordy article full of over-analysis and theoretical flibber flabber just to warn 15:49:56 <elliott> I must capture the fizzie and use him as a debugging tool. 15:57:51 <fizzie> I was a dinner. 15:57:57 <fizzie> But now I'm at least momentarily here. 15:59:36 <elliott> http://sprunge.us/ORTV 15:59:37 <elliott> HAVE FUN 16:01:33 <fizzie> I shall: take a look. 16:02:43 <elliott> fizzie: Do it on pyralspite, so I can watch the hilarious mishaps. :p 16:02:49 <elliott> (Advice may not be: good.) 16:03:00 <fizzie> It's better than doing it on c.nerd.nu, at least. 16:03:05 <elliott> Well, there's that. 16:03:21 <elliott> Have you even connected to the 'spite without getting disconnected immediately yet? 16:03:22 <fizzie> Well, on the first attempt it did exactly what you said it would do, which was to hang. 16:03:32 <fizzie> Yes. Well, this was the first time. 16:04:20 <elliott> If only I was running the Scheme branch, so that you could get every chat message annoyingly repeated back to you. 16:05:16 <fizzie> Whoops, I just misclicked disconnect. 16:05:45 <elliott> hahaha 16:06:15 <elliott> More like DOWNGRADE HAHAHAHAHA 16:06:16 <elliott> L O L 16:13:40 <fizzie> Oh, I may see. 16:13:48 <elliott> What doth thou see'st? 16:14:28 <fizzie> No, it's not because of that; never mind. 16:15:00 <fizzie> I'll try a thing anyhow. 16:15:13 <elliott> What was it, out of curcuorourousrousrosity? 16:15:15 <elliott> Cucumberosity. 16:16:01 <fizzie> Well, commands are picked out in proxy.c; I was temporarily worried it might call the command processor there, which of course would make the proxy-stopping not work; but they're not, they're handled in the world-updating thread like I thought they were. 16:16:59 <elliott> Don't we have a thing for, you know, specifically safely killing the world thread? Mayhaps that would be good. 16:17:23 <elliott> i killed you 16:21:48 <fizzie> Well, it's not especially safe; it's just the stop() call, which g_thread_exit(0)s instead of exit(1)ing; it only kills the world thread by virtue of being called from the world thread. The execl will kill all the threads anyway. 16:21:50 <elliott> I think I may have killed fizzie in real life. 16:21:53 <elliott> Oh, there we go. 16:24:16 <elliott> 17:24:41 <ehird> also 16:24:16 <elliott> 17:24:42 fizzief left the game. 16:24:16 <elliott> 17:24:42 [INFO] Player disappeared: fizzief 16:24:16 <elliott> 17:24:44 <ehird> have you moved from that block 16:25:20 <fizzie> No. :p 16:25:32 -!- FireFly has joined. 16:33:42 <elliott> I like to think fizzie is just continually trying the same thing. 16:33:43 <elliott> You know, insanity. 16:33:56 <fizzie> It's not always been quite the same thing. 16:38:46 <elliott> fizzie: EGG SPAWNED BEAUTIFUL CHICKEN 16:38:50 <elliott> PET 16:38:51 <elliott> FRIEND 16:38:53 <elliott> FOREVER 16:40:46 <fizzie> Okay, yes. 16:40:53 <elliott> Oh? 16:41:42 <fizzie> Your execl() fails. You don't get the tell() out of it, because by that time the proxy thread (which does packet injection) will have already failed. The execl fails because (a) the "fd" argument is an int, not a char* to a stringized version of the fd, and (b) there's no (char *)NULL at the end of the execl. 16:41:55 <fizzie> The end result is that just the proxy thread dies. 16:42:02 -!- DH____ has quit (Remote host closed the connection). 16:42:04 -!- jix_ has quit (Quit: leaving). 16:42:06 <elliott> haha oops 16:42:09 <elliott> i can fix that 16:42:27 <elliott> sorry for being a dumbo 16:42:57 <fizzie> I stared at the code for quite a while but didn't see it; took a bit of stepping in gdb to notice. 16:43:25 <elliott> log_print should work even after console_cleanup right? 16:43:43 <fizzie> Well, uh. In theory, yes. In practice it depends on how clean console_cleanup is. 16:43:50 <elliott> Right. 16:44:17 <fizzie> It does seem to set console_outfd = 1, so after that log_print should go directly to stdout. 16:44:24 <elliott> > 16:44:24 <elliott> Usage: 16:44:24 <elliott> mcmap [OPTION…] host[:port] 16:44:28 <elliott> Well, here's a new problem. 16:44:36 <elliott> At least it doesn't fuck up the console now. 16:44:44 <elliott> if (argv[1] && !strcmp(argv[1], "--upgrade")) 16:44:44 <elliott> { 16:44:44 <elliott> upgrading = true; 16:44:44 <elliott> upgrade_fd = atoi(argv[2]); 16:44:44 <elliott> argv[2] = argv[0]; 16:44:44 <elliott> argv += 2; 16:44:46 <elliott> argc -= 2; 16:44:48 <elliott> } 16:44:49 <maniac> !wacro 16:44:50 <EgoBot> BVBMTS 16:44:51 <elliott> Have I got an off-by-one here ir something? 16:44:58 <maniac> !acro 16:45:02 <EgoBot> XYQTSWQM 16:45:12 <maniac> !fuck 16:45:18 <elliott> `fuck 16:45:22 <HackEgo> ​/hackenv/bin/fuck: line 9: sqlite3: command not found \ /hackenv/bin/fuck: line 17: sqlite3: command not found \ Congratulations! 's action has brought a beautiful new baby into the world. Isn't it adorable? 16:45:32 <maniac> lol 16:45:58 <fizzie> elliott: I don't think you're passing the old argv[1]..argv[N] into the exec at the moment. 16:45:59 <elliott> Oh hm. 16:46:08 <elliott> fizzie: Yes, that's intentional, since I should just persist map state instead. But hmm. 16:46:14 <elliott> Right, there's the problem, I don't skip the parsing. 16:46:21 <fizzie> In that case you'll want to skip that, right. 16:47:17 -!- jix has joined. 16:47:20 <elliott> What the heck? Now the new parts of the map load, but all black. 16:47:23 <elliott> So they load from grey into black. 16:47:52 <elliott> But they still hover correctly. 16:47:59 <elliott> Oh. 16:48:02 <elliott> I skipped loading colours. 16:48:03 <elliott> :p 16:48:12 <elliott> Actually, I don't want to skip parsing. 16:48:17 <elliott> Because I want to re-run the Scheme config. 16:49:11 <Gregor> OMG, ZOMBIES 16:49:18 <elliott> Now what was that convenience function in glib you said to concatenate two null-terminated lists of strings eh fizzie? :P 16:50:25 <fizzie> I'm not entirely sure the real argv is legal to modify everywhere, incidentally. So it might be that you just want to build a new one in the "--upgrade" flag-check. 16:50:55 <elliott> I'm pretty sure you are allowed to modify argv? 16:50:58 <elliott> At least that's my perception. 16:51:02 <fizzie> Well, it's widely done. 16:51:11 <elliott> It's hardly the biggest wart. :p 16:51:14 <Gregor> argv is canonically, pedantically const. 16:51:29 <Gregor> I don't know of a single system in existence that implements it as such though. 16:51:58 <fizzie> As for the other question, g_strjoinv + g_strconcat + g_strsplit, but that depends on there being a real separator that's never in any of the component strings. I thought it had more of the null-terminated-lists-of-strings functions than it had. 16:53:06 <Deewiant> ISO/IEC 9899:TC2 §5.1.2.2.1 ¶2: 16:53:07 <Deewiant> The parameters argc and argv and the strings pointed to by the argv array shall 16:53:10 <Deewiant> be modifiable by the program, and retain their last-stored values between program 16:53:13 <Deewiant> startup and program termination. 16:53:46 <fizzie> Well, TC2, that's like not even C99. 16:53:48 <elliott> Yay. 16:54:00 <Gregor> I seem to recall from somewhere that POSIX and C disagree on the matter :P 16:54:11 <Gregor> The ELF spec makes them writable too. 16:54:18 <Deewiant> I can't afford ISO/IEC 9899:1999 itself. 16:55:16 <elliott> There's no unlink() for fds, is there? :p 16:55:40 <Gregor> elliott: Dear server: Please unlink your listening TCP socket. kthx. 16:55:47 <elliott> Yes. Quite. 16:55:50 <elliott> Well, you can't ioctl many things, too. 16:56:07 <fizzie> No; in any case, it's a bit debatable what it should do when the link count is more than one, too. 16:57:00 <fizzie> I was sort-of assuming that the glib temporary files would've come pre-unlinked when you don't ask for the name (NULL as one of those params), but the documentation didn't really say. 16:57:18 <fizzie> Based on all those /tmp/mcmap.FOOs, maybe not. 16:57:35 <elliott> Oh, hmm, can you really unlink a file and keep using the fd properly? 16:57:54 <elliott> 17:58:27 [DIED] Unknown option --upgrade 16:57:59 <elliott> mcmap, dude, you upgraded two times without complaint. 16:57:59 <fizzie> Yes, on most systems. 16:57:59 <elliott> Hmm. 16:58:01 <elliott> Oh, duh. 16:58:08 <fizzie> Not on Windows, though. :p 16:58:11 <elliott> I need to set main_argc/main_argv after mutating it in my if (upgrade) code. :p 16:58:17 <elliott> fizzie: Well, none of this works on Windows right now :P 16:58:20 <fizzie> (At least I think not on Windows.) 16:59:01 <elliott> fizzie: So, um. http://sprunge.us/LMaZ 16:59:11 <Deewiant> If you just fopen'd the file, I think the unlink would fail. 16:59:12 <elliott> If I make this unlink the temporary file properly, would this be something vaguely committable? 16:59:19 <elliott> There's no major ugliness in it, after all. 16:59:30 <fizzie> "When the file's link count becomes 0 and no process has the file open, the space occupied by the file shall be freed and the file shall no longer be accessible. If one or more processes have the file open when the last link is removed, the link shall be removed before unlink() returns, but the removal of the file contents shall be postponed until all references to the file are closed." 16:59:33 <fizzie> That's from POSIX. 16:59:35 <elliott> And obviously it still has the "major sections of the map are black", "steals focus", ... bugs ... but it's basic upgrade. 16:59:42 <elliott> fizzie: Ah, neat. 16:59:55 <fizzie> So the unlink-and-still-use should be POSIXly mostly-good. 17:00:16 -!- CakeProphet has quit (Ping timeout: 252 seconds). 17:00:43 <fizzie> On Windows you have to specifically say FILE_SHARE_DELETE in the dwShareMode of CreateFile to make that happen. 17:01:27 <elliott> Also the options don't seem to be heeded yet. Hm. 17:01:46 <Gregor> Oh, you thought you had to close before unlinking? 17:01:52 <Gregor> That's Windows bullshit. 17:02:25 <elliott> Gregor: I don't assume anything any more, dude; we're creating a temporary file, writing binary, machine-specific data to it, unlinking it, then execing ourselves and passing the decimal representation of the fd, 17:02:37 <elliott> so that we can convert it back to a number, read the data from it, restore, then jump into our main code path. 17:02:39 <elliott> I don't assume anything any more, dude. 17:02:54 <Gregor> ... none of that is particularly controversial. 17:03:05 <elliott> Gregor: It's new to me :P 17:03:09 <Gregor> The arguments you pass are irrelevant so long as you don't close the FD. 17:03:39 <elliott> Gregor: But, but, the serialised data /includes socket fds/ that we depend on being kept over the exec, which we then immediately start proxying on. 17:03:44 -!- maniac has changed nick to Warrior`. 17:04:02 <Gregor> If it just includes the FD numbers, then that's just dandy, you still haven't closed them. 17:04:14 <elliott> I know it WORKS, but it still feels INSANE :P 17:04:51 <elliott> fizzie: So, um, yes, about that... committing... can I... 17:04:52 <Gregor> I remember SMAUG (a MUD server) had a hack that you could upgrade the server without disconnecting anyone. 17:04:59 <elliott> Gregor: irssi has it too :P 17:05:13 <elliott> Gregor: And now finally your long-running mcmap sessions can survive a rebuild with a simple //upgrade. 17:05:18 <elliott> Assuming we didn't change the upgrade format. At all. 17:05:23 <Gregor> Hooray 17:06:33 <elliott> Gregor: But mostly it means that you can e.g. reload your Scheme configuration without it being in a weirdly inconsistent state :P 17:06:38 <elliott> And without dropping your connection. 17:07:00 <fizzie> The file thing should work on Windows too, it just needs the proper CreateFile calls. (In particular the SECURITY_ATTRIBUTES needs bInheritHandle of true, and dwShareMode that FILE_SHARE_DELETE for the delete-before-close... and I'm not entirely sure how you pass an inherited handle. Oh, and then of course you'd have to make the sockets inheritable somehow, that might be more complicated.) 17:07:10 <elliott> elliott@katia:~/Code/mcmap$ LD_LIBRARY_PATH=/usr/local/lib build/mcmap --upgrade 0 x 17:07:10 <elliott> 18:07:42 [INFO] Starting up... 17:07:10 <elliott> 99a 17:07:10 <elliott> svdsf 17:07:10 <elliott> 18:07:44 [DIED] read_buffer failed to read data 17:07:11 <elliott> "Hm." 17:07:38 <elliott> For the last time, does anyone know how to tell SDL to steal the goddamn focus? X-D 17:07:47 <elliott> It's kind of ruined if WHOOPS MINECRAFT IS ON THE MENU AND NOW YOU'RE FOCUSED ON THIS MAP WINDOW 17:08:54 <fizzie> SDL's approach to window management is somewhat minimalistic. 17:09:01 -!- nooga has joined. 17:10:11 <elliott> I don't even care if I need to fuck with the X socket :P 17:10:11 <elliott> Actually 17:10:12 <elliott> Really 17:10:17 <elliott> What I want is to not SDL_Quit at all 17:10:21 <elliott> I really, really want to maintain the surface 17:10:22 <elliott> Hmm 17:10:30 <elliott> fizzie: What if I just serialised the surface structure along with everything else 17:10:32 <elliott> Didn't SDL_Quit 17:10:34 <fizzie> That's so not supported it's not even funny. 17:10:35 <elliott> And used it as the surface value post 17:10:38 <elliott> Yes of course it isn't 17:10:47 <elliott> But the only thing it'll be maintaining is state, and an fd that'll survive, right? 17:10:50 <elliott> So it should work. 17:11:05 <elliott> fizzie is now removing my commit rights. 17:11:15 <elliott> Gregor: Are you scared yet? :P 17:11:15 <fizzie> Well, no. It's probably got all kinds of pointers into SDL's internal surface lists and whatevers. 17:11:31 <elliott> fizzie: Weeeell, let's look, shall we? 17:11:41 <elliott> 2 Uint32 flags; /* Read-only */ 17:11:41 <elliott> 3 SDL_PixelFormat *format; /* Read-only */ 17:11:41 <elliott> 4 int w, h; /* Read-only */ 17:11:41 <elliott> 5 Uint16 pitch; /* Read-only */ 17:11:41 <elliott> 6 void *pixels; /* Read-write */ 17:11:42 <elliott> 7 SDL_Rect clip_rect; /* Read-only */ 17:11:44 <elliott> 8 int refcount; /* Read-mostly */ 17:11:47 <elliott> pixels will be repopulated by map_repaint. 17:11:51 <elliott> So all that needs to be copied is the format. 17:11:59 <fizzie> That's just the officially accessible parts. 17:12:02 <elliott> Which is just integers plus a pointer to a palette. 17:12:04 <fizzie> /** Hardware-specific surface info */ 17:12:04 <fizzie> struct private_hwdata *hwdata; 17:12:08 <elliott> fizzie: Oh BUH. 17:12:17 <fizzie> That in particular is not going to survive well. 17:12:20 <Gregor> Dood, you can totally serialize a private_hwdata * 17:12:46 <elliott> fizzie: OK, so what if I used SDL's setvideomode type stuff, but then actually just ripped the fd from underneath it? 17:13:04 <elliott> Maybe I'll ask hash-sdl or something. _That_ would be fun. 17:13:05 <elliott> t/opic 17:14:01 <elliott> fizzie: I asked. Ha ha ha. 17:14:13 <elliott> Oh God they think I'm mad don't they. 17:14:16 <fizzie> There's also the double-buffering back-buffer which will get blown to pieces by the exec. As for using SDL_SetVideoMode, it will make a new window before you have a chance to mung around with it. 17:14:26 <elliott> Yes, well, that's why I'ma sking. :p 17:14:27 <elliott> asking 17:14:37 <elliott> It seems easier/nicer than making a new window and doing hacks to defocus it by finding the Minecraft window. 17:14:48 <fizzie> They will probably be all "why do you want to do this?" 17:14:54 <elliott> <prophile> isbric: mod rewrite is evil? 17:14:58 <elliott> Stop chatting guys. 17:15:02 <elliott> <prophile> mod rewrite is irrelevant 17:15:04 <elliott> This has NOTHING to do with sdl. 17:15:15 <elliott> fizzie: I've learnt that that's secret code for "I don't know". 17:15:16 <fizzie> Oh no, they're... non-topical?! 17:15:24 <elliott> NON-TOPICAL CHNANELS ARE BANNED 17:15:26 <Gregor> YOU GUYS 17:15:26 <elliott> FRENODE POLICY 17:15:28 <Gregor> SHUT THE FUCK UP 17:15:33 <Gregor> WE'RE SUPPOSED TO BE TALKING ABOUT ESOTERICA 17:15:37 <elliott> <prophile> its behaviour is perfectly valid 17:15:37 <elliott> <prophile> what you should take away from it is never to trust file extensions 17:15:39 <elliott> NEVER TRUST FILE EXTENSIONS 17:15:42 <elliott> THEY CREATE THE VOODOO MAGICKA 17:15:43 <elliott> OF THE UH 17:15:44 <elliott> GOAT SACRIFICE 17:15:47 <elliott> Gregor am i doing it right 17:15:47 <Gregor> IF YOU DON'T SHUT UP I'LL K-LINE YOU TO THE AETHEREAL PLANE 17:15:54 <elliott> "Aethereal" X-D 17:16:05 <elliott> `addquote <Gregor> IF YOU DON'T SHUT UP I'LL K-LINE YOU TO THE AETHEREAL PLANE 17:16:07 <HackEgo> 654) <Gregor> IF YOU DON'T SHUT UP I'LL K-LINE YOU TO THE AETHEREAL PLANE 17:16:48 <elliott> <isbric> prophile: true that, i feel that your a BSD or rather *NIX user :P 17:16:55 <elliott> Man, my a BSD or rather nix user is aching nowadays. 17:17:15 <Gregor> I feel that. 17:17:19 <elliott> "Is there a way to tell if a list in Haskell is infinite? The reason is that I don't want to apply functions such as length to infinite lists." 17:17:31 <Gregor> HahahaFAIL. 17:17:59 <elliott> God, I don't think hash-SDL are even /interested/ in my question. 17:18:10 <fizzie> I think it's CRYSTAL ALIGNMENT okay to be off-topic GEOMANTIC VIBRATIONS as long as we CHANNELING THETANS add suitable on-topic DOWSING BREATHARIAN words in-between. 17:19:08 <Gregor> elliott: That's because your question is terrible :P 17:19:18 <elliott> <elliott> Say I wanted to maintain an SDL surface corresponding to an X window across an exec(). I understand that serialising the SDL_Surface is not really possible since it contains a bunch of pointers to internal SDL things. 17:19:18 <elliott> <elliott> Is there any way (hacky or not) to make SDL create a surface on an existing X windows fd? 17:19:22 <elliott> IT IS A PERFECTLY OK QUESTION 17:19:31 <elliott> ("or not" -- yeah right) 17:19:46 <elliott> fizzie: So... what does a private_hwdata look like? 17:20:49 <fizzie> It depends on the display driver. 17:21:25 <elliott> X. :p 17:23:02 <nooga> esoteric? aleister crowley! 17:23:03 <fizzie> For X11, it's a struct with Display *s, Visual *s, three Windows, XIM and XIC handles, a XShmSegmentInfo handle to the corresponding X shared-memory segment if that exists, a backing XImage*, a GC on that, mouse warping settings, an SDL_Rect** list of modes, few more Visual*s, Xinerama/XRandR/XVidMode pointers, and the colormaps. 17:23:07 <fizzie> And quite a few other things. 17:23:15 <elliott> I'm crying. 17:23:23 <Gregor> GOOD 17:23:28 <elliott> OK, how about that de-focus thing? X-D 17:24:07 <fizzie> How about you just make your xmonad.hs or whatever not let mcmap ever steal the focus?-) 17:24:12 -!- Warrior` has left ("Leaving"). 17:24:29 <elliott> Heh. 17:25:57 <elliott> fizzie: So, ehhh, can I commit this thing? I even abstracted out the serialisation buffer reading/writing stuff, so the ugly level is really low outside the two bits of main.c and cmd.c. 17:26:52 <fizzie> Sure, if you want. It's not so distracting, and even if it breaks, it's the user's own fault for typing //upgrade. 17:27:10 <elliott> Yesss 17:27:27 <elliott> fizzie: Oh god, I have to merge it into the Guile branch 17:27:42 <fizzie> Yes, please; I don't want to. :p 17:27:47 <elliott> HAHAHAHAHAHAHAHAHAHA SO MANY CONFLICTS 17:27:50 -!- elliott has left ("Leaving"). 17:27:53 -!- elliott has joined. 17:32:13 -!- oerjan has joined. 17:35:15 <elliott> fizzie: Holy crap, I merged and //upgrade worked _first time_. 17:35:53 <elliott> fizzie: You should try it, it's truly a wonder to behold. :p 17:38:28 -!- Taneb has joined. 17:39:33 <Taneb> Hello! 17:39:46 <elliott> fizzie: Guess who just connected to c.nerd.nu with my "automatically repeat all chat" hook. 17:39:51 <elliott> "Oops." 17:39:58 <elliott> Phantom_Hoover: 17:40:19 <Phantom_Hoover> elliott, are you turning into Lymee. 17:40:29 <elliott> Phantom_Hoover: wat. 17:40:47 <fizzie> elliott: Guess who just tried to connect to [REDACTED] with the old that hook: http://p.zem.fi/m2yc 17:41:15 <elliott> fizzie: You don't have to redact it; it's whitelisted. Though I guess I don't really want the domain publicly logged. 17:41:28 <elliott> But yes, packet-fields now does alist, not vectors. 17:41:33 <elliott> (use-modules (ice-9 regex)) 17:41:33 <elliott> (define (scrub str) 17:41:34 <elliott> (regexp-substitute/global #f "§." str 'pre 'post)) 17:41:34 <elliott> (on-packet server (chat packet) 17:41:34 <elliott> (let ((scrubbed (scrub (packet-field packet 'message)))) 17:41:35 <elliott> (if (not (string-match "^<ehird>" scrubbed)) 17:41:37 <elliott> (chat (string-append "You said: " scrubbed))))) 17:41:39 <elliott> That's the new code. 17:41:39 <Phantom_Hoover> elliott, you're replicating Lymee's carefully honed annoying ping technique. 17:41:51 <elliott> Phantom_Hoover: Ah. WEll. You know. breaking news, and all that. 17:41:57 <elliott> Puncuation, who neds it. 17:42:16 <fizzie> elliott: That's funny, the newly created window wasn't auto-floating, unlike the old one which (with -s NxM) is. 17:42:29 <elliott> fizzie: It also doesn't seem to respect the sizes, for some reason. 17:42:35 <elliott> I think I'll fix the "black map parts" bug first, though. 17:42:44 <elliott> Which... 17:42:45 <elliott> Might be hard. 17:42:48 <fizzie> Other than that and the black map parts, it workeded. 17:42:50 <elliott> I cna't just esrialise regions, pointers and whatnot. 17:43:02 <elliott> Do you want to write map_serialize/map_deserialize? :p 17:43:05 <elliott> I promise to plug it in nicely if you do. 17:43:13 <elliott> There's even nice functions for it exclamation mark 17:44:31 <fizzie> It might be reasonably doable, except it would make one honking huge temporary file. 17:45:19 <elliott> fizzie: Come to think of it, you could just finish the regionfile code, or at least make it slightly /less/ broken, and then it'd just be a few ints or whatever and no duplicated work. 17:45:31 <elliott> It isn't /that/ broken, is it? 17:46:18 <Taneb> Fifty new exoplanets discovered! 17:46:28 <elliott> Yay 17:46:32 <elliott> How's Rosyarrow? 17:46:43 <Taneb> Still the same 17:46:46 <Taneb> Barely been on 17:47:58 <elliott> fizzie: I mean, I don't see why the regionfile code shouldn't always be on, even if "on" means "/tmp/mcmap.region.sodijasjdois". 17:48:02 -!- sebbu2 has changed nick to sebbu. 17:48:39 <fizzie> Well... the existing functions could be used for the "write out everything" / "read in everything" functions, that much is true. Though again that takes very much disk space, takes quite an annoyingly long time (all that compression) and would actually require a whole temporary directory tree that'd then get cleaned up in all cases. 17:49:06 <elliott> fizzie: Um, what I meant is, have regionfile code on from the start. 17:49:13 <elliott> Pointed at a tmp directory if the user doesn't elect to specifically use it. 17:49:13 <fizzie> It's completely missing the logic of when to write chunks to disk. 17:49:19 <elliott> Then it's literally just the standard restore process. 17:49:31 <elliott> As in, nothing has to be done, other than telling it to use /tmp/blah. 17:49:35 <fizzie> Also have I already mentioned it's quite a lot of disk space? 17:49:44 <elliott> I thought it was gzipped 17:49:48 <elliott> It should really not be that much disk space. 17:49:57 <elliott> I mean, it should not use more disk than mcmap uses ram. 17:50:08 <fizzie> How large is your world? 17:50:16 <elliott> Infinite. 17:50:22 <elliott> But I explore only finite areas. 17:50:33 <fizzie> Yes, I mean, "your world folder on that server". 17:50:46 <elliott> Fact is, mcmap never unloads chunks, and people have about a hundred times more disk than RAM, so it should not matter at all. 17:50:57 <elliott> fizzie: It's, what, twenty four, thirty megs? It's a small server. 17:50:58 <nooga> minecraft again 17:50:59 <elliott> But it's not very relevant. 17:51:07 <fizzie> /tmp is often not very large either. 17:51:08 <nooga> is 1/8 out? 17:51:12 <nooga> 1.8* 17:51:17 <elliott> fizzie: Well, ~/.mcmap/tmp then. :p 17:51:35 <elliott> Really, there is no way you can have enough RAM for mcmap but not the same amount of disk. 17:51:46 <elliott> You can't say two gigs is acceptable RAM usage but a ~huge~ file; it's incoherent. 17:53:10 <elliott> fizzie: Also, have I mentioned, it'd make //upgrade better. :p 17:53:23 <elliott> But yeah, seriously, there's no good reason not to use the regionfile stuff all the time. 17:53:46 <fizzie> It's not about having the disk space, it's about wasting it for something like this. Also doing the the disk IO for no benefit, if it's not going to be persisted between sessions. 17:54:05 <fizzie> In any case, have I mentioned there's currently no logic to decide when chunks need to be flushed to disk? 17:54:18 <elliott> You have; I'm arguing under the assumption that it starts existing. 17:54:22 <elliott> fizzie: Well, OK then; default to /tmp. 17:54:29 <elliott> Then it's quite literally identical to in-RAM storage. 17:54:38 <elliott> Yes, maybe it'll get too big; this is called tradeoff time. :p 17:55:00 <elliott> But on a completely different tack, 17:55:06 <elliott> Would shm or something allow the sharing of the existing addresses? 17:55:08 <elliott> Without copying. 17:55:18 <elliott> Or at least, only copying shm → new structures. 17:55:25 <elliott> Rather than old structures → something → new structures. 17:55:38 <fizzie> It'll also leave all those in-/tmp world saves around, since the cleanup will never work; the standard way for mcmap to shut down is probably to crash. :p 17:55:50 <elliott> Maybe for you. :p 17:55:57 <elliott> But you can hook into segfaults at least. 17:55:58 <elliott> SDL does. 17:56:38 <fizzie> It's probably not safe to do filesystem operations from a signal handler. (It's pretty much not safe to do anything from one.) 17:56:41 <fizzie> Aaaanyway. 17:58:23 <fizzie> You can have a shared memory segment that you attach to a defined address, but it of course might not work due to ASLR and such. 17:59:09 <fizzie> Using offsets as opposed to pointers can of course mitigate that to some extent, and probably the indirection in many cases doesn't cost all that much. 17:59:17 -!- augur has quit (Remote host closed the connection). 17:59:21 <fizzie> Though you can't malloc() new storage out of a shared memory segment. 17:59:44 <elliott> I still think the only person who will ever have problems with regionfile-always in practice will be Vorpal, and that's because he tries to make any change to the architecture as awkward as possible. Actually maybe he should just stay on whatever revision he's on, forever. 18:00:16 <Taneb> I may write a lambda calculus tutorial 18:00:36 <fizzie> You can't turn a private memory segment into a shared one later on, though. 18:00:38 <Gregor> Taneb: http://codu.org/lambda/lambda.html 18:01:12 <Taneb> That's not a tutorial 18:01:13 <Taneb> At all 18:01:30 <Taneb> That's a calculator 18:01:37 <Gregor> Taneb: It would help a tutorial. 18:01:53 <Taneb> Oh, okay 18:01:55 <Taneb> Thanks! 18:01:55 <elliott> fizzie: But yes, honestly, it would be nice if we could avoid copying/serialisation. 18:02:12 <elliott> fizzie: What if we used MAP_ANONYMOUS and somehow made it a shared segment? 18:02:19 <elliott> And then just passed the address over. 18:02:45 <elliott> mcmap's permanent memory allocations come from like three places, so it's not that awkward to use a pool, or several. 18:02:56 <itidus20> was that lambda page created from yesterday's chat? 18:03:31 <itidus20> .... im guessing not 18:03:36 <itidus20> :P 18:04:27 <itidus20> then i clicked start 18:04:43 <itidus20> and i realized this ain't no "was that lambda page created from yesterday's chat" 18:05:25 <elliott> Gregor: Your evaluation of (Yc Yc) grows indefinitely. :( 18:05:31 <elliott> I think you can get it constant with some speculative evaluation. 18:05:35 <fizzie> I don't think you can have a MAP_ANONYMOUS mapping survive exec in any way. If you're willing to put all your stuff into a specifically allocated memory area, you can use shm_open and then mmap that into both the original process and the post-//upgrade process, but there's no real guarantee you're going to be able to do that to the same address. 18:06:00 <elliott> fizzie: So there's literally no way to share memory between two processes without some kind of copying? 18:06:06 <elliott> Post process-mortem. 18:06:10 <Gregor> elliott: It supports several evaluation strategies, although it doesn't currently present them as options :P 18:06:36 <elliott> Gregor: It does sharing right? ...I THINK the untyped LC can do sharing... 18:06:37 <fizzie> elliott: The shm_open + mmap doesn't involve any copying; it just might be in a different location afterwards. 18:06:38 <elliott> oerjan: :P 18:06:47 <elliott> fizzie: Well, that's not a big deal, is it? 18:06:52 <elliott> As long as there's a predictable way to get that location. 18:07:04 <itidus20> agh.. friggen lambda.. 18:07:05 <fizzie> It depends on what you put there. 18:07:14 <elliott> I suppose it invalidates pointers, but you can avoid storing those. :p 18:07:23 <elliott> I mean, you can just subtract the base address from any pointer. 18:07:26 <Taneb> What should I call this tutorial? 18:07:37 <fizzie> Yes: <fizzie> Using offsets as opposed to pointers can of course mitigate that to some extent, and probably the indirection in many cases doesn't cost all that much. 18:07:39 <Taneb> λWTF? 18:07:49 <itidus20> so, 1 = successor to zero eh 18:08:01 <elliott> itidus20 discovers... THE PEANO POSTULATES 18:08:16 <itidus20> no i just saw a picture of it :-s 18:08:26 <itidus20> 1 = (succ)(zero) :P 18:08:32 <elliott> Gregor: You do explicit alpha renaming. :( at your evaluation strategy, :(. 18:09:24 <itidus20> and so.. 2 = successor to the successor of zero.. ahh what a curious thing 18:09:32 <Taneb> All about lambda? 18:09:33 <Gregor> elliott: The alpha renaming is explicit so as to maintain some vague semblence of readability. 18:09:43 <elliott> Gregor: De Bruijn, man :P 18:09:52 <elliott> You can convert that to explicitly-bound form at display time. 18:09:54 <Taneb> This tutorial isn't going to get very far without a name 18:10:07 <elliott> (You can even associate names with indices in contexts so that the display is consistent wrt transforms.) 18:11:27 <oerjan> <elliott> oerjan: :P <-- wat 18:11:52 <elliott> oerjan: can pure untyped LC with no frills do sharing? 18:12:45 <oerjan> elliott: sure, it can do lazy evaluation which means each argument to a function is only evaluated once 18:13:39 <oerjan> you need frills if you want to share things defined in terms of themselves, though. 18:14:06 <elliott> right 18:14:35 <oerjan> (i.e. when you translate let x = whatever x in x to LC using self-application, sharing disappears) 18:14:47 <elliott> I take it there's a way to recover that 18:14:59 <elliott> oerjan: all that's needed to reduce (Y Y) to (Y Y) rather than growing infinitely is speculative evaluation, right? 18:15:14 <oerjan> erm 18:15:29 <oerjan> i discovered this when thinking about lazy-k 18:15:41 <oerjan> and my idea was simply to cache self-applications 18:15:54 <elliott> the Y comment was separate, btw 18:16:05 <Taneb> It is bad that there are two mathmeticians with places in history called Alonzo Church 18:16:11 <oerjan> elliott: oh and i'm not talking about infinite growth, you don't need sharing to avoid that 18:16:17 <elliott> oerjan: I know that 18:16:22 <elliott> like I said, it was a separate comment 18:16:34 <Taneb> They are related 18:16:35 <Taneb> Huh 18:16:49 <itidus20> taneb a persons date of birth is intentionally a private matter. or else it could be encoded within his name :P 18:17:10 <oerjan> elliott: i've thought about S I I (S I I) in that vein, and avoiding growth for that requires sometimes evaluating I x in non-head position 18:17:20 <itidus20> ok the word intentionally is too strong 18:17:21 <oerjan> i assume Y Y would be similar 18:17:44 <elliott> oerjan: right, so basically speculative evaluation, no? 18:17:52 <elliott> evaluating things you're not required to because you think they'll help :P 18:18:08 <oerjan> elliott: yeah. but you can also detect certain functions which always cheap to apply, such as I 18:18:16 <oerjan> *which are 18:18:21 <elliott> right 18:18:44 <elliott> so, general, space-and-time-efficient, non-strict LC small-step reducers 18:18:47 <elliott> GOGOGOGOGO EVERYONE 18:18:59 <elliott> my goal is to reduce every topic in here to research problems 18:19:06 <itidus20> i'll bring the coffee 18:19:43 <itidus20> cos, i'm not shy with the number of teaspoons of coffee 18:20:08 <elliott> oerjan: he ain't shy 18:20:32 <itidus20> with any luck you can have panic attacks at 5am just like me 18:21:02 <Vorpal> <elliott> I still think the only person who will ever have problems with regionfile-always in practice will be Vorpal, and that's because he tries to make any change to the architecture as awkward as possible. Actually maybe he should just stay on whatever revision he's on, forever. <-- what does that change do? 18:21:21 <elliott> Vorpal: It's the mcregion-bsaed caching-and-persistence system. 18:21:29 <elliott> Should use less disk than mcmap uses in RAM. 18:21:31 <itidus20> elliott: in other words i put as much as 2 heaped teaspoons of coffee in my mug 18:21:56 <Vorpal> elliott: fair enough. Would be a problem on a thin client, but I doubt anyone would use that for running mcmap 18:22:05 <Taneb> itidus20: Only 2? 18:22:14 <elliott> fizzie: See, even Vorpal is 0kay with it. 18:22:21 <itidus20> yeah, only 2 18:22:34 <Taneb> Of course, I have no need for coffee, but I have a friend who takes two and a half, black, no sugar 18:22:42 <Vorpal> elliott: in worst case I guess I could put it on tmpfs. The disk in the laptop I use for mcmap is quite slow, 5400 RPM 18:22:50 <Vorpal> at least not an SSD 18:22:56 <itidus20> wow 18:22:58 <Vorpal> I might have had a problem with it if it used ssd 18:23:05 <Vorpal> if I used* 18:23:06 <itidus20> Taneb: he sounds like a badass 18:23:08 <Vorpal> gah, tired 18:23:19 <elliott> Vorpal: SSD write-cycles are not really anything to worry about any more. 18:23:26 <Taneb> itidus20: Nah, she just likes her coffee like that 18:23:27 <elliott> But yes, /tmp would certainly work. 18:23:32 <itidus20> :o 18:23:36 <elliott> Vorpal: The nice thing about doing it by default is that it'll make the new //upgrade work seamlessly. :p 18:23:36 <itidus20> dear god its a female 18:23:39 <elliott> Right now it loses your map data. 18:23:40 <Vorpal> 8-19 at university today. Quite tired. 18:23:55 <Vorpal> elliott: wait what, upgrade without reconnecting? 18:23:59 <Vorpal> elliott: if so: why the fuck 18:24:11 <fizzie> My /tmp is only 512M. :/ 18:24:13 <Vorpal> I mean, mcmap doesn't need that 18:24:22 <itidus20> sorry taneb, im just kidding for dramatic effect 18:24:27 <elliott> Vorpal: It's already written. 18:24:34 <fizzie> Vorpal: I asked the very same question; apparently simply because it can be done. 18:24:39 <Vorpal> ah 18:24:44 <elliott> Vorpal: Anyway, you'll want to reload your Scheme configuration when that stuff is done. 18:24:51 <Vorpal> elliott: is this the HA edition of mcmap 18:24:58 <elliott> Might as well be a _proper_ reload that also works for upgrades, not just a deinitialise-Scheme-somehow-and-argh-I-don't-even-know hack. 18:25:04 <Vorpal> elliott: oh right, I'm not on a scheme branch at all 18:25:15 <elliott> Right, well, I don't recommend anyone be on that branch right now. 18:25:17 <elliott> Or use //upgrade. 18:25:19 <Vorpal> elliott: I haven't played mc for quite a while now, like 3 weeks 18:25:22 <elliott> It's in both branches but lacks... polish. 18:25:59 <Vorpal> elliott: anyway you need to pass on the FDs I guess. Would that even work on the windows build? 18:26:00 <elliott> <JeZ-l-Lee> wow, 89 people in this room now - think that is a new record 18:26:04 <elliott> AND NOBODY ANSWERING MY QUESTION 18:26:07 <Vorpal> I mean, sure, with exec() 18:26:16 <elliott> Vorpal: Apparently Windows has something for it. But no, currently the built is so broken on Windows, you have no idea. 18:26:21 <elliott> (It would just be a simple ifdef to fix it again.) 18:26:25 <fizzie> Vorpal: 18:26:26 <fizzie> <fizzie> The file thing should work on Windows too, it just needs the proper CreateFile calls. (In particular the SECURITY_ATTRIBUTES needs bInheritHandle of true, and dwShareMode that FILE_SHARE_DELETE for the delete-before-close... and I'm not entirely sure how you pass an inherited handle. Oh, and then of course you'd have to make the sockets inheritable somehow, that might be more complicated.) 18:26:28 <elliott> (But that's dignifying the Hack with such things.) 18:26:41 <elliott> Vorpal: https://github.com/fis/mcmap/commit/4edb5be2f9c6625151707294ece06b2374d98ce9 18:26:45 <Vorpal> hm 18:26:47 <elliott> Vorpal: Please enjoy this terrifying yet short diff. 18:27:18 <Vorpal> elliott: I'm kind of tired. Too tired to read C code certainly. 18:27:36 <elliott> Vorpal: Sleep won't help you understand it. 18:27:45 <Vorpal> elliott: 6 hours of lectures in one go is kind of... eugh 18:27:57 <elliott> Vorpal: At least gawp at the cmd.c part at the very top. 18:28:03 <elliott> It's short and the most maximally terrifying part. 18:28:09 <fizzie> elliott: char fd_str[256]; snprintf(fd_str, sizeof(fd_str), "%d", fd); => char *fd_str = g_strdup_printf("%d", fd); 18:28:14 <Vorpal> first bison & lex and other things about compiler design for 2 hour, then linear algebra for 4 hours. 18:28:20 <elliott> fizzie: That allocates, and I'd have to free it post-execv, which is never. 18:28:30 <elliott> Memory leaks, don'tchaknow. 18:28:56 <fizzie> You already just throw away the proxy_serialize_state buffer, which is far larger. 18:29:10 -!- augur has joined. 18:29:12 <elliott> Hmm, right, I'll fix that. 18:29:17 <Vorpal> elliott: well cmd.c seems straightforward. I seen this trick done in IRCds before. I assume the id for the network fd is fixed? 18:29:26 <Vorpal> oh wait there it is 18:29:26 <elliott> Vorpal: No? 18:29:27 <Vorpal> in the argument 18:29:30 <elliott> Yeah. 18:29:31 <Vorpal> yeah tired 18:29:36 <elliott> Vorpal: But it's not the network fd. 18:29:42 <elliott> It's an fd created from a temporary file just to pass serialised state around. 18:29:43 <Vorpal> elliott: well that has to go somewhere. 18:29:46 <elliott> The actual fds are hidden inside that byte stream. 18:29:56 <itidus20> Vorpal: are you a grad student? 18:29:59 <Vorpal> elliott: ah yes, same thing as that ircd did, except it used pipes iirc. 18:30:10 <fizzie> elliott: The process is going to exit in a few lines, you're going to be "leaking" all the world data and everything if you insist on freeing everything for the exec. 18:30:17 <Vorpal> itidus20: I don't remember the US system. Please convert to Swedish system or clarify yourself 18:30:21 <elliott> fizzie: BUT THEY'RE NOT LOCAL LEAKS 18:30:22 <itidus20> oh hmm 18:30:30 <itidus20> do you have a degree yet? 18:30:39 <Vorpal> itidus20: I'm a compsci student, bachelor level, third (and last) year for that. 18:30:46 <fizzie> elliott: WELL WHAT ABOUT WHEN THE FD IS LARGER THAN 10^256 HUH? 18:31:02 <elliott> fizzie: THEN YOU'RE IN FUTURE SPACE!!!!!!!!!!!!!!!!!!! 18:31:03 <itidus20> vorpal, well i mean, it sounds like they have some tough classes :D 18:31:06 <elliott> WHY ARE YOU PLAYING MINECRAFT GO FUTURE VR 18:31:16 <Vorpal> itidus20: eh, isn't it just that the US education system sucks? 18:31:25 <itidus20> i am in AUS system which is probably like the US 18:31:29 <Vorpal> ah 18:31:31 <itidus20> just look at the name 18:31:32 <itidus20> aUS 18:31:36 <itidus20> :P 18:31:37 <Vorpal> XD 18:31:46 <elliott> Vorpal: Anyway, the main issues with //upgrade right now are (a) loses your map data, (b) pops up a new map window which steals focus. :/ 18:31:56 <itidus20> aUS, USa .. its an anagram 18:32:11 <elliott> Vorpal: Also (c) makes me connect to c.nerd.nu with my chat-repeating spamscript. 18:32:15 <Vorpal> bbl food 18:32:21 <elliott> I'm sure I'll be on the ban list within a day. 18:32:40 <Taneb> itidus20: Maybe a is short for the Scots auld 18:32:48 <Taneb> itidus20: Which means senior 18:32:56 <Taneb> itidus20: Which can be shortend to sr. 18:33:05 <Taneb> itidus20: SO YOU LIVE IN THE USSR 18:33:29 <itidus20> terra australis or something 18:34:15 -!- augur has quit (Remote host closed the connection). 18:34:36 <itidus20> **r** *us**a*is or something 18:35:20 <itidus20> **r** *us*****s 18:36:28 <Vorpal> <elliott> I'm sure I'll be on the ban list within a day. <-- so remove that script? 18:36:35 <elliott> Vorpal: it was a one-time thing 18:36:40 <elliott> I got kicked automatically within four messages 18:36:42 <itidus20> austr**ia 18:36:46 <oerjan> terror mustards 18:36:52 <Vorpal> elliott: ah well, say sorry then or such 18:36:56 <itidus20> aus****** 18:37:09 <elliott> Vorpal: I doubt they even noticed; have you _seen_ that thing's chat? 18:37:18 <itidus20> ^russia, ussr, austria, usa 18:37:20 <Vorpal> elliott: no, never been there 18:37:24 <elliott> You're missing out. 18:37:35 <Vorpal> elliott: probably would kill my mc since I'm using improvedchat, which has scrollback 18:37:49 <Vorpal> also it has line editing and input history 18:37:52 <Vorpal> quite a nice mod 18:37:54 <oerjan> just 9 strips left until iwc 3160 aieee (and someone in the forum apparently thought it was 3150) 18:38:02 <Vorpal> especially when working with lots of server commands 18:38:09 <Taneb> There's new posts in the forum? 18:38:14 <Taneb> Why didn't you tell me? 18:38:29 <elliott> oerjan: is that the CH number? 18:38:36 <oerjan> elliott: yes 18:38:42 <Vorpal> oerjan: if it ends there, we don't know. He might go for one more, to say he did *more* than that 18:38:48 <oerjan> Taneb: erm because i'm reading the forum only twice a week 18:38:54 <elliott> oerjan: latest strip looks _somewhat_ like edging towards a conclusion 18:39:01 <elliott> not that I have a good handle on IWC plotlines 18:39:19 <Vorpal> elliott: I read IWC and I'm not sure I understand the current plot either. 18:39:22 <Vorpal> It is rather confusing 18:39:27 <Vorpal> but yes 18:40:09 <elliott> oerjan: it's ok, you still have all those mezzacotta archives to go through... 18:40:16 <oerjan> elliott: ah yes. 18:40:22 <elliott> and it's still updated! daily! 18:40:58 <Vorpal> elliott: your upgrade command seems to have an issue. No version number on the data that I can spot 18:41:07 <Vorpal> elliott: if you upgrade, the new version might have more state 18:41:16 <elliott> Vorpal: The version number is, if it crashes, you need to restart it manually. 18:41:24 <Vorpal> you need to be able to handle the old state format for true HA. 18:41:36 <elliott> Erlang patches welcome 18:41:45 <Vorpal> XD 18:42:08 <Vorpal> elliott: actually that would be easy in erlang, there are ready made modules with code to help you do that. 18:42:29 <elliott> It wouldn't be hard in mcmap either, but really it's for reloading, not particularly "major" upgrading. :p 18:42:51 <Vorpal> elliott: anyway, worse than instant crash might be a situation where it silently corruptions the data in some subtle way. 18:43:08 <elliott> But hopefully there should soon be an easy-ish way to get mcmap to prompt you to say yes to automatic pull/make if there's new changes before you even connect, bypassing the need entirely in 90 percent of upgrade cases. :p 18:43:18 <Vorpal> elliott: anyway, reloading, as in reloading config? Or what? 18:43:19 <elliott> I'm good at obsoleting my oen work. 18:43:26 <elliott> Vorpal: Well, reloading "scheme shit". 18:43:29 <Vorpal> because uh, for reloading config that sounds overkill 18:43:35 <Vorpal> elliott: this sounds overkill for that 18:43:42 <elliott> There's no way to de-initialise Guile that i know of. 18:43:46 <elliott> It's hardly overkill, the diff isn't that big. 18:43:54 <elliott> And it's certainly cleaner than something hacked specifically for the Scheme support. 18:43:56 <Vorpal> elliott: nor unload specific scheme scripts? 18:44:10 <Vorpal> elliott: besides, what if the scripts in question have state, won't that be lost? 18:44:14 <elliott> That's not a thing anybody does. I don't like the Emacs model where you just run it over, and all your old variable bindings, hooks, etc. stick around. 18:44:31 <elliott> Vorpal: Yes, but they'd be lost if you restarted mcmap normally anyway; nothing's going to be storing anything massively persistent without, you know, persisting it. 18:44:37 <Vorpal> true 18:45:15 <Vorpal> elliott: guess you need an on-reload event or such 18:45:23 <Vorpal> or well, on-shutdown maybe 18:45:28 <elliott> That's just called "your script is executing". :p 18:45:30 <Vorpal> to allow persisting state 18:45:41 <Vorpal> elliott: hm? There is no way to add a hook for specific events? 18:45:43 <elliott> I don't see much use for persistent state in scripts but maybe that's my Lack Of Imagination. 18:45:50 <elliott> Vorpal: Never said that. 18:46:04 <elliott> I said that on-reload is easily detectable: if you're not loading, your script's statements aren't executing. 18:46:08 <Vorpal> elliott: example: persistent chat history, not a good example I admit 18:46:11 <elliott> Script: 18:46:14 <elliott> (display "foo") (newline) 18:46:18 <elliott> That displays "foo" iff we're reloading. 18:46:35 <Vorpal> elliott: I meant before the reload 18:46:37 <Vorpal> not after 18:46:47 <Vorpal> elliott: as in, a hook that allows you to save your state 18:46:56 <Vorpal> before mcmap exits or reloads or whatever 18:46:57 <elliott> Well, that's a bit harder. But anyway, this is not a priority, compared to all the other things that need doing. 18:47:04 <Vorpal> fair enough 18:47:11 <elliott> Like: working regionfile code, working mostly-autoupdate code, making the Scheme stuff actually usable. 18:47:22 <elliott> Making upgrade not create a new window with lost map data and stealing focus. 18:47:30 <elliott> Quite higher priority. :p 18:47:56 <Vorpal> elliott: hm what about a scheme script that did aim assist, for the bow that is. Corrected your arrow for moving mobs or such. 18:47:56 <Vorpal> XD 18:48:08 <elliott> Yes, there's all sorts of fun cheats you can do. 18:48:16 <elliott> I'm personally looking forward to writing a //quarry. 18:48:19 <Vorpal> elliott: the one I mentioned would be rather hard to write though 18:48:24 <Vorpal> elliott: what would that one do 18:48:39 <elliott> Vorpal: Dig a quarry for you at an inhuman pace. Preferably automatically handling putting things in chests, etc. 18:48:43 <Vorpal> just dig out a hole? That is not cheat, that is automation. 18:48:49 <elliott> That's cheat. 18:48:53 <Vorpal> elliott: oh the server doesn't limit speed of digging? 18:48:57 <elliott> Well, it does. 18:49:09 <elliott> But there's no way a human can operate at ABSOLUTLEY optimal speed :P 18:49:13 <elliott> re: automation: Not all of us are WorldEdit-creative-MinecraftCAD . 18:49:15 <elliott> players. 18:49:16 <Vorpal> elliott: not much of a cheat. 18:49:22 <elliott> It is totally a cheat. 18:49:33 <elliott> You get tons of resources by sitting back and doing nothing with Minecraft minimised 18:49:36 <Vorpal> elliott: aim assist is totally a more cheaty cheat 18:49:53 <elliott> Why have aim assist when mcmap could just automatically find, target, and shoot at every enemy in range? It doesn't even have to send that to the client. 18:50:00 <elliott> So you just see arrows sprouting out of you and killing every enemy in sight. 18:50:01 <Vorpal> elliott: heh 18:50:10 <Vorpal> elliott: that would be kind of cool. 18:50:59 <elliott> Or how about THIS for a hack: You type a command, and it jumps off the nearest cliff. 18:51:05 <elliott> EVERYTHING IS POSSIBLE WITH MCMAP/GUILE 18:51:07 <Vorpal> elliott: btw I tried out that water shader mod. Kind of cool, but quite buggy for me. Like random terrain around me flickering and so on. 18:51:22 -!- Wamanuz has quit (Remote host closed the connection). 18:51:38 <Vorpal> elliott: did you enable flying on your server? I don't remember 18:51:45 <Taneb> brb 18:51:51 -!- Wamanuz has joined. 18:51:52 <elliott> Vorpal: No. 18:51:55 <Vorpal> ah 18:52:00 <elliott> And the setting of the fly thing is irrelevant to whether fly hacks are approved of. 18:52:05 <elliott> (It triggers for fences and shit sometimes.) 18:52:09 <elliott> But yes, it's meant to be "legit". 18:52:34 <elliott> I don't even like people using mcmap to scout out ore really, though it's not something I'd ban. Personally I've found that precision mining is incredibly boring. 18:53:42 <Vorpal> <elliott> (It triggers for fences and shit sometimes.) <-- yes, and going down a ladder while removing the backing stone blocks 18:53:51 <Vorpal> I had that happen once 18:53:57 <Vorpal> no clue how, couldn't reproduce it 18:54:19 <Vorpal> elliott: anyway I found that mining in general is quite boring. 18:54:27 <elliott> It is, but oh well. 18:54:31 <elliott> mcmap is more fun than Minecraft. 18:54:31 <itidus20> i found a fascinating article and trying to apply what i saw there.. so what if anything is wrong with this? λx.λy.x+y 18:54:42 <nooga> i tried to write a mod called 'extractor' 18:54:54 <Vorpal> elliott: making a mine might be fun. As in, with lifts and winches and so on. So it looks like a real mine 18:55:32 <elliott> Clearly we need dfmap. 18:55:35 <elliott> Oh wait, that's DF. 18:55:37 <nooga> generally it was a chest that was digging a shaft to the bedrock collecting ores 18:55:44 <itidus20> λm.λx.λc.m * x + c 18:55:48 <elliott> nooga: I thought you hated Minecraft. 18:55:54 <Vorpal> I have been in a mine once. A high tech one. Mostly a wide road going down inside a mountain. And lots of advanced machines. As far as I understood, that mine operates mostly automatically, AI-controlled trucks, using position markers on the walls and what not. 18:55:55 <elliott> Gregor: You gonna tell itidus20 that LC has no built-in arithmetic? 18:56:07 <itidus20> hmm 18:56:08 <elliott> Vorpal: I thought you meant in Minecraft X-D 18:56:09 <Vorpal> <elliott> Clearly we need dfmap. <-- stonesense 18:56:09 <Gregor> elliott: Nope. 18:56:14 <nooga> and this chest would spawn other chests that did the same but horizontally 18:56:15 <itidus20> thanks gregor :D 18:56:16 <elliott> Vorpal: No, dfmap is DF itself. :p 18:56:20 <nooga> on different levels 18:56:22 * itidus20 wipes brow. 18:56:26 <elliott> stonesense is more like the game that DF is the mapper for. 18:56:40 <Vorpal> elliott: hm? Yes I meant building a mine replica in minecraft. Not a minecraft style mine, but do it creative to look like a real mine 18:56:44 <Vorpal> that is what I'm suggesting 18:57:00 <elliott> I meant 18:57:01 <elliott> <Vorpal> I have been in a mine once. A high tech one. Mostly a wide road going down inside a mountain. And lots of advanced machines. As far as I understood, that mine operates mostly automatically, AI-controlled trucks, using position markers on the walls and what not. 18:57:02 <elliott> <elliott> Vorpal: I thought you meant in Minecraft X-D 18:57:09 <elliott> the first time i read it 18:57:12 <Vorpal> ah 18:57:13 <Vorpal> XD 18:57:13 <elliott> I was like what, without any mods? 18:57:19 <elliott> That must be some piston/minecart setup. 18:57:25 <Vorpal> elliott: yes. I don't think LKAB used any mods XD 18:57:33 <Vorpal> it was a guided tour. 18:57:44 <Vorpal> of some no-longer-active parts of the mine 18:57:45 <oklopol> guided tours are for wusses 18:58:01 <Vorpal> oklopol: they wouldn't let people run around freely in an operating mine 18:58:12 <elliott> "let" 18:58:17 <Vorpal> ... 18:58:21 <elliott> Only applies if you ask permission :P 18:58:23 <oklopol> no one asked them 18:58:24 <oklopol> yeah 18:58:47 <Vorpal> elliott: btw they had a kind of paternoster like thingy for moving up the iron ore to the surface. 18:59:33 <oklopol> did you get to see any redstone 18:59:37 <itidus20> ahh heres the justification in next section "Predefined constants, which act as values and operations are allowed in an impure or applied lambda calculus." 18:59:46 <elliott> Gregor: Uh. 18:59:49 <elliott> oerjan: :P 19:00:05 <Vorpal> elliott: fyi, it was magnetite ore. They didn't find a sedimentary layer I guess. 19:00:34 <Vorpal> oklopol: XD 19:00:34 <elliott> Did you kill any elves. 19:01:00 <Vorpal> elliott: didn't get the chance, it was summer, not sprint 19:01:01 <Vorpal> spring* 19:01:47 <Phantom_Hoover> elliott, as if Vorpal would kill elves. 19:02:09 <elliott> Phantom_Hoover: he has a self-loathing streak. 19:02:18 <Vorpal> elliott: oh and, they transport the ore on some huge trains, iirc about 1 km in length. With two or four huge locomotives pulling. 19:02:27 <oklopol> :O 19:03:15 <Vorpal> http://en.wikipedia.org/wiki/File:IORE_beim_Tornetr%C3%A4sk.jpg <-- there is one, saw that from my hotel window when I was up there, it was right next to the railway. 19:03:16 <elliott> i've never been in a paternoster i should try it 19:03:19 <elliott> it sounds cool 19:03:30 <Vorpal> seems a bit shorter than what I saw 19:03:32 <Phantom_Hoover> elliott, go to that university that has one. 19:03:42 <elliott> also, 1km trains cooooooooooooooooooooooool 19:03:45 <elliott> Phantom_Hoover: thx 19:04:03 <Vorpal> elliott: that one was for ore, it had like huge buckets, not somewhere you could stand it 19:04:05 <Vorpal> in* 19:04:24 <Phantom_Hoover> elliott, Sheffield! 19:04:42 <Phantom_Hoover> Leinster! 19:04:49 <elliott> Vorpal: also nice landscapey thinsg in that picture 19:04:55 <Phantom_Hoover> (By which I mean Leicester.) 19:05:01 <elliott> Phantom_Hoover: I have been to Sheffield it is a place ofbadness and steel... orw a sit coal... 19:05:04 <oerjan> `addquote <Taneb> Just goes to show, the Beatles are more interesting than green vegetables. 19:05:06 <HackEgo> 655) <Taneb> Just goes to show, the Beatles are more interesting than green vegetables. 19:05:14 <Vorpal> elliott: yes certainly. It is up in north Sweden. Far between inhabited areas there. 19:06:04 <Vorpal> elliott: hours between each road crossing with the railway. Just forest and myrmark (not sure what that is, not quite "bog" but something similar I think) 19:06:10 <itidus20> ok in my next few posts which follow, i ask to allow for: impure or applied lambda calculus 19:06:24 <Vorpal> oh, it is exactly bog it seems 19:06:26 <Taneb> Well, I've just translated a predecessor function into a BCKISW tree 19:06:30 <elliott> Vorpal: so theoretically a good place to plan the demise of civilisation? 19:06:38 <itidus20> so i have the + operator.. "just because".. because im playing magic 19:06:39 <Vorpal> elliott: uh? 19:06:46 <elliott> just asking 19:07:13 <Vorpal> elliott: oh btw, in some areas up there, the water is still pure enough that you can drink fresh water out of rivers without purifying it first. Though that probably won't be so for long. 19:07:26 <Vorpal> what with all pollution. 19:07:45 <itidus20> so.. given, λx.λy.x+y .. is this.. λx.(λy.(x+y))? 19:07:58 <elliott> itidus20: well yes. 19:08:01 <elliott> Vorpal: ok that's good so if i destroyed the water supply i could still drink 19:08:06 <itidus20> elliott: i know it kills you :P 19:08:08 <Vorpal> heh 19:08:13 <Vorpal> elliott: what are you planning!? 19:08:35 <elliott> Vorpal: Shhhhhhhhhhhhhhhh 19:08:48 <Vorpal> elliott: anyway, it is cool, so different from the more densely inhabited south Sweden. Which of course would be counted as sparse by English measures. 19:09:39 <Vorpal> elliott: also it is mostly birches up there. Few other trees can survive. 19:09:42 <elliott> in england we just took about ten countries and miniaturised them 19:10:01 <Taneb> *compacted 19:10:05 <elliott> but yes http://upload.wikimedia.org/wikipedia/commons/f/fe/IORE_beim_Tornetr%C3%A4sk.jpg is pretty I will have to find the gprs coordinates so I can walk there from here 19:10:12 <elliott> just start swimmin' when I get to water 19:10:16 <elliott> It's the minecraft f-three way to travel 19:10:24 <Vorpal> elliott: /tppos 19:10:33 <elliott> is that lake thing frozen or not, i can't tell 19:10:46 <elliott> oh it even has the coordinates there 19:10:57 <Vorpal> elliott: well it seems to be winter. I would assume it was frozen 19:11:10 <Vorpal> I was up there in early summer, June or so. 19:11:29 <elliott> http://maps.google.com/maps?f=d&source=s_d&saddr=hexham&daddr=68.269125,19.376158&hl=en&geocode=&sll=68.269125,19.376158&sspn=0.017033,0.058107&vpsrc=0&g=68.269125,19.376158&dirflg=w&mra=ltm&ie=UTF8&t=m&z=4 19:11:32 <elliott> hey only fifteen days walking 19:11:36 <elliott> oh my sweet jesus 19:11:37 <elliott> Vorpal 19:11:39 <elliott> look at that route 19:11:42 <elliott> it goes from hexham to the netherlands 19:11:44 <elliott> TO THE UK 19:11:45 <elliott> to denmark 19:11:53 <elliott> its a fucking loop de loop 19:12:01 <elliott> WHY DOES IT GO TO LATVIA 19:12:12 <itidus20> anyway this is the thing i found: http://www.cs.uiowa.edu/~slonnegr/plf/Book/Chapter5.pdf 19:12:13 <oklopol> i love the 200km walk back and forth 19:12:23 <Taneb> And the visit to Latvia 19:12:27 <elliott> oklopol: which point is that 19:12:28 <Vorpal> elliott: you don't want to go up there in late June or the rest of the summer. All those bogs. You get too many mosquitoes up there then. 19:12:30 <elliott> i mean the non-ferry part 19:12:33 <elliott> oh 19:12:34 <elliott> lmao 19:12:47 <Vorpal> elliott: nice route too 19:12:48 <elliott> ok this is the best route 19:12:49 <elliott> i'm doing this 19:12:51 <elliott> cya suckas 19:13:20 <Vorpal> elliott: anyway that is further north than what I went. If you look on your route you will spot "Kiruna", that is how far I went 19:13:35 <oklopol> elliott: the visit to latvia 19:13:38 <Taneb> Also, I think Hexham has a disproportionately large amount of esoteric programming enthusiasts 19:13:40 <Vorpal> well I actually went out sideways from Kiruna too 19:13:56 <Vorpal> Taneb: elliott is from there, who else? 19:14:00 <elliott> Taneb 19:14:04 <Taneb> Me 19:14:05 <elliott> oklopol: it's my european trip practically fucking planned out already 19:14:22 <Taneb> And as far as I am aware, we've NEVER MET 19:14:25 <oklopol> we were planning to walk 100km in the near future, but i guess we could extend it abit 19:14:27 <oklopol> *a bit 19:14:38 <elliott> yeah to 2,948 miles say 19:14:43 <Vorpal> elliott: I went here too: http://maps.google.com/maps?hl=en&ll=67.851697,19.019244&spn=0.004846,0.027058&sll=67.851697,19.019244&sspn=0.004846,0.027058&vpsrc=0&dirflg=w&t=h&z=16 19:14:54 <elliott> Taneb: we have to make sure we never ever meet 19:14:58 <oerjan> Vorpal: in norway this year there are warnings against drinking river water because of all the lemmings 19:14:59 <Taneb> Agreed 19:15:00 <Vorpal> elliott: that counts as a village btw. Like 4 hours or so. 19:15:01 <elliott> it would violate the specialness 19:15:07 <Vorpal> oerjan: really? XD 19:15:24 <oerjan> yep, greatest lemming infestation for decades 19:15:27 <elliott> Vorpal: that's the shittiest village i've ever seen 19:15:32 <Vorpal> <Taneb> And as far as I am aware, we've NEVER MET <-- how large is Hexham? 19:15:39 <Vorpal> elliott: really? 19:15:42 <Taneb> 12000ish people 19:15:42 <elliott> Vorpal: pop. twelve thousand or so 19:15:46 <Vorpal> ah 19:15:47 <elliott> erm 19:15:49 <elliott> not twelve thousand 19:15:50 <elliott> what Taneb said 19:15:55 <elliott> it's small 19:16:01 <Taneb> Which is twelve thousand 19:16:05 <Vorpal> elliott: anyway that village is like how close you can get by car to Sweden's highest mountain 19:16:07 <elliott> oh isi t 19:16:07 <Taneb> What we said were equivalent 19:16:13 <elliott> i'm not so smart with the numbers 19:16:18 <elliott> Vorpal: who needs cars when you can walk to latvia 19:16:33 <Vorpal> XD 19:16:51 <elliott> Mehamn looks like cool palce 19:17:01 <Vorpal> elliott: is it swim or ferry? 19:17:05 <elliott> ferry 19:17:07 <elliott> http://en.wikipedia.org/wiki/Mehamn 19:17:10 <elliott> look at that fucking location mark 19:17:33 <Vorpal> size: 709 19:17:34 <Vorpal> heh 19:17:43 <elliott> nothing at the very tip :( 19:17:53 <Vorpal> elliott: anyway Longyearbyen is more remote I would say 19:17:59 <Vorpal> not sure which one is furthest north 19:18:01 <Taneb> `addquote <elliott> Vorpal: who needs cars when you can walk to latvia 19:18:03 <HackEgo> 656) <elliott> Vorpal: who needs cars when you can walk to latvia 19:18:12 <elliott> Vorpal: oh i wanna visit svalbard sometime 19:18:18 <elliott> doesn't really count as part of norway or anything though :P 19:18:33 <Vorpal> elliott: it has a rather unique status, that is true 19:19:04 <itidus20> i used svalbard to test a weatherbot the other day 19:19:16 <elliott> http://maps.google.com/maps?hl=en&sll=67.851697,19.019244&sspn=0.004846,0.027058&vpsrc=6&dirflg=w&t=h&ie=UTF8&ll=73.677264,59.677734&spn=6.659198,29.750977&z=5 wow what the fuck is this thing 19:19:25 <elliott> my attitude to geography is like icp's to magnets 19:19:25 <itidus20> i was looking on googlemaps for a place 19:19:25 <Vorpal> itidus20: did it work? 19:19:34 <itidus20> yup 19:19:40 <itidus20> not my weatherbot tho but someones 19:19:45 <elliott> but seriously what is that thing 19:19:50 <Vorpal> elliott: and that is Nova Zemblya (no clue about spelling) 19:19:59 <Vorpal> elliott: used for nuclear testing by Soviet 19:20:08 <elliott> is it actually that huge or is that the broken map projection google maps use 19:20:09 <elliott> s 19:20:12 <Vorpal> the Tsar Bomba was detonated there. 19:20:24 <elliott> Nova Zembla Island ("New Land") is an uninhabited island in the Qikiqtaaluk Region of Nunavut, Canada. It is located in Baffin Bay off the northeastern coast of Baffin Island. Round Island is 7.4 km (4.6 mi) to the southeast.[1] 19:20:26 <nooga> Nowa Ziemia 19:20:29 <elliott> so exciting 19:20:30 <nooga> (New Land) 19:20:32 <elliott> Round Island is an uninhabited island in the Qikiqtaaluk Region of Nunavut, Canada. It is located in Baffin Bay off the northeastern coast of Baffin Island. Nova Zembla Island is 7.4 km (4.6 mi) to the northwest.[1] 19:20:37 <elliott> I guess I'll visit there 19:20:41 <elliott> gotta be fun, right? 19:20:46 <elliott> http://upload.wikimedia.org/wikipedia/commons/c/c9/Sirmilik_Glacier_2_1997-08-06.jpg 19:20:48 <elliott> oh that's cool 19:20:50 <Vorpal> elliott: doubtful. Radiation hazard 19:20:52 <elliott> I'll go there after Latvia 19:20:56 <oerjan> <elliott> http://en.wikipedia.org/wiki/Mehamn <-- i recall mehamn from the weather forecasts during whatever summer it was when the whole of norway had a heatwave - except mehamn, which stayed stable at 9 celsius. 19:21:01 <elliott> Vorpal: meh, I can deal 19:21:01 <nooga> in russian: Nowya Zee-em-lya 19:21:08 <elliott> oerjan: 9 seems a bit high for that place :P 19:21:14 <elliott> http://en.wikipedia.org/wiki/Sirmilik_National_Park 19:21:15 <elliott> dudes, let's go here 19:21:24 <elliott> no radiation to my knowledge!!! 19:21:34 <Vorpal> yeah 19:21:45 <elliott> pretty good location for a meetup, nobody will _ever_ find Vorpal's body 19:22:17 <Vorpal> http://en.wikipedia.org/wiki/Nova_Zembla_Island <-- err, wtf, a stub? 19:22:38 <Vorpal> wait different one 19:22:45 <elliott> oh it's a different one? 19:22:49 <elliott> http://en.wikipedia.org/wiki/Tsar_Bomba 19:22:55 <elliott> aha 19:22:56 <elliott> http://en.wikipedia.org/wiki/Novaya_Zemlya 19:22:57 <elliott> there we go 19:23:02 <elliott> i'll visit the other one too though 19:23:07 <Vorpal> elliott: confusingly similar names 19:23:12 <nooga> http://pl.wikipedia.org/wiki/Nowa_Ziemia 19:23:20 <oklopol> elliott: will you visit me on your trip, that goes through turku 19:23:33 <elliott> oklopol: hmmhmm yeah ok, but you have to promise to join in on the rest of the trip 19:23:38 <oerjan> elliott: well yeah it _is_ right next to the arctic ocean 19:23:40 <elliott> i'll basically thread through the countries picking up esolangers 19:23:45 -!- Zetro has quit (*.net *.split). 19:23:46 -!- aspect has quit (*.net *.split). 19:23:46 -!- rodgort has quit (*.net *.split). 19:23:46 -!- variable has quit (*.net *.split). 19:23:46 -!- tswett has quit (*.net *.split). 19:23:47 -!- ineiros has quit (*.net *.split). 19:23:47 -!- Zwaarddi1k has quit (*.net *.split). 19:23:47 -!- myndzi has quit (*.net *.split). 19:23:51 <elliott> and we'll all have adventures 19:23:52 -!- aspect has joined. 19:23:58 -!- tswett has joined. 19:24:01 -!- Zetro has joined. 19:24:01 <elliott> you think i am being wacky but that would actually be a perfect life. 19:24:04 -!- ineiros has joined. 19:24:04 <oklopol> actually i took a bus from where the route makes a sharp turn left 19:24:08 <elliott> <elliott> you think i am being wacky but that would actually be a perfect life. 19:24:11 -!- iamcal has quit (Remote host closed the connection). 19:24:13 <elliott> stupid netsplits 19:24:23 -!- myndzi has joined. 19:24:23 <elliott> i love how fucked satellite greenland is on google maps 19:24:25 -!- Zwaarddijk has joined. 19:24:31 <elliott> it's some white with harsh square corners where they pasted over the aliens 19:24:48 <oklopol> if you walk here, i will certainly join you for the rest of the trip 19:24:56 <oklopol> because there would be no limits to the awesomeness 19:24:59 -!- variable has joined. 19:25:09 <elliott> i wonder how much it costs to like 19:25:15 <elliott> manage to get to one of those fucking nowhere islands 19:25:28 <elliott> i guess you need to like hire your own plane and get clearance and shit 19:25:32 <elliott> SO COMPLICTAED OMG 19:25:36 <elliott> why can't the world be like minecraft 19:25:46 <Taneb> With zombies and creepers? 19:25:57 <elliott> on peaceful. 19:26:02 <Taneb> Okay 19:26:05 <elliott> although i guess those would be fun too 19:26:07 <itidus20> Taneb: it is 19:26:09 <oklopol> perhaps on creative too 19:26:27 <oerjan> <elliott> stupid netsplits <-- i assume this was connected to christel's global notices 19:26:29 <elliott> oklopol: there is some part of my sleep-deprived brain that is seriously considering going on wacky sweden adventures with as many esolangers as i can pick up 19:26:34 <elliott> I will let you know when sanity sets back in 19:26:39 <elliott> oerjan: will you join 19:26:44 <elliott> i'll walk to trondheim specially 19:26:54 <elliott> hmm 19:26:55 <Phantom_Hoover> elliott, will you punch Vorpal. 19:26:59 <elliott> I should just do it without letting you know I'm actually really going to do it 19:27:03 <Phantom_Hoover> You have often indicated your desire to do this. 19:27:03 <elliott> and you'll be too shocked to say no 19:27:15 <elliott> Phantom_Hoover: I don't know, are there laws against that in Sweden? Vorpal? 19:27:17 <oklopol> "no one cares what asia looks like" --- google 19:27:44 <Phantom_Hoover> oklopol, we all know that Asia looks the same however you display it. 19:27:48 <Vorpal> elliott: yes. 19:27:53 <elliott> Vorpal: will you invoke them? 19:27:56 <elliott> it'll just be a mild punch 19:28:03 <Vorpal> elliott: yes I certainly would. 19:28:10 <Phantom_Hoover> Vorpal, baby. 19:28:14 <elliott> Phantom_Hoover: I'll get oklopol to punch Vorpal 19:28:15 <oklopol> i think you could punch Vorpal as hard as you wanted to 19:28:22 <elliott> http://upload.wikimedia.org/wikipedia/commons/4/45/View_from_B%C3%A1rr%C3%A1s.jpg 19:28:28 <elliott> oh man, we're going there 19:28:30 <oklopol> and he'd ba all like 19:28:32 <oklopol> *be 19:28:38 <Vorpal> elliott: where is that? 19:28:41 <elliott> finnmark 19:28:43 <elliott> norway 19:28:44 <oklopol> oh i thought mosquito season was long gone lolololol 19:28:45 <oerjan> elliott: in sweden you can be arrested for punching someone even if they give you permission, if they change their mind later. 19:28:47 <elliott> can my life just be hdr nature photography forever 19:28:52 <Phantom_Hoover> elliott, so wait will you go and get Taneb before me? 19:28:59 -!- rodgort has joined. 19:28:59 <elliott> Phantom_Hoover: I and Taneb can never meet. 19:29:03 <elliott> I'll get you though sure, 19:29:07 <elliott> oerjan: ah. 19:29:11 <Vorpal> oerjan: eh? 19:29:14 <elliott> oerjan: so will you come along for the ride 19:29:24 <Phantom_Hoover> elliott, for the truth is....... you are the same person. 19:29:29 <Vorpal> oerjan: so why are there still martial arts clubs? 19:29:30 <elliott> Phantom_Hoover: yeah true 19:29:40 <oklopol> but you don't know it 19:29:42 <Phantom_Hoover> oerjan, is this some kind of subtle commentary on Assange? 19:29:58 <oklopol> oh i guess you're suspecting it already 19:30:00 <Vorpal> Phantom_Hoover: I was wondering about that, but eh, quite different situation. 19:30:15 <oerjan> Phantom_Hoover: you got me :P 19:30:16 <elliott> oklopol: hey ask oerjan whether he's coming along or not he's not answering me. 19:30:17 <Phantom_Hoover> Vorpal, no, punching is technically a form of rape. 19:30:18 <nooga> oerjan: in sweden you can be arrested for publicly reprimanding your own, misbehaving child 19:30:37 <Vorpal> Phantom_Hoover: pretty sure that is not the case. 19:30:53 <Vorpal> nooga: that is true. 19:31:02 <Vorpal> well, it was with physical attack 19:31:03 <oklopol> if you punch someone and they orgasm, is that rape 19:31:14 <oerjan> elliott: sorry, but my feet are incapable of walking much longer than to the shop 19:31:16 <elliott> level of discourse is high tonight 19:31:25 <oklopol> penis penis penis 19:31:27 <Phantom_Hoover> elliott, that's also a form of rape. 19:31:43 <Vorpal> nooga: doing it verbally would be legal. Giving the child a hard slap would not. 19:31:50 <oerjan> <elliott> Phantom_Hoover: I and Taneb can never meet. <-- wait, wouldn't it be ok as long as it is nowhere near hexham? 19:31:52 <nooga> how about soft slap? :P 19:31:53 <elliott> oerjan: there'll be ferries 19:31:58 <Gregor> oklopol: MUSHROOM MUSHROOM 19:32:16 <Phantom_Hoover> Shall I kill some badgers in DF? 19:32:17 <nooga> haxham 19:32:18 <Taneb> I'll take a separate root and end up in a different country 19:32:19 <Vorpal> oerjan: what would the issue with them meeting each other be? 19:32:30 <Taneb> IT WOULD RUIN THE MAGIC 19:32:31 <Vorpal> Phantom_Hoover: yes. 19:32:32 <elliott> Taneb: oh my god 19:32:34 <elliott> Taneb: go aroudn the world 19:32:35 <elliott> the other way 19:32:37 <Gregor> PS everyone is required by Law™ to watch this: http://www.weebls-stuff.com/songs/Babies/ 19:32:37 <elliott> and end up 19:32:38 <Phantom_Hoover> Oh wait I already killed all the badgers. 19:32:39 <elliott> at the same desitnation 19:32:45 <oklopol> Taneb: maybe a square root? 19:32:45 <nooga> hexagonal ham 19:32:47 <elliott> at the saeme time 19:32:49 <elliott> Taneb: y/n (Y) 19:32:53 <Taneb> Q! 19:32:57 <elliott> yyyyyyyyyyyyy 19:32:59 <Phantom_Hoover> nooga, fun fact: Hexham is Borders slang for hell. 19:32:59 <Vorpal> Phantom_Hoover: new ones can move in from outside the map I *think*, but don't quote me on that 19:33:06 <Phantom_Hoover> Make of this what you will. 19:33:13 <Phantom_Hoover> Vorpal, man you're really pro at DF. 19:33:18 <Phantom_Hoover> Jesus have you even played it. 19:33:38 <Taneb> Hang on, which way around the world are you all going? 19:33:44 <elliott> Taneb: ---> 19:33:45 <Vorpal> Phantom_Hoover: yes. But well, I been too busy with goblins and what not to care about what the wild animals did. 19:33:51 <elliott> to sweden or some nowhere island 19:33:52 <elliott> or somewhere 19:33:55 -!- Vorpal has quit (*.net *.split). 19:34:07 <Phantom_Hoover> Taneb, you'll basically just have to stay at the antipodeal point from the rest of us at all times. 19:34:26 -!- Vorpal has joined. 19:34:30 <Vorpal> well, that was unexpected: 19:34:33 <Vorpal> ! Server Terminating. Received SIGTERM 19:34:33 <Taneb> To... Australian Antarctic Territory? 19:34:40 <nooga> okay 19:34:50 <elliott> maybe i should just do my antarctic tour now with you guys 19:34:52 <nooga> what are you guys doing? playing Google Earth? 19:34:54 <elliott> i mean we're close enough 19:34:57 <elliott> nooga: planning our trip 19:35:12 <elliott> Taneb: Phantom_Hoover: oklopol: up for an antarctic trip? 19:35:21 <Phantom_Hoover> Yes. 19:35:25 <elliott> it's kinda cold 19:35:26 <elliott> just so you know 19:35:28 <Taneb> As long as someone else is paying. 19:35:30 <elliott> but there's penguins 19:35:31 <Vorpal> elliott: not Arctic? 19:35:32 <elliott> that you can be friends with 19:35:38 <elliott> Taneb: well oklopol has lots of money right? 19:35:38 <oklopol> sure 19:35:42 <elliott> oklopol: you'll pay right 19:35:43 <oklopol> yes i'm rich 19:35:44 <oklopol> yes 19:35:45 <elliott> great 19:35:45 <oklopol> totally 19:35:49 <elliott> Vorpal: hmm well 19:35:55 <elliott> we can fly over the arctic to get to antarctica 19:35:56 <elliott> um 19:35:58 <elliott> spheres work like that 19:35:59 <elliott> right 19:36:01 <oerjan> <Vorpal> nooga: doing it verbally would be legal. Giving the child a hard slap would not. <-- same as in norway then i take. in fact i think they just made the law here stricter. (because the courts had decided they allowed light slaps or something.) 19:36:06 <elliott> but seriously arctic is boring 19:36:07 <elliott> no real land 19:36:09 <elliott> just a bunch of glaciers 19:36:15 <elliott> antarctica's big fuckin' heap o' ice 19:36:23 <Taneb> We could go to Phillip Island! 19:36:30 <elliott> oklopol: no but seriously would you pay for this shit 19:36:33 -!- ais523 has joined. 19:36:35 <elliott> it wouldn't be more than like ten thousand 19:36:37 <elliott> moneys 19:36:42 <elliott> and with that ais523 got terrified 19:36:42 <Taneb> Has the advantage of being warmer than Antarctica 19:36:46 <nooga> be sure to visit Poznań 19:36:48 <Phantom_Hoover> elliott, yes but what about Finnland^Wwhatever. 19:36:50 <Taneb> With cuter penguins 19:36:52 <oklopol> depends on the amount of moneys i guess 19:37:30 <elliott> ais523: if I walk to Birmingham, will you join us on our tour of the world? 19:37:46 <elliott> Phantom_Hoover, me, and oklopol are going to go to a bunch of cool places 19:37:58 <ais523> elliott: probably not, I hate travel 19:38:06 <elliott> ais523: ok but wait 19:38:09 <elliott> ais523: http://maps.google.com/maps?f=d&source=s_d&saddr=hexham&daddr=68.269125,19.376158&hl=en&geocode=&sll=68.269125,19.376158&sspn=0.017033,0.058107&vpsrc=0&g=68.269125,19.376158&dirflg=w&mra=ltm&ie=UTF8&t=m&z=4 19:38:12 <elliott> look at this route 19:38:13 <Phantom_Hoover> ais523, OK, we can go to Manchester. 19:38:13 <Vorpal> hm they need to do google street view in more places. Like off road. 19:38:15 <elliott> tell me this route isn't geographic perfection 19:38:20 <elliott> it has a fucking loop-de-loop 19:38:21 <Vorpal> every few meters, over all the world 19:38:24 <elliott> a value-add trip to latvia 19:38:30 <elliott> it's the best walk ever 19:38:48 <nooga> oerjan: i remember a story told by our media that norwegian social care took people's children because someone stated that he seen the parents dringing beer while their kids were at home 19:38:59 <elliott> oklopol: I love how it skirts over to Finland for a bit just because it's slightly less bendy than Sweden 19:39:03 <Phantom_Hoover> elliott, so wait I need to know. 19:39:17 <Phantom_Hoover> Who will we eat first if it goes wrong? 19:39:21 <elliott> Phantom_Hoover: you. 19:39:25 <ais523> "Use caution – This route may be missing sidewalks or pedestrian paths." 19:39:26 <Vorpal> nooga: sounds implausible... 19:39:30 <elliott> ais523: :D 19:39:37 <elliott> well yeah that location is just the location of um 19:39:39 <elliott> where's the pic 19:39:39 <elliott> Vorpal: link pic 19:39:44 <Phantom_Hoover> elliott, but oko's bigger! 19:39:47 <Vorpal> elliott: to what? 19:39:52 <nooga> they had several stories like that, Vorpal 19:39:55 <oklopol> i met this woman who's kids were taken because she had been a problem child herself. she then wrote a book on this and got an official apology 19:39:57 <elliott> http://upload.wikimedia.org/wikipedia/commons/f/fe/IORE_beim_Tornetr%C3%A4sk.jpg sorry ais523 for not having info link 19:40:01 <elliott> http://en.wikipedia.org/wiki/File:IORE_beim_Tornetr%C3%A4sk.jpg 19:40:01 <elliott> there 19:40:02 <oklopol> *whose 19:40:05 <ais523> recommending 2.5 miles down an A road looks wrong 19:40:07 <Vorpal> ah 19:40:08 <elliott> that's where we're going, http://en.wikipedia.org/wiki/File:IORE_beim_Tornetr%C3%A4sk.jpg 19:40:09 <Phantom_Hoover> elliott, also dude why didn't you include Edinburgh in the route. 19:40:11 <ais523> for a walking route 19:40:17 <oklopol> in norway 19:40:18 <elliott> Phantom_Hoover: um excuse me that is just the base route 19:40:25 <Vorpal> elliott: they move really slowly those trains. Like 30 km/h or so iirc 19:40:32 <Vorpal> lots and lots of power though 19:40:54 <Phantom_Hoover> http://maps.google.com/maps?f=d&source=s_d&saddr=hexham&daddr=68.269125,19.376158&hl=en&geocode=&sll=68.269125,19.376158&sspn=0.017033,0.058107&vpsrc=0&g=68.269125,19.376158&dirflg=w&mra=ltm&ie=UTF8&t=m&z=4 19:40:57 <ais523> yep, that route makes absolutely no sense 19:40:58 <Phantom_Hoover> OMG best route. 19:41:02 <elliott> oklopol: so i figure after we reach that sweden destination we'll just like go down to helsinki, then kinda play it by ear? 19:41:06 <elliott> ais523: we're still following it 19:41:11 <Phantom_Hoover> I like the part where it crosses the channel six times. 19:41:14 <elliott> oklopol: could visit iceland next maybe? 19:41:19 <Vorpal> elliott: anyway, look at the size of the door on that locomotive. That thing is huge 19:41:22 <oklopol> oooh iceland 19:41:25 <elliott> Phantom_Hoover: yes i linked it 19:41:26 <elliott> it's 19:41:27 <elliott> just the best 19:41:30 <elliott> or um 19:41:33 <elliott> are you seeing a different one 19:41:35 <oklopol> i hear there's a lot of crazy going on up there 19:41:36 <elliott> because you need to click the link icon 19:41:38 <elliott> at the top-right 19:41:40 <elliott> to get the link 19:41:43 -!- derdon has quit (Remote host closed the connection). 19:41:49 <Vorpal> elliott: don't go to iceland. You will get stuck there while waiting for the ash to clear. 19:41:56 <ais523> the instructions in Sweden will be basically impossible to follow 19:41:58 <Phantom_Hoover> elliott, sorry, http://maps.google.com/maps?q=from:+hexham+to:+edinburgh+to:+68.269125,19.376158&saddr=hexham&daddr=edinburgh+to:68.269125,19.376158&hl=en&ll=48.224673,1.318359&spn=31.503035,57.65625&sll=53.917281,-1.801758&sspn=6.951905,14.414062&geocode=FWjHRgMdAf3f_ykVmDENYpB9SDEEwA0heCs6qA%3BFWC7VQMdsFzP_ykjJpilALiHSDEnF-d8exTyZA%3BFUW0EQQdHqgnAQ&vpsrc=6&dirflg=w&t=m&z=4 19:41:59 <elliott> Vorpal: capitalist propaganda 19:42:09 <ais523> they're just a bunch of "turn left, turn right" with distances but no road names 19:42:14 <elliott> Phantom_Hoover: ahahahahahaha 19:42:18 <elliott> ais523: look at that one Phantom_Hoover linked 19:42:20 <Vorpal> <ais523> the instructions in Sweden will be basically impossible to follow <-- how so? I didn't see any issue 19:42:21 <elliott> you will not regret the decision 19:42:34 <Vorpal> ais523: ah 19:42:36 <ais523> Vorpal: look at 450, etc 19:42:44 <Deewiant> Stop posting maps.google.com links containing the string "deew" 19:42:54 <elliott> Deewiant: X-D 19:42:59 <Deewiant> That's the second time in 18 hours 19:43:05 <oklopol> Deewiant: why? this applies to you too 19:43:06 <oerjan> nooga: the norwegian child protection services are well-known for interfering too much in people's private lives and for not having enough resources to help all the children who need it. er, wait... 19:43:06 <elliott> Phantom_Hoover: It looks like the map thing tried to draw a star. 19:43:08 <elliott> But then it failed. 19:43:12 <elliott> Deewiant: yeah wanna come on our trip? 19:43:12 <ais523> Deewiant: it's not even capitalised properly 19:43:34 <Deewiant> I can't trust people to capitalize properly if they want to highlight me 19:43:36 <Vorpal> ais523: anyway I'm not sure those road have numbers 19:43:43 <Vorpal> ais523: they look too small 19:43:48 <elliott> Phantom_Hoover: oh my god you can just draw your own path and it mangles it 19:43:56 <elliott> Vorpal: we could just walk alnogside it with a gps thing no? 19:44:10 <ais523> Vorpal: roads like that in the UK normally at least have signposts 19:44:11 <Vorpal> elliott: maybe. But do you realise the distances in Sweden? 19:44:26 <elliott> Vorpal: yeah, so we'll need some food and shit 19:44:29 <elliott> sleeping bags too i get 19:44:31 <ais523> giving the distance in miles to various nearby insignificant villages 19:44:34 <Vorpal> ais523: sure, if they are in urban areas. 19:44:41 <Vorpal> but not out in the wilderness 19:44:45 <Phantom_Hoover> 15 days, 17 hours. 19:44:55 <Phantom_Hoover> Good way to spend a fortnight. 19:44:57 <oklopol> the trip?? 19:45:03 <oklopol> that's nothing :O 19:45:05 <Vorpal> ais523: anyway for 450, the sat image resolution is too low to be sure 19:45:19 <elliott> Phantom_Hoover: oklopol: http://maps.google.com/maps?f=d&source=s_d&saddr=hexham&daddr=edinburgh+to:helsinki+to:Kiruna,+Sweden&geocode=FWjHRgMdAf3f_ykVmDENYpB9SDEEwA0heCs6qA%3BFWC7VQMdsFzP_ykjJpilALiHSDEnF-d8exTyZA%3B%3B&sll=67.554754,18.797607&sspn=2.773689,11.634521&vpsrc=0&hl=en&dirflg=w&mra=ls&ie=UTF8&t=m&z=4 19:45:19 <oklopol> i can take two weeks off like that 19:45:19 <ais523> Vorpal: out in the wilderness, too 19:45:22 <elliott> it's really not trying to be helpful here 19:45:27 <ais523> that's why the things they point to are so insignificant 19:45:28 <Vorpal> Phantom_Hoover: ~16 days sounds unrealistic 19:45:34 <Vorpal> oh wait, ferries, okay maybe not 19:45:38 <elliott> oh my god 19:45:39 <ais523> because there's nothing else to point to 19:45:42 <elliott> Phantom_Hoover: oklopol: zoom in on the finland bit 19:45:42 <elliott> it just 19:45:45 <elliott> i can't even explain what it does 19:46:05 <Deewiant> http://maps.google.com/maps?saddr=hexham&daddr=edinburgh+to:Helsinki,+Finland+to:68.269125,19.376158&hl=en&ll=59.800634,10.634766&spn=31.091097,70.136719&sll=59.800634,10.195313&sspn=31.091097,70.136719 19:46:19 <Deewiant> Just walk along that path 19:46:21 <Vorpal> elliott: what is the issue with that bit? 19:46:26 <elliott> Vorpal: it loops in on itself 19:46:34 <elliott> Deewiant: fuck that bullshit 19:46:36 <Vorpal> Deewiant: that one seems sane 19:46:39 <elliott> Deewiant: wehre's my fucking latvia tour 19:46:44 <elliott> where's my fucking loop de loop 19:46:46 -!- zzo38 has joined. 19:46:49 <Vorpal> elliott: oh the ferries you mean? 19:46:52 <Vorpal> well not strange 19:46:56 <Taneb> http://maps.google.com/maps?saddr=hexham&daddr=edinburgh+to:Helsinki,+Finland+to:68.269125,19.376158&hl=en&ll=59.800634,10.634766&spn=31.091097,70.136719&sll=59.800634,10.195313&sspn=31.091097,70.136719 19:46:58 <elliott> oklopol: ...we might want to do a slightly saner route though :P 19:47:00 <Taneb> I want to come too 19:47:17 <elliott> Taneb: yeah ok 19:47:25 <elliott> http://maps.google.com/maps?f=d&source=s_d&saddr=hexham&daddr=edinburgh+to:Riga,+Latvia+to:Helsinki,+Finland+to:68.269125,19.376158&geocode=FWjHRgMdAf3f_ykVmDENYpB9SDEEwA0heCs6qA%3BFWC7VQMdsFzP_ykjJpilALiHSDEnF-d8exTyZA%3B%3BFVQelgMdAId8ASmRBiGWxwuSRjFj9-I7hL1OzQ%3BFUW0EQQdHqgnAQ&sll=59.592995,11.21014&sspn=29.97045,93.076172&vpsrc=0&hl=en&mra=ls&ie=UTF8&t=m&z=4 19:47:27 <Deewiant> Vorpal: Mine was giving driving directions, not the beta walking directions 19:47:29 <elliott> w ecould add a loop-de-loop to this i guess 19:47:31 <oklopol> if it's just 2 weeks, i'm in no problem 19:47:33 <Vorpal> Deewiant: ah 19:47:40 <ais523> you lot are all mad 19:47:50 <Vorpal> XD 19:47:53 <elliott> ais523: yeah but YOU'RE not going to have any of the fun 19:47:57 <ais523> what about accommodation? 19:48:04 <Vorpal> Deewiant: probably included highways with no walking access 19:48:12 <elliott> ais523: meh, not that hard; for the long trip up sweden we can just sleep in the wilderness 19:48:19 <Vorpal> yes it does 19:48:25 <oklopol> i could even fly to hexham but i guess that'd defeat the purpose 19:48:27 <Vorpal> Deewiant: no way to walk along E4 for example 19:48:31 <ais523> elliott: in /Sweden/? in /September/? 19:48:37 <elliott> ais523: who said september 19:48:38 <Deewiant> Vorpal: You can walk pretty close to those typically 19:48:45 <ais523> elliott: oh, this is planned for the future? 19:48:48 <Deewiant> Just not on the road itself 19:48:50 <Deewiant> Of course 19:49:00 <oklopol> ais523: i was thinking tomorrow 19:49:02 <Vorpal> Deewiant: hm. Not on E20 near where I live. More like several km away 19:49:05 <elliott> ais523: dunno, i'm cool whenever 19:49:08 <Phantom_Hoover> ais523, of course not September, we'd have to do it over Christmas. 19:49:20 <Vorpal> sure if you wanted to walk in a ditch, yes then you could 19:49:22 <ais523> well, especially as several people are likely to have work/school 19:49:32 <ais523> I know walking near a motorway is nearly always a really bad idea in the UK 19:49:36 <oklopol> i'm going to run a marathon on new year's eve so have to be back by then 19:49:38 <ais523> as you'll have problems at every junction 19:49:50 <elliott> Phantom_Hoover: can you take two weeks off for this fun trip 19:49:52 <elliott> oklopol can 19:49:54 <elliott> Taneb: you? 19:49:58 <Deewiant> Vorpal: What prevents one from walking nearer 19:50:01 <Phantom_Hoover> elliott, WHO KNOWS 19:50:02 <Vorpal> ais523: anyway it might be possible in south Sweden in early September 19:50:03 <ais523> there was a fun TV series where someone tried to walk between two points in as straight a line as possible 19:50:08 <olsner> elliott: are you planning on hiking through sweden? 19:50:10 <elliott> Phantom_Hoover: I don't think you're taking this seriously enough 19:50:11 <Vorpal> Deewiant: fields. 19:50:19 <Vorpal> Deewiant: it is just fields. Not easy to walk on 19:50:20 <elliott> olsner: not hiking, just... walking 19:50:22 <ais523> which involved doing things like getting permission to walk through military bases and getting boats across lakes 19:50:24 <Vorpal> sure, possible, but not a good idea 19:50:31 <elliott> olsner: latvia too 19:50:33 <Deewiant> So, possible :-P 19:50:34 <elliott> because google maps said so 19:50:39 <elliott> also denmark at one point 19:50:44 <elliott> and one turku bit 19:50:48 <elliott> it'll be great 19:50:48 <olsner> hmm, latvia and sweden are not exactly adjacent 19:50:50 <Taneb> I can take two weeks off for a camping trip in country that speaks a language I don't with people I've never met 19:50:54 <elliott> olsner: where do you live? 19:50:58 <olsner> elliott: in sweden 19:51:00 <elliott> olsner: this is our base route: http://maps.google.com/maps?f=d&source=s_d&saddr=hexham&daddr=edinburgh+to:Riga,+Latvia+to:Helsinki,+Finland+to:68.269125,19.376158&geocode=FWjHRgMdAf3f_ykVmDENYpB9SDEEwA0heCs6qA%3BFWC7VQMdsFzP_ykjJpilALiHSDEnF-d8exTyZA%3BFWjvZAMdks9vASntPQflsM_uRjEw_vJozc8ABA%3BFVQelgMdAId8ASmRBiGWxwuSRjFj9-I7hL1OzQ%3BFUW0EQQdHqgnAQ&sll=59.592995,11.21014&sspn=29.97045,93.076172&vpsrc=6&hl=en&dirflg=w&mra=ltm&ie=UTF8&ll=59.888937, 19:51:01 <elliott> 12.041016&spn=29.706005,93.076172&t=m&z=4 19:51:03 <elliott> yeah but where ins weden 19:51:06 <elliott> ugh merge that url yourself 19:51:09 <Vorpal> olsner: no but it did the ferry loop thingy 19:51:10 <elliott> like can we pick you up to join in 19:51:16 <elliott> Taneb: I get the feeling you are also subserious 19:51:21 <elliott> it is ok, we will just adventure without you 19:51:30 <elliott> oklopol: btw shape up that Phantom_Hoover into taking this seriously, i'm not just gonna do a two-person trip 19:51:42 <Vorpal> elliott: eh that is even more fucked up than before 19:51:49 <oklopol> especially if you're walking most of it alone :D 19:51:51 <elliott> Vorpal: Yeah, it doesn't like Edinburgh. 19:51:53 <Taneb> I'm completely serious 19:51:56 <Phantom_Hoover> elliott, why Latvia. 19:51:56 <ais523> elliott: I /hope/ you aren't serious 19:52:01 <elliott> Phantom_Hoover: Google Maps wanted us to. 19:52:22 <Vorpal> ais523: doubtful, but he is pretending to be. You won't get him to admit anything else for now. 19:52:23 <elliott> ais523: you're laughing now, but who will be laughing when you hear "band of teenagers and also irresponsible adult found dead in swedish wilderness"? 19:52:40 <oklopol> :D 19:52:43 <olsner> *found*? 19:52:44 <Vorpal> elliott: which adult? 19:52:48 <elliott> Vorpal: no no i really am perfectly sincere. well maybe the sweden trek will have to be amended to include acommodation places 19:52:53 <ais523> elliott: well, trying to dissuade you from this would reduce the change of that ending 19:52:54 <Vorpal> olsner: yeah would be tricky 19:52:54 <oklopol> aren't me and Taneb rougly the same age 19:52:56 <elliott> i don't really like the idea of just lying down and sleeping 19:53:04 <elliott> but no, trip, sounds great 19:53:04 <Vorpal> elliott: that would be way out of the way on that trip 19:53:14 <elliott> Vorpal: meh, more funtime 19:53:17 <elliott> s 19:53:25 <olsner> I can believe "... lost in swedish wilderness" :) 19:53:26 <Vorpal> elliott: not that I will give you my coords 19:53:28 <elliott> oklopol: Taneb's sixteen i think 19:53:32 <oklopol> oh. 19:53:35 <Vorpal> olsner: yeah, found is unlikely 19:53:44 <elliott> ais523: btw I think that you can call emergency services even in Swedish wilderness 19:53:45 <elliott> i mean 19:53:46 <zzo38> I changed "data Succ" to "newtype Succ" since it is a single field 19:53:49 <elliott> i'm assuming they have phone signal 19:53:49 <Vorpal> oklopol: ever been in Norrland btw? 19:53:49 <elliott> do they 19:53:50 <oklopol> well anyway i've done a lot of walking in the wilderness, it's not that dangerous 19:53:54 <Vorpal> err 19:53:55 <oklopol> what's norrland 19:53:55 <zzo38> And a single constructor 19:53:56 <Vorpal> olsner: ^ 19:53:58 <Vorpal> not oklopol 19:54:02 <Vorpal> oklopol: mistab, sorry 19:54:18 <Vorpal> oklopol: anyway it is a region in Sweden 19:54:23 <oklopol> i've certainly been to norrland 19:54:28 <ais523> oklopol: I've done a bit, but even the wilderness in England is pretty tame 19:54:37 <elliott> Phantom_Hoover: Taneb: btw failure to misrepresent your correct level of sincerity will result in me banging on your door with a bunch of equipment expecting you to be ready to go 19:54:39 <oklopol> maybe like 5 times 19:54:43 <olsner> norrland is right next to finland, so that should be familiar to oklopol 19:54:43 <elliott> consider this carefully 19:54:45 <Phantom_Hoover> elliott, yes OK. 19:54:49 <Vorpal> ais523: well yes. UK is basically one huge urban area as far as I can tell 19:54:53 <Vorpal> more or less 19:54:56 <elliott> oklopol: they don't believe me, ha ha 19:55:04 <elliott> ok but seriously i think we're all neglecting a vital elements of this trip 19:55:10 <ais523> Vorpal: it isn't, except near large cities 19:55:11 <Taneb> elliott: You can't do that, we'd meet if you do that 19:55:19 <elliott> Brugge, Den Haag, and Esbjerg 19:55:23 <elliott> also Kiel and Lübeck 19:55:27 <elliott> are these not the height of the trip 19:55:30 <elliott> Taneb: worth ti 19:55:33 <elliott> it 19:55:38 <ais523> England, at least, is mostly farmland (so is Wales but it's a different sort of farmland; Scotland is mostly mountains, but people generally live in the other parts of Scotland) 19:55:53 <oklopol> are you sure you want to ruin a perfect strangership 19:55:55 <Vorpal> ais523: well, it looks urban from a Swedish perspective. You won't be able to go for hours on a train in UK without seeing anything but forest and bogs. Unless you go in a circle. 19:56:01 <elliott> oklopol: hmm well you know 19:56:03 <elliott> trip to sweden 19:56:16 <elliott> btw i don't care massively about the actual end destination, i just wanna go somewhere upwards swedenwise 19:56:20 <ais523> Vorpal: that's partly because the train lines deliberately aim for cities 19:56:26 <Taneb> We've got to get to Northern Sweden from Hexham via Scotland, Belgium, England, Netherlands, England, Denmark, Germany, Latvia, Sweden, Estonia and Finland together without meeting 19:56:26 <ais523> because that's where people like going on a train 19:56:27 <elliott> although i would like to keep that loop-de-loop and the latvia part, those are the bits i have real attachments to 19:56:44 <Vorpal> ais523: yes indeed, but you don't need to go for that to reach a city by the shortest path 19:56:49 <Vorpal> or any path 19:56:51 <elliott> oklopol: how nice is turku btw 19:56:56 -!- iamcal has joined. 19:57:10 <oklopol> it's the CULTURE CAPITAL of europe so...... 19:57:12 <ais523> Vorpal: but you don't get straight-line trainlines 19:57:15 <elliott> so crappy? 19:57:28 <Vorpal> ais523: even with non-straight you will get that in north Sweden 19:57:33 <oklopol> yes, that crappy 19:57:36 <Vorpal> ais523: that is how sparse it is up there 19:57:37 <oklopol> well dunno, i like it here 19:57:55 <Vorpal> ais523: it isn't quite the outback, not that large. But that is what you should have in mind. Only wetter. 19:58:07 <elliott> the outback, only wetter: description of anywhere big on earth 19:58:25 <Vorpal> elliott: not really, it implies sparely populated too 19:58:29 <Vorpal> and that is not true for everywhere 19:58:46 <Vorpal> elliott: it is forest and bogs up there. Nothing much else. 19:59:25 <elliott> Vorpal: so do you want to join, i forsee significant attrition 19:59:43 <elliott> wrt Phantom_Hoover and/or Taneb not actually wanting to go on a fun adventure with esolangers 19:59:45 <elliott> so we kinda need 19:59:47 <elliott> boring but reliable backup 19:59:58 <Taneb> I am entirely serious! 20:00:15 <elliott> yes but that's also what a non-serious person would say. 20:00:30 <Taneb> God, this is worse than Mafia 20:00:45 <elliott> :D 20:00:57 <Vorpal> elliott: no 20:01:05 -!- augur has joined. 20:01:22 <elliott> Vorpal: rwhy not 20:01:34 <fizzie> elliott: They (Turku) have a sucky castle. 20:01:39 <Vorpal> elliott: busy until 15:00 20:01:42 <oklopol> how is it sucky 20:01:56 <fizzie> oklopol: It doesn't even look like a castle, it's just this big thing. 20:02:09 <elliott> fizzie: oh hey, do you want to join 20:02:15 <fizzie> http://en.wikipedia.org/wiki/File:Hohenschwangau_-_Schloss_Neuschwanstein1.jpg <-- see, that's a castle. 20:02:25 <elliott> we need a responsible op to keep us good 20:02:28 <oklopol> true, but museologists like it because it hasn't sold out 20:02:48 <Phantom_Hoover> My left ear is really hot for some reason. 20:03:10 <elliott> Phantom_Hoover: trip anticipation, well known condition 20:03:13 <fizzie> Compare to this: http://zem.fi/g2/d/13817-2/20110402_023.jpg 20:03:25 <fizzie> No surprise it hasn't sold out. 20:03:27 <elliott> fizzie: i take it that's a no 20:03:32 <elliott> also, that sure is a nice small house 20:03:33 <Phantom_Hoover> fizzie, nah, that's just kind of a big house. 20:03:41 <Taneb> This is what a castle should look like --> http://upload.wikimedia.org/wikipedia/commons/9/92/Prudhoe_Castle_2.jpg 20:03:43 <fizzie> Or http://zem.fi/g2/d/13820-2/20110402_024-028.jpg from the side. 20:04:02 <fizzie> Taneb: That's a has-been castle. 20:04:03 <Phantom_Hoover> Now, THIS is a castle: http://en.wikipedia.org/wiki/File:EdinburghCastle.jpg 20:04:19 <fizzie> elliott: It's probably a "no", yes. Even though I haven't really been following. 20:04:31 <Taneb> Phantom_Hoover: I dislike that castle. Intensly. 20:04:36 <elliott> fizzie: We're going to northern Sweden via Denmark and Latvia and Finland. 20:04:38 <Taneb> It's not ruined enough 20:04:50 <Phantom_Hoover> Taneb, yes, this is because as established earlier you are stupid and bad. 20:04:54 <elliott> fizzie: Phantom_Hoover, me, oklopol, Taneb. Well, at least two of those. 20:04:56 <fizzie> I'd show a photo of a "Helsinki Castle", but we don't even have a sucky one, like Turku. 20:05:14 <Taneb> That's a bit like Hexham, then 20:05:25 <fizzie> Well, we have that Suomenlinna thing. 20:05:31 <fizzie> But that's officially a fortress, not a castle. 20:05:43 <Taneb> We have a church 20:05:43 <fizzie> Even though the Finnish name says "Castle of Finland" basically. 20:06:10 <fizzie> http://www.suomenlinna.fi/files/5/469/Talvi_ilmakuva.jpg 20:06:15 <elliott> fizzie: So that's a no then? 20:06:21 <fizzie> elliott: Yeah, no. 20:06:37 <Gregor> http://www.smbc-comics.com/index.php?id=2366 Oh SMBC. Why ya gotta be so true. 20:06:51 <elliott> Taneb: we should totally attempt to arrive independently in turku without meeting each other 20:06:58 <elliott> and just simultaneously meet oklopol 20:07:02 <oklopol> fizzie: what's fortress in finnish? 20:07:06 <fizzie> Taneb: We also have a church. It looks like a missile silo, and for some strange reason it's famous for that. http://en.wikipedia.org/wiki/Temppeliaukion_kirkko 20:07:18 <oklopol> linnoitus? 20:07:22 <Deewiant> fizzie: What about a "castle-like structure"? http://upload.wikimedia.org/wikipedia/commons/f/fd/Kulosaari_Wihuri.jpg 20:07:39 <Phantom_Hoover> UCO 20:07:45 <fizzie> Deewiant: Well, it's not worse than what they have at Turku. 20:07:47 <Phantom_Hoover> Unidentified Castly Object. 20:08:08 <Deewiant> It is quite a bit smaller, though. 20:08:20 <Phantom_Hoover> But this is all irrelevant because Edinburgh Castle is so much better. 20:08:29 <elliott> Deewiant: I forget, did we ask you 20:08:55 <Deewiant> Yes; I didn't deign to answer 20:08:59 <fizzie> We also have that "Hotel Linna", http://www.palacekamp.fi/@Bin/6889232/Hotel%20Linna%205%20053.jpeg -- but that's even smaller. 20:09:01 <elliott> I find that offensive 20:09:14 <fizzie> Deewiant: Did you notice and/or have you seen before: http://users.ics.tkk.fi/htkallas/aalto.jpg 20:09:23 <fizzie> (From the door of A339.) 20:09:25 <elliott> What even is that thing 20:09:37 <Deewiant> Yeah, I've seen that 20:10:02 <fizzie> elliott: <fizzie> Our university logo is a randomly selected from the three alternatives A! A? A" (and randomly of three alternative colors for the punctuation) -- some people have posed the question that since A! (factorial of A) equals A" (the second derivative of A), what is A? 20:10:11 <fizzie> Unfortunately the meat of it is only in Finnish. 20:10:20 <elliott> haha 20:10:43 <Taneb> Goodnight 20:10:44 -!- Taneb has quit (Quit: Goodbye). 20:12:03 <fizzie> Basically they start with A(2010) = 3 (because there were three separate universities that were combined to form the WaveU in 2010) and A(2011) = 6 (because at the start of 2011 the former HUT was split into four schools), and from that go on to deduce that we will pretty much hit absurdly large numbers on Jan 14, 2010. 20:12:37 <elliott> Thank god. 20:12:48 <fizzie> s/2010.$/2011./ 20:13:13 <elliott> Still in the past. :p 20:13:18 <elliott> Also s/\./\\./ 20:13:40 <fizzie> It's anchored at the end, it doesn't really need to be escaped. But the "201" part was extra. 20:13:58 <fizzie> And yes, still in the past, though I think the paper appeared at some point in 2010. 20:14:09 <fizzie> It says "we know in advance that A(2011) = 6" on one line. 20:14:39 -!- pikhq_ has joined. 20:14:51 -!- pikhq has quit (Ping timeout: 250 seconds). 20:31:25 -!- zzo38 has quit (Remote host closed the connection). 20:37:45 <elliott> 20:35:16: <ais523> hoversegway! 20:37:50 <elliott> ais523: Hoverse gway indeed. 20:38:06 <ais523> when did I say that? 20:38:12 <ais523> other than 20:35:16? 20:38:13 <elliott> Two years ago or so. 20:38:54 <oerjan> what a hoverse thing to say 20:39:16 <elliott> ais523 is now frantically trying to deduce the correct parsing. 20:40:40 -!- kmc has joined. 20:40:54 -!- augur has quit (Remote host closed the connection). 20:41:18 <elliott> ais523: data on youtube comments being self-parodies: "thumbs up if you want to see a crap comment get lotsa thumbs up" 20:41:31 <ais523> brilliant 20:41:33 <ais523> is it a top comment? 20:41:53 <elliott> unfortunately, no 20:41:56 <elliott> hmm... I wonder if I can thumbs it up 20:42:04 <elliott> there we go 20:42:06 <elliott> I've done my bit 20:44:36 <elliott> 20:57:07: <fizzie> So if you live at point P on the infinite plane, and kick off the Roomba, it'll eventually come back to you. (That might be a rather long "eventually" here.) 20:48:10 <fizzie> The mournful tune is very mournful. 20:48:29 <oklopol> o 20:48:29 <oklopol> o 20:48:29 <oklopol> o 20:48:30 <oklopol> o 20:48:45 <elliott> o 20:48:46 <oklopol> i just did nothing for 1.5 houts 20:48:47 <oklopol> *hours 20:49:00 <oklopol> i guess that's better than nothing 20:49:00 <elliott> fizzie: Please tell me you remembered saying mournful tune from back then. 20:49:11 <elliott> Also is there a video of it. 20:49:13 <elliott> I want to hear th e mourn. 20:49:43 <elliott> http://www.youtube.com/watch?v=a99O5xKFMDw Guh, I feel so sorry for it. It's not even clever enough to make a noise. 20:50:31 <elliott> SET IT FREE YUOU HORIEBLE PERSONS 20:50:45 <elliott> torture, 20:50:54 <elliott> yaaaaaaaaaay 20:50:58 <elliott> oh no 20:51:00 <elliott> then it bash again 20:51:00 <elliott> oh no 20:51:02 <elliott> it is so stupid 20:51:02 <elliott> oh no 20:51:08 <elliott> i could not deal with one of these things 20:51:08 <elliott> NO 20:51:09 <elliott> NOT PACK THERE 20:51:11 <elliott> NOOOOOOOOO 20:51:15 <elliott> NOOOO ROOMBA 20:51:17 <elliott> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooooooooooooooo 20:51:56 <elliott> fizzie: http://www.youtube.com/watch?v=DOwjnGPSzeg Well that's not very mournful. 20:53:27 <fizzie> That's not the sad tune. 20:54:01 <fizzie> I'll try to see if one of them youtubes has it. 20:55:20 <nooga> ide po otwieracz 20:55:22 <nooga> oops 20:55:45 <oerjan> polish conspiracy revealed 20:57:09 <fizzie> Meh, I just find all these Roombas with problems, but not the thing it plays sometimes. 20:57:25 <nooga> wrong terminal! 20:58:12 <fizzie> elliott: I think it's a variant of http://www.youtube.com/watch?v=VH9ImgLSyio though I vaguely recall it being longer. 20:58:46 <elliott> `addquote [from 2009] <fizzie> That's confusing. I have been indoctrinated to believe W|A, but on the other hand it's hard to unbelieve a book with such a ridiculously impressive name as "Handbook of physical testing of paper, Volume 2". 20:58:48 <HackEgo> 657) [from 2009] <fizzie> That's confusing. I have been indoctrinated to believe W|A, but on the other hand it's hard to unbelieve a book with such a ridiculously impressive name as "Handbook of physical testing of paper, Volume 2". 20:59:14 <elliott> fizzie: :( 20:59:20 <elliott> fizzie: I need to adopt one. Not to make it work or anything. 20:59:23 <elliott> Just to make it happy. 20:59:38 <Deewiant> Why "[from 2009]" 20:59:47 <elliott> Deewiant: Qdb is roughly chronological 21:00:17 <Deewiant> May I suggest "2009-11-26T13:35:38Z" 21:02:58 <elliott> Deewiant: No 21:03:03 <elliott> Logs provide exact precision 21:03:13 <oerjan> `run shuf bin/quotes >qs; mv qs bin/quotes 21:03:15 <HackEgo> No output. 21:03:21 * oerjan sprints 21:03:35 <elliott> i 21:03:36 <elliott> hate 21:03:37 <elliott> you 21:03:38 <elliott> `help 21:03:38 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 21:03:39 <Deewiant> Why require a full-text search when you can just annotate it 21:03:46 <elliott> Deewiant: aesthetics 21:03:50 <elliott> `revert 81 21:03:51 <HackEgo> Done. 21:03:54 <elliott> `paper 21:03:56 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: paper: not found 21:03:56 <elliott> `quote paper 21:03:58 <HackEgo> 657) [from 2009] <fizzie> That's confusing. I have been indoctrinated to believe W|A, but on the other hand it's hard to unbelieve a book with such a ridiculously impressive name as "Handbook of physical testing of paper, Volume 2". 21:04:02 <elliott> there we go 21:05:28 <oerjan> cdo wins - this time 21:05:51 <elliott> cdo? 21:06:03 <elliott> ais523: oh, btw, oklopol proved sg changes aren't a group oops 21:06:06 <elliott> because x . x = x 21:06:17 <elliott> because x . x = changeset {x,x} = changeset {x} = x 21:06:20 <oerjan> "like ocd, but with the letters in the proper alphabetical order as they _should_ be" 21:06:22 <elliott> :'( 21:06:30 <ais523> they're still going to be some sort of category 21:06:35 <ais523> just a different one from a group 21:06:48 <elliott> ais523: thank god, they're a category 21:06:53 <elliott> what a difficult standard to meet 21:06:58 <ais523> heh 21:07:01 <ais523> they're probably a useful sort of category 21:07:07 <ais523> just because more or less everything is 21:07:37 <nooga> MORP 21:08:24 <Vorpal> <oerjan> `run shuf bin/quotes >qs; mv qs bin/quotes <-- nice 21:08:51 <fizzie> Yes, I give that around 8.9 oerjan-points out of ten. 21:09:20 <oerjan> yay 21:12:40 <olsner> is that equivalent to 89% oerjan? 21:18:17 -!- Patashu has joined. 21:23:33 -!- elliott has quit (Ping timeout: 252 seconds). 21:34:42 -!- nooga has quit (Quit: Lost terminal). 21:44:53 <Gregor> `cat bin/quotes 21:44:55 <HackEgo> ​#!/bin/sh \ allquotes | if [ "$1" ]; then \ if expr "$1" + 0 >/dev/null 2>&1; then \ sed "$1q;d" \ else \ egrep -i -- "$1" \ fi \ else shuf -n 1; fi 21:45:11 <Gregor> Why did he think shuffling /that/ was a good idea :P 21:47:42 <oerjan> oops 21:47:56 * oerjan hides under a rock 21:48:04 <ais523> that's hilarious 21:48:20 <ais523> what's that esolang which was invariant if you shuffled the lines? 21:48:38 <ais523> (VHDL's a bit like that inside an architecture, except when processes or generates are involved) 21:48:44 -!- nooga has joined. 21:48:45 <oerjan> ais523: SORTED? 21:48:49 <nooga> ah 21:48:56 <nooga> time for Dr. Strangelove 21:48:56 <ais523> oerjan: that sounds about right 21:49:14 <ais523> wait, no 21:49:18 <ais523> Sorted! is something else 21:49:45 <ais523> (where you define all the statements you're going to use, and then say "use the fifth statement and the third statement and the sixth statement and...", except for everything) 21:50:10 <oerjan> ais523: also, spam 21:51:39 <ais523> bleh, elliott isn't here 21:51:44 <ais523> I think he'll probably want to see the content of User:QGermaineWalli 21:51:57 <ais523> oh well, I'll delete it, then retrieve the deleted copy for him when he's here 21:52:49 <ais523> oerjan: did I catch it all? the feed was being awkward 21:54:52 <oerjan> seems so 21:55:56 <oerjan> sortle looks promising 21:56:07 -!- ais523 has quit (Remote host closed the connection). 21:59:25 -!- FireFly has quit (Quit: FireFly). 22:01:09 <fizzie> There was something where the program was just a list of (guarded?) statements, of which it would always execute a random possible one. 22:01:43 <fizzie> Strelnokoff? 22:02:05 <fizzie> Also DMM's Whenever. 22:05:00 * Phantom_Hoover → sleep 22:05:01 -!- Phantom_Hoover has quit (Quit: Leaving). 22:06:55 -!- sllide has quit (Ping timeout: 260 seconds). 22:12:28 -!- monqy has joined. 22:14:44 -!- Sgeo has joined. 22:21:47 -!- aloril has quit (Ping timeout: 260 seconds). 22:31:38 -!- MSleep has changed nick to MDude. 22:38:05 -!- aloril has joined. 22:56:00 <Patashu> brrrrrrrrrt http://www.dream-pro.info/~lavalse/LR2IR/search.cgi?mode=ranking&bmsid=83968 23:02:30 -!- augur has joined. 23:04:35 -!- augur has quit (Remote host closed the connection). 23:05:25 -!- augur has joined. 23:22:52 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:24:01 -!- augur has quit (Remote host closed the connection). 23:28:17 -!- nooga has quit (Ping timeout: 260 seconds). 23:45:23 -!- Jafet has quit (Quit: Leaving.). 23:48:31 -!- oerjan has quit (Quit: Good night). 23:51:59 -!- DH____ has joined. 23:54:49 -!- DH____ has quit (Read error: Connection reset by peer). 23:54:52 -!- DHeadshot has joined. 23:57:43 -!- fizzie has quit (Ping timeout: 276 seconds). 23:57:55 -!- fungot has quit (Ping timeout: 260 seconds). 2011-09-13: 00:00:13 -!- copumpkin has joined. 00:11:35 -!- CakeProphet has joined. 00:12:06 <CakeProphet> is there a tool I can use to auto-generate C++ header files? 00:13:13 -!- variable has quit (Quit: I found 1 in /dev/zero). 00:19:17 -!- Jafet has joined. 00:21:25 -!- pikhq has joined. 00:24:14 -!- pikhq_ has quit (Ping timeout: 260 seconds). 00:24:24 <monqy> CakeProphet: perl 00:24:33 <CakeProphet> ...no. 00:24:40 <CakeProphet> I'll just, uh, write the header file. 00:24:45 <CakeProphet> less effort. 00:24:51 <CakeProphet> but not as re-usable I guess. 00:25:37 -!- fizzie has joined. 00:51:58 -!- Jafet has quit (Quit: Leaving.). 00:54:42 -!- Jafet has joined. 01:11:03 -!- azaq23 has joined. 01:21:24 -!- CakeProphet has quit (Ping timeout: 259 seconds). 01:21:56 -!- MSleep has joined. 01:23:14 -!- augur has joined. 01:23:21 -!- sebbu2 has joined. 01:23:21 -!- sebbu2 has quit (Changing host). 01:23:21 -!- sebbu2 has joined. 01:23:33 -!- variable has joined. 01:24:47 -!- augur has quit (Remote host closed the connection). 01:25:07 -!- DHeadshot has quit (Read error: Connection reset by peer). 01:25:13 -!- DH____ has joined. 01:25:15 -!- sebbu has quit (Ping timeout: 260 seconds). 01:25:15 -!- MDude has quit (Ping timeout: 260 seconds). 01:39:48 -!- CakeProphet has joined. 01:39:48 -!- CakeProphet has quit (Changing host). 01:39:48 -!- CakeProphet has joined. 01:55:31 -!- Jafet has quit (Quit: Leaving.). 02:05:33 -!- evincar has joined. 02:07:07 -!- evincar has quit (Client Quit). 02:14:26 <itidus20> Yo. 02:14:42 <monqy> hi 02:15:25 <itidus20> so im applying my unique genius in strange directions as usual 02:19:15 <monqy> as usual 02:19:45 -!- pikhq_ has joined. 02:19:48 -!- pikhq has quit (Ping timeout: 260 seconds). 02:21:41 -!- zzo38 has joined. 02:37:40 -!- augur has joined. 02:39:59 <itidus20> back 02:40:17 <itidus20> monqy: if you're still about 02:40:23 <monqy> hi 02:40:53 <itidus20> (well you are ok. hi) or if not.. its all the same.. multicast message is always the best 02:41:28 <monqy> ok 02:41:28 <itidus20> so 02:41:41 <itidus20> is lambda calculus like a blueprint to build a computer? 02:42:23 <monqy> what 02:42:40 <itidus20> yeah.. nevermind :D. disregard that last post 02:42:57 <monqy> ok 02:43:02 <itidus20> if i have.. 02:43:12 <itidus20> 6 pebbles 02:43:20 <itidus20> and i am at the beach 02:43:48 <itidus20> can i use lambda calculus to add 1 pebble to 2 pebbles? 02:44:01 <monqy> what 02:44:04 <itidus20> uhmm 02:44:10 <itidus20> lol you poor guy 02:44:10 <zzo38> I have read a while ago, and look at it again today, with no new information however, about the game called Quintuple Arcana. 02:45:12 <zzo38> Apparently it took thirty years and the rules are still incomplete. 02:45:29 <itidus20> if i have 5 pebbles and 6 apples... and i am sitting at the beach, can I perform the calculation 2 pebbles x 3 pebbles = 6 apples by applying lambda calculus 02:45:52 <monqy> do you know what lambda calculus is 02:46:34 <monqy> your questions are nonsensical 02:47:26 <itidus20> there seems to be a signifigant difference between pure and impure lambda calc 02:47:33 <monqy> what 02:47:56 <itidus20> apparently lambda calculus on it's own is good for nothing 02:48:03 <monqy> no 02:48:43 <monqy> & what 02:48:48 <zzo38> Play is on the intersections like Go and Xiangqi; there is a river in the middle like Xiangqi; you make scoring patterns like in Mahjong; and you can capture as in Nine Men's Morris. One of the positions on the board is labeled the "state of being" and has certain immunities, some of which are transferred from the card standing there to the rest of the board. 02:49:05 <itidus20> as a human... it is in my interests you see, to make sure all knowledge i have is in some way relevant to things 02:49:06 <zzo38> There are two yellow stations which modify the rules of the game. 02:49:22 <itidus20> i understand that lambda calculus can describe functions at the least 02:49:28 <monqy> lambda calculus is very relevant to things 02:49:41 <monqy> unless you have a bizarre definition of relevant 02:49:51 <itidus20> so that is a connection to functions so i am safe in that aspect 02:51:07 <itidus20> like.. if i say int a = sqrt(25); here float sqrt(float) or whatever types it might have is a function :D 02:52:16 <monqy> what 03:06:00 -!- augur has quit (Remote host closed the connection). 03:07:37 <itidus20> sorry i got distracted by some stuff 03:08:08 <Lymee> > sqrt 25 :: Int 03:08:08 <lambdabot> No instance for (GHC.Float.Floating GHC.Types.Int) 03:08:09 <lambdabot> arising from a use of... 03:08:21 <Lymee> > fromFractional $ sqrt 25 03:08:21 <lambdabot> Not in scope: `fromFractional' 03:08:30 <Lymee> > toIntergral $ sqrt 25 03:08:30 <lambdabot> Not in scope: `toIntergral' 03:08:47 <itidus20> so, sqrt has an input parameter of type float, and if it is 25, it is re-written into whatever equation it is found in as 5 03:10:56 -!- pikhq_ has quit (Ping timeout: 258 seconds). 03:14:58 -!- pikhq has joined. 03:15:34 <pikhq> TIL that Debian masks the magic sysrq key by default. 03:16:22 <Lymee> It does? 03:16:33 <Lymee> That explains why every time I try to unbreak my system via sysrq nothing happens 03:17:02 <pikhq> echo 1 > /proc/sys/kernel/sysrq 03:17:28 <Lymee> Usually the system is crashed by then, so... 03:19:33 <pikhq> Stick it in /etc/rc.local 03:20:49 <pikhq> Note: Technically has security ramifications. Though if an attacker has physical access, he can just as easily go ahead and remove your hard drive, install a key logger, or do whatever else he damned well feels like. 03:26:17 -!- augur has joined. 03:44:16 -!- azaq231 has joined. 03:44:18 -!- azaq231 has quit (Changing host). 03:44:18 -!- azaq231 has joined. 03:44:41 -!- azaq23 has quit (Ping timeout: 260 seconds). 03:45:42 -!- azaq231 has changed nick to azaq23. 04:10:12 <zzo38> I got Steve Smith's autograph in Thursday. But it is messy writing and I cannot read it. 04:12:55 -!- Jafet has joined. 04:15:51 <zzo38> I think abuse of notation is as useful in Haskell as it is in mathematics. I made it to work abuse of notation so that something like $(9) in a type context represents the natural number type for number nine. 04:16:37 <zzo38> (The stuff in $(...) is expected to be Q Type but it is a number instead. But it can still work.) 04:22:35 -!- DH____ has quit (Read error: Connection reset by peer). 04:25:41 <monqy> zzo38: instance Num (Q Type)? 04:26:08 <Gregor> http://codu.org/tmp/drell6-2011-09-13.ogg ACK I'M STILL DOING THESE 04:27:55 <zzo38> monqy: Yes. 04:28:03 <zzo38> That is what I did. 04:28:25 <zzo38> I did write on there, also that it is abuse and not really a proper number and that stuff, but that it is convenient and works anyways. 04:35:09 <tswett> Hey guys! I'm going to make a MOO! 04:35:35 <Gregor> `apt-get moo 04:35:37 <HackEgo> ​(__) \ (oo) \ /------\/ \ / | || \ * /\---/\ \ ~~ ~~ \ ...."Have you mooed today?"... 04:35:55 <tswett> It's going to be better than Normish and the NMR combined. 04:35:59 <tswett> Which is still pretty bad. 04:36:20 <Lymee> `aptitude moo 04:36:22 <HackEgo> There are no Easter Eggs in this program. 04:36:43 <tswett> But I have a plan, you see. The MOO's programming language will be Lua, implemented in Smalltalk. 04:36:53 <Sgeo> `aptitude moo moo 04:36:55 <HackEgo> Unknown command "moo moo" \ aptitude 0.4.11.11 \ Usage: aptitude [-S fname] [-u|-i] \. aptitude [options] <action> ... \. Actions (if none is specified, aptitude will enter interactive mode): \ \ install. - Install/upgrade packages \.remove. - Remove packages \ purge - Remove packages and their 04:37:07 <Sgeo> tswett, wait, what happened to the old MOO? 04:37:09 <tswett> Which I've said before. But it'll be better this time. 04:37:32 <tswett> Sgeo: the couple-of-weeks-old one? It still exists and, in theory, can be played. 04:41:49 <Sgeo> Hmm.. 04:41:52 <tswett> I've discovered a Smalltalk package that makes compiling new code much, much nicer than I thought it would be. 04:41:54 <Sgeo> WebTV is apparently a weapon 04:41:59 <Sgeo> tswett, hmm? 04:42:42 <tswett> I thought I'd have to generate Smalltalk source code, or an AST, or raw bytecode. It turns out that there's this nice "intermediate representation" thingy that's easy to generate. 04:43:08 <tswett> So, you guys will all be allowed to write Smalltalk code. But you'll have to write it in Lua. 04:43:40 <Sgeo> Smalltalk isn't exactly known for security, I think 04:43:52 <Sgeo> So unless only voted-on Smalltalk code is allowed... 04:44:25 <Sgeo> (I don't mean they could affect the underlying OS. I mean it's trivial for a snippet of code to modify anything in the Smalltalk system) 04:47:33 <tswett> Lua is known for security, though. The Lua functions that actually access Smalltalk can be locked away. 04:54:43 <pikhq> `aptitude moo -vvvvv 04:54:45 <HackEgo> Unknown command "moo -vvvvv" \ aptitude 0.4.11.11 \ Usage: aptitude [-S fname] [-u|-i] \.aptitude [options] <action> ... \ Actions (if none is specified, aptitude will enter interactive mode): \ \.install - Install/upgrade packages \ remove.- Remove packages \ purge. - Remove packages and their 04:54:53 <pikhq> Lame. 04:54:58 <pikhq> `run aptitude moo -vvvvv 04:55:01 <HackEgo> All right, you win. \ \ /----\ \ -------/ \ \ / \ \ / | \ -----------------/ --------\ \ ---------------------------------------------- 05:01:29 -!- Jafet has quit (Quit: Leaving.). 05:19:21 <fizzie> `run aptitude moo -vvvvvv 05:19:23 <HackEgo> What is it? It's an elephant being eaten by a snake, of course. 05:19:41 <fizzie> Not quite so clear, onelined like that. 05:19:51 <Sgeo> VVVVVV with cows? 05:26:37 -!- aloril has quit (Ping timeout: 276 seconds). 05:39:36 -!- CakeProphet has quit (Ping timeout: 260 seconds). 05:39:42 -!- Jafet has joined. 05:39:48 -!- aloril has joined. 05:57:39 -!- Patashu has quit (Remote host closed the connection). 05:57:58 -!- cheater has quit (Ping timeout: 260 seconds). 05:59:18 -!- pikhq_ has joined. 05:59:46 -!- pikhq has quit (Ping timeout: 276 seconds). 06:21:29 -!- cheater has joined. 06:23:57 -!- myndzi has quit (Remote host closed the connection). 06:35:16 -!- myndzi has joined. 06:43:04 -!- CakeProphet has joined. 06:43:04 -!- CakeProphet has quit (Changing host). 06:43:04 -!- CakeProphet has joined. 06:52:31 -!- nooga has joined. 06:58:51 -!- nooga has quit (Ping timeout: 252 seconds). 07:10:12 -!- nooga has joined. 07:11:28 -!- cheater has quit (Ping timeout: 260 seconds). 07:17:25 <CakeProphet> Sour Patch Kids are a soft candy with a coating of sour sugar created by Frank Galatolie. When sour confectionery was first introduced it was not considered a serious product category, more of a children's fad. Success, however, rocketed it into the mainstream. One of the driving forces behind the brand's growth was its success in cinemas, and even now it is a staple for moviegoers. Today Sour Patch Kids is a top selling 07:17:34 <CakeProphet> most NPOV intro paragraph award. 07:20:03 <fizzie> Possibly also a "most copied from PR literature" award. 07:21:16 -!- Patashu has joined. 07:22:44 <CakeProphet> ...but then we're no longer being sarcastic 07:22:52 <CakeProphet> no mixing! 07:23:00 <fizzie> s/most/least/, then. 07:23:30 <CakeProphet> okay that maintains sarcasm axiom standards. 07:24:57 <CakeProphet> but dude they are really good 07:25:04 <CakeProphet> like, I don't think they're being biased. 07:25:14 <CakeProphet> it's just universally accepted that sour patch kids are delicious 07:25:41 <CakeProphet> though sour punch straws could use some similar modifications to be made equally POV 07:25:50 <CakeProphet> they are arguably more delicious 07:28:44 -!- cheater has joined. 07:29:44 <CakeProphet> dude... I wonder 07:29:57 <CakeProphet> if source cereal would be good. I bet it would be delicious. I bet people would buy that shit. 07:30:19 <monqy> source? 07:30:57 <CakeProphet> oh... 07:30:58 <CakeProphet> sour 07:30:59 <CakeProphet> sour cereal 07:31:04 <CakeProphet> it's my idea you can't take. 07:31:42 <CakeProphet> I'll give you help back. 07:32:21 <monqy> ok 07:33:44 <CakeProphet> A breakfast cereal (or just cereal) is a food made more or less from processed grains often, but not always, eaten with the first meal of the day or sometimes as a snack later in the day. It is often eaten cold, usually mixed with milk (e.g. cow's milk, soy milk, rice milk, almond milk), water, or yogurt, and sometimes fruit but sometimes eaten dry. 07:33:54 <CakeProphet> I love things like this on Wikipedia 07:34:40 -!- nooga has quit (Ping timeout: 276 seconds). 07:35:07 <monqy> sometimes I use orange juice instead of milk/yogurt 07:35:13 <monqy> other times I use milk/yogurt 07:35:31 <CakeProphet> "Chairs are a type of furniture often made from wood, and are frequently, but not always, used for sitting." 07:35:38 <CakeProphet> monqy: weird 07:35:46 <CakeProphet> I didn't know people put yogurt in cereal but I guess that makes sense. 07:35:58 <monqy> orange juice cereal is good, for some cereals 07:36:57 <CakeProphet> Cerealicious is a fast-food restaurant chain based in the Philippines. There are currently 12 branches: 10 are located in Manila, 1 in Cebu, and 1 in Davao. Cerealicious offers Post, Nestle, and Kellogg's cereals with milk and a wide range of additional toppings. It incorporates local flavors to serve Filipino taste. 07:37:12 <CakeProphet> I love that Filipino taste. 07:39:02 <monqy> CakeProphet: http://sourcereal.com/ 07:47:56 -!- cheater has quit (Ping timeout: 260 seconds). 07:51:48 <CakeProphet> lol wat 07:53:53 <monqy> good website 07:57:02 <CakeProphet> one of the best quality and education sites I've ever read. 08:03:58 <Patashu> I found a robot built to play ddr http://www.youtube.com/watch?v=TlXV8VlDA7Y&feature=feedu 08:05:39 <Patashu> Haha, on his other new video: 'I'm pretty sure this is a 19. Today was the second time I've ever vomited from dance games.' 08:05:40 <Patashu> Nice 08:13:15 -!- cheater has joined. 08:14:11 -!- nooga has joined. 08:23:57 -!- pikhq has joined. 08:24:23 -!- pikhq_ has quit (Ping timeout: 260 seconds). 08:31:36 -!- DH____ has joined. 08:35:26 -!- oerjan has joined. 08:40:32 -!- zzo38 has quit (Remote host closed the connection). 08:43:33 -!- pikhq_ has joined. 08:44:13 -!- pikhq has quit (Ping timeout: 276 seconds). 08:51:32 -!- cheater_ has joined. 08:51:43 -!- cheater_ has quit (Remote host closed the connection). 08:58:27 -!- sebbu has joined. 08:58:27 -!- sebbu has quit (Changing host). 08:58:27 -!- sebbu has joined. 09:00:51 -!- sebbu2 has quit (Ping timeout: 260 seconds). 09:11:32 -!- itidus21 has joined. 09:12:49 -!- yorick has quit (Ping timeout: 276 seconds). 09:13:33 -!- itidus20 has quit (Ping timeout: 240 seconds). 09:30:43 -!- itidus21 has quit (Read error: Connection timed out). 09:31:17 -!- itidus21 has joined. 09:33:51 <oerjan> itidus21: lambda calculus can do any computation that a computer can do, but you have to encode the data as lambda expressions first, and define your functions... 09:34:23 <oerjan> that's no different from how an ordinary computer works with bits and machine code 09:35:07 <fizzie> But can lambda calculus... FEEL... does it have a... SOUL... 09:35:27 <oerjan> tricky. 09:36:16 <fizzie> A soul weighs 21 grams, or so I've heard. 09:36:36 <oerjan> IF YOU SAY SO 09:36:59 -!- shachaf has quit (*.net *.split). 09:37:10 <oerjan> although i am a teeeny bit doubtful 09:38:10 <fizzie> There was this dude in the 1910s who tried to measure the weight of people immediately before and after death, and came to the conclusion that, on average, there was a weight loss of about 21 grams. 09:38:21 -!- shachaf has joined. 09:38:45 <fizzie> With a sample size of N=6, of which two had to be discarded, and the others weren't very consistent either. 09:38:48 <fizzie> But it's still SCIENCE. 09:39:20 <fizzie> Later he went on to take photographs of souls, too. 09:39:52 <fizzie> Snopes documents this thing at http://www.snopes.com/religion/soulweight.asp -- and see, it says "Status: True" there. 09:40:19 <oerjan> cannot doubt snopes, that's for sure 09:40:46 <fizzie> (Admittedly the only thing in the "claim" part is "A physician once placed dying patients upon a scale in order to measure the weight of the human soul", but still.) 09:42:09 <oerjan> fizzie: you don't _have_ to ruin your jokes by explaining them, you know. 09:42:25 <fizzie> It's a sort of a compulsion. 09:44:16 <fizzie> Or do you mean it came pre-ruined and did not require additional ruining by explanation in order to be ruined? (That much is also true.) 09:45:30 <oerjan> no, i mean it works better if the listener has to do work to find out what's screwy 09:46:12 <oerjan> of course i did suspect it, since i know what kind of format snopes uses 09:52:07 -!- itidus21 has quit (Read error: Connection timed out). 09:53:07 -!- itidus21 has joined. 09:54:01 -!- Jafet1 has joined. 09:56:31 -!- Jafet has quit (Ping timeout: 258 seconds). 10:11:52 -!- itidus21 has quit (Read error: Connection timed out). 10:12:37 -!- itidus21 has joined. 10:25:07 -!- derdon has joined. 10:31:18 -!- itidus21 has quit (Read error: Connection timed out). 10:31:45 -!- itidus21 has joined. 10:33:12 -!- itidus21 has quit (Client Quit). 10:33:43 -!- Jafet1 has changed nick to Jafet. 10:33:45 -!- itidus21 has joined. 10:35:16 -!- itidus21 has quit (Client Quit). 10:35:31 -!- itidus21 has joined. 10:38:11 -!- oerjan has quit (Remote host closed the connection). 10:40:00 -!- itidus21 has changed nick to itidus20. 10:58:41 -!- derdon has quit (Ping timeout: 260 seconds). 10:58:42 -!- azaq23 has quit (Ping timeout: 260 seconds). 10:59:41 -!- derdon has joined. 11:02:17 -!- azaq23 has joined. 11:10:31 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)). 11:11:41 -!- rodgort has joined. 11:20:39 -!- ais523 has joined. 11:38:31 <ais523> OK, I have decided that single * for toggle italics, that works embedded inside words, is a ridiculously bad syntax idea 11:38:42 <ais523> using space-* ... *-space isn't so bad, although less flexible 11:38:49 <ais523> but embedded asterisks happen far too often 11:46:44 <Deewiant> In Markdown, * inside `` doesn't result in emphasis 11:46:51 <Deewiant> And asterisks outside code are rare 11:49:35 <ais523> I was reading an article about LR(*) grammars 11:50:21 <Deewiant> Right, that's rare 11:50:58 -!- yorick has joined. 11:51:37 <ais523> well, I'd say although each individual context where you tend to have embedded asterisks is rare 11:51:41 <ais523> there are a large number of htem 11:51:43 <ais523> *them 11:52:01 <ais523> Wikipedia was having enough trouble with a language which contained words with double single-quotes 12:07:54 <itidus20> you guys should cook up your own wiki encoding 12:08:24 <itidus20> oh. that is what you're doing isn't it :P 12:13:28 -!- ais523 has quit. 12:14:10 -!- ais523 has joined. 12:14:18 -!- ais523 has quit (Changing host). 12:14:18 -!- ais523 has joined. 12:14:24 <ais523> itidus20: I consider MediaWiki's to be tolerable 12:14:57 <ais523> it pretty rarely false-positives on markup, and it allows you to express really complex things if you want to 12:15:06 <ais523> I consider looking simple to be secondary 12:16:51 -!- kmc has quit (Ping timeout: 260 seconds). 12:17:36 -!- kmc has joined. 12:38:05 -!- monqy has quit (Quit: hello). 12:46:01 -!- augur has quit (Remote host closed the connection). 12:51:20 -!- Phantom_Hoover has joined. 12:55:10 -!- sllide has joined. 13:06:05 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)). 13:07:01 -!- rodgort has joined. 13:12:09 -!- augur has joined. 13:13:02 -!- itidus20 has changed nick to itidus21. 13:13:24 -!- itidus21 has changed nick to itidus20. 13:21:09 -!- MSleep has changed nick to MDude. 13:34:37 -!- monqy has joined. 13:42:03 <ais523> elliott (from the logs): if you want to confuse Esolang admins, do what Tekknolagi has been doing, he's been making productive and very useful posts with metadata that makes me think they're spam until I read them 13:45:45 <monqy> speaking of spam, I really like the bots that delete large chunks of text and replace them with praise in broken english 13:49:34 <ais523> why? 13:49:52 <ais523> (the broken english is to stop them being filtered out by keyword matching, I think) 13:50:12 -!- Taneb has joined. 13:50:26 <Taneb> Hello! 13:50:31 <monqy> I don't really know why I like them so much 13:51:12 <Taneb> I was talking to one of my friends today about how it is a very small world 13:51:33 <Taneb> During that conversation, it emerged that it is even smaller than either of us realised 13:52:13 <monqy> oh? 13:52:35 <Taneb> Extremely small 13:52:53 <monqy> and how did this emerge 13:53:06 <Taneb> Turns out, she once got kicked in the face by elliott 13:53:26 <monqy> this made me laugh 13:56:52 <Taneb> Brb, walking dog 13:56:53 -!- Taneb has quit (Quit: Goodbye). 14:03:36 -!- nooga_ has joined. 14:03:36 -!- nooga has quit (Read error: Connection reset by peer). 14:05:42 -!- Taneb has joined. 14:06:57 <Taneb> Ooh I've got mail! 14:08:29 <Taneb> I think email has the huge advantage that it is easier to open 14:11:53 <Phantom_Hoover> Unless you have a letter opener. 14:12:02 <Taneb> Or dialup 14:13:18 <Taneb> Todays Darths and Droids is good 14:16:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:20:20 <Taneb> What was the evil computermabob in the Terminator films called? 14:20:23 <Taneb> Because http://www.bbc.co.uk/news/technology-14896330 14:21:03 <ais523> why are ADTs not used more? 14:21:06 <ais523> they're a really useful concept 14:21:20 <Taneb> Which ADT? 14:21:22 <ais523> the only reason I don't design them into my esolangs is that those are typically untyped 14:21:28 <ais523> algebraic data types 14:21:47 <Taneb> Not Average Daily Traffic? 14:21:48 <Taneb> Shame 14:23:42 <Taneb> Hey, ReactOS is picking up speed 14:29:23 <DH____> I could never get ReactOS to install... 14:29:52 <Taneb> I couldn't get Haiku to 14:31:30 <DH____> Haiku installed fine but didn't recognise my mouse.. 14:32:43 <cheater> hahahahaiku 14:32:43 <DH____> An OS designed for image processing with no mouse is rather pointless. 14:33:03 <cheater> sounds like you have a laughing fit which ends with a sneeze 14:33:42 <monqy> os designed for image processing? I don't know much about haiku other than I probably wouldn't like it 14:34:18 <Taneb> I didn't realise it was designed for image processing 14:35:47 <Taneb> I just thought I ought to have as many OSs as I could, just in case 14:37:21 <monqy> just in case 14:37:36 <Taneb> I got confused after two 14:37:44 <Taneb> And now my laptop is having repairs 14:37:46 <monqy> two? 14:37:50 <monqy> confused? 14:37:59 <Taneb> Yeah, I'm easily confused 14:38:15 <Taneb> And they were two of the easiest to use 14:38:46 <monqy> oh? 14:38:55 <Taneb> Windows and Ubuntu 14:39:00 <monqy> oh. 14:39:49 <monqy> at least for my uses, windows was anything but easy 14:40:02 <Taneb> Oh? 14:40:54 <monqy> it was often a pain to get things working, the ui was annoying, other things I've forgotten by now 14:41:45 -!- copumpkin has joined. 14:41:48 <Taneb> It's easiest to get help with, I find it a lot easier to install software for 14:42:23 <monqy> amusing, as when I had to deal with it, installing things was hell 14:42:45 <monqy> also I haven't used ubuntu enough to have a reasonable opinion of it from usage, but from what I know, I wouldn't like it 14:42:45 <Taneb> We must install different sorts of things 14:44:50 <Taneb> Different people, different opinions 14:44:54 <Taneb> Happens all the time 14:44:56 <monqy> as a disclaimer, what is friendly to me personally is far from "user friendly", so my opinions are probably a good deal off 14:48:40 -!- cheater has changed nick to nauke. 14:49:25 -!- nauke has changed nick to rnauke. 15:01:38 -!- Taneb has quit (Ping timeout: 260 seconds). 15:02:04 -!- augur has quit (Remote host closed the connection). 15:02:10 <DH____> I tend to collect installed OSes... 15:05:18 -!- augur has joined. 15:06:28 -!- rnauke has changed nick to cheater. 15:16:16 <Phantom_Hoover> <Taneb> It's easiest to get help with, I find it a lot easier to install software for 15:16:27 <Phantom_Hoover> sudo aptitude install half the things you want 15:17:21 <Phantom_Hoover> Admittedly, Linux is a much bigger target than Windows, but not to the extent of making me want to wade through Windows' UI and system. 15:19:17 <ais523> even incorrectly packaged things, I find easier to install on Linux than Windows 15:19:36 <ais523> things I have to compile myself, I can understand why people don't like installing those, though 15:19:44 -!- cheater has quit (Ping timeout: 252 seconds). 15:20:08 <Phantom_Hoover> ais523, worse still are binary packages. 15:20:21 <ais523> Phantom_Hoover: they're not a problem if they're packaged correctly 15:20:42 <Phantom_Hoover> For some reason, people don't seem to realise that there is no such thing as a Linux binary that will just work on all Linux systems. 15:21:01 -!- Taneb has joined. 15:21:11 <Phantom_Hoover> You can assume that someone running the same distro on the same arch that you compiled it will be able to run it easily. 15:27:10 <pikhq_> There is no such thing as a Windows binary that will just work on all Windows systems. 15:27:16 <pikhq_> This is a much more esoteric fact, though. 15:29:42 <Taneb> I think I'll work some more on XSLT S and K 15:30:05 <Taneb> Thinking about it differently, though 15:30:25 <Taneb> Consider the identity function in S and K, SKK 15:30:47 <Taneb> This can be written, if you are so inclined, as "(((S)(K))(K)) 15:31:22 <monqy> so much parentheses 15:31:23 <Taneb> Which makes it clearer what it looks like as a tree 15:32:00 -!- cheater has joined. 15:32:18 <Phantom_Hoover> http://theantifacebookleague.com/ 15:32:26 <Phantom_Hoover> Well this won't be horrifically snotty or anything. 15:32:38 <Phantom_Hoover> Oh, goodness, it is. 15:32:53 <monqy> Intelligentsia 15:33:39 <Taneb> Now, XML encodes data trees 15:33:56 <Taneb> Which is good, because XLST works on XML 15:34:02 -!- lambdabot has quit (Read error: Connection reset by peer). 15:34:11 <Taneb> And combinatory logic can be expressed as a tree 15:34:54 <Taneb> The slightly less... bracket overcrowded, ((SK)K) 15:34:59 <Taneb> Can be expressed as follows: 15:35:16 <Taneb> <node><node><s/><k/></node><k/></node> 15:35:26 <Phantom_Hoover> Taneb, are you going to get to a point that almost all of us don't already know in less than ten minutes? 15:35:34 <Taneb> Not likely 15:35:44 <Phantom_Hoover> Make it <app>, at least. 15:35:53 <Taneb> Probably better 15:36:16 <Phantom_Hoover> I thought XSLT wasn't TC, anyway. 15:36:23 <Taneb> Has been proven 15:36:40 <monqy> has been proven which way?? 15:36:46 <Taneb> This way: http://www.unidex.com/turing/utm.htm 15:37:26 <Phantom_Hoover> Oh, OK. 15:37:56 -!- lambdabot has joined. 15:39:00 <Taneb> A K can only be completely evaluated if it is at the begininning of its pair thing and its pair thing is at the beginning of /its/ pair thing 15:39:11 <Taneb> I'm not good at the actual words 15:39:28 <Taneb> An S needs to be even more firsty 15:39:31 <Taneb> By 1 15:40:28 <Phantom_Hoover> It's pattern matching, basically. 15:40:46 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 15:40:58 <Phantom_Hoover> Reduce any instances of ```sxyz or ``kxy from the top of the tree. 15:41:17 <monqy> is xslt a rewritey system or am i thinking of something else 15:41:23 <Phantom_Hoover> Yep. 15:41:49 <Phantom_Hoover> So it should be ideal for SK implementation, although I thought the same about Eodermdrome. 15:48:05 -!- elliott has joined. 15:55:55 -!- iamcal has quit (Remote host closed the connection). 15:58:26 -!- augur has quit (Remote host closed the connection). 15:58:31 -!- iamcal has joined. 15:58:54 -!- iamcal has quit (Remote host closed the connection). 16:04:21 -!- DH____ has quit (Ping timeout: 260 seconds). 16:15:26 -!- kmc has quit (Ping timeout: 260 seconds). 16:16:27 -!- kmc has joined. 16:21:52 -!- iamcal has joined. 16:23:21 <elliott> 21:44:53: <Gregor> `cat bin/quotes 16:23:21 <elliott> 21:44:55: <HackEgo> ​#!/bin/sh \ allquotes | if [ "$1" ]; then \ if expr "$1" + 0 >/dev/null 2>&1; then \ sed "$1q;d" \ else \ egrep -i -- "$1" \ fi \ else shuf -n 1; fi 16:23:21 <elliott> 21:45:11: <Gregor> Why did he think shuffling /that/ was a good idea :P 16:23:21 <elliott> 21:47:42: <oerjan> oops 16:23:21 <elliott> ahahaha 16:23:40 <elliott> ais523: i'mready for qgermainewalli 16:24:09 <elliott> http://esolangs.org/wiki/Gecho 16:24:11 <elliott> r u srs 16:24:20 <elliott> http://tekknolagi.lighthouseapp.com/projects/81045-gecho/tickets oh good it has a bug tracker 16:24:24 <elliott> Calculations are Imprecise 16:24:24 <elliott> Reported by tekknolagi (at gmail) | September 13th, 2011 @ 02:44 PM 16:24:24 <elliott> The computations use float, which is very imprecise. Must move to bignum. 16:24:48 <elliott> oh nice, e wants people to build it as root for no apparent reason 16:24:58 <ais523> elliott: OK, undeleted 16:25:01 <elliott> "That's stack theory." good lord this is bad 16:25:11 <ais523> grab a copy, I'm going to delete it again soon 16:25:17 <elliott> ais523: amazing; thank you kindly, saved 16:25:17 <ais523> unless you aren't interested after all 16:25:41 <elliott> hmm, I should read my email spam 16:25:45 <elliott> I wonder if it's as amazing? 16:25:50 <ais523> the worrying thing is, I think the spam might have copied from a web page that thought it was legitimate 16:25:58 <ais523> email spam is generally less amazing than that, but not alwayds 16:26:01 <ais523> *always 16:26:07 <elliott> BILLING SUMMARY 16:26:07 <elliott> --------------- 16:26:08 <elliott> PRIOR BALANCE: $-10.67 16:26:08 <elliott> --------------- 16:26:08 <elliott> NEW BALANCE: $-10.67 16:26:09 <elliott> thanks slicehost! 16:26:15 <elliott> they're going to send me these emails forever, aren't they 16:26:25 <ais523> do you owe them $10.67? 16:26:30 <ais523> or do they owe you that amount? 16:26:33 <elliott> they owe me that 16:26:35 <elliott> or, well 16:26:38 <elliott> I doubt I can turn it into cash 16:26:42 <elliott> but it'd pay for any slicehost crap i bought 16:26:48 <ais523> ah, it's store credit, effectively 16:27:02 <elliott> they keep emailing me to let me know that nothing happened, which is expected as I cancelled my VPS :P 16:27:56 <elliott> http://esolangs.org/w/index.php?title=Hello_world_program_in_esoteric_languages&curid=1322&diff=24511&oldid=24398 16:28:00 <elliott> ais523: I'm really upset you reverted this 16:28:06 <elliott> Phantom_Hoover: 16:28:19 <Phantom_Hoover> Yes? 16:28:23 <elliott> it's the twin of [[Talk:Gregor Richards]]! 16:28:27 <elliott> click the link 16:28:44 <ais523> elliott: it was overwriting content 16:28:48 <ais523> on a talk page, it wouldn't have been so bad 16:28:56 <ais523> but it actually overwrote the example 16:29:00 <elliott> :'( 16:29:01 <Gregor> elliott: That's not just logic. That's rellay sensible. 16:29:08 <elliott> it was better than the example 16:29:11 <elliott> Gregor: That's not just the best answer. It's the beestst answer! 16:29:21 <ais523> what if people want to know how to write a hello world in Tri? 16:29:34 <elliott> ais523: they should stop wanting to know that, and start wanting to admire some beautiful spam instead 16:29:58 <elliott> fromDon't get scammed, free report. norwaypilgrim@vignette.com 16:29:58 <elliott> subjectCNN USA breaking news 16:29:58 <elliott> CNN USA breaking news 16:29:58 <elliott> http://seventeenforty.net/ 16:30:03 <elliott> it doesn't even load :( 16:30:04 -!- Jafet has quit (Quit: Leaving.). 16:30:19 <elliott> but then chrome suggested http://seventeenforty.com/ "1740 is a private, members-only,18 and over BDSM dungeon and social club located in Wichita, Kansas." 16:30:27 <elliott> cnn usa breaking news 16:31:10 <Taneb> The BBC News Technology page sounds like we're heading into a dystopia 16:31:12 -!- Jafet has joined. 16:31:19 <Taneb> SKYNET SEEKS IDLE COMPUTER POWER 16:31:25 <elliott> hahahaha 16:31:31 <Taneb> 1 MILLION EUROS TO FUND WINDOWS CLONE 16:31:32 <elliott> why would you name anything Skynet? 16:31:38 <elliott> like, ever 16:31:43 <ais523> elliott: because it's a cloud computing project related to astronomy 16:31:48 <ais523> so they must have thought it was a good pun 16:32:33 <Taneb> LEGAL ACTION ON COLLEGE BOOK PLAN 16:32:37 <elliott> Blagging firms 'get away with it' 16:32:38 <elliott> Blagging of personal data goes far beyond the media but debt collectors and other firms are getting away with it, warns the information commissioner. 16:32:48 <elliott> I can't interpret this as anything other than "blagging" as in blogging 16:32:52 <Taneb> Same 16:33:14 <ais523> elliott: I thought that term was xkcd-specific 16:33:29 <Taneb> According to BBC, it means something else 16:33:33 <Taneb> Equally despicable 16:33:37 <elliott> ais523: is there anything xkcd-specific that hasn't blended into "nerd culture" a bit? 16:33:48 <elliott> 'Beggars belief' 16:33:49 <elliott> blaggars belief 16:34:02 -!- FireFly has joined. 16:34:03 <ais523> elliott: well, normally it's as an xkcd reference 16:34:04 <elliott> Blaggers could be jailed - Clegg 14 JULY 2011, POLITICS 16:34:04 <elliott> What is blagging? 12 JULY 2011, UK 16:34:04 <elliott> teeheehee 16:34:25 <ais523> the original meaning of "blagging" was persuading people to give you things for free 16:34:38 <ais523> basically, just walking into a shop and asking if you could have some of their stuff for free, and actually getting it 16:34:51 <ais523> some people got really good at it, mostly celebrities 16:34:52 <Taneb> I actually did that 16:34:53 <elliott> ais523: good term, good activity 16:34:56 <Taneb> With a book 16:35:01 <Taneb> Never read it 16:35:08 <elliott> "The system's developers say it runs all Windows programs, but is much faster than its Microsoft equivalent." 16:35:08 <elliott> ReactOS runs all Windows programs now? 16:35:09 -!- calamari has joined. 16:35:20 <elliott> "The venture's project coordinator, Moscow-based Aleksey Bragin, said that the system was almost ready to go from the experimental to the available-to-all stage." 16:35:21 <elliott> seriously? 16:35:22 <Taneb> The Portrait of Dorian Grary 16:35:29 <elliott> did ReactOS stop being a buggy piece of crap in the last four years? :P 16:35:42 <Taneb> The president of Russia is interested in it 16:35:45 <Taneb> So probably not 16:35:55 <ais523> elliott: I thought ReactOS was typically more or less level with Wine in compatibility 16:36:04 <ais523> as Wine is ReactOS's userland libraries, effectively 16:36:13 <elliott> Taneb: In Soviet Russia, the government says that is assassinated by YOU! 16:36:20 <elliott> s/that is/that and is/ 16:36:41 <elliott> Anyone? No? 16:37:49 <elliott> fromBBC USA: Exclusively for Stay at home Mother cahootdavies@sofitel.com 16:37:54 <elliott> BBC USA is exclusively for stay at home mother onw? 16:37:55 <elliott> now? 16:38:18 <Phantom_Hoover> elliott, yes. 16:38:27 <elliott> Ah. 16:38:49 <elliott> "How can you program if you're blind? - Stack Overflow" 16:38:51 <elliott> seriously, SO? 16:40:08 <ais523> screen readers are quite capable of handling punctuation 16:40:16 <ais523> although I imagine a punctuation-light language would be faster to read 16:40:27 <ais523> there are blind people who play NetHack using a screen reader and a virtual cursor 16:40:32 <elliott> apparently braille displays are sometimes used for deeply-nested punctuation 16:40:37 <elliott> ais523: oh, there are? I think I had an argument about that in here once 16:40:47 <elliott> ais523: blind from birth, or previously sighted? 16:40:48 <ais523> elliott: well, according to the devteam 16:40:53 <ais523> I don't know 16:40:56 <elliott> alright 16:40:57 <Jafet> RL zen conduct 16:41:18 <ais523> I've heard that braille displays are a pain to use for long periods of time 16:41:19 <elliott> it's obviously possible for the latter... I dunno how good blind from birth people are at grid-based reasoning 16:41:24 <ais523> not having tried, I wouldn't know 16:42:08 <ais523> elliott: they're going to need spatial awareness whether they can see or not 16:42:13 <elliott> "20-20 vision is required for fighter pilots. I have no qualms about requiring color vision for programmers. Everyone does not need to be a programmer." --Chuck Moore, 2001, who now has terrible eyesight, and still (to my knowledge) codes 16:42:24 <elliott> ais523: yes, what i'm saying is that if you were previously sighted, you'll have spatial intuition 16:42:36 <elliott> so it's obviously possible to play nethack 16:42:48 <elliott> I don't know if blind-from-birth people have spatial intuition like that 16:42:55 <ais523> spatial intuition doesn't have that much to do with sightedness 16:43:03 <ais523> I'd say blind people need more of it, to figure out what's around them without sight 16:43:06 <elliott> [–]sourabhdeveloper -1 points 43 minutes ago 16:43:07 <elliott> How can anyone read your article if he/she is blind? Think about it 16:43:07 <elliott> permalinkreportreply 16:43:13 <elliott> ais523: hmm, indeed 16:44:09 <elliott> ais523: hey, you're doing the secret project, mind if I ask you a question about low-level Linux memory management? :-P 16:44:19 <ais523> I don't mind, although I might not know the answer 16:44:54 <ais523> I went and reimplemented mmap-at-variable-location in terms of mmap-at-fixed-location, and also turned off ASLR so that the heap, stack etc have consistent locations 16:44:59 <elliott> ais523: Is there a way to preserve some of the address space across an exec() of yourself? I know I can use POSIX shm and the like and map it back to avoid copies, but since there's no guarantee you can map it to the same address, all pointers could be invalidated 16:45:03 <elliott> which sucks 16:45:20 <elliott> so I'm wondering if there's a way to just "keep this memory" 16:45:29 <elliott> and pass the addresses on to the new process (with argv) 16:45:36 <ais523> if it's mapped to a file, there'd be no issue 16:45:49 <ais523> as you could just use the same file 16:45:50 <elliott> yes there would be 16:45:58 <elliott> because there's no guarantee you can map it to the same address 16:46:02 <ais523> umm, shared-mapped to a file 16:46:04 <elliott> so all pointers inside would be invalidated 16:46:07 <ais523> oh, you want the same address too? 16:46:17 <elliott> ais523: yes, which obviously is not possible if you make a /new/ mapping 16:46:17 <Jafet> Keep respawning until it works 16:46:23 <elliott> so I'm wondering if there's a way to just preserve the old one 16:46:24 <ais523> if you turn off ASLR, that's not an issue 16:46:31 <elliott> that's not an option 16:46:35 <ais523> with it on, I don't think you can preserve the old one 16:46:45 <ais523> (also, you can turn it off for one process using personality(2)) 16:46:50 <monqy> oh no i missed elliott noticing gecho 16:46:55 <elliott> ais523: hmm 16:47:03 <elliott> ais523: I suppose it might work, but I'm reluctant to do that 16:47:09 <ais523> agreed 16:47:15 <ais523> I'm not sure if there's a non-hacky way, unfortunately 16:47:19 <elliott> ais523: the usecase here is a seamless upgrade command that self-execs to preserve socket fds 16:47:23 <elliott> (mcmap) 16:47:37 <elliott> but the problem is, there could be from like five megs to a gig of map data 16:47:43 <elliott> and that has to be preserved across the update 16:47:46 <Jafet> What's wrong with my solution 16:48:00 <ais523> elliott: and contains pointers, presumably 16:48:01 <elliott> Jafet: it's terrible and might not even work at all :P 16:48:14 <Jafet> Sure, it might not work in 32-bit address spaces, but those are like deprecated. 16:48:23 <elliott> ais523: yes; it uses a glib hash table, and has SDL surfaces inside -- and sdl surfaces contain pointers you can't fiddle with 16:48:47 <elliott> ais523: it /could/ be rewritten under the assumption that non-relative pointers won't work 16:48:49 <elliott> but bleh 16:49:14 <ais523> elliott: instead of execing, what about remapping the executable? 16:49:20 <elliott> ais523: the currently planned solution is that, there's some regionfile code that was being worked on before, that swapped out regions of the map to disk (in Minecraft's native formats), etc., to avoid being a massive RAM hog 16:49:29 <elliott> so, we can just turn that on always, and it'll work 16:49:34 <elliott> and it could be pointed at /tmp 16:49:37 <elliott> but that uses up disk 16:49:46 <elliott> or, might just not work at all, if /tmp isn't big enough and you don't want to use up disk 16:49:50 <elliott> ais523: hmm, howso? 16:50:32 <ais523> well, an executable gets mapped three times (as readonly, readwrite, readexecute) 16:50:56 <ais523> and if you replaced just those mappings, together with the stuff you didn't want to keep, things might work 16:51:09 <ais523> I'm not convinced they would, though; or at least, it might be really difficult to work out 16:52:25 <elliott> ais523: heh 16:52:40 <elliott> ais523: the problem is that I want library state to be reset 16:53:18 <Taneb> Tetosterone poisining typing 16:53:26 <Taneb> Like strong typing but stonger 16:53:52 <elliott> Taneb: Ada :P 16:54:12 <ais523> or VHDL, because it's designed to be as like Ada as possible 16:54:41 <elliott> ais523: I guess the regionfile code is the best path, then 16:54:49 <elliott> especially as I'd like to write the equivalent for Windows, too 16:54:56 <elliott> and also be relatively portable for POSIX systems 16:55:00 -!- augur has joined. 16:55:12 <ais523> I'm trying to remember if windows even has an exec 16:55:18 <ais523> I know Windows 3.1 did 16:55:25 <ais523> but I'm not sure if it's been updated for later versions 16:55:26 <elliott> ais523: no, but it has a createprocess thing that lets you keep fds, theoretically 16:55:31 <elliott> hmm, well it might have exec 16:55:33 <elliott> but i doubt it keeps fds 16:55:49 <ais523> FDs are a bit of a weird concept as Windows goes 16:55:49 <elliott> ais523: 10:41:13: <fizzie> elliott: As for Windows, no, I don't think it has the proper sort of exec; it's all by CreateProcess there. But at least for files you can specify SECURITY_ATTRIBUTES that let the handle be inherited by child processes; presumably that could be possible for sockets *somehow*. 16:55:56 <elliott> 17:07:00: <fizzie> The file thing should work on Windows too, it just needs the proper CreateFile calls. (In particular the SECURITY_ATTRIBUTES needs bInheritHandle of true, and dwShareMode that FILE_SHARE_DELETE for the delete-before-close... and I'm not entirely sure how you pass an inherited handle. Oh, and then of course you'd have to make the sockets inheritable somehow, that might be more complicated.) 16:55:57 <ais523> it likes using all sorts of bizarre lockable handles instead 16:55:59 <ais523> internally 16:56:32 <elliott> (The "file thing" is another part of the hack.) 16:56:45 <elliott> (We create a temporary file, unlink it, write data to it, seek to position 0, then pass the fd on to the new process.) 16:56:52 <elliott> (It reads all the serialised data from it.) 16:57:04 <ais523> where locking something doesn't just prevent other things accessing it, but causes it to have an actual memory location 16:57:08 <ais523> and prevents it being swapped out 16:57:17 <ais523> Windows' API was invented before virtual memory was 16:57:19 <elliott> heh 16:57:48 <ais523> (Windows 3.1 was capable of using virtual memory if it was present, but that was in an "enhanced mode", and it had another mode where it wouldn't) 16:58:16 <ais523> memory leaks were pretty easy in 3.1, as memory wasn't cleaned up on program exit 16:58:23 <ais523> it is nowadays, I think/hope 16:58:32 <Phantom_Hoover> XD 16:58:52 <ais523> 3.1 is the only version of Windows that I actually have a reasonable understanding of 16:58:55 <ais523> I used to program for it 16:58:55 <Taneb> An incredibly weakly typed esolang 16:59:01 <ais523> back before I knew UNIX existed 16:59:09 <elliott> you actually have to free() all memory before exit on old windows? wow 16:59:21 <elliott> I thought that was just programming superstition 16:59:36 <ais523> on DOS, too, but it's more obvious there 17:00:24 <elliott> wow, SDL 1.3 is introducing multiple windows 17:00:35 <ais523> you were also supposed to close files while not using them 17:00:42 <elliott> <JeZ-l-Lee> droidevr - Hi! - check out a new screenshot of development!: http://16bitsoft.com/files/CT/images/Desktop_09-13-2011.png 17:00:43 <elliott> oh my god 17:00:44 <ais523> as files couldn't be opened by more than one process at a time 17:00:46 <itidus20> holy poop on a stick 17:00:47 <elliott> everyone click on that and look at the code header 17:00:49 <elliott> just 17:00:50 <elliott> look at it 17:01:10 <monqy> wow what 17:01:17 <ais523> I did, it doesn't seem too out of place 17:01:18 <itidus20> my holy poop on a stick was for sdl 1.3 17:01:37 <elliott> ais523: it's ridiculous! 17:01:49 <elliott> http://16bitsoft.com/T-Crisis3AI--HTML5/advertising/T-C3AI-HTML5-Title.png oh my god 17:01:58 <ais523> have you not seen ASCII art code headers before? 17:02:04 <Phantom_Hoover> Pimp my code header. 17:02:05 <elliott> ais523: not ones /that/ gratuitous 17:02:10 <Jafet> elliott has never opened nfo files 17:02:15 <elliott> ais523: and I tend to avoid them, because I tend to try and not read awful code 17:02:21 <calamari> lol that's tame compared to most 17:02:22 <elliott> Jafet: nfo files don't go through cc! 17:02:54 <elliott> :'( 17:03:10 <elliott> This company was created in 2010 by Autistic Savant game programmer JeZ+Lee. 17:03:10 <elliott> 17:03:10 <elliott> JeZ+Lee is most widely recognized for his game "T-Crisis 100%" for Palm® OS PDAs/SmartPhones. 17:03:10 <elliott> Originally offered to E.A.Games® for $4,000, E.A. did not publish it. 17:03:10 <elliott> E.A. then proceeded to sue JeZ+Lee and force him not to distribute the game for a profit. 17:03:10 <elliott> JeZ+Lee thought a while and then published the game as freeware on cnet®'s Download.com site. 17:03:11 <Jafet> Neither do comments 17:03:12 <elliott> The game became a #1 smash hit, with a total of 500,000+ downloads before E.A. sued cnet®. 17:03:14 <elliott> cnet® was unfortunately forced to stop distributing "T-Crisis 100%". 17:03:16 <elliott> 17:03:18 <elliott> JeZ+Lee was devastated. 17:03:21 <elliott> But he continued forward, making more games... 17:03:22 <elliott> what an inspiring story 17:03:37 <elliott> Jafet: they should do 17:03:40 <ais523> "JeZ+Lee" is one person? it sounds like the name that two people would have 17:03:43 <elliott> everyone should have to make their comments valid C 17:03:55 <ais523> or invalid INTERCAL 17:03:56 <calamari> I liked the multiple page scrolling ansi bbs ads back in the day 17:03:58 <elliott> /* FIXME("total hack"); */ 17:04:01 <elliott> in a header file somewhere: 17:04:07 <elliott> /* void FIXME(char *s) {} */ 17:04:24 <Jafet> No, comments are for profanity 17:04:42 <itidus20> calamari: i like those extra files included with video games. 17:04:47 <Taneb> In this esolang, the epoch of the date type is the Assassination of Julius Ceasar 17:05:02 <Jafet> I guess you could do #define the \ #define fucking 17:05:13 <itidus20> for instance, the original advert of quake was included with commander keen 17:05:50 <elliott> maybe you can enable comment execution 17:05:59 <elliott> /* void FIXME(char *s) { puts("Fixed it yet?"); } */ 17:06:09 <elliott> then the generated code is even included at runtime :P 17:06:15 <ais523> DO REINSTATE COMMENTS 17:06:23 <Jafet> PLEASE 17:06:27 <ais523> stop suggesting standard INTERCAL features 17:06:33 <itidus20> elliott: jez+lee includes a souped up car engine with their code 17:06:43 <elliott> ais523: haha 17:06:55 <ais523> (well, CLC- and C-) 17:06:56 <elliott> ais523: maybe I need to start using intercal 17:07:51 <ais523> it's not normally a very /useful/ command, but it's there 17:07:53 <itidus20> i did a search, this is what jez+lee gives you: http://farm4.static.flickr.com/3525/3203910088_031a3b9a7a_z.jpg 17:08:24 <elliott> 02:43:02: <itidus20> if i have.. 17:08:24 <elliott> 02:43:12: <itidus20> 6 pebbles 17:08:25 <elliott> 02:43:20: <itidus20> and i am at the beach 17:08:25 <elliott> 02:43:48: <itidus20> can i use lambda calculus to add 1 pebble to 2 pebbles? 17:08:25 <elliott> no. this is a famously unsolvable problem. ask oerjan 17:08:38 <ais523> it's up there with DO ABSTAIN FROM REINSTATING as methods to break your program very quickly 17:09:03 <elliott> 02:45:29: <itidus20> if i have 5 pebbles and 6 apples... and i am sitting at the beach, can I perform the calculation 2 pebbles x 3 pebbles = 6 apples by applying lambda calculus 17:09:04 <elliott> it is illegal to use lambda calculus at the beach, at least from the 90s onwards in most european countries and the USA 17:09:33 <itidus20> you crazy log reading bastards i infer that you have literally no life outside of irc 17:09:33 <Taneb> This program language I'm making is weakly typed but doesn't convert types at all 17:09:48 <elliott> itidus20: it only takes like half an hour a day 17:10:11 <itidus20> :P 17:10:16 <Taneb> '9' + 8 equals 'A' or 65, depending on context 17:10:24 <Jafet> Normal people do other things during that time, like go to the beach to perform lambda calculus. 17:10:28 <itidus20> elliott: ok suppose i asked... did i describe applied calculus there? 17:10:30 <elliott> Jafet: Yes. 17:10:40 <elliott> itidus20: calculus does indeed mean pebble 17:10:52 * itidus20 pulls my hair out 17:11:06 <itidus20> :D 17:11:06 <ais523> elliott: I think the etymology is in the individual stones on abaci, isn't it? 17:11:40 <elliott> 04:26:08: <Gregor> http://codu.org/tmp/drell6-2011-09-13.ogg ACK I'M STILL DOING THESE 17:11:40 <elliott> this is nice 17:11:42 <elliott> ais523: dunno, might be 17:12:12 <oklopol> jkjlhn 17:12:21 <ais523> what's a drell? 17:12:23 <ais523> o 17:12:38 <monqy> http://16bitsoft.com/T-Crisis3AI--HTML5/T-Crisis3AI.html this is great 17:12:41 <elliott> 07:39:02: <monqy> CakeProphet: http://sourcereal.com/ 17:12:41 <elliott> help 17:12:55 <monqy> sourcereal.com is also great 17:12:57 <Taneb> itidus20: Lambda calculus is like making a box out of pebbles, and when you put n apples in, it gives you 3n apples 17:13:19 <elliott> monqy: lame, that's not a compilation from SDL/C 17:13:21 <elliott> to js 17:13:27 <Taneb> That would be  λn.3n 17:13:33 <monqy> elliott: the about button is good 17:13:39 <elliott> Taneb: unlikely 17:13:51 <elliott> λn. mult 3 n, given appropriate definitions of mult and 3, yes 17:13:52 <itidus20> Taneb: a black box with stylized input chutes and dispensors? 17:13:54 <oklopol> so this weird rant of itidus20 that's been going on for days, is it about lc only being tc but not quite bf complete? 17:13:55 <ais523> Taneb: now you just need some rot and some string, and it's TC 17:14:01 <oklopol> or what 17:14:03 <elliott> oklopol: no, it's about him not having any idea what LC is 17:14:07 <oklopol> i see 17:14:20 <elliott> oklopol: and mumbling something about how it must only be useful in its "impure" form, which means with primitive functions not defined in LC, because he doesn't understand it 17:14:23 <oklopol> it seems he was of the opinion you need addition or it's just pointless 17:14:31 <oklopol> right 17:14:33 <ais523> if you know what a higher-order function is, lambda calculus is pretty easy to understand 17:14:40 <ais523> although it's a little harder to see why it's useful 17:14:45 <elliott> this is because he's reading random snippets of wikipedia articles, or something, in lieu of actually trying to read something about the lambda calculus 17:14:52 <elliott> hope this helps 17:14:59 <oklopol> kind of how all you want to do is rape parrots, bf is only useful in its impure form where you have the rape a parrot command 17:15:06 <oklopol> *how if 17:15:11 <elliott> (why does this one have its title shown twice, and why does it say "edit conflict" on blank summaries and ask for another captcha?) 17:15:12 <elliott> is this one of us 17:15:30 <Taneb> But the beuaty of lambda calculus is when you've got a pepplebox that when you put a pepplebox in it... 17:15:38 <ais523> it's probably the editfilter extension 17:15:38 <Taneb> GIVES YOU A DIFFERENT PEBBLEBOX 17:15:46 <elliott> ais523: I mean, that editor 17:15:50 <ais523> which can be set to do all sorts of nasty things to what it thinks might be spambots 17:15:50 <Taneb> Or the same pepplebox 17:16:28 <ais523> last I checked, the "instantly ban and desysop" setting was disabled in the configuration, but it's fun to know it exists 17:16:47 <elliott> 11:46:44: <Deewiant> In Markdown, * inside `` doesn't result in emphasis 17:16:47 <elliott> 11:46:51: <Deewiant> And asterisks outside code are rare 17:16:49 <elliott> Deewiant: The problem is more underscores 17:16:53 <itidus20> umm... i have some more LC info to ruminate anyway so it should be ok 17:16:56 <elliott> foo_bar_baz DTWrongT in markdown by default 17:17:01 <elliott> github's markdown derivative fixes that, though 17:17:04 <elliott> ais523: haha 17:17:16 <monqy> i'm tempted to make a language about pebble boxes but it;d probably be so bad 17:17:22 <ais523> (as in, you need server access to undisable it) 17:17:30 <itidus20> well LC is about functions right? 17:17:42 <ais523> so how did Markdown end up as *italics* _bold_ anyway? 17:17:48 <Deewiant> elliott: Underscores outside code are rare 17:17:51 <elliott> 13:42:03: <ais523> elliott (from the logs): if you want to confuse Esolang admins, do what Tekknolagi has been doing, he's been making productive and very useful posts with metadata that makes me think they're spam until I read them 17:17:52 <monqy> itidus20: no it's about beaches and apples and pebbles and boxes 17:17:54 <ais523> more usual is *bold* /italic/ _underlined_ 17:17:54 <oklopol> itidus20: yes 17:17:55 <elliott> ais523: gecho is productive and very useful? 17:18:00 <elliott> <ais523> so how did Markdown end up as *italics* _bold_ anyway? 17:18:01 <elliott> _italic_ 17:18:09 <Deewiant> _emphasis_ 17:18:12 <ais523> oh, the page I was looking at was italicising on ** 17:18:13 <elliott> bold is **bold** 17:18:15 <Deewiant> How it's rendered is up to the CSS 17:18:17 <Deewiant> **strong** 17:18:19 <elliott> or __bold__, even, I dunno 17:18:22 <ais523> as in, *italic* 17:18:26 <itidus20> and i think I understand functions in general. y = f(m,x,c) .. int main(void) ... int add(int a, int b).. etc 17:18:26 <ais523> so it must have been some weird CSS involved 17:18:29 <Deewiant> And yes, *_ are interchangable 17:18:34 <elliott> Deewiant: Nobody has ever bought em vs. strong and nobody ever will :P 17:18:35 <ais523> Deewiant: ouch 17:18:41 <monqy> itidus20: _you're doing it wrong_ 17:18:45 <elliott> Even the html5 guys admit it's bullshit, I think b and i are now the recommended tags for that 17:18:46 <Deewiant> Well, not interchangeable, they have to match 17:18:49 <oklopol> itidus20: sure sure 17:18:50 <ais523> elliott: I use them if I remember and I'm writing a website rather than commenting on one 17:18:52 <Deewiant> *_x*_ won't work 17:19:03 <oklopol> those are functiony things 17:19:13 <elliott> monqy: let's let oklopol teach 17:19:18 <Deewiant> elliott: Aren't they just renaming em and strong 17:19:19 <monqy> ok 17:19:26 <oklopol> i teach for a living so. 17:19:33 <ais523> having two different syntaxes for one thing that aren't part of two different sets is awful and abhorrent 17:19:36 <itidus20> as far as i know, a function is a set of zero or more parameters which is rewritten into the invoking/calling expression in some way 17:19:36 <elliott> Deewiant: Maybe :P 17:19:43 <ais523> as in, I can understand, say, ''italic'' versus <i>italic</i> 17:19:50 <ais523> but not *italic* versus _italic_ 17:19:56 <oklopol> itidus20: for various meanings of what you just said, yes 17:20:05 <Taneb> In lambda calculus, function have to have EXACTLY ONE, unless you do currying 17:20:05 <ais523> elliott: underscores are pretty common in usernames, that isn't programming 17:20:19 <elliott> ais523: I never said foo_bar_baz dtrt 17:20:21 <elliott> I said it dtwrongt 17:20:26 <ais523> well, yes 17:20:32 <itidus20> hmm i see 17:20:42 <Taneb> Currying is a sneaky way of making a 1-input function act like a multi-input function 17:20:45 <oklopol> that's irrelevant 17:20:47 <ais523> Taneb: try not to take that too literally 17:20:51 <oklopol> the currying i mean 17:21:00 <ais523> ICA didn't have any way to take elements from tuples for ages, because they existed 17:21:05 <ais523> *although they existed 17:21:16 <elliott> 14:33:42: <monqy> os designed for image processing? I don't know much about haiku other than I probably wouldn't like it 17:21:21 <oklopol> you can add multivaria 17:21:23 <ais523> in the end, I relented and added the "\(x,y) -> x" syntax that everyone assumed was obvious 17:21:26 <oklopol> ble funcs to lc 17:21:28 <elliott> monqy: I've never heard that before; it's just BeOS' open-source successor 17:21:34 <itidus20> so currying basically means nesting functions without any kind of processing between the nestings 17:21:37 <oklopol> without changing it 17:21:37 <ais523> oklopol: indeed, there's just not much of a point 17:21:46 <oklopol> ais523: nicer to write 17:21:56 <ais523> when currying always works, and if you have tuples they work too 17:22:01 <Taneb> itidus20: Yes 17:22:04 <itidus20> the whole λm.(λx.(λc.( ... ))) 17:22:10 <monqy> elliott: If I remembered who said image processing I'd be eyeing him/her suspiciously 17:22:13 <Taneb> That's the ticket, itidus20 17:22:24 <elliott> monqy: DHridiculousamountsofunderscores 17:22:31 <oklopol> well certainly no point in adding functions that can't be curried, i just mean the syntax 17:23:11 <ais523> `greplogs image processing 17:23:12 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: greplogs: not found 17:23:13 <itidus20> if you couldn't curry then i can imagine you would run into a great deal of trouble 17:23:22 <Taneb> A GREAT DEAL 17:23:28 <monqy> a great deal 17:23:32 -!- zzo38 has joined. 17:23:34 <Taneb> Currying is practically the whole point of λcalculus 17:23:44 <zzo38> I think the real-time-clock in my computer is slow 17:23:45 <elliott> 15:17:21: <Phantom_Hoover> Admittedly, Linux is a much bigger target than Windows, but not to the extent of making me want to wade through Windows' UI and system. 17:23:48 <elliott> Phantom_Hoover: A much bigger target than eh? 17:23:57 <elliott> ais523: ooh, greplogs sounds useful 17:24:03 <elliott> ais523: I'll have to ask Gregor to install an appropriate symlink to the logs 17:24:03 <oklopol> i don't know what it would mean not to have currying in lc 17:24:14 <monqy> oklopol: a great deal of trouble 17:24:20 <ais523> elliott: I was pretending it existed in the hope someone would implement it 17:24:26 <ais523> (also, I'm used to !grepsrc in #nethack) 17:24:30 <elliott> Gregor: Ping 17:24:37 <zzo38> I do want to grep logs as well 17:24:51 <Gregor> D'aww piffle. 17:25:03 <elliott> Gregor: Can you just install a symlink into HackEgo? :P 17:25:19 <elliott> Just add a symlink from the glogbot esoteric logs directory into /usr/share/logs. 17:25:22 <Gregor> HackEgo is in a chroot. 17:25:22 <elliott> Thx 17:25:25 <oklopol> i mean i don't know what that means, unless you have that \x y -> something shorthand 17:25:29 <elliott> Can't chroots have symlinks to outside them? 17:25:31 <elliott> Pretty sure they can. 17:25:38 <elliott> `url bin/quote 17:25:40 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/quote 17:25:59 <oklopol> meant to say i literally don't know what that means, now i just repeated what i said earlier 17:26:28 <Gregor> `ls /var/irclogs 17:26:30 <Taneb> λ calculus without currying would be like SKI combinatory logic without S 17:26:31 <HackEgo> ls: cannot access /var/irclogs: No such file or directory 17:26:33 <Gregor> Hm 17:26:35 <itidus20> perhaps currying is just a nice application of LC 17:26:38 <Gregor> Oh, derr 17:26:39 <elliott> Gregor: Grossest dirname possible :P 17:27:03 <zzo38> Is read-only mirror possible through a device driver or something like that? 17:27:07 <oklopol> what do you mean by currying? 17:27:14 <ais523> elliott: worse than /bin/irclogs? 17:27:20 <ais523> or /lost+found/irclogs? 17:27:21 <elliott> ais523: heh 17:27:24 <Gregor> `ls /var/irclogs 17:27:26 <HackEgo> ​_ai \ _corewars \ _esoteric \ _esoteric-minecraft \ _glogbot \ _matrixofsolidity \ _plof \ _scapegoat \ index.php \ log \ log.css \ log.js \ raw \ stalker.php 17:27:28 <Taneb> I think I may have to go now 17:27:31 <elliott> Gregor: Thanks 17:27:34 -!- Taneb has quit (Quit: TTFN). 17:27:34 <elliott> I'm working on the script now 17:27:51 <zzo38> `ls /var/irclogs/_esoteric 17:27:53 <HackEgo> 2003-01-18-raw.txt \ 2003-01-18.txt \ 2003-01-19-raw.txt \ 2003-01-19.txt \ 2003-01-20-raw.txt \ 2003-01-20.txt \ 2003-01-21-raw.txt \ 2003-01-21.txt \ 2003-01-22-raw.txt \ 2003-01-22.txt \ 2003-01-23-raw.txt \ 2003-01-23.txt \ 2003-01-24-raw.txt \ 2003-01-24.txt \ 2003-01-25-raw.txt \ 2003-01-25.txt \ 2003-01-26-raw.txt 17:27:59 <itidus20> lets forget it for now... i can do some study on it and return again with more ridiculous analgoies 17:28:21 <elliott> `run echo '#!/bin/sh' >bin/log 17:28:22 <HackEgo> No output. 17:28:33 <elliott> `run echo 'egrep -i -- "$1" /var/irclogs/_esoteric/????-??-??.txt | shuf -n 1' >>bin/log 17:28:35 <HackEgo> No output. 17:28:36 <elliott> `run chmod +x bin/log 17:28:38 <HackEgo> No output. 17:28:40 <elliott> `url bin/log 17:28:42 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/log 17:28:49 <elliott> `log hello 17:28:53 <zzo38> Gregor: Another thing about the IRC logs: It doesn't log QUIT messages. I think I understand the reason why it doesn't do that in individual channel logs, but it still ought to be cvorrected. 17:28:56 <elliott> That'll probably not terminate :P 17:29:09 <HackEgo> ​/var/irclogs/_esoteric/2009-07-07.txt:04:06:48: <EgoBot> Installed user interpreters: aol austro b1ff bc bct bfbignum brit brooklyn chef chiqrsx9p choo cockney ctcp dc drawl dubya echo ehird fudd google graph gregor hello jethro kraut num ook pansy pirate plot postmodern postmodern_aoler redneck reverse rot13 sadbf sfedeesh 17:29:16 <elliott> ais523: Tada, except ugly filename 17:29:18 <elliott> I'll fix that 17:29:21 <elliott> `run echo '#!/bin/sh' >bin/log 17:29:23 <HackEgo> No output. 17:29:29 <elliott> `run echo 'cd /var/irclogs/_esoteric' >>bin/log 17:29:30 <oklopol> i really don't know what it means in lc context since in the usual syntax, functions just have one arg, currying is just a name for the definition that \x y -> z means \x -> \y -> z. but what else could it mean in lc 17:29:30 <HackEgo> No output. 17:29:39 <elliott> `run echo 'egrep -i -- "$1" ????-??-??.txt | shuf -n 1' >>bin/log 17:29:41 <HackEgo> No output. 17:29:42 <elliott> `run chmod +x log 17:29:44 <HackEgo> chmod: cannot access `log': No such file or directory 17:29:49 <elliott> `run chmod +x bin/log 17:29:50 <HackEgo> No output. 17:29:56 <elliott> `log fuck 17:30:05 <HackEgo> 2010-11-15.txt:22:57:22: <ais523> Brainfuck would be a great asteroid name 17:30:09 <ais523> oklopol: if you have tuples, currying is a function of type ((a, b) -> c) -> (a -> b -> c) 17:30:21 <elliott> `run cat /var/irclogs/_esoteric/????-??-??.txt | shuf -n 1 17:30:30 <HackEgo> shuf: memory exhausted 17:30:30 <oklopol> that means even less in lc context 17:30:32 <elliott> Thought so 17:30:35 <ais523> @t curry 17:30:35 <lambdabot> Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v 17:30:40 <elliott> ais523: :t 17:30:42 <ais523> @type curry 17:30:43 <lambdabot> forall a b c. ((a, b) -> c) -> a -> b -> c 17:30:43 <elliott> or @ty 17:30:46 <elliott> but :t is better 17:30:47 <zzo38> Gregor: Are you capable of correcting the problem I ask you about, please? 17:31:23 <oklopol> yeah it certainly means that in haskell, but people also say functions are curried in haskell 17:31:28 <elliott> ais523: Do you know a good data structure for regexp-grepping like a hundred megs of text? :P 17:31:38 <ais523> `run cat `echo /var/irclogs/_esoteric/????-??-??.txt | shuf -n 1` | shuf -n 1 17:31:40 <Jafet> Suffix tree 17:31:47 <HackEgo> shuf: memory exhausted 17:31:50 <elliott> ais523: um, what? 17:31:54 <elliott> oh, I see 17:32:00 <elliott> there's an easier way to do that 17:32:08 <elliott> `run shuf -en 1 /var/irclogs/_esoteric/????-??-??.txt 17:32:10 <Jafet> Well, that depends on whether you're making a data structure for the text or the regexp 17:32:10 <HackEgo> ​/var/irclogs/_esoteric/2006-09-11.txt 17:32:18 <elliott> `run shuf -n 1 `shuf -en 1 /var/irclogs/_esoteric/????-??-??.txt` 17:32:20 <HackEgo> 22:16:42: <oklopol> counterpart number... 17:32:22 <ais523> elliott: oh right, spaces versus newlines 17:32:23 <elliott> `run shuf -n 1 `shuf -en 1 /var/irclogs/_esoteric/????-??-??.txt` 17:32:25 <HackEgo> 19:14:57: <AnMaster> ais523, anyway what is worse in this case (which is horrible php code), is that while pdo is supposed to be an abstraction layer, it is kind of useless when it returns mysql blobs as strings and postgresql bytea as streams 17:32:30 <elliott> ais523: it's not a very accurate shuffler though 17:32:31 <elliott> but ok 17:32:33 <elliott> I'll write it in 17:32:35 <elliott> `url bin/log 17:32:37 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/log 17:32:44 <ais523> it's not massively inaccurate 17:32:53 <ais523> probably about as good as Wikipedia's random page thing 17:33:05 <elliott> `log test 17:33:09 <HackEgo> 2011-02-07.txt:19:17:34: <Vorpal> !bfjoust test (>[-].)*20 17:33:45 <elliott> `fetch http://sprunge.us/fdRJ 17:33:46 <HackEgo> 2011-09-13 17:33:46 URL:http://sprunge.us/fdRJ [185] -> "fdRJ" [1] 17:33:51 <elliott> `run mv fdRJ bin/log; chmod +x bin/log 17:33:53 <ais523> elliott: oh, miscellaneous thing that annoys me about darcs: it interprets SIGPIPE as an error 17:33:53 <HackEgo> No output. 17:33:55 <elliott> `log 17:33:57 <HackEgo> 2008-03-29.txt:11:52:14: <AnMaster> heh 17:34:01 <elliott> `log 17:34:02 <HackEgo> 2011-07-14.txt:05:52:36: <elliott> coppro: This is Haskell, we expect multipage blog posts :) 17:34:08 <elliott> `log This is Haskell, we 17:34:11 <HackEgo> 2011-07-14.txt:05:52:36: <elliott> coppro: This is Haskell, we expect multipage blog posts :) 17:34:40 <elliott> `run seq 99 17:34:41 <HackEgo> 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9 \ 10 \ 11 \ 12 \ 13 \ 14 \ 15 \ 16 \ 17 \ 18 \ 19 \ 20 \ 21 \ 22 \ 23 \ 24 \ 25 \ 26 \ 27 \ 28 \ 29 \ 30 \ 31 \ 32 \ 33 \ 34 \ 35 \ 36 \ 37 \ 38 \ 39 \ 40 \ 41 \ 42 \ 43 \ 44 \ 45 \ 46 \ 47 \ 48 \ 49 \ 50 \ 51 \ 52 \ 53 \ 54 \ 55 \ 56 \ 57 \ 58 \ 59 \ 60 \ 61 \ 62 \ 63 \ 64 \ 65 \ 66 \ 67 17:34:46 <elliott> `run seq 99 | paste 17:34:47 <ais523> `log denotational semantics 17:34:48 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27534 17:34:51 <HackEgo> 2010-12-29.txt:23:25:33: <elliott> someone did some denotational semantics thing 17:35:05 <Gregor> <zzo38> Gregor: Are you capable of correcting the problem I ask you about, please? // I am aware of the problem. I am not aware of why it happens, and so not easily able to fix it. 17:35:14 <ais523> `log biscuit 17:35:17 <HackEgo> 2007-05-28.txt:00:52:00: <oerjan> no arms, no biscuit 17:35:26 <monqy> `log `log 17:35:29 <HackEgo> 2011-09-13.txt:17:28:49: <elliott> `log hello 17:35:29 <elliott> `fetch http://sprunge.us/QHHG 17:35:30 <HackEgo> 2011-09-13 17:35:30 URL:http://sprunge.us/QHHG [231] -> "QHHG" [1] 17:35:35 <elliott> monqy: lmao 17:35:37 <monqy> `log `log `log 17:35:40 <HackEgo> 2011-09-13.txt:17:35:26: <monqy> `log `log 17:35:42 <elliott> `run mv QHHG bin/pastelog; chmod +x bin/pastelog 17:35:43 <HackEgo> No output. 17:35:45 <ais523> `log the 17:35:50 <elliott> `run mv bin/pastelog bin/pastelogs 17:35:51 <HackEgo> No output. 17:35:52 <HackEgo> 2010-02-19.txt:18:58:26: <Deewiant> If it weren't then it wouldn't be harder than the short, which wouldn't make much sense. :-P 17:35:56 <elliott> `pastelogs death 17:35:58 <monqy> I wonder if... 17:35:58 <HackEgo> ​/hackenv/bin/pastelogs: line 9: syntax error near unexpected token `fi' \ /hackenv/bin/pastelogs: line 9: ` fi | paste' 17:36:01 <elliott> noooo 17:36:03 <elliott> ok wait 17:36:03 <Gregor> PHAIL 17:36:03 <elliott> everyone stop 17:36:05 <elliott> doing things 17:36:06 <elliott> so i can fix this 17:36:22 <elliott> `fetch http://sprunge.us/AiQB 17:36:23 <HackEgo> 2011-09-13 17:36:23 URL:http://sprunge.us/AiQB [233] -> "AiQB" [1] 17:36:28 <elliott> `run mv AiQB bin/pastelogs; chmod +x bin/pastelogs 17:36:30 <HackEgo> No output. 17:36:32 <elliott> `pastelogs death 17:36:33 <HackEgo> ​/hackenv/bin/pastelogs: line 9: syntax error near unexpected token `fi' \ /hackenv/bin/pastelogs: line 9: ` fi) | paste' 17:36:36 <elliott> dfsd[]lsdf 17:37:08 <elliott> `fetch http://sprunge.us/gRjb 17:37:09 <HackEgo> 2011-09-13 17:37:09 URL:http://sprunge.us/gRjb [236] -> "gRjb" [1] 17:37:14 <elliott> `run mv gRjb bin/pastelogs; chmod +x bin/pastelogs 17:37:16 <HackEgo> No output. 17:37:16 <elliott> `pastelogs death 17:37:18 <HackEgo> ​/hackenv/bin/pastelogs: line 9: syntax error near unexpected token `fi' \ /hackenv/bin/pastelogs: line 9: ` fi) | paste' 17:37:21 <elliott> what 17:37:22 <elliott> i fixed that 17:37:23 <elliott> ??? 17:37:31 <elliott> `run mv gRjb bin/pastelogs; chmod +x bin/pastelogs 17:37:33 <HackEgo> mv: cannot stat `gRjb': No such file or directory 17:37:35 <elliott> `pastelogs death 17:37:36 <HackEgo> ​/hackenv/bin/pastelogs: line 9: syntax error near unexpected token `fi' \ /hackenv/bin/pastelogs: line 9: ` fi; } | paste' 17:37:40 <elliott> ;_; 17:37:45 <elliott> oh wait 17:37:49 <elliott> ais523: what terminates a for loop in bash? 17:37:50 <elliott> hint: not fi 17:37:59 <monqy> is it rof 17:38:03 <elliott> it's done 17:38:06 <Gregor> IS IT ELIHW? 17:38:08 <elliott> `fetch http://sprunge.us/cOYQ 17:38:09 <HackEgo> 2011-09-13 17:38:09 URL:http://sprunge.us/cOYQ [233] -> "cOYQ" [1] 17:38:14 <elliott> `run mv cOYQ bin/pastelogs; chmod +x bin/pastelogs 17:38:16 <HackEgo> No output. 17:38:17 <elliott> `pastelogs death 17:38:21 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.8704 17:38:27 <elliott> `pastelogs 17:38:36 -!- zzo38 has quit (Remote host closed the connection). 17:38:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13247 17:38:51 <elliott> Oh, hmm, it should take a count 17:38:57 <monqy> `log `log `log `log `log `log 17:38:59 <elliott> `url bin/paste 17:39:00 <HackEgo> 2011-09-13.txt:17:38:57: <monqy> `log `log `log `log `log `log 17:39:01 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/paste 17:39:15 <elliott> `url bin/quote 17:39:16 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/quote 17:39:45 <monqy> `pastelogs looking ghostly 17:39:49 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15915 17:39:51 <elliott> monqy: how many random logs by default? 17:39:53 <elliott> as in 17:39:54 <elliott> random log lines 17:39:56 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13247 this is twenty 17:40:01 <elliott> i think forty or so 17:40:05 <monqy> ok 17:40:20 <monqy> i like how at the end of your `pastelogs death 17:40:25 <monqy> 2011-09-13.txt:17:35:56: <elliott> `pastelogs death 17:40:25 <monqy> 2011-09-13.txt:17:36:32: <elliott> `pastelogs death 17:40:25 <monqy> 2011-09-13.txt:17:37:16: <elliott> `pastelogs death 17:40:25 <monqy> 2011-09-13.txt:17:37:35: <elliott> `pastelogs death 17:40:27 <monqy> 2011-09-13.txt:17:38:17: <elliott> `pastelogs death 17:40:40 <monqy> it is a nice touch 17:40:42 <elliott> yes 17:40:45 <elliott> `fetch http://sprunge.us/PGWL 17:40:46 <HackEgo> 2011-09-13 17:40:46 URL:http://sprunge.us/PGWL [362] -> "PGWL" [1] 17:40:54 <elliott> `run mv PGWL bin/pastelogs; chmod +x bin/pastelogs 17:40:56 <HackEgo> No output. 17:40:57 <elliott> `pastelogs 17:41:06 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15857 17:41:06 <elliott> Sure is slow :P 17:41:12 <elliott> wtf? 17:41:13 <elliott> that's not forty 17:41:20 <elliott> `run mv PGWL bin/pastelogs; chmod +x bin/pastelogs 17:41:22 <HackEgo> mv: cannot stat `PGWL': No such file or directory 17:41:26 <elliott> `pastelogs 17:41:42 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.12648 17:41:43 <elliott> I like how absurd http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15857 is 17:41:52 <elliott> ais523: there you go 17:42:03 <elliott> although its paste-forty mode is quite thoroughly slow 17:42:05 <elliott> `pastelogs 9 17:42:10 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30821 17:42:12 <ais523> thanks 17:42:16 <elliott> `pastelogs (9) 17:42:18 -!- augur has quit (Remote host closed the connection). 17:42:20 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3504 \ /hackenv/bin/paste: line 14: 281 File size limit exceededcat "$PASTE" > $HACKENV/paste/paste."$PASTENUM" 17:42:28 <elliott> Gregor: Wow :P 17:42:43 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3504 This is a big file :P 17:42:50 -!- augur has joined. 17:43:00 -!- augur has quit (Read error: Connection reset by peer). 17:43:00 <elliott> `url bin/paste 17:43:02 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/paste 17:43:10 <ais523> `logs [aeiou]{20} 17:43:12 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found 17:43:16 <elliott> `rm $HACKENV/paste/paste.3504 17:43:17 <ais523> `log [aeiou]{20} 17:43:18 <elliott> ais523: log/pastelogs 17:43:18 <HackEgo> rm: cannot remove `$HACKENV/paste/paste.3504': No such file or directory 17:43:22 <HackEgo> 2009-10-19.txt:22:43:23: <oklopol> yeeeeeeeeeeeeeeeeeeeees 17:43:26 <elliott> `run rm $HACKENV/paste/paste.3504 17:43:28 <HackEgo> No output. 17:43:30 <ais523> `log [aeiou]{30} 17:43:32 <Gregor> $HACKENV is pwd, y'know :P 17:43:34 <HackEgo> 2009-04-05.txt:23:14:25: <oklopol> ooooooooooooooooooooooooooooooooooooooo 17:43:41 <ais523> `log [aeiou]{40} 17:43:45 <HackEgo> 2011-02-13.txt:18:25:19: <elliott> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGHHHHHHHHHHHHHHHH 17:43:47 <elliott> X-D 17:43:58 <ais523> that's 40? seriously? 17:44:03 <elliott> 2006-11-04.txt:20:01:23: <SevenInchBread> which isn't that terrible... list comprehensions can pretty much do anything lambda could do... 17:44:04 <Gregor> `log [f]{40} 17:44:07 <elliott> CakeProphet: You're stupid in the past 17:44:09 <HackEgo> 2009-02-13.txt:20:38:05: <Slereah2> ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 17:44:16 <Gregor> `log [f]{50} 17:44:20 <HackEgo> 2009-07-06.txt:09:17:31: <EgoBot> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 17:44:21 <elliott> `log f{7}u{12} 17:44:23 <elliott> I hope that produces 0 results 17:44:25 <HackEgo> 2009-06-04.txt:21:29:04: <nooga> FFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 17:44:27 <Gregor> EgoBot was so mad. 17:44:29 <elliott> nooga_ is horrible 17:44:33 <elliott> `pastelogs f{7}u{12} 17:44:37 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.16592 17:44:38 <elliott> List of horrible people being generated as we speak 17:44:38 <ais523> `log [^f]f{7}u{12}[^u] 17:44:42 <HackEgo> 2011-05-12.txt:20:36:33: <EgoBot> ​http://reddit.com/r/fffffffuuuuuuuuuuuu/ 17:44:44 <elliott> haha 17:44:48 <ais523> brilliant 17:44:50 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.16592 is amazing 17:44:55 <elliott> `pastelogs [^f]f{7}u{12}[^u] 17:44:59 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9749 17:45:09 -!- derrik has joined. 17:45:15 <ais523> wow, all the correctly spelt ones have been in reddit URLs 17:45:37 <elliott> Hmm, pastelogs should probably cut it off after a certain limit 17:45:44 <elliott> A limit much smaller than HackEgo's :P 17:45:55 <elliott> Say, three hundred and fifty lines? 17:47:23 <elliott> hmm, what's a decent way to say "head, but append this line if you cut anything off"? 17:47:26 <elliott> I guess the only way is to read one more 17:47:28 <elliott> and see if it's there 17:47:34 <ais523> I wonder if you did all the matches for [^f]f+u+[^u] over the entire internet 17:47:43 <ais523> what the distribution of f-count and u-count would be 17:47:48 <elliott> heh 17:47:52 <ais523> actually, probably you should insist on \bf+u+\b 17:48:53 <Gregor> `log x{12} 17:48:57 <HackEgo> 2011-02-10.txt:19:37:22: <elliott> XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX 17:49:10 <monqy> x 17:49:16 <Gregor> `run ls bin/*log* 17:49:18 <HackEgo> bin/etymology \ bin/log \ bin/pastelogs 17:49:25 <Gregor> Etymo-log-y 17:49:45 <Gregor> I wonder if that still works (or ever worked) 17:49:46 <elliott> `fetch http://sprunge.us/DOKJ 17:49:47 <HackEgo> 2011-09-13 17:49:46 URL:http://sprunge.us/DOKJ [600] -> "DOKJ" [1] 17:49:48 <Gregor> `etymology etymology 17:49:50 <HackEgo> ​/hackenv/bin/etymology: line 10: lynx: command not found 17:49:53 <elliott> `run mv DOKJ bin/pastelogs; chmod +x bin/pastelogs 17:49:53 <Gregor> Phail 17:49:54 <HackEgo> No output. 17:49:56 <elliott> `pastelogs 999 17:49:58 <HackEgo> No. 17:50:00 <elliott> `pastelogs . 17:50:03 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2673 17:50:10 <ais523> `log FURscript 17:50:10 <elliott> Excellent. 17:50:14 <HackEgo> 2011-06-21.txt:16:36:32: <elliott_> died of furscript 17:50:14 <ais523> `log Esme 17:50:18 <HackEgo> 2011-06-21.txt:16:35:35: <Sgeo> "The VeeBeeWiki wiki software needs Esme and Perl to run. The software also needs EsmeCSS: and EsoShell: namespaces." 17:50:19 <ais523> what was the other one? 17:50:27 <elliott> ais523: snack? 17:50:30 <Gregor> `url 17:50:31 <HackEgo> http://codu.org/projects/hackbot/fshg/ 17:50:36 <elliott> ugh, I just realised something, grepping numbers includes the time 17:50:37 <elliott> but it's ok 17:50:40 <elliott> you can fix it in the regexp itself 17:50:40 <ais523> I don't remember having heard of that 17:50:45 <elliott> and who knows, maybe someone wants to grep for a certain time? 17:50:48 <ais523> but it might be that 17:50:54 <ais523> `log shameful 17:50:58 <HackEgo> 2010-12-15.txt:15:21:27: <elliott> Used the menus to cut/paste that, how shameful. 17:51:02 <Gregor> `log 17:51:04 <HackEgo> 2010-02-05.txt:19:41:28: <oklopol> arbitrarily big, sure, but finite things are usually closed under operations 17:51:07 <elliott> `log '^(\d)\1:\1\1:\1\1:' 17:51:10 <Gregor> So `log just gives a random line :P 17:51:10 <HackEgo> No output. 17:51:12 <ais523> we've basically recreated optbot here 17:51:15 <elliott> Gregor: Yep 17:51:17 <elliott> ais523: heh 17:51:18 <elliott> ais523: but with more context 17:51:21 <Vorpal> `log 19:41 17:51:22 <elliott> oh, there's one more thing to add 17:51:25 <HackEgo> 2011-04-16.txt:19:41:00: <Gregor> elliott: That's not much of a ransom demand since it's my repo :P 17:51:29 <Vorpal> I guess that might be useful 17:51:34 <Vorpal> well if it reported all lines 17:51:36 <Vorpal> it might be 17:51:40 <Vorpal> (with date too) 17:52:11 <ais523> oh, if it's Esolang that's doing edit conflicts on blank summaries, it's almost certainly a Graueism 17:52:12 <elliott> Vorpal: patselogs 17:52:14 <elliott> pastelogs 17:52:20 <ais523> he has some entertaining hand-rolled spam solutions 17:52:26 <Vorpal> elliott: lets get every line said this time of day then 17:52:29 <elliott> `run echo '#!/bin/sh' >bin/logurl 17:52:31 <HackEgo> No output. 17:52:34 <elliott> `run echo 'url "/var/irclogs/_esoteric/$(basename "$1" .txt).txt"' >>bin/logurl 17:52:35 <HackEgo> No output. 17:52:37 <monqy> `log patse 17:52:37 <Vorpal> `log 19:53:.. 17:52:37 <elliott> `run chmod +x bin/logurl 17:52:39 <Vorpal> does that work 17:52:41 <HackEgo> 2007-12-08.txt:01:05:35: <iEhird> the patset function willtoo be unique and wspecisl 17:52:42 <HackEgo> No output. 17:52:42 <HackEgo> 2010-12-04.txt:19:53:48: <elliott> Gregor: I think "HELP COMPUTER" was an unfortunate choice of topic. 17:52:45 <elliott> plz stop 17:52:45 <Vorpal> hm 17:52:48 <elliott> im developing 17:52:49 <Vorpal> what sort of regexp? 17:52:52 <elliott> `logurl 2010-12-04.txt 17:52:54 <elliott> Vorpal: egrep 17:52:54 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip//var/irclogs/_esoteric/2010-12-04.txt 17:52:59 <elliott> Hmm, wait 17:53:06 <elliott> It should just link to the codu.org link :P 17:53:06 <Vorpal> elliott: from all files or just recent logs? 17:53:11 <Vorpal> `pastelog 19:53:.. 17:53:12 <elliott> Vorpal: All 17:53:12 <monqy> `log help 17:53:13 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pastelog: not found 17:53:16 <HackEgo> 2009-12-05.txt:21:18:37: <ehird> uorygl: I don't think there's a Unicode character that would help. 17:53:16 <Vorpal> err 17:53:20 <Vorpal> elliott: pastelog? 17:53:29 <Vorpal> `pastelogs 19:53:.. 17:53:31 <elliott> Vorpal: Pastelogs. 17:53:33 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32542 17:53:34 <Vorpal> okay 17:53:51 <Vorpal> elliott: not a very active minute this one 17:53:58 <Vorpal> well, last one 17:54:02 <elliott> `fetch http://sprunge.us/QWaF 17:54:03 <HackEgo> 2011-09-13 17:54:03 URL:http://sprunge.us/QWaF [91] -> "QWaF" [1] 17:54:10 <Vorpal> 2005-07-17.txt:23:19:53: <-- also eh 17:54:11 <elliott> `run mv QGaF bin/logurl; chmod +x bin/logurl 17:54:12 <HackEgo> mv: cannot stat `QGaF': No such file or directory 17:54:17 <elliott> Vorpal: What of it 17:54:19 <Vorpal> `pastelogs 19:53:[0-9][0-9]: 17:54:20 <elliott> `run mv QWaF bin/logurl; chmod +x bin/logurl 17:54:22 <HackEgo> No output. 17:54:23 <elliott> Vorpal: FFS 17:54:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22489 17:54:29 <elliott> You'll cause merge bullshit 17:54:31 <elliott> `logurl 2009-12-05.txt:21:18:37: 17:54:33 <HackEgo> http://codu.org/logs/log/_esoteric/2009-12-05.txt 17:54:36 -!- derrik has quit (Ping timeout: 252 seconds). 17:54:37 <Vorpal> elliott: trying to perfect my perfect regexp 17:54:39 <elliott> Argh 17:54:47 <elliott> Vorpal: Yes, but don't while I'm busy adding new things, or it'll be a pain 17:54:52 <Vorpal> elliott: how so? 17:54:57 <itidus20> PRINT "Hello world" is a function application ((λf.(λs.(f s))) PRINT) "Hello world") 17:54:58 <Vorpal> elliott: your thing didn't paste did it? 17:55:11 <elliott> It still has to hg merge 17:55:18 <itidus20> hehehe :-s 17:55:18 <elliott> `fetch http://sprunge.us/Sffh 17:55:19 <Vorpal> elliott: no conflict, not an issue 17:55:19 <HackEgo> 2011-09-13 17:55:19 URL:http://sprunge.us/Sffh [101] -> "Sffh" [1] 17:55:23 <elliott> Vorpal: Slows it down 17:55:27 <elliott> `run mv Sffh bin/logurl; chmod +x bin/logurl 17:55:28 <Vorpal> elliott: not much. 17:55:29 <HackEgo> No output. 17:55:31 <elliott> And makes my tests use an old version 17:55:35 <elliott> `logurl 2009-12-05.txt:21:18:37: 17:55:37 <monqy> itidus20: what 17:55:37 <HackEgo> http://codu.org/logs/log/_esoteric/2009-12-05 17:55:41 <Vorpal> elliott: old version? I didn't change the file ffs 17:55:46 <itidus20> monqy: it doesn't make sense? 17:55:50 <elliott> Vorpal: You don't understand how HackEgo works, then 17:55:58 <Vorpal> elliott: tell me. 17:56:01 <elliott> Vorpal: No 17:56:02 <elliott> I'm busy 17:56:06 <elliott> Gregor: Is there a predictable way to go from date to anchor in codu log page? 17:56:09 <Vorpal> elliott: well then I see no reason to not use it 17:56:15 <elliott> What about these "020024" thins 17:56:16 <elliott> things 17:56:17 <elliott> Second-precision? 17:56:19 <elliott> Looks like it 17:56:29 <elliott> Gregor: BTW you violate standards horribly if there's two things said at the same second 17:56:30 <itidus20> monqy: nevermind :D 17:56:39 <monqy> itidus20: ok 17:57:02 <Gregor> elliott: Only if there are two things said by the same person in the same second. 17:57:02 <Vorpal> a counter starting at 0 would be better 17:57:16 <Gregor> elliott: The <a> is timestampname. 17:57:17 <elliott> Gregor: Not quite 17:57:18 <monqy> abc 17:57:22 <elliott> <a name="014900"></a><span class="date">01:49:00:</span><span id="014900" class="name"> -!- </span><span class="message">lifthrasiir has joined #esoteric.</span><br /> 17:57:22 <monqy> oops i messed that up 17:57:26 <monqy> ;_; 17:57:26 <monqy> ;_; 17:57:27 <elliott> Gregor: Two /joins in the same second 17:57:30 <monqy> oh no more mess 17:57:40 <monqy> I'll never be cool 17:57:48 <Gregor> elliott: Oh, didn't realize that joins didn't have the name in the <a> >_> 17:57:57 <elliott> Oh well, CBA to do anchor shit right now 17:58:15 <elliott> Does anyone know if egrep does backrefs? 17:58:24 <Vorpal> elliott: pretty sure it doesn't. 17:58:33 <elliott> `url bin/pastelogs 17:58:34 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/pastelogs 17:58:36 <Gregor> JUST HAVE TO USE PERL THEN 17:58:43 <Vorpal> pcregrep would 17:58:51 <elliott> pcregrep would also be incredibly slow. 17:58:52 <Vorpal> elliott: anyway "pretty sure" is not definitive 17:59:17 <elliott> `quote [aeiou]{90} 17:59:19 <HackEgo> No output. 17:59:20 <elliott> `log [aeiou]{90} 17:59:23 <HackEgo> 2010-07-04.txt:16:05:45: <oerjan> <oklopol> you're my new idol, oerjan is out <-- WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH 17:59:29 <Vorpal> elliott: it might do backref 17:59:33 <elliott> `logurl 2010-07-04.txt:16:05:45: 17:59:35 <HackEgo> http://codu.org/logs/log/_esoteric/2010-07-04 17:59:38 <Vorpal> elliott: based on what regex(3) indicates 17:59:40 -!- derrik has joined. 17:59:44 <Vorpal> REG_ESUBREG 17:59:44 <Vorpal> Invalid back reference to a subexpression. 17:59:48 -!- augur has joined. 17:59:52 <Gregor> `log [aieouy]{140} 17:59:55 <Vorpal> pretty sure egrep is same as posix extended regexp 17:59:57 <HackEgo> 2009-09-12.txt:17:51:06: <ehird> eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeet 18:00:00 -!- derrik has left. 18:00:14 <Gregor> elliott: You heard yourself! Now eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeet! 18:00:17 <elliott> ok 18:00:21 <elliott> `logurl 2009-09-12.txt:17:51:06: 18:00:23 <HackEgo> http://codu.org/logs/log/_esoteric/2009-09-12 18:00:39 <elliott> 17:50:35: <Azstal> ehird: The WinForms GUI designer uses absolute positioning for most placement of controls 18:00:39 <elliott> 17:50:42: <Azstal> rheeeeeeeeet! 18:00:40 <elliott> 17:50:53: <Deewiant> Azstal: A program which should run quite quickly infinite-loops; it makes a diagonal line of z pointing upward in negative space and starts moving on it with 101-x 18:00:40 <elliott> 17:51:04: <ehird> rheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 18:00:43 <elliott> 17:51:06: <ehird> eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeet 18:00:46 <elliott> 17:51:08: <ehird> aw 18:00:48 <elliott> 17:51:10: <ehird> no multiline support 18:01:18 <ais523> `log (.)\1{100} 18:01:19 <Gregor> `log (fuck\s*){3} 18:01:22 <HackEgo> 2011-01-12.txt:16:14:13: <oklopol> fuckfuckfuckfuckfuckfuckfuck 18:01:28 <Gregor> `log (fuck\S*){3} 18:01:32 <HackEgo> 2011-04-08.txt:19:04:11: <Gregor> elliott: FUCKFUCKFUCKNO 18:01:34 <Gregor> I forget whether \s or \S is whitespace ... :P 18:01:36 <Gregor> Or neither 18:01:42 <elliott> `log (fuck\S*){9} 18:01:45 <HackEgo> 2010-06-01.txt:03:11:20: <alise> fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfucikfuckfuckfuckfuckfuck 18:01:47 <ais523> \\s is whitespace, \S is not whitespace 18:01:49 <Gregor> `log (fuck\w*){3} 18:01:49 <HackEgo> No output. 18:01:51 <Phantom_Hoover> Just overheard: John Snow pronounces 'trolling' to rhyme with 'lolling'. 18:01:53 <elliott> `pastelogs (fuck\S*){9} 18:01:53 <HackEgo> 2008-02-13.txt:22:56:21: <ehird_> Fuckfuckfuckfuck. 18:01:56 <Gregor> `log (fuck\s*){3} 18:01:56 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32136 18:01:59 <HackEgo> 2010-06-27.txt:22:17:32: <Gregor> OH FUCKFUCKFUCK 18:02:01 <elliott> 2010-06-01.txt:03:11:20: <alise> fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfucikfuckfuckfuckfuckfuck 18:02:01 <elliott> 2011-09-13.txt:18:01:45: <HackEgo> 2010-06-01.txt:03:11:20: <alise> fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfucikfuckfuckfuckfuckfuck 18:02:04 <elliott> Good collection. 18:02:07 <elliott> I like how the logs are updated in realtime :P 18:02:08 <ais523> Phantom_Hoover: so do I 18:02:15 <elliott> Phantom_Hoover: I do that? 18:02:16 <ais523> although long o is definitely a valid pronunciation 18:02:22 <elliott> Oh wait. 18:02:22 <Gregor> `log (fuck\s+){3} 18:02:24 <Phantom_Hoover> ais523, with an o as in 'cot'. 18:02:24 <elliott> I use short o. 18:02:26 <HackEgo> No output. 18:02:33 <ais523> I use short o too 18:02:34 <Gregor> `log (fuck *){3} 18:02:35 <elliott> Phantom_Hoover: I say trolling lik ethat 18:02:38 <HackEgo> 2010-08-30.txt:16:15:24: <alise> I can fix that! Fuck fuck fuck fuck fuck fuck fuck fuck fuck 18:02:43 <Gregor> `log (fuck *){25} 18:02:44 <elliott> `pastelosg 2010-08-30.txt:16:15:24: 18:02:46 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pastelosg: not found 18:02:47 <HackEgo> No output. 18:02:47 <elliott> `pastelogs 2010-08-30.txt:16:15:24: 18:02:47 <ais523> the same one as in 'cot', but that's the same as the o in 'lolling' in my accent 18:02:51 <Gregor> `log (fuck *){15} 18:02:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.23901 18:02:55 <HackEgo> 2011-09-13.txt:18:02:01: <elliott> 2011-09-13.txt:18:01:45: <HackEgo> 2010-06-01.txt:03:11:20: <alise> fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfucikfuckfuckfuckfuckfuck 18:03:01 <elliott> `url /lib/limits 18:03:02 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip//lib/limits 18:03:08 <elliott> ;_; 18:03:09 <Gregor> Yeah, probably should grep out HackEgo :P 18:03:09 <elliott> Gregor: What's lib/limits 18:03:15 <elliott> Gregor: Nooooo 18:03:17 <Gregor> elliott: It sets some limits. 18:03:17 <elliott> The recursiveness is the BEST 18:03:33 <elliott> `log I'm a blah de blah always been the blah which haven't you always said which blah is 18:03:37 <HackEgo> 2011-09-13.txt:18:03:33: <elliott> `log I'm a blah de blah always been the blah which haven't you always said which blah is 18:03:45 <elliott> It's the best "not found" message possible. 18:04:16 <monqy> `log 18:04:18 <HackEgo> 2006-06-05.txt:02:10:06: <GregorR> He hates you, eh? 18:04:26 <monqy> good log 18:04:34 <elliott> `log 18:04:36 <HackEgo> 2003-03-25.txt:19:31:11: -!- Aardappel has joined #esoteric. 18:04:44 <elliott> `log 18:04:46 <HackEgo> 2008-03-08.txt:17:49:49: <ehird> http://reddit.com 18:04:49 <Gregor> `log I think I'll just use `log as the world's worst `echo from now on. 18:04:53 <HackEgo> 2011-09-13.txt:18:04:49: <Gregor> `log I think I'll just use `log as the world's worst `echo from now on. 18:04:58 <elliott> `logurl 2008-03-08.txt:17:49:49: 18:04:59 <ais523> elliott: why would you link to Reddit's homepage? 18:05:00 <HackEgo> http://codu.org/logs/log/_esoteric/2008-03-08 18:05:05 <elliott> ais523: let's find out 18:05:07 <Phantom_Hoover> elliott, so wait, you say 'troll' that way too? 18:05:18 <ais523> `log pong 18:05:20 <elliott> 17:45:41: <faxathisia> not seen reddits code 18:05:20 <elliott> 17:46:09: <faxathisia> looks pretty trivial if you know dhtml or whatever they do that stuff with 18:05:21 <elliott> Me. 18:05:22 <HackEgo> 2007-08-13.txt:21:21:37: <ehird`> 3d pong 18:05:23 <elliott> Phantom_Hoover: apparently 18:05:31 <elliott> `log `log 18:05:35 <HackEgo> 2011-09-13.txt:18:04:16: <monqy> `log 18:05:46 <elliott> `log 00:00:00: 18:05:49 <HackEgo> 2008-12-11.txt:00:00:00: <GregorR> I WANT A REPRAP 18:05:56 <elliott> I WANT A REPRAP, he shouted at midnight. 18:06:13 <ais523> `log slightly as his ears, 18:06:16 <HackEgo> 2010-12-13.txt:21:08:15: <elliott> David Slowed, slightly as his ears, entered the room. 18:06:42 <elliott> `log slight as his ears, 18:06:45 <HackEgo> 2011-09-13.txt:18:06:42: <elliott> `log slight as his ears, 18:06:45 <elliott> `log slightly as his ears, 18:06:48 <HackEgo> 2009-06-17.txt:01:09:09: <ehird> David slowed his pace slightly as his ears, washed away in the sea as they were, bobbed along. He was unaware of this event. 18:06:58 <monqy> i love david slowed 18:07:25 <elliott> `log Bjorn 18:07:29 <HackEgo> 2010-07-25.txt:22:08:11: <aliseiphone> Bjorn was deathly afraid of beetles. DEATHLY afraid. 18:07:34 <elliott> me too 18:07:38 <elliott> (not really) 18:07:47 <ais523> oh, I forgot all about the Bjorn thing 18:07:49 <elliott> `log Bjorn 18:07:53 <HackEgo> 2010-07-30.txt:19:36:21: <alise> Frightened, Bjorn said! Aah! Aah! This is what he said 18:07:56 <elliott> me too 18:07:59 <ais523> arguably deservedly, but it was fun 18:08:07 <elliott> `log Bjorn 18:08:10 <HackEgo> 2010-07-25.txt:22:08:11: <aliseiphone> Bjorn was deathly afraid of beetles. DEATHLY afraid. 18:08:14 <elliott> :'( 18:08:16 <elliott> uncreative HackEgo 18:08:27 <monqy> soon enough you'll get `log Bjorn in your `log Bjorn 18:08:34 <monqy> what then???? 18:08:38 <ais523> does this go over glogbot's logs? or clog's? or both? 18:08:46 -!- boily has quit (Ping timeout: 252 seconds). 18:08:50 <elliott> ais523: glogbot's 18:08:55 <monqy> `log Bjorn 18:08:55 <elliott> but it's a symlink, so they're updated instantly 18:08:58 <HackEgo> 2011-05-05.txt:00:58:39: <oerjan> (bjorn is not norwegian. or maybe i should check that.) 18:09:04 <elliott> ais523: which is why the "not found" message shows your own line 18:09:07 <elliott> it gets logged before grep gets to it 18:09:15 <elliott> `log Bjorn 18:09:19 <HackEgo> 2010-08-03.txt:00:53:43: <alise> Bjorn would never use a computer he couldn't eat. 18:10:36 <monqy> `log Bjorn 18:10:40 <HackEgo> 2010-07-23.txt:23:56:32: <alise> Often Bjorn would stop and gaze up at the immense trees; or down at the bugs on the floor. Sometimes he squished the bugs while looking at the trees, or the trees while looking at the bugs. He felt considerably more sorrow for the trees. Eventually, a bird flew overhead and the strain of trying 18:11:14 <monqy> I do not understand. I thought this might help, but it did not. 18:11:30 <elliott> yes 18:11:32 <elliott> `log Bjorn 18:11:36 <HackEgo> 2010-07-24.txt:03:53:35: <alise> "Well," said Bjorn, "I'd like to buy the sun back." 18:12:19 <monqy> why are you the only bjorn. that is you, right? 18:12:24 <monqy> `log Bjorn 18:12:27 <HackEgo> 2011-09-13.txt:18:12:24: <monqy> `log Bjorn 18:12:28 <elliott> because im, auhtor, of bjorn, 18:12:31 <monqy> oh no 18:12:32 <elliott> :DDD 18:12:35 <elliott> `log Bjorn 18:12:38 <HackEgo> 2010-07-26.txt:02:36:09: <alise> to bjorn's reply, the young man devised 18:12:44 <elliott> `log Bjorn 18:12:47 <HackEgo> 2010-07-24.txt:03:52:04: <alise> As Bjorn woke the next morning, he was, much to his chagrin, reminded of his exploits-to-be by his least favourite region of the brain, which was whatever part stored memories; Bjorn wasn't really sure how the brain operated, apart from that he wished it wouldn't do so in such an efficient and 18:12:50 <ais523> alise was better at bjorning than anyone else 18:13:06 <Phantom_Hoover> Ah, Bjorn. 18:13:18 <elliott> `pastelogs Bjorn 18:13:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32040 18:13:39 <elliott> "—" 18:13:46 <elliott> Gregor: send correct headers with paste files plz 18:13:47 <monqy> 2007-07-02.txt:09:30:40: <toBogE> cout << "C++ is a programming language created by Bjorn Stroustroup which extends C. See C." 18:13:48 <elliott> (assume utf :P) 18:14:03 <elliott> 2010-07-22.txt:23:14:05: <aliseiphone> He walked towards the Boothy Booth, the premiere showcase for all fans of boothes, and in a fit of naïvety attempted to descend into the miniature copy of the Boothy Booth contained inside it. Alas, he tripped over it and flattened its containing tent just as a gigantic Bjorn flattened Boothy Booth. 18:14:03 <elliott> this would be a good dream to have 18:14:53 <elliott> I like how 18:14:55 <elliott> half of those pasted logs 18:14:57 <elliott> are us today 18:15:06 <monqy> bjorn 18:15:20 <ais523> Stroustroup's first name isn't Bjorn 18:15:27 <monqy> ais523: that's part of why it's funny 18:15:39 <monqy> maybe I'm just really tired and everything is funny 18:16:05 <monqy> in the past few minutes I tried remembering what my dream last night was, but instead remembered I didn't sleep 18:16:18 <ais523> why is there no way to specify encoding as utf-8-or-maybe-latin-1? 18:16:20 <elliott> `addquote <monqy> in the past few minutes I tried remembering what my dream last night was, but instead remembered I didn't sleep 18:16:22 <HackEgo> 658) <monqy> in the past few minutes I tried remembering what my dream last night was, but instead remembered I didn't sleep 18:16:26 <ais523> given that's the encoding that most of the world is in nowadays 18:16:31 <elliott> `log `quote 18:16:34 <HackEgo> 2011-08-13.txt:01:41:11: <Lymee> `quotes open sores 18:16:56 <ais523> `log outercal 18:16:59 <HackEgo> 2011-09-13.txt:18:16:56: <ais523> `log outercal 18:17:15 <monqy> outercal 18:17:17 <elliott> I like how you can't be sure there's no results 18:17:20 <elliott> because it can pick that one randomly anyway 18:17:29 <elliott> "By the same logic, the color white was chosen because it represents a hex number with the largest value in a 24-bit red green blue (RGB) color space: 0xFFFFFF, so programmers worldwide wear white in celebration.[citation needed]" 18:19:02 <elliott> `log esolangs\.org/ 18:19:05 <HackEgo> 2011-04-18.txt:04:52:56: <elliott> oerjan: i invite you to take a look at http://esolangs.org/w/index.php?title=User:Ehird&action=edit and imagine how much I yearned for the ability to use div and span during its creation 18:19:20 <elliott> `log esolangs\.org/ 18:19:24 <HackEgo> 2009-03-03.txt:18:37:54: * ais523 looks at http://esolangs.org/wiki/Talk:Esme for old time's sake 18:19:44 * elliott listens to Talk Esme Baby again... an art 18:21:34 <Phantom_Hoover> What's that? 18:21:43 <monqy> hwo could you not know 18:21:59 <Phantom_Hoover> Is it another of elliott's dramatic readings. 18:22:11 <elliott> Phantom_Hoover: It was the final one. 18:22:17 <elliott> Everything about its production was pure accidental perfection. 18:22:28 <Phantom_Hoover> I must see. 18:22:31 <elliott> I'll have to upload it, yeah. 18:22:33 <Phantom_Hoover> Or hear, as the case may be. 18:22:34 <elliott> You can't really go through life without hearing this. 18:22:51 <elliott> Uploading. 18:23:29 <ais523> it's a dramatic reading of Talk:Esme? 18:24:02 <elliott> ais523: Well, that was the _idea_. 18:24:20 -!- boily has joined. 18:24:27 <elliott> I decided to throw caution to the wind and do it to one of GarageBand's awful precreated backing track things, where you basically select one instrument and play it over the aforementioned terrible backing track. 18:24:35 <elliott> Specifically, the funk one. 18:24:45 <elliott> But the funk... was too much. 18:25:01 <elliott> So I ended up not getting to the actual text until there was about thirty seconds to go, so it became a trainwreck. 18:25:05 <elliott> Then I realised that it thought I was recording a guitar. 18:25:11 <elliott> And applied bad effects appropriately. 18:25:15 <elliott> So you can't hear a damn thing. 18:25:25 <elliott> It's about as much of a disaster as Esme is. 18:25:26 <ais523> to be fair, this is Esme we're talking about 18:26:15 <Gregor> Oh GarageBand. 18:26:18 <Gregor> Why do people use it? 18:26:23 <Gregor> Worse yet, why does it exist? 18:26:29 <monqy> I remember being reminded of songsmith 18:26:31 <Gregor> And why hasn't its creator been raped to death? 18:26:32 <elliott> Gregor: Dude, it produced ART that day. 18:26:54 <monqy> songsmith commercial is an art. I imagine songsmith has made other art as well. 18:27:11 <monqy> or is it not considered a commercial 18:27:21 <elliott> Really GarageBand is not that bad in typical use... it's just a really ridiculously stripped-down Logic. 18:27:29 <elliott> But that Magic GarageBand thing is amazing :P 18:28:00 <Phantom_Hoover> elliott, this is nearly as good as Sgeo's karaoke. 18:28:53 <elliott> Phantom_Hoover: I'm just glad Kurt Gödel agreed to collaborate. 18:29:13 <monqy> I remember Sgeo's karaoke. 18:29:35 <monqy> `log sgeo 18:29:39 <HackEgo> 2011-06-21.txt:04:06:40: <Sgeo> I think 1/100 is higher than surviving antimatter in a degenerate way 18:29:50 <monqy> `log itidus20 18:29:54 <HackEgo> 2011-08-10.txt:21:33:40: <itidus20> they're FAST 18:30:12 <monqy> `log zzo 18:30:14 <itidus20> hehehe 18:30:16 <HackEgo> 2011-07-24.txt:07:22:30: <zzo38> I hope someone can understand my register optimization algorithm problem that I have had. And if there is other channel that they know this kinds of things better. 18:30:31 <elliott> `log verily|betwixt 18:30:36 <HackEgo> 2009-02-21.txt:00:51:32: <ehird> verily 18:30:41 <monqy> verily 18:30:43 <elliott> `log betwixt 18:30:47 <HackEgo> 2010-06-24.txt:23:01:53: <ais523> `define betwixt 18:31:06 <elliott> heh 18:31:07 <elliott> `log betwixt 18:31:10 <HackEgo> 2010-06-24.txt:23:01:53: <ais523> `define betwixt 18:31:14 <itidus20> `log channel 18:31:16 <monqy> betwixt 18:31:16 <elliott> ais523... 18:31:17 <elliott> `log betwixt 18:31:18 <HackEgo> 2010-01-10.txt:18:04:04: <ehird> This channel is now: The official poop channel 2010 18:31:21 <HackEgo> 2011-09-13.txt:18:31:10: <HackEgo> 2010-06-24.txt:23:01:53: <ais523> `define betwixt 18:31:28 <elliott> `pastelogs betwixt 18:31:32 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2946 18:33:30 <itidus20> `log log 18:33:35 <HackEgo> 2010-08-15.txt:05:22:03: <ais523> coppro: BlogNomic inspired you? 18:33:43 <elliott> `log nomic 18:33:43 -!- derrik has joined. 18:33:46 <HackEgo> 2007-11-26.txt:02:45:17: <bsmntbombdood> life is a nomic! 18:33:48 <elliott> ais523: this is so much fun what have you done 18:33:51 <Vorpal> elliott: does it pick first match or random one? 18:33:55 <elliott> Vorpal: random 18:33:56 <elliott> `log nomic 18:34:00 <HackEgo> 2011-03-06.txt:23:04:18: <elliott> copumpkin: "Basically this asshat pulled that number out of his butt. I used to work in at a library and books easily last way more than 26 borrowings (e.g., bestellers get borrowed over 20 times in just their first year). A library couldn't economically survive if books didn't last more than 18:34:15 <Vorpal> night 18:34:47 -!- Taneb has joined. 18:34:55 <elliott> `log hexham 18:34:58 <HackEgo> 2010-12-18.txt:20:50:50: <Phantom_Hoover> elliott, I DETEST YOU AND I AM ALREADY ON A TRAIN TO HEXHAM TO BEAT YOU TO DEATH WITH A LAMP POST. 18:35:07 <Taneb> Hello 18:35:10 -!- derrik has left. 18:35:16 <olsner> `log olsner 18:35:19 <Phantom_Hoover> Taneb has 'Hexham' on ping. 18:35:20 <HackEgo> 2009-02-23.txt:19:15:07: <ehird> hi olsner 18:35:26 <itidus20> `log book 18:35:30 <HackEgo> 2008-12-22.txt:15:50:34: <ehird> I like how it takes 8 books to get to recursion 18:35:31 <Phantom_Hoover> `log itidus 18:35:31 <elliott> `log hexham 18:35:34 <HackEgo> 2011-08-10.txt:16:05:19: <itidus20> but it doesn't have to be that way 18:35:35 <HackEgo> 2011-09-12.txt:19:48:25: <oklopol> i could even fly to hexham but i guess that'd defeat the purpose 18:35:45 <Phantom_Hoover> itidus20, inspirational words. 18:35:50 <elliott> `log hexham 18:35:54 <HackEgo> 2011-07-16.txt:22:00:56: <oklofok> well i kind of live in hexham too 18:35:54 <itidus20> thanks 18:36:09 <Phantom_Hoover> `log inspirational 18:36:13 <HackEgo> 2009-03-10.txt:14:18:38: <fizzie> If you want to see an inspirational piece of Befunge, our local irc-bot, fungot, is written in it: http://zem.fi/~fis/fungot.b98.txt 18:36:18 <Phantom_Hoover> `log fungot 18:36:22 <HackEgo> 2011-02-25.txt:09:30:57: <fungot> (:(()~(^)~(:)~(:)~(^)~()~^S^(^)~^^^)(^())~(^(~))~^^()~^^S)# ...out of stack! 18:36:27 <Taneb> Are oklofok and oklopol the same person? 18:36:31 <Phantom_Hoover> Taneb, no. 18:36:40 <Phantom_Hoover> oklofok is oklopol's evil twin. 18:37:03 <itidus20> `log twin 18:37:07 <HackEgo> 2010-03-04.txt:05:30:20: <augur> the only case where the twin paradox can "vanish" is in a case where it cant even happen! 18:37:10 <elliott> `logurl 2009-03-10.txt:14:18:38: 18:37:12 <HackEgo> http://codu.org/logs/log/_esoteric/2009-03-10 18:37:13 <elliott> `logurl 2011-07-16.txt:22:00:56: 18:37:15 <HackEgo> http://codu.org/logs/log/_esoteric/2011-07-16 18:37:44 <Phantom_Hoover> `log elliott 18:37:49 <HackEgo> 2011-05-13.txt:20:26:04: <elliott> No it isn't. 18:37:54 <Phantom_Hoover> Yes it is. 18:37:56 <ais523> heh, my reaction to that `log fungot was "who put Underload in fungot's markoviser?" 18:38:09 <Phantom_Hoover> `log ais523 18:38:14 <HackEgo> 2011-02-09.txt:21:20:35: -!- ais523 has quit (Read error: Connection reset by peer). 18:38:28 <Phantom_Hoover> There's something terribly amusing about that. 18:38:29 <Phantom_Hoover> `log ais523 18:38:34 <HackEgo> 2010-10-07.txt:20:32:34: <ais523> NOP 18:38:36 <Phantom_Hoover> `log kittens 18:38:40 <HackEgo> 2009-05-14.txt:00:04:24: <ehird> A kindle of kittens. 18:38:41 <elliott> omg kittens 18:38:44 <elliott> me kittens 18:38:46 <Phantom_Hoover> `log rabbits 18:38:49 <HackEgo> 2010-11-08.txt:19:46:10: <fizzie> "Domestic cats are similar in size to the other members of the genus Felis, typically weighing between 4 kilograms (8 lb 13 oz) and 5 kilograms (11 lb 0 oz). -- The smallest adult cat ever officially recorded weighed around 1.36 kilograms (3 lb)." -- "[Rabbits'] size can range anywhere from 20 cm 18:38:53 <ais523> `log zruty 18:38:57 <HackEgo> 2011-09-13.txt:18:38:53: <ais523> `log zruty 18:39:11 <Phantom_Hoover> Perfect. 18:39:12 <elliott> zruty 18:39:23 <Phantom_Hoover> `log is now unnecessary; remove it. 18:39:23 <elliott> Phantom_Hoover: that was from "is cat or rabbit bigger" 18:39:26 <HackEgo> 2011-09-13.txt:18:39:23: <Phantom_Hoover> `log is now unnecessary; remove it. 18:39:35 <Phantom_Hoover> Ah. 18:39:37 <elliott> Phantom_Hoover: after what, fizzie's cat/rabbit line? 18:39:38 <elliott> or the recursion 18:39:43 <elliott> because the recursion happens all the time :P 18:39:47 <elliott> `logurl 2010-11-08.txt:19:46:10: 18:39:48 <HackEgo> http://codu.org/logs/log/_esoteric/2010-11-08 18:39:55 <elliott> so many logs to read, so little time 18:39:56 <Phantom_Hoover> `log rabbit 18:40:00 <HackEgo> 2010-11-08.txt:19:44:11: <ais523> Gregor: cats are larger than rabbits? 18:40:10 <ais523> oh dear, I started it? 18:40:11 <ais523> `log meme 18:40:15 <HackEgo> 2004-10-22.txt:15:51:07: -!- cmeme has quit (Broken pipe). 18:40:18 <Phantom_Hoover> `log PSOX 18:40:20 <monqy> who started what 18:40:22 <HackEgo> 2008-01-02.txt:19:36:17: * Sgeo is working on PSOX 18:40:24 <ais523> `log feather 18:40:28 <HackEgo> 2010-06-21.txt:21:50:31: <AnMaster> coppro, heh I realised why ais is holding back feather. So he can be the world's leading expert on it 18:40:45 <ais523> I was wondering whether I'd get description of feather the language or reference to feather the injoke 18:40:54 <itidus20> `log feather 18:40:57 <HackEgo> 2008-06-30.txt:23:32:44: <ais523> tusho: heh, you could do that in Feather 18:41:11 <elliott> `log feather 18:41:14 <HackEgo> 2011-09-06.txt:21:47:16: <monqy> I mentioned feather in reaction tot he "retroactive self-modification" feature a few days ago and taneb said his approach to it was actually pretty simple?? I forget/dunno how it will work though 18:41:31 -!- fungot has joined. 18:41:32 <elliott> 19:43:12: <ais523> trying to remember elephant > camel > horse > dog > cat > rabbit is the hardest part of the game 18:41:32 <elliott> 19:43:41: <Gregor> ais523: Really? "Bigger-than" over mammals is too hard for you? 18:41:33 <elliott> 19:44:11: <ais523> Gregor: cats are larger than rabbits? 18:41:40 <Taneb> Simple but memory-usey-up-a-lot-of 18:41:45 <elliott> hi fungot 18:41:46 <fungot> elliott: what do you mean by " taxonomic"? :) i'm learning scheme and hopefully soon re-establishing some cs cred so that i hypothesize that the oss world will have a server-side for sharing feather images, though 18:41:47 <Taneb> Intensive 18:41:57 <monqy> feather 18:42:05 <Taneb> Intensive feather 18:42:28 <ais523> `log international hub for 18:42:32 <HackEgo> 2009-05-07.txt:21:57:58: <GregorR> 05.10.10:19:09:35 --- topic: set to '#esoteric, the international hub for esoteric programming language design and deployment - #esoteric is not associated with the joke language Perl, please visit www.perl.org - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric' 18:42:55 <elliott> 19:54:29: <elliott> I said |{x : x in rabbits, size(x) > (sum x in cats : size(x)) / |cats|}| > |{x : x in cats, size(x) > (sum x in dogs : size(x)) / |dogs|}|. 18:42:55 <monqy> `log perl 18:42:56 <elliott> help 18:42:59 <HackEgo> 2009-12-05.txt:14:35:51: <ehird> wat, perl's foreach doesn't let you get the indices too? 18:42:59 <ais523> we haven't had the design and deployment topic for ages 18:43:16 <itidus20> `log hlep 18:43:20 <HackEgo> 2011-08-13.txt:01:27:13: <monqy> hlep 18:43:22 <ais523> it alternates keys and values if you foreach a hash 18:43:29 <ais523> normally, you foreach the keys or values of the hash specifically 18:43:40 <elliott> ais523: thanks, my script was blocked on that 18:43:48 * elliott dusts off the three-year-old emacs process 18:43:55 <elliott> TIME TO FINISH THIS THING 18:44:01 <ais523> hey, I've answered really old questions before now 18:44:12 <ais523> I've posted in multiple-year-old threads on a.l.i before, IIRC 18:44:13 <elliott> 20:00:08: <fizzie> Also if I write ungrammatically "volume of cat", it goes "Input interpretation: Caterpillar | volume" and the result is "2.981 million shares". 18:44:14 <elliott> :D 18:44:17 <ais523> `log alt.lang.intercal 18:44:20 <HackEgo> 2006-07-26.txt:21:39:04: <Razor-X> alt.lang.intercal. 18:44:27 <ais523> `log alt.lang.intercal 18:44:31 <HackEgo> 2009-11-17.txt:17:15:17: <AnMaster> ais523, your recent post on alt.lang.intercal looks messed up to me 18:44:40 <ais523> `log alt.lang.intercal 18:44:43 <HackEgo> 2008-02-27.txt:20:55:19: <ais523> and don't you mean alt.lang.intercal 18:44:51 <ais523> `log alt.lang.intercal 18:44:54 <HackEgo> 2008-04-01.txt:18:48:29: <ehird> ais523: ... http://groups.google.com/group/alt.lang.intercal/browse_thread/thread/5a0696843eeeb5b6/65b0d4a066a4c544#65b0d4a066a4c544 18:44:57 <Taneb> `log numberwang 18:45:01 <HackEgo> 2011-07-14.txt:09:23:27: <Taneb> Okay, now there's three esolangs called Numberwang 18:45:02 <elliott> `log alt[^.]lang[^.]intercal 18:45:06 <HackEgo> No output. 18:45:10 <elliott> aww 18:45:12 -!- CakeProphet has quit (Ping timeout: 240 seconds). 18:45:19 <elliott> Gregor: How much CPU is HackEgo using :P 18:45:26 <monqy> `log perl 18:45:31 <HackEgo> 2010-06-26.txt:00:26:26: <alise> cpressey: Just use perl -n. 18:45:34 <monqy> `log perl 18:45:38 <HackEgo> 2007-07-09.txt:03:19:16: <suifur> Sukoshi: though done properly, I think the bytecode compiler could work well 18:45:39 <itidus20> `log alt.lang. 18:45:43 <calamari> can it find the earliest mention rather than a random mention? 18:45:43 <HackEgo> 2007-04-01.txt:16:17:35: <Pikhq> How's about posting it in alt.lang.intercal? 18:45:59 <Taneb> `log hyperbolic 18:46:03 <HackEgo> 2009-04-28.txt:17:44:24: <Deewiant> In hyperbolic they're less than 180 18:46:05 <elliott> calamari: with pastequotes 18:46:08 <elliott> `pastequotes rare 18:46:10 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.6794 18:46:13 <ais523> calamari: it wouldn't be a hard modification to the script to do that 18:46:21 <ais523> and I think pastequotes goes in chronological order as it is 18:46:27 <elliott> hmm, does that paste load for anyone? 18:46:32 <elliott> `pastequotes rare 18:46:34 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17697 18:46:40 <calamari> didn't seem to work for me 18:46:43 <monqy> its broke help 18:46:46 <Taneb> Nothing 18:46:46 <elliott> hmm 18:46:52 <Gregor> elliott: At present, none. 18:46:59 <elliott> Gregor: What did you do :P 18:47:01 <elliott> `pastequote not 18:47:02 <Gregor> Nothing 18:47:03 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pastequote: not found 18:47:03 <elliott> oh 18:47:04 <elliott> guys 18:47:05 <elliott> pastequotes 18:47:07 <elliott> not pastelogs :P 18:47:09 <elliott> `pastelogs rare 18:47:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20848 18:47:14 <itidus20> lol 18:47:23 <itidus20> why isn't the pastequotes implemented? 18:47:30 <monqy> pastequotes has a nicer ring to it 18:47:32 <elliott> it is 18:47:36 <elliott> but nobody's addquoted rare 18:47:38 <Taneb> It is something else 18:47:42 <itidus20> ok fine 18:47:50 <Taneb> `pastequotes 18:47:52 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20365 18:48:04 <calamari> `pastelogs calamari 18:48:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.12613 18:48:42 <itidus20> `pastelogs ork 18:48:45 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29876 18:49:20 <monqy> ork 18:49:30 <Taneb> I'm interested in the context for quote 645 18:49:32 <itidus20> i didnt think that pastelog out very well 18:49:37 <monqy> `quote 645 18:49:39 <HackEgo> 645) <ais523> oh no, I think we've managed to mix three metaphors in a way that actually makes sense 18:50:08 -!- nooga_ has quit (Ping timeout: 260 seconds). 18:50:13 <elliott> `pastelogs \bork\b 18:50:16 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22066 18:50:40 <ais523> Taneb: elliott used "ratify" meaning "adopt a standard", I deliberately misinterpreted it in the Agoran meaning of "retroactively change", and then obviously, someone mentioned Feather 18:50:49 <itidus20> thanks elliott, thats a bit closer 18:51:03 <Taneb> That's dissapointing 18:51:04 <elliott> itidus20: it's exactly close :P assuming you wanted "ork" as a word 18:51:53 <itidus20> `pastelogs feather 18:51:57 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.18799 18:52:11 <calamari> are the old mailing list archives still available? 18:53:58 <elliott> i think so 18:54:08 <elliott> http://esolangs.org/wiki/Esolang:Community_Portal#Mailing_lists 18:54:48 <elliott> hehehe my message is in http://esoteric.sange.fi/archive/current 18:55:16 <Taneb> How does Feather avert stable time loops 18:55:22 <elliott> Taneb: ask ais523 :P 18:55:32 <Taneb> I was asking ais523 18:55:35 -!- augur has quit (Remote host closed the connection). 18:55:39 <Taneb> I just didn't say his name 18:55:52 <ais523> Taneb: it doesn't, you get an infinite loop if you try 18:55:58 <Taneb> Hmm... 18:56:05 <Taneb> More use for my Feather derivative 18:56:07 <ais523> the standard library is expected to contain a bunch of functions designed specifically to avoid stable time loops 18:56:08 <Taneb> McGraw 18:56:25 <Taneb> Maybe McGraw's a library 18:56:36 <elliott> Taneb: I was pinging ais523 for you 18:57:18 <Taneb> elliott: With a Feather IRC server, that doesn't have to be true 18:57:30 <elliott> 2003-09-08.txt:13:17:45: <Doppelganger> The Resin Feathered is by for the largesse country of the world in are by spinning 11 tone zoans in but Erebia and As. Rise swoors brother what they flummoxed country (starting in to north and in contrescene order: Near, Finlandia, Extend, Latvia, Bowler's, Letdown (via Killmaimthem Obligation, Plenty (idem), Ukraine, Grace, Acorpolous, Kissykissy, Come, Monosyllables and Nerthe Krow. 18:57:30 <elliott> 2003-09-08.txt:13:27:41: <Doppelganger> Be the lied 1980s, Spit leader Michael Gravys invalid reverend such as gilligan's and proceding, but though messrs were unbluffingly the propennies the collapsed of to Spat Unium after a flat mielodorous cup i'm 1991. Two Rossum Soft Federals' Repopulate declared its independent on Acquiester 24 of that your as to Reign Feathered. Reach, as the Soft Unionist's primewer successor stood, his snack sazd the mo 18:57:30 <elliott> untunmighty it's globelet 18:57:32 <elliott> what 18:57:49 <elliott> 2008-05-09.txt:13:53:37: <ais523> I'm thinking of calling it Feather, because it's so lightweight compared to most Smalltalks 18:57:53 <elliott> ais523: the day of reckoning 18:58:04 <Taneb> It's a smallsmalltalk 18:58:07 <elliott> every day since has been a dream 18:58:13 <elliott> the AI that secretly run things is simulating this universe 18:58:17 <elliott> to find out if ais523's creation of feather 18:58:21 <elliott> will lead to an apocalypse 18:58:34 <elliott> if it does, the idea will be erased from his mind 18:58:45 <ais523> retroactively! 18:58:47 <elliott> :D 18:58:53 <ais523> being lightweight isn't just a good idea, but turns out to be inherently required for Feather to work properly 18:59:07 <elliott> ais523: it causes the apocalypse by retroactively creating the AI that runs everything 18:59:17 <elliott> which then destroys the universe by ending the simulation that it turns out to have been retroactively running 18:59:30 <elliott> thus constituting an apocalypse 18:59:34 <elliott> so the idea is then removed from your brain 18:59:36 <Taneb> Will retoractivity be to the start of the program or a point defined within the program? 18:59:38 <elliott> and the AI stops existing 18:59:39 <elliott> retroactively 18:59:47 <ais523> elliott: I think it's probably even possible to retroactively modify the infinite universe such that it becomes finite 18:59:52 <elliott> Taneb: start of time, or so I gather 18:59:53 <ais523> as in, so that it had a start 19:00:04 -!- augur has joined. 19:00:06 <ais523> Taneb: you retroactively change objects at the moment they were created 19:00:19 <ais523> this includes the interpreter that interprets your program, and the interpreter that interprets /that/, etc 19:00:23 <elliott> does anyone remember when rodgerthegreat got really angry demanding that feather couldn't possibly work? 19:00:24 <elliott> i do :Dddd 19:00:26 <ais523> also, the program itself that's fed to the interp 19:00:29 <ais523> I don't 19:01:45 <itidus20> `log rodgerthegreat 19:01:49 <HackEgo> 2008-01-23.txt:05:38:27: <RodgerTheGreat> or, as I like to say, memetic viruses 19:01:49 <monqy> i remember logreading it 19:03:44 <Taneb> I don't remember saying 598 19:03:50 <monqy> `quote 598 19:03:51 <Taneb> Well, I do, but I wish I didn't 19:03:52 <HackEgo> 598) <Taneb> I think it's fizzie against everyone atm <Taneb> AND EVERYONE IS WINNING <Taneb> EXCEPT FIZZIE 19:07:32 * Sgeo celebrates Programmers' Day 19:07:40 <monqy> hi 19:07:43 <Sgeo> `log Sgeo 19:07:47 <Sgeo> hi 19:07:47 <HackEgo> 2011-07-31.txt:06:24:55: <Sgeo> Usually 19:07:52 <monqy> usually 19:07:59 <Sgeo> ..........that's it, I'm officially boring. 19:08:01 <ais523> elliott: oh, Oracle v. Google is getting amusing 19:08:19 <ais523> Oracle decided that they thought that the Google person in charge of Android wasn't senior enough to be involved in mediation 19:08:26 <ais523> even though he'd been involved in all the settlements so far 19:08:40 <ais523> and the judge's reaction was to require the CEOs of both companies to be there 19:08:46 <elliott> haha 19:08:57 <ais523> I'm not sure if they'll try to wriggle out of it or attend 19:09:06 <elliott> court is literally just two parties whinging and a judge trying to upset them both, right? 19:09:10 <elliott> i see no evidence against this 19:09:14 <ais523> somehow, I doubt that mediation's going to go too well if it is Larry v. Larry 19:09:16 <ais523> elliott: quite possibly 19:09:23 <Sgeo> Even in context, it was boring 19:09:24 <ais523> this judge seems to me to have decided that both sides are playing dirty 19:09:36 <elliott> I would pay to attend Larry v. Larry 19:10:11 <Sgeo> Who's the Larry at Oracle? 19:10:13 <elliott> incidentally, /me thinks he might have designed the Platonically Perfect Lisp Macro Solution 19:10:16 <elliott> Sgeo: ellison... 19:10:18 <ais523> Sgeo: Larry Ellison 19:10:29 <Sgeo> ty 19:10:30 <Taneb> I know someone called Ellison 19:11:20 <ais523> I online-know someone called Elliott 19:11:22 <ais523> is that close enough? 19:11:29 <elliott> Totally. 19:13:25 <elliott> http://sprunge.us/TbCe 19:13:31 <elliott> I _think_ I have the semantics to make this work. 19:13:56 <elliott> (note that although they look similar to traditional defmacro quasiquoting, the "tmp" in the second let1 is _not_ exposed to body) 19:14:44 <elliott> monqy: BE INTERESTED 19:14:52 <ais523> elliott: oh dear, one of my friends in another channel, when faced with doing "does the xth character of the yth line of a file contain a particular character" in Python, decided that the easiest method was to call out to vim 19:14:54 <elliott> ais523: be vaguely interested, since it's call-by-name and you dislike traditional lisp macro systems 19:14:55 <monqy> zepto? it doesn't have kernels $s at least 19:14:58 <elliott> and augh 19:15:00 <monqy> so I figure it's not kernel 19:15:01 <ais523> I'm trying to persuade him that some other method is going to be better 19:15:02 <elliott> stop being their friend :'( 19:15:11 <monqy> and I've never heard of anything else with vau 19:15:14 <ais523> elliott: let me look at it, then 19:15:16 <elliott> monqy: it's... zepto I guess, I just stole the vau name 19:15:24 <elliott> it's merely an idea at this point 19:15:31 <elliott> but I think it's perfectly hygienic fexprs 19:15:32 <monqy> it looks a lot different from nights agos ante 19:15:35 <elliott> with quasiquotation 19:16:11 <monqy> interestinG??? 19:16:23 <elliott> very interestinG 19:16:33 <elliott> I think it's syntax-case's basic system, ported over to fexprs 19:17:53 <monqy> comparing the first and the second is cond not having #, a mistake or is there reason for eval not to translate to that there 19:18:11 <Sgeo> Picolisp ... why do picolisp macros exist? 19:18:18 <monqy> hi 19:18:37 <elliott> http://trydyingtolive.com/ worst website ever 19:18:39 <elliott> (enable js) 19:18:46 <elliott> (seriously, do it) 19:19:01 <monqy> wow what 19:19:12 <elliott> ais523: you will enjoy that website 19:19:19 * elliott specialises in true statements 19:19:26 <Sgeo> I can't figure out how to edit text on that site 19:19:36 <elliott> you can't 19:20:05 <elliott> ais523: isn't it beautiful :') 19:20:23 <elliott> it reminds me of like 19:20:26 <elliott> dhtml examples 19:20:27 <elliott> of the 90s 19:20:36 <Sgeo> Why does the Resume read like a real thing 19:20:45 <elliott> Sgeo: because it's a real person's site 19:21:00 <elliott> they actually think this is the best way to make their website 19:21:12 * Sgeo refuses to believe that 19:21:15 <Sgeo> It's just a fun toy 19:21:16 <elliott> http://www.reddit.com/r/programming/comments/keepq/since_designers_use_fancy_looking_websites_to/ 19:21:18 <Sgeo> Lalala 19:21:19 <elliott> Since designers use fancy looking websites to show off their skills, I wondered what a developer's website would look like. This is my result. (trydyingtolive.com) 19:21:19 <elliott> submitted 1 hour ago by trydyingtolive 19:21:22 * Sgeo plugs ears 19:21:28 <Sgeo> lalalalalala 19:21:59 -!- augur has quit (Remote host closed the connection). 19:23:06 <monqy> bachelor of science in youth and family ministry? is that a thing? 19:24:11 <elliott> i bet Sgeo is trying to correct all the vandalism 19:24:16 <elliott> god 19:24:17 <monqy> he's just making it worse 19:24:18 <elliott> red on blue 19:24:19 <elliott> this is beautiful 19:24:23 <elliott> my eyes 19:24:44 <elliott> wait 19:24:48 <elliott> and a catten 19:24:51 <elliott> (half cat half kitten) 19:24:52 <elliott> i 19:24:55 <Sgeo> I don't think I'm doing this 19:24:58 <monqy> oh 19:25:02 <monqy> well I'm not doing it! 19:25:03 <Sgeo> scroll down 19:25:14 <monqy> oh dear 19:25:35 <elliott> im 19:25:36 <elliott> dragging 19:25:37 <elliott> the resume down 19:25:43 <elliott> kidnap 19:25:55 -!- boily has quit (Ping timeout: 252 seconds). 19:26:18 <elliott> its so beautiful 19:26:19 <elliott> ok i am done 19:26:20 <Sgeo> Are you fiddling with the javascript for the kidnap? 19:26:37 <elliott> no 19:26:57 <Sgeo> Um, it snapped back 19:26:58 <Sgeo> Who did that 19:27:11 <elliott> an unfriendly person 19:27:18 <Phantom_Hoover> OMG this is amazing. 19:27:24 <Phantom_Hoover> So how does this work, then? 19:27:57 <elliott> Phantom_Hoover: you drag 19:27:58 <elliott> or resize 19:28:00 <elliott> or 19:28:01 <elliott> usethe options 19:28:02 <elliott> to change 19:28:03 <elliott> things 19:28:06 <Phantom_Hoover> Ah. 19:28:19 <calamari> I wonder if any attacks can be made to break out of the css 19:28:26 -!- oerjan has joined. 19:28:28 <elliott> trydyingtolive is the worst possible name for anything ever 19:28:35 <elliott> calamari: let's find out 19:28:39 <Sgeo> Sounds Christian 19:28:44 <monqy> 503 Service Unavailable 19:28:45 <monqy> No server is available to handle this request. 19:28:45 * elliott sets background colour to #f00;} 19:28:46 <monqy> oh no 19:28:46 <Sgeo> Some Christian stuff sounds creepy to me 19:28:53 <elliott> did i brake it oops 19:29:44 <Sgeo> change everything to #666666 ? 19:29:59 <elliott> rude 19:30:02 <elliott> :'( 19:30:03 <elliott> im just 19:30:04 <elliott> moving boxes 19:30:05 <elliott> not 19:30:06 <elliott> being rude 19:30:11 <monqy> kidnape 19:30:42 <Sgeo> Why does it just say #000 19:30:44 <Sgeo> What's #000 19:30:50 <elliott> black 19:30:51 <monqy> #000 19:30:51 <elliott> duh 19:31:00 <Sgeo> But, why isn't there 6 digits 19:31:08 <elliott> #rgb = #rrggbb 19:31:19 <elliott> its an eight-bit colour 19:31:21 <elliott> er hm no 19:31:23 <Taneb> #000 isn't an IRC channel 19:31:24 <elliott> eight bit would be two hex digits 19:31:31 <elliott> * Now talking on #000 19:31:31 <elliott> * adams.freenode.net sets mode +n #000 19:31:33 <elliott> * adams.freenode.net sets mode +s #000 19:31:37 <elliott> * [freenode-info] channel flooding and no channel staff around to help? Please check with freenode support: http://freenode.net/faq.shtml#gettinghelp 19:31:40 <elliott> * services. removes channel operator status from elliott 19:31:42 <elliott> yes it is 19:31:51 <Taneb> So it is 19:31:55 <ais523> hmm, according to discussion in Slashdot, Windows 8 has no Start menu, even if you put it into old-fashioned desktop mode 19:31:55 <Taneb> weird 19:32:07 <ais523> now, that's going to confuse people who can't adapt to UI change 19:32:12 <Taneb> Neither do the majority of modern OSs 19:32:20 <Sgeo> Hmm, I wonder if this is a mean color 19:32:34 <ais523> well, Gnome 2, KDE 3 and KDE 4 all have pretty close equivalents 19:32:38 * Sgeo changes to a lighter shade of gray 19:32:41 <ais523> I'm not sure about OS X 19:33:04 <elliott> os x ships with the applications folder on the dock by default 19:33:09 <elliott> which pops up a list of every application, so... 19:33:12 <elliott> didn't before leopard though 19:33:14 <ais523> yep, same concept 19:33:30 <Taneb> But are any of them labelled "start"? 19:33:33 <elliott> before leopard, I guess you could only use spotlight 19:33:36 <elliott> before tiger 19:33:36 <elliott> I 19:33:38 <elliott> guess you just opened Finder 19:33:40 <elliott> and went to Applications 19:33:43 <Taneb> Vista doesn't have a start button 19:33:43 <ais523> Taneb: the /name/ is pretty irrelevant 19:33:47 <Taneb> It has a flag button 19:33:54 <elliott> it has start if you put it into Classic 19:34:06 <Taneb> By default, Vista doesn't have a start button 19:34:18 <Sgeo> It has a button with similar functionality 19:34:26 <Taneb> THAT IS NOT THE SAME 19:34:28 <ais523> I'm trying to have a serious discussion about inferior-OSes-that-exist here 19:34:41 <ais523> (as opposed to @ which is a superior-OS-that-doesn't-exist) 19:34:46 <Taneb> I'm trying to explain what a start button is 19:34:49 <elliott> @ is not that good 19:34:53 <Taneb> That is, a button labelled "Start" 19:35:03 <elliott> Taneb: I reject that definition, I suspect most people do too 19:35:07 * Sgeo paints a button labelled Start on Taneb 19:36:14 * calamari can't adapt to UI change :( 19:36:22 * oerjan pushes Taneb's Start button 19:36:23 * Sgeo may be addicted to UI change 19:36:31 <calamari> still running kde 3.5 19:36:47 <elliott> ais523: i'm enjoying this five-minute thing where you accidentally explain the entire uk political system to vorpal 19:36:54 <Taneb> I like what's in that new ubuntu thing that I forget the name of 19:36:55 <Taneb> Unity 19:36:57 <Sgeo> See a new UI, want it 19:36:59 <oerjan> elliott: accidentally? 19:37:07 <Taneb> And I'm probably the only one who does 19:37:09 <elliott> 01:10:17: <AnMaster> ais523, is that even allowed by the constitution? 19:37:09 <elliott> [...] 19:37:10 <elliott> 01:16:27: <AnMaster> ais523, how did he managed to become elected then 19:37:10 <calamari> I think tht webpage automatically reverts changes after a while 19:37:11 <elliott> [...] 19:37:14 <elliott> 01:17:05: <ais523> he was appointed to the house of Lords 19:37:14 <elliott> 01:17:21: <AnMaster> ais523, what does that mean. I forgot how UK politics work 19:37:17 <elliott> etc. 19:37:40 <ais523> elliott: I have to explain the UK itself to a lot of people 19:37:45 <ais523> a lot of IRCers seem to think UK = England 19:37:53 <ais523> which offends me just as much as it offends most non-English Brits 19:37:53 <elliott> 01:18:18: <ais523> there was a huge scandal recently where Lords memberships were allegedly paid for 19:37:54 <elliott> 01:18:30: <AnMaster> that's no democracy... 19:38:00 <elliott> this is hilarious 19:38:04 <Taneb> But us know that UK ACTUALLY = Southern Spain 19:38:13 * Sgeo is vaguely aware that there's a difference. England is a strict subset of UK? 19:38:19 <elliott> 01:19:14: <AnMaster> ais523, I mean the house of lords in general is undemocratic 19:38:19 <elliott> 01:19:39: <AnMaster> having such a thing should disqualify UK as being counted as a democracy 19:38:21 <ais523> Sgeo: yes 19:38:26 <oerjan> ais523: yeah wouldn't want to get confused with those filthy scots 19:38:31 <elliott> Sgeo: what do you think scotland is? 19:38:36 <elliott> apart from filthy 19:38:43 <Sgeo> elliott, a country of some sort? 19:38:52 <Taneb> Technically right 19:38:57 <elliott> Sgeo: entirely separate from england? 19:39:05 <ais523> Taneb: also technically wrong 19:39:08 <elliott> 01:25:40: <ais523> hmm... ehird would probably be highly amused to know that Lord Mandelson was the Baron of Hartlepool 19:39:09 <elliott> 01:25:45: <ais523> I mean, Hartlepool! 19:39:09 <elliott> hartlepool!!! 19:39:15 <elliott> ais523: Scotland is a country, just not a state 19:39:22 <elliott> or, hmm 19:39:25 <Sgeo> elliott, no idea. I'd have thought so. Then again, I would not be able to point out Scotland on a map 19:39:26 <elliott> yeah, it's not a state 19:39:27 <Taneb> We're like Canada, but inside out 19:39:29 <ais523> the word "country" isn't well-defined enough for it to really work 19:39:34 <elliott> Sgeo: you're kidding me, right? 19:39:34 <ais523> it's a dependency of the UK, technically speaking 19:39:37 <ais523> it may be other things too 19:39:44 <elliott> I can accept ignorance on what the UK exactly constitutes 19:39:50 <elliott> but not knowing where Scotland is, even vaguely? 19:39:57 <elliott> thinking it's completely unrelated to England? 19:40:06 <Sgeo> Based on the context, I guess that it's near or in the UK 19:40:10 <ais523> elliott: I doubt I'd get all the dependencies of the UK from memory, or that you would 19:40:14 <Taneb> Very in 19:40:24 <elliott> Sgeo: wow 19:40:27 <Phantom_Hoover> Sgeo, wat 19:40:27 <Taneb> It's one of the Kingdoms that United ot form the United Kingdom 19:40:34 <elliott> Phantom_Hoover needs to get really offended now, this is unbelievable 19:40:39 <Phantom_Hoover> Sgeo, have you, like, seen a picture of the UK/ 19:40:41 <Phantom_Hoover> Ever? 19:40:43 <Phantom_Hoover> Did 19:40:44 <Phantom_Hoover> did you 19:40:44 <elliott> are all US citizens this insanely ignorant??? like 19:40:46 <elliott> i thought the whole 19:40:50 <elliott> USers are dum at geography lol thing 19:40:51 <elliott> was 19:40:54 <elliott> way exaggerated 19:40:57 <Phantom_Hoover> did you think scotland was part of england 19:41:07 <Gregor> ... 19:41:09 <elliott> Phantom_Hoover: i think he thought scotland was unrelated to england... 19:41:10 <elliott> and just... 19:41:12 <elliott> a country somewhere 19:41:13 <Phantom_Hoover> elliott, yes but 19:41:21 <elliott> im crying 19:41:23 <Phantom_Hoover> I assume he's seen what the British Isles look like. 19:41:25 <Phantom_Hoover> At some point. 19:41:27 <elliott> Sgeo: what do you think wales is 19:41:29 <elliott> no wait 19:41:31 <elliott> Sgeo: what do you think ireland is 19:41:38 <Taneb> Ooh, that's a good one 19:41:41 <Gregor> I would like to say, on behalf of all Americans, that Scotland is on Great Britain, and also Sweden and Switzerland are the same country. 19:41:41 <Phantom_Hoover> Thus, he must have thought Scotland was just part of England. 19:41:52 <elliott> On Great Britain. 19:41:54 <elliott> Like, Scotland is layer two. 19:41:57 <Sgeo> Isn't Ireland some... island thing, or otherwise related to islands. 19:41:58 <elliott> Our sky is just Scotland's underside. 19:42:04 <Phantom_Hoover> Sgeo, ..... 19:42:06 <elliott> Sgeo: What's Wales 19:42:09 <elliott> No googlin 19:42:10 <elliott> g 19:42:18 <Sgeo> elliott, related to this whole UK thing somehow. 19:42:24 <Phantom_Hoover> Sgeo, http://qntm.org/uk 19:42:27 <elliott> Sgeo: That's cheating based on context 19:42:29 <elliott> What did you think before now 19:42:31 <Phantom_Hoover> Learn you a UK geography. 19:42:34 <Sgeo> Ireland is north of England, isn't it? 19:42:43 <elliott> I 19:42:47 <Gregor> elliott: Would you rather I'd said "on the island of Great Britain"? No preposition works particularly well there. 19:42:56 <Taneb> In 19:42:59 <elliott> Sgeo: So 19:43:01 <elliott> About Wales 19:43:04 <elliott> What did you think it was before now 19:43:11 <Taneb> Great Britian isn't actually an island 19:43:12 <oerjan> Gregor: austria and australia too 19:43:17 <Sgeo> A country perhaps vaguely in the area 19:43:19 <Taneb> The island is Britain 19:43:21 <Gregor> oerjan: Yes. 19:43:24 <elliott> im going to draw Sgeo's idea of uk 19:43:45 <Phantom_Hoover> <elliott> I 19:43:50 <Gregor> Taneb: Faaaaaaairly sure that the island of Britain is the island of Great Britain, and furthermore one of the British isles. 19:43:54 <Phantom_Hoover> I guess it's true in some ways?????? 19:44:07 <Taneb> Great Britain is a geopolitical region 19:44:10 <Phantom_Hoover> I mean, I can see Kintyre on a good day in Nowhere, Ireland. 19:44:30 <Gregor> TO WIKIPEDIA! 19:44:38 <Sgeo> Wait, is the island that England is on divided such that part of it isn't England? 19:44:51 <Taneb> Yup 19:45:03 <Taneb> And some of England is on other islands 19:45:06 <Taneb> For instance, Wight 19:45:09 <ais523> Gregor: you're correct there 19:45:11 <Phantom_Hoover> "Some people living in Northern Ireland (which is part of the UK) would even like Northern Ireland itself classified as part of the ROI instead of the UK. This is a contentious point." 19:45:18 <Gregor> ais523: Yeah, just concluded that :P 19:45:19 <ais523> Taneb: the Isle of Wight is not part of England 19:45:22 <ais523> it's a dependency of its own 19:45:29 <Phantom_Hoover> Contentious point links to the WP article on the Troubles. 19:45:33 <Taneb> That's the Isle of Man, ais523 19:45:38 <ais523> Taneb: I think they both aren't 19:45:42 <ais523> not sure about the Isle of Wight 19:45:47 <Taneb> The Isle of Wight is definitely part of England 19:45:47 <ais523> I'm definitely sure about the Isle of Man 19:45:50 <elliott> Phantom_Hoover: Sgeo: Taneb: Sgeo's United Kingdom: http://ompldr.org/vYWM2NA 19:46:04 <ais523> what about the Channel Islands? part of the UK, but are they part of England? 19:46:15 <Taneb> Neither 19:46:15 <elliott> Phantom_Hoover: I love WP's jokes-via-links 19:46:25 <Taneb> They're like the Island of Man 19:46:32 <Phantom_Hoover> elliott, that was from qntm, actually. 19:46:36 <oerjan> http://tvtropes.org/pmwiki/pmwiki.php/Main/Scotireland 19:46:36 <elliott> Sgeo: So did you seriously think Scotland was just some place. 19:46:37 <elliott> Phantom_Hoover: Oh. 19:46:38 <Taneb> There's Guernsey, Jersey, Alderney, and Sark 19:46:48 * oerjan cackles veilly 19:46:51 <Gregor> <elliott> Phantom_Hoover: Sgeo: Taneb: Sgeo's United Kingdom: http://ompldr.org/vYWM2NA // the best UK 19:46:54 <Sgeo> Why wouldn't it be just some place? Aren't all places just some place? 19:46:55 <Phantom_Hoover> Sgeo, but didn't you know that we hate the English. 19:46:57 <Taneb> I think Alderney was the last place to abandon the feudal system 19:46:58 <Phantom_Hoover> I mean 19:47:03 <elliott> Sgeo: Yes, but you didn't think it was related to England in any way. 19:47:04 <Phantom_Hoover> They weren't invading in boats 19:47:16 <elliott> Sgeo: I mean, did you just think it was some random European country?? 19:47:30 <Sgeo> I think I was envisioning Scotland to the east of England 19:47:31 <elliott> Phantom_Hoover: They totally should have. 19:47:43 <elliott> Phantom_Hoover: Imagine them just... hating a country on the other side of the globe to them. 19:47:46 <Taneb> Sgeo: Where do you think Herzogovinia is? 19:47:48 <Gregor> I'm pretty sure that Scotland is just another name for Sweden and Switzerland. 19:47:49 <elliott> Wait, that's what America does. 19:48:01 <Phantom_Hoover> Taneb, isn't that Switzerland? 19:48:05 <elliott> Taneb: Sweden 19:48:07 <Gregor> Just that Switzerland is the Swiss name, Sweden is the Swedish name, and Scotland is the Scotch name. 19:48:07 <Sgeo> Taneb, can't tell if you just made that up 19:48:35 <elliott> Gregor: Confoederatio Helvetica! 19:48:44 <Gregor> They must speak like twenty languages in Swedotzerland, though all begin with an 'S' and most begin with 'sw'. 19:48:47 <elliott> Switzerland: named by font nerds. 19:48:47 <Phantom_Hoover> Sgeo, Herzegovina? 19:48:51 <Phantom_Hoover> Taneb, see correction. 19:49:04 <Taneb> I can never spell it 19:49:10 <Taneb> I can barely spell Britain 19:49:14 <ais523> Sgeo: Scotland's to the north of England 19:49:20 <Phantom_Hoover> Sgeo, obviously you weren't there for every Eurovison contest ever. 19:49:33 <Taneb> 2006 was a good year for Eurovision 19:49:42 <Taneb> Lithuania and Finland especially 19:49:42 <elliott> Eurovision is like, the most European thing ever. 19:49:43 * Sgeo still holds the Mornington Crescent hypothesis 19:49:47 <Phantom_Hoover> Taneb, was that The One Where Finland Won. 19:49:58 <elliott> Name something more European than Eurovision. 19:49:59 <ais523> Mornington Crescent is in London 19:49:59 <Taneb> I voted for them! 19:49:59 <elliott> I dare you. 19:50:02 <ais523> quite near Euston 19:50:02 <Gregor> Sgeo: Also, where's Brittany in relation to Britain? </troll> 19:50:21 <elliott> See? You can't. 19:50:29 <Sgeo> The European Union? 19:50:35 <Taneb> Not really 19:50:43 <Taneb> That doesn't even have Norway 19:50:47 <elliott> Sgeo: but seriously, go look at a globe, please. 19:50:58 <elliott> Look at the UK, it's the thing that looks like a pound sign. 19:51:01 <elliott> Except flipped. 19:51:06 <elliott> This is where the pound sign comes from. 19:51:15 <Phantom_Hoover> Sgeo, the EU doesn't even have Switzerland in it! 19:51:21 <Gregor> Taneb: Forget Norway! 19:51:22 <Taneb> I always thought the British Isles looked like Dangermouse and Penfold 19:51:36 <elliott> Phantom_Hoover: Agree that the British Isles are the prettiest geographical formation??? 19:51:37 <Gregor> Taneb: I'M WATCHING DANGER MOUSE RIGHT NOW! 19:51:38 <elliott> All the other islands are like 19:51:39 <elliott> Just blobs 19:51:41 <elliott> The UK sort of 19:51:43 <elliott> Disintegrates 19:51:43 <elliott> to the left 19:51:49 <elliott> s/UK/Britsh Isles/ 19:51:52 <elliott> w/e 19:52:09 <ais523> Scotland has a bunch of offshore islands, ranging from interesting to tiny and worthless 19:52:09 <elliott> But seriously, apart from the Nordic countries and the British Isles, all the other land is SO BORING shape-wise. 19:52:10 <Phantom_Hoover> elliott, you're just discussing the beauty of Scotland. 19:52:22 <elliott> Phantom_Hoover: Well OK but look the whole thing looks like an icon. 19:52:25 <Taneb> Newfoundland's pretty interesting 19:52:29 <elliott> No other island group looks like an icon. 19:52:30 <Taneb> One side of it, anyway 19:52:42 <ais523> they were used for the first reality TV show, before the genre got bad 19:52:43 <elliott> ais523: I'm sure they'd be quite upset at the worthless part 19:53:11 <Phantom_Hoover> ais523, hey, some of them have entertaining names! 19:53:13 <Phantom_Hoover> Rhum! 19:53:18 <ais523> elliott: the really worthless ones, nobody lives on 19:53:23 <Phantom_Hoover> Eigg! 19:53:24 <ais523> so there's nobody to get upset at the insult 19:53:35 <Phantom_Hoover> Also Rhum has deer! 19:53:35 <elliott> ais523: I'll be upset for them. 19:53:45 <Gregor> elliott: By the way, where's Saskatchewan? :P 19:53:54 <elliott> Gregor: Canada. 19:54:04 <Gregor> Canada is as big as Europe :P 19:54:11 <Phantom_Hoover> ais523, also apparently the sailing there is really good. 19:54:13 <Taneb> It's near the middle at the bottom! 19:54:21 <elliott> Gregor: Saskatchewan is a big part of Canada. 19:55:11 <calamari> africa is a bigger country ;) 19:55:20 <Taneb> AAARGH! 19:55:31 <Gregor> By the standard of Canadian provinces, Saskatchewan is pretty normal-sized I'd say. 19:55:34 <Taneb> I JUST HEARD THE NOISE MY PHONE MAKES WHEN I HAVE A TEXT MESSAGE 19:55:41 <elliott> Taneb: NOOOOOOOOOooooooOOOOOOOOoooOOOOOOOOooOOOOOOooOOOOOOOOOOOOOOO 19:55:42 <elliott> oooooooo 19:55:44 <monqy> do you have a text message 19:55:56 <Taneb> Only in the strictest sense 19:56:01 <Taneb> It was from twitter 19:56:03 <monqy> oh 19:56:26 <oerjan> rhum and eigg liquor 19:57:01 <itidus20> anyone can verify this? 19:57:03 <Taneb> Make sure you don't get any Muck in that, oerjan 19:57:04 <itidus20> λx. x λy. y λz.z λw. w z y x == (λx.((x)λy.((y)λz.((z)λw.((((w)z)y)x))))) 19:57:23 <oerjan> Taneb: ok 19:57:44 -!- azaq23 has quit (Quit: Leaving.). 19:58:25 <Taneb> itidus20: Looks right 19:58:45 <Taneb> itidus20: But I would avoid the second one like THE PLAGUE 19:58:58 <itidus20> its going too far? 19:59:50 <elliott> Pretty sure λ syntax is ambiguous in that position, but w/e. 20:00:00 <oerjan> i think λx. x (λy. y (λz. z (λw. w z y x))) would be more reasonable, it helps parsing without being unreadable 20:00:24 <Gregor> elliott: Hey, where's Arkansas? Also how do you pronounce it? Also hahaha I'm indirectly comparing Arkansas to Scotland (I guess that should be "haha"'d at Phantom_Hoover though) 20:00:39 <itidus20> elliott: well yeah.. good point.. the book has an interpretation.. i forgot to mention that 20:00:40 <Taneb> brb 20:00:58 <elliott> Gregor: US. 20:01:00 <elliott> Arkansaw. 20:01:14 <elliott> Southern US, but I already googled it by the time I remembered that :P 20:01:24 <oerjan> not arkensaw? 20:01:30 <elliott> Well yeah. 20:01:31 <itidus20> the book uses some notations such as: E1 E2 E3 means ((E1 E2) E3) 20:01:39 <elliott> itidus20: that's standard notation 20:01:39 <itidus20> and λx . E1 E2 E3 means (λx . (E1 E2 E3)) and not ((λx . E1 E2) E3). 20:01:40 <elliott> what are you reading 20:01:53 <itidus20> i dont actually know its a chapter i found online in pdf format 20:02:30 <itidus20> specifically it said "The 20:02:31 <itidus20> following notational conventions allow abbreviations that reduce the number 20:02:31 <itidus20> of parentheses:" 20:02:56 <itidus20> sorry.. bad post editng 20:02:56 <oerjan> itidus20: looks pretty similar to haskell's convention, except for the symbols 20:02:56 <Phantom_Hoover> <Gregor> elliott: Hey, where's Arkansas? Also how do you pronounce it? Also hahaha I'm indirectly comparing Arkansas to Scotland (I guess that should be "haha"'d at Phantom_Hoover though) 20:03:04 <oerjan> (\ and -> instead) 20:03:09 <Sgeo> I should stop randomly shouting UPDATE into MSPA channels 20:03:11 <Phantom_Hoover> Somewhere in the middle, possibly to the south? also "arkansaw". 20:03:21 <Sgeo> Even with context that I'm just shouting it randomly 20:03:36 <elliott> I hope Gregor doesn't ask me about something not on the American continent :P 20:03:36 <monqy> Sgeo: randomly as in not necessarily when an update actually has happened? 20:03:42 <Sgeo> monqy, 20:03:44 <Sgeo> yes 20:04:00 <Gregor> My point was just that, as bizarre as it was to not know where Scotland is (which I am not forgiving), it's not like you've got a razor-sharp impression of our continent either. 20:04:11 <oerjan> elliott: what's the capital of burkina faso ;P 20:04:20 <itidus20> trouble is since i only have a chapter of the book theres no answers :P 20:04:32 <Gregor> I'm not going to ask about Asia or Africa because I don't know where anything is there X-P 20:04:34 * Sgeo doesn't know the states all that well. Just the obvious ones 20:04:37 <elliott> oerjan: Muslimville 20:04:38 <oerjan> (i'm asking because it sounds funny) 20:04:44 <elliott> Gregor: Sure, but I know what's a state/province of what :P 20:04:49 <Gregor> elliott: That's MuslimVALE. 20:04:59 <oerjan> elliott: ok _maybe_ that's what it means, but no 20:05:05 <elliott> Gregor: And not knowing that Scotland is related to England in any way is just unforgivable :P 20:05:10 <Gregor> Fair 'nuff. 20:05:16 <Phantom_Hoover> Gregor, I can place African and Asian countries on a rough north/south and east/west axis respectively. 20:05:36 * Sgeo can't :( 20:05:39 <Gregor> <Phantom_Hoover> The Asian countries are roughly north-east of the African countries. 20:05:49 <Sgeo> I know that Japan is an island 20:05:57 <elliott> No it's not. 20:06:07 <pikhq_> Japan is several islands. 20:06:08 <Phantom_Hoover> Sgeo, the trick with Asia is that most of the west is stans. 20:06:12 <elliott> Japan is an archipelago. 20:06:16 <Phantom_Hoover> pikhq_, 4 main ones. 20:06:20 <elliott> Of 6,852 islands, said Wikipedia. 20:06:22 <Gregor> Japastan. 20:06:27 <elliott> Phantom_Hoover: which is definitely not "an island". 20:06:35 <elliott> Four is quite thoroughly bigger than one. 20:07:08 <oerjan> Phantom_Hoover: you mean most of the middle. 20:07:30 <Phantom_Hoover> http://www.reddit.com/r/politics/comments/ke8qi/a_14yearold_boy_got_into_a_fight_at_a_school_bus/c2jkyty?context=3 20:07:37 <pikhq_> oerjan: China is most of the middle. 20:07:44 <Phantom_Hoover> Sgeo, shooting in the thigh is most certainly not something you do if you're avoiding lethality. 20:08:00 <elliott> The thigh is well-known to contain the brain. 20:08:03 <pikhq_> Hence the name 中国. 20:08:06 <Sgeo> s/in the thigh/ 20:08:09 <Sgeo> // 20:08:16 <oerjan> pikhq_: erm no. china is at the east of asia. admittedly it's quite wide, but not that wide. 20:08:21 <pikhq_> (lit. middle country, or "central country") 20:08:21 <itidus20> seems to be Text: Formal Syntax and Semantics of Programming Languages 20:08:29 <elliott> Sgeo: Yes, it is literally impossible to non-fatally wound someone with a gun. 20:08:29 <pikhq_> (though part of that's just their ego) 20:08:32 <Phantom_Hoover> There is at least one big artery in the thigh, and cutting it will kill you from blood loss long before any treatment can be made. 20:08:43 <Sgeo> Wasn't entirely aware when I wrote that that the thigh would be especially lethal, just that in general you don't shoot to wound 20:08:44 <Phantom_Hoover> elliott, it is not impossible, it is just much much harder than most people think. 20:09:06 <elliott> Just go for the ribcage, it has a lot of bones 20:09:41 <Gregor> Legs. 20:09:56 <Gregor> Calves, even. 20:09:56 <pikhq_> oerjan: https://secure.wikimedia.org/wikipedia/en/wiki/File:Asia_%28orthographic_projection%29.svg Okay, so it's not *most* of the middle. But holy fuck it's huge. 20:10:14 <elliott> How serious are ear-wounds 20:10:22 <elliott> Can you just blow someone's ear off and watch it flap away 20:10:24 <Gregor> elliott: How good is your aim? :P 20:10:40 <elliott> Gregor: My hands are never not shaky. So let's give it a try! 20:11:04 <oerjan> pikhq_: eek 20:11:07 <Gregor> "Who else has both ears pierced? Pirates! But then, they're sailors." 20:12:18 <Phantom_Hoover> elliott, just make the shakes cancel out. 20:12:34 <oerjan> pikhq_: hm it actually looks plausible that the center of mass might be in china. i'm surprised. 20:12:37 <Taneb> Hello 20:12:41 <elliott> hello 20:12:46 <Taneb> What did I miss? 20:13:08 <Taneb> I can't be bothered to scroll up, you see 20:13:36 <elliott> you missed a murder... 20:13:39 <elliott> `log murder 20:13:43 <HackEgo> 2010-09-12.txt:04:29:12: <pikhq> cpressey: Permission requested to murder you deeply. 20:13:47 <elliott> deeply 20:13:56 <elliott> `logurl 2010-09-12.txt:04:29:12: 20:13:58 <HackEgo> http://codu.org/logs/log/_esoteric/2010-09-12 20:14:16 <Sgeo> oooh 20:14:17 <Sgeo> ahhh 20:14:19 <Sgeo> eeeh 20:14:24 <Sgeo> uuuh 20:14:32 <Sgeo> Why am I giglly 20:14:35 <Sgeo> gggly 20:14:43 <oerjan> `log table 20:14:47 <HackEgo> 2011-09-04.txt:21:32:49: <elliott> Gregor: Also, object fields should totally be immutable by default :P 20:14:51 <elliott> Sgeo... 20:15:03 * Sgeo is entirely 100% sober 20:16:35 <Taneb> That's about 2% more sober than me 20:16:58 <elliott> Funny, I'm 2% sober. 20:17:04 <oerjan> elliott: also, the answer is ouagadougou 20:17:20 <Taneb> That's the capital of Burkina Faso! 20:17:22 <elliott> oerjan: nice name 20:17:37 <oerjan> Taneb: "that was the question" 20:17:44 <Taneb> Wow 20:18:26 <Taneb> What a crazy world 20:18:42 <Gregor> What's the capital of OREGON??? 20:19:02 <Taneb> PHOENIX 20:19:03 <oerjan> Gregor: is this one of those tricky cases where it's _not_ portland? 20:19:04 <Taneb> ALBANY 20:19:12 <Gregor> oerjan: IT IS ... like most US states. 20:19:13 <Taneb> SPRINGFIELD 20:19:24 <oerjan> Gregor: was a fraidso 20:19:28 <Gregor> I would estimate that less than half of US states have their capital in the largest city. 20:19:33 * Sgeo cheats 20:19:45 <olsner> Q: What's that capital of [...]? A: Irrelevant. 20:20:11 <elliott> Is there any capital not named Portland 20:20:16 <Gregor> What's the largest city ... /in the woooooooorld/? 20:20:23 <elliott> I always used to think Portland was a country 20:20:30 <elliott> Gregor: beijing? 20:20:34 <Taneb> It's Java? 20:20:44 <Gregor> I thought it was Mexico City. But I also think it depends on your definition. 20:20:46 <olsner> largest by what measure? if by importance, the one I am currently in 20:20:49 <elliott> http://en.wikipedia.org/wiki/World%27s_largest_cities 20:20:51 <elliott> wow this is complicated 20:20:59 <Taneb> Portland is an islandy peninsula thing in Devon or is it Dorset 20:21:02 <Sgeo> I think the main reason I've heard of Portland, Oregon is 1/0 20:21:13 <elliott> Gregor: It's either Tokyo or Shanghai 20:21:22 <elliott> Mexico City is like number two or so 20:21:25 <elliott> Dunno 20:21:28 <Phantom_Hoover> <Sgeo> I think the main reason I've heard of Portland, Oregon is 1/0 20:21:36 <elliott> wow 20:21:37 <Phantom_Hoover> I thought Gregor was from there or something/ 20:21:45 <Gregor> IT IS POSSIBLE 20:21:52 <Phantom_Hoover> <Gregor> I would estimate that less than half of US states have their capital in the largest city. 20:22:00 <Phantom_Hoover> Stupid capital friends! 20:22:17 <Gregor> ........... 20:22:21 <Sgeo> http://www.undefined.net/1/0/?strip=993 20:22:31 <Phantom_Hoover> Gregor, Glasgow. 20:22:42 <Gregor> Oh 20:22:49 <elliott> Glasgow is capital? 20:22:57 <Taneb> No, but it's the biggest 20:22:59 <elliott> I thought it was Edinburgh. 20:22:59 <elliott> Oh. 20:23:01 <Gregor> As in, "(state [not US sense, governmental entity] with stupid capital) friends" 20:23:02 <Taneb> It's like Prudhoe 20:23:11 <Taneb> It's actually bigger than Hexham 20:23:19 <elliott> "capital of scotlan" --> "Answer: Edinburgh, assuming scotlan is an administrative division. Computed by Wolfram|Alpha at Tue Sep 13 2011 21:23:42 GMT+0100 (BST)" 20:23:20 <elliott> thanks ddg 20:23:22 <elliott> lol at assuming 20:23:52 <oerjan> otoh i just learned the other week from a quiz that birmingham was the second largest city in the ... hm was it the uk or just england 20:23:52 <Sgeo> SCOTLAN 20:23:58 <Sgeo> The network of Scots 20:23:59 <Gregor> Edinburgh IS the capital of scotlan, it's just not the capital of Scotland is all. 20:24:05 <Phantom_Hoover> Sgeo, it's what we call our top secret... yeah. 20:24:14 <Phantom_Hoover> We make fun of the English on it. 20:24:23 <Taneb> Wow, Hexham and Scotland have swapped populations 20:24:24 <Gregor> oerjan: It's the second largest ... airport in the UK :P 20:24:34 <Taneb> I meant Prudhoe 20:24:38 <Taneb> Prudhoe and Scotland 20:24:47 <Gregor> BUT WHAT IS THE CAPITAL OF HEXHAM (the land of six pigs) 20:24:55 <Taneb> Lowgate 20:25:06 * Taneb nods sagely 20:25:06 <Sgeo> Decpork 20:25:22 <elliott> I'm gonna call this place Sixpig from now on. 20:25:40 <pikhq_> :D 20:25:54 <olsner> or, using the sanskrit name for six, shitbacon 20:25:58 <Sgeo> The amusement park where you ride pigs? 20:26:02 <olsner> *shatbacon 20:26:23 <Sgeo> Wait, that makes no snse 20:26:25 <Sgeo> Fuck sense 20:26:34 <oerjan> olsner: why not use the swedish word duh 20:26:42 * oerjan cackles evilly 20:26:43 <Gregor> "Why do you like Six Flags?" "I LIKE RIDING FLAGS" 20:27:28 <olsner> oerjan: SEXBACON 20:27:51 <olsner> there, happy now? 20:27:55 <oerjan> yes 20:27:57 <Phantom_Hoover> <Taneb> Lowgate 20:28:06 <Phantom_Hoover> Please tell me this is some local joke. 20:28:16 <Taneb> It's a little village to the West 20:28:21 <Gregor> Also I keep misreading "Prudhoe" as "Purdue" 20:28:31 <Taneb> Practically in Hexham 20:28:37 <Taneb> But really to one side 20:28:40 <oerjan> Gregor: perhaps that's how purdue was named 20:28:48 <Taneb> One of my friends lives there 20:29:03 <elliott> hmm, this is a very strange eval 20:29:13 <elliott> it's more like calling a procedure than actual eval 20:29:20 <oerjan> it's an evil 20:29:23 <Taneb> MISTER RIUS 20:29:35 <elliott> oerjan: no :'( 20:29:36 <elliott> it nice 20:30:12 <Gregor> `log pornography 20:30:17 <HackEgo> 2009-01-09.txt:17:14:14: <ehird> OH NO, PORNOGRAPHY 20:30:27 <Gregor> OH NO PORNO 20:30:28 <elliott> X-D 20:30:29 <elliott> `log eval 20:30:33 <HackEgo> 2010-08-05.txt:22:37:36: <oerjan> cpressey: evaluations/pure computations? 20:30:34 <oerjan> `log prepromorphism 20:30:38 <HackEgo> 2011-02-02.txt:21:01:16: <elliott> zygohistomorphic_prepromorphism f = g_prepro (distZygoT (liftAlgebra f) (distHisto id)) 20:30:42 <elliott> `log \beval\b 20:30:46 <HackEgo> 2007-05-29.txt:22:32:26: <oklopol> eval(code){code.replace("\\n","\n"); s=code.split("\n"); if(s.length==1)print code; else eval(s[0].regex_replace(s[1],s[2])); } 20:30:46 <Taneb> I keep forgetting that Fellside is a place 20:30:53 <elliott> `log \beval\b 20:30:57 <HackEgo> 2011-01-18.txt:17:32:55: <elliott> ais523: eval doesn't operate on strings here 20:30:59 <oerjan> Taneb: a fell place? 20:31:06 <elliott> `log \beval\b 20:31:09 <HackEgo> 2006-01-14.txt:00:31:39: <fizzie> It's not good style, but you could generate a temporary name and that way use a predicate received as an argument, which would be like "eval"ing the argument in perl or some lisp-like thing. 20:31:30 <Gregor> `log eval.*pornography 20:31:34 <HackEgo> 2011-09-13.txt:20:31:30: <Gregor> `log eval.*pornography 20:31:45 <Gregor> SON I AM DISAPPOINT 20:31:56 <elliott> It can give that for things that actually have answers, too. 20:32:16 <oerjan> `log agrophnimorpic seprogniph 20:32:18 <Gregor> Yes, my main disappoint is in YOUUUUUUUU 20:32:20 <HackEgo> 2011-09-13.txt:20:32:16: <oerjan> `log agrophnimorpic seprogniph 20:32:31 <ais523> `log [^`] 20:32:37 <ais523> that query won't find itself 20:32:40 <HackEgo> shuf: memory exhausted 20:32:49 <oerjan> ais523: tru dat XD 20:33:01 <ais523> `log [^`]watermelon 20:33:05 <HackEgo> 2008-05-20.txt:20:50:45: <ehird> WATERMELONS 20:33:18 <elliott> ais523: umm, that doesn't really do what you want 20:33:27 <ais523> elliott: err, indeed 20:33:30 <ais523> `log [^]]watermelon 20:33:33 <ais523> that's better 20:33:34 <HackEgo> 2008-05-20.txt:20:50:48: <ehird> WATERMELONS 20:33:35 <elliott> heh 20:33:44 <elliott> `log [^]]zygohistomorphic diodsjfof 20:33:47 <olsner> `log watermelon 20:33:48 <HackEgo> No output. 20:33:50 <HackEgo> 2011-09-13.txt:20:33:34: <HackEgo> 2008-05-20.txt:20:50:48: <ehird> WATERMELONS 20:34:07 <olsner> `log bacon 20:34:10 -!- copumpkin has changed nick to frownyface. 20:34:10 <HackEgo> 2008-06-13.txt:19:33:20: <Slereah_> ERDOS BACON 20:34:14 -!- frownyface has changed nick to copumpkin. 20:34:24 <elliott> Does anyone know CHR? I suppose not. 20:34:29 <elliott> fax did. 20:34:32 <oerjan> erdos bacon? now that's just evil 20:35:05 <Gregor> <ais523> `log [^`] <ais523> that query won't find itself // actually this query WILL find itself. 20:35:21 <ais523> Gregor: see my correction above 20:35:29 <oerjan> `log self-reference 20:35:32 <HackEgo> 2011-02-24.txt:00:18:19: <oerjan> Mathnerd314: well i first detected accidental self-reference 20:35:58 <elliott> `log immoral 20:36:01 <HackEgo> 2009-05-05.txt:17:35:19: <ehird> GregorR: Selling non-scarce resources is inherently immoral, imo. 20:36:04 <elliott> `log immoral 20:36:07 <Taneb> Aaah! 20:36:08 <HackEgo> 2010-03-01.txt:13:27:43: <alise> trust Eliezer Yudkowsky to remark on how immoral creating a lookup table can be 20:36:09 <elliott> `log immortal 20:36:12 <Taneb> Windows 8! 20:36:13 <HackEgo> 2008-04-01.txt:19:26:38: <ehird> ' PLEASE NOTE THAT IMMORTALITY IS TREASON' 20:36:23 <elliott> I talk a lot. 20:36:25 <Phantom_Hoover> `log morale 20:36:28 <HackEgo> 2011-01-01.txt:19:32:02: <oerjan> THE BEATINGS WILL CONTINUE UNTIL MORALE IMPROVES 20:36:30 <elliott> oerjan: that's a quote from your interp in intercal, no? 20:36:32 <elliott> unlambda, I think? 20:36:35 <Gregor> `log immorale 20:36:38 <Phantom_Hoover> `log alternate 20:36:39 <HackEgo> 2011-09-13.txt:20:36:35: <Gregor> `log immorale 20:36:41 <Gregor> `log immortale 20:36:42 <HackEgo> 2007-07-13.txt:21:15:30: <lament> SimonRC: i think an alternate mood for "to be" would be nice 20:36:44 <elliott> `log amplicate 20:36:45 <HackEgo> 2011-09-13.txt:20:36:41: <Gregor> `log immortale 20:36:47 <HackEgo> 2011-09-13.txt:20:36:44: <elliott> `log amplicate 20:36:50 <Phantom_Hoover> `log alternate universe 20:36:50 <elliott> `log phantasm 20:36:54 <HackEgo> 2009-09-10.txt:20:35:41: <ehird> AnMaster: i'm the alternate universe ehird. 20:36:54 <HackEgo> 2008-10-19.txt:19:03:18: <fizzie> The books were: "Alice's Adventures in Wonderland", "Phantasmagoria and Other Poems", "Sylvie and Bruno", "The Game of Logic", "The Hunting of the Snark" and "Through the Looking-Glass" 20:37:00 <Phantom_Hoover> `log hoover 20:37:04 <HackEgo> 2011-07-13.txt:22:45:00: <Phantom_Hoover> augur, you'll have to comb the logs. 20:37:09 <elliott> `log phantom 20:37:10 <Phantom_Hoover> I guess it was inevitable. 20:37:13 <HackEgo> 2010-12-01.txt:16:56:56: <elliott> Phantom_Hoover_: But C-CoRN is awesome. 20:37:17 <ais523> HackEgo: I'm disappointed that that fizzie quote didn't mention Bjorn 20:37:20 <elliott> `log phantom[^_] 20:37:23 <Phantom_Hoover> `log bjorn 20:37:24 <HackEgo> 2010-12-21.txt:22:05:26: <elliott> Phantom_Hoover: Phantomhn Hoover? 20:37:26 <HackEgo> 2010-07-27.txt:23:58:31: <aliseiphone> SLOWLY DISROBING EVERY PERSON IN THE ROOM, BRIAN BLESSED THOUGHT OF BJORN, LOUDLY. 20:37:31 <elliott> wat 20:37:33 <oerjan> <elliott> oerjan: that's a quote from your interp in intercal, no? <-- um i doubt it was intended as such... 20:37:43 <ais523> elliott: hey, is the meme-bjorn pronounced "byorn" or "b'jorn"? 20:37:43 <elliott> oerjan: I meant the <HackEgo> 2008-04-01.txt:19:26:38: <ehird> ' PLEASE NOTE THAT IMMORTALITY IS TREASON' 20:37:50 <elliott> which I suspect was a quote from that 20:37:51 <Taneb> Samsung and Apple hate eachother 20:37:52 <elliott> ais523: I think the latter 20:38:00 <ais523> so do I, for some reason 20:38:20 <elliott> oerjan: do you have a link to it, so that I can check? 20:38:53 <oerjan> elliott: ah indeed it is 20:39:03 <elliott> told you 20:39:11 <itidus20> so i can tell myself zero is λf.λx.x and that λf.λx.x is (λf.(λx.(x))), but i can't imagine what use this is 20:39:23 <Taneb> It is every use 20:39:43 <elliott> itidus20: you want numbers, no? 20:39:49 <elliott> that's a representation of the natural numbers 20:40:00 <itidus20> i much prefer to say ram in computer memory is in the binary states 0 and 1 20:40:08 <elliott> lol 20:40:11 <itidus20> it makes more sense to my poor brain 20:40:12 <elliott> you don't know what you're talking about 20:40:13 <elliott> as usual 20:40:27 <Taneb> They are in HIGH and LOW states 20:40:27 <ais523> well, /technically/ it could end up metastable if you overclocked it 20:40:36 <ais523> at least for a while 20:40:40 <itidus20> well yeah 20:40:42 <ais523> I doubt it'd stay that way for long 20:41:03 <ais523> but there's a theorem that there's always going to be some metastable state that persists arbitrarily long 20:41:03 <itidus20> humm 20:41:21 <Phantom_Hoover> itidus20, you know how the Church numerals work? 20:41:26 <itidus20> what is nice about a pebble is that you can process it with your brain as a number by simply looking at it 20:41:31 <elliott> Phantom_Hoover: Obviously not 20:41:37 <elliott> `addquote <itidus20> what is nice about a pebble is that you can process it with your brain as a number by simply looking at it 20:41:38 <HackEgo> 659) <itidus20> what is nice about a pebble is that you can process it with your brain as a number by simply looking at it 20:41:52 <itidus20> shift more pebbles into your visual field and you can count them 20:42:13 <Taneb> What if you drew two circles on each pebble? 20:43:03 <itidus20> not sure then 20:43:09 <Taneb> That has very little applications in lambda calculus 20:43:17 <Taneb> I just wanted to see what you would say 20:43:23 <itidus20> absence of pebbles in the eye calculator = zero 20:43:29 <Taneb> I think you'd have twice as many circles as pepples 20:43:32 <Phantom_Hoover> What's the Mogensen-whatever encoding of a pebble? 20:43:43 <Phantom_Hoover> itidus20, do you therefore find calculus trivial? 20:43:59 <itidus20> i don't have any mathematical background 20:45:17 <Taneb> Go back to f(f(x)) and so on 20:45:42 <Taneb> What if x wasn't 0, but another lambda calculus number thing 20:46:04 <Taneb> With the f and x already filled in 20:46:48 <oerjan> elliott: http://oerjan.nvg.org/esoteric/intercal/unlambda.li btw 20:47:14 <itidus20> humm.. 20:47:35 <elliott> oerjan: hm what's te .l part do 20:47:51 <oerjan> allows # comments 20:48:44 <elliott> ah 20:48:45 <elliott> cheating :) 20:48:49 <elliott> s/te/the/ 20:48:53 <itidus20> maybe i am unconciously blocking myself from lambda cacl 20:48:54 <itidus20> calc 20:49:02 <itidus20> like i am trying to resist something about it 20:49:08 <Taneb> I thought the same 20:49:15 <Taneb> Then one day, I just cracked it 20:49:17 <itidus20> as if it were trying to undermine something i believe it 20:49:34 <itidus20> i have never had such trouble to understand a concept 20:49:50 <elliott> that's because you've refused to just read a tutorial 20:50:01 <elliott> you're trying to figure it out yourself from scratch and this only works for utterly trivial things 20:50:30 <itidus20> for the beginner and the expert at lambda calculus there is still only LC expressions.. 20:50:36 <elliott> what 20:50:37 <Taneb> You have to stop thinking about λfx.f x as a number and think about it as a function that takes two things and returns a third 20:50:59 <itidus20> then why is it called a number? 20:51:07 <Taneb> Because it represents a number 20:51:21 <Taneb> It's like a painting can represent a church BUT IT IS NOT A CHURCH 20:51:33 <itidus20> oh.. representation 20:51:53 <elliott> ceci n'est pas une church 20:52:11 <Taneb> (λfx.f x)(λx.x+1)(0) <--- Evaluate, itidus20 20:52:12 <Phantom_Hoover> itidus20, more accurately, 'number' essentially just means 'thing that behaves in a certain way'. 20:52:22 <oerjan> church numerals are the church encoding of the data type data Nat = Succ Nat | Zero 20:52:30 <elliott> Taneb: don't 20:52:40 <elliott> he's had enough confusion by thinking you "mix" the LC with "other procedures from outside" 20:52:40 <olsner> Taneb: what you call "churches" are just representations of paintings 20:52:43 <oerjan> um 20:52:43 <Taneb> Yeah, I'm probably doing more harm than good 20:52:54 <elliott> using standard arithmetic notation won't help that :P 20:52:59 <oerjan> or the fold for that datatype 20:53:03 <itidus20> hang on 4.. 5 ..6 ..7 posts flying past.. now i will cut and paste the thing into my typing box 20:53:04 <Phantom_Hoover> In the case of natural numbers, which the Church encoding is a case of, you simply need to have something called 0, and something called S, and some guarantees about their behaviour. 20:53:09 <Sgeo> I forget. Church numerals are functions, or what? 20:53:24 <Phantom_Hoover> Specifically, that S(n) is distinct from n for all n. 20:53:27 * Sgeo should just wikipedia 20:53:41 <elliott> Phantom_Hoover: Obviously this will help immensely, considering itidus20 doesn't even grasp the basics of how LC works. 20:53:43 <Phantom_Hoover> Sgeo, you really aren't having a very good day today, are you? 20:54:01 <Phantom_Hoover> elliott, I'm sorry I can only argue that I was less unhelpful than Taneb. 20:54:16 <Taneb> I think this has taught us one thing. We can't teach itidus20 lambda calculus by comittee 20:54:28 <elliott> haha 20:54:45 <Sgeo> Can you build reals in lambda calculus 20:54:48 <elliott> it doesn't help that probably the best-qualified people are deliberately avoiding trying :P 20:54:56 <elliott> Sgeo: today is not your day 20:55:20 <oerjan> `addquote <Taneb> I think this has taught us one thing. We can't teach itidus20 lambda calculus by comittee 20:55:22 <HackEgo> 660) <Taneb> I think this has taught us one thing. We can't teach itidus20 lambda calculus by comittee 20:55:24 <Phantom_Hoover> oerjan, do things already 20:55:29 <Sgeo> I mean.. wait, clearly, integers are a subset of reals 20:55:34 <Phantom_Hoover> that is a thing but the wrong thing 20:55:42 <Sgeo> Can you build the ... why wouldn't you be able to, just and all the computables 20:55:46 * Sgeo facepalm? 20:55:52 <Phantom_Hoover> Facepalm indeed. 20:55:57 <itidus20> well it evaluates to 1 20:56:02 <elliott> Sgeo: Have you gone insane from not eating or something. 20:56:15 <Sgeo> I should go hurry to school 20:56:36 <Taneb> itidus20: what evaluates to 1 again? I'm lost 20:56:44 <Phantom_Hoover> Sgeo, at *4*? 20:56:47 <itidus20> (λfx.f x)(λx.x+1)(0) does 20:56:50 <elliott> `addquote <Sgeo> Can you build the ... why wouldn't you be able to, just and all the computables 20:56:51 <Sgeo> It's almost 5 20:56:52 <HackEgo> 661) <Sgeo> Can you build the ... why wouldn't you be able to, just and all the computables 20:56:54 <Taneb> Yes 20:56:59 <elliott> Sgeo: That answers Phantom_Hoover's question? 20:57:02 <Phantom_Hoover> itidus20, forget that, Taneb is stupid. 20:57:10 <Sgeo> elliott, technically, yes 20:57:15 <elliott> No it doesn't. 20:57:22 <elliott> Sgeo: At *5*? 20:57:28 <Sgeo> elliott, yes. 20:57:32 <Sgeo> =P 20:57:35 <elliott> Sgeo: Also not an answer. 20:57:50 <Phantom_Hoover> Wait of course you Americans call university college and then call that school because you are stupid and bad. 20:57:59 <Taneb> Now, (λfx.f x)(λnfx.f(n f x))((λfx.f (f x))(λx.x+1)(0)) 20:58:12 <elliott> Taneb: That... 20:58:19 <elliott> You're just going to make him think the LC has a number type. 20:58:24 <elliott> Except express that more confusingly. 20:58:33 <Phantom_Hoover> Taneb is also stupid and wrong. 20:58:44 <Taneb> I'm right enough to fool myself 20:58:51 <Taneb> Which makes me even more wrong 20:59:24 -!- ais523 has quit (Remote host closed the connection). 21:00:08 <oerjan> Taneb: i suspect you misparenthesized that 21:00:31 <Taneb> It is pfuew- bracketed perfectly 21:00:32 <itidus20> because (λfx.f x)(λx.x+1)(0) = (λf.(λx.(f x)))(λx.(x+1))(0) = ((λx.(x+1)) (0)) = (0+1) = (1) 21:00:58 <oerjan> Taneb: well the second function never gets all its arguments 21:01:00 <itidus20> sorry i didnt actually start looking at that other thing 21:01:11 <elliott> itidus20: note how for every church numeral n, n(λx.x+1)(0) produces n as a numeral. 21:01:20 <elliott> (If Taneb is going to be confusing like that, I might as well help.) 21:02:04 <Taneb> If you call λx.x+1 f and 0 x, you can forget about the 0 and the +1! 21:02:33 <elliott> So helpful, Taneb. 21:02:35 <elliott> So. Helpful. 21:02:44 <elliott> itidus20 will know LC by the end of the week. 21:03:11 <itidus20> my brain seizes up often in a way which isn't clear externally 21:03:36 <itidus20> i am surprised sometimes i can remember how to walk 21:03:45 <itidus20> (not really) 21:03:53 <Phantom_Hoover> DF counts lye as a food. 21:04:07 <oerjan> the food is a lye! 21:04:26 <cheater> oerjan, ☺✋ 21:04:39 <itidus20> my ultimate goal for LC is any applications i can find for it in game development 21:04:45 <oerjan> clearly dorfs love lutefisk 21:04:56 <itidus20> by which i don't mean writing games in haskell or scheme 21:05:08 <itidus20> but more generalized applications of it.. anything really 21:05:09 <elliott> itidus20: That is a very hubristic way to go about it. 21:06:13 <itidus20> for instance, i recently started to think of a scene from a play as a function.. 21:06:37 <itidus20> like suppose you take a shakespeare play and make all the characters names be variables 21:06:39 <elliott> You are still trying to construct analogies in place of understanding? 21:06:55 <elliott> You are making this hard for yourself by being stubborn about it. 21:06:56 <itidus20> oh well.. functions exist in parallel to LC 21:07:13 <itidus20> i cant stop making analogies just for LC 21:07:23 <itidus20> :P 21:07:51 <itidus20> in some role playing games the characters name is a variable.. 21:07:53 <elliott> You could stop making analogies so that you'd start actually understanding. 21:08:10 <itidus20> so the entire game is a function of that 21:09:32 <itidus20> uhh at least where his name is invoked 21:10:48 <itidus20> ok i know how to explain where my head is at 21:11:11 -!- Taneb has quit (Remote host closed the connection). 21:11:44 -!- Sgeo has quit (Ping timeout: 252 seconds). 21:12:11 <elliott> 2007-01-17.txt:23:15:01: <oklopol> rarely 21:12:11 <elliott> 2007-01-19.txt:21:58:04: <oklopol> you rarely depend on overflow 21:12:11 <elliott> 2007-01-19.txt:21:58:19: <oklopol> and in math you rarely have to iterate through memory 21:13:13 <itidus20> http://oi56.tinypic.com/25f254x.jpg 21:14:10 <itidus20> it doesn't have an answer section since its only 1 chapter and i presume actual answers at end of book 21:14:45 <itidus20> if it bothers with answers at all that is 21:16:15 <oerjan> itidus20: well question 1 is probably not very standard, but depends on the precise rules set down in the book 21:16:35 <itidus20> good point yeah 21:16:54 <itidus20> i might have been confused when doing it.. its not a big deal anyway 21:17:53 <oerjan> indeed that's a rather trivial matter of syntax 21:18:19 <itidus20> so i get that taneb's syntax is: λxyz.E == (λx.(λy.(λz.(E)))) 21:18:51 <oerjan> yeah 21:18:58 <itidus20> haha (no its not taneb's syntax god damn it, its a very common syntax!) 21:24:34 -!- calamari has quit (Quit: Leaving). 21:30:35 -!- sllide has quit (Ping timeout: 276 seconds). 21:32:18 -!- derdon has quit (Remote host closed the connection). 21:34:55 <elliott> hi 21:35:32 * oerjan looks for the invisible newcomer which elliott is greeting 21:36:55 <elliott> im 21:36:56 <elliott> back 21:39:03 -!- sllide has joined. 21:40:04 <oerjan> back from his long travels, he discovered his hometown had gone quiet ... too quiet. 21:40:09 <atehwa> I could be the one 21:40:11 -!- FireFly has quit (Quit: FireFly). 21:40:26 <atehwa> oerjan: that reminds me of Faxanadu 21:40:38 <atehwa> the game for Nintendo 8bit 21:40:43 <oerjan> ok 21:40:48 <elliott> oerjan: yeah can i come to trondheim instead 21:40:59 <elliott> it's right next to scotland, right? 21:41:07 <oerjan> well you're already used to rain i assume... 21:41:12 <atehwa> oerjan: you live in Trondheim? 21:41:16 <elliott> quite :D 21:41:16 <oerjan> yes 21:41:21 <atehwa> my friend is somewhere there nearby 21:41:32 <oerjan> your friend is in HELL 21:41:36 <elliott> and with that, oerjan broke into a run 21:41:40 <atehwa> fii@IRCnet 21:41:59 <elliott> only finns use IRCnet, right? 21:42:10 <elliott> i have not seen a single non-finnish person mention it, ever 21:42:12 <atehwa> well I don't really know :) 21:42:14 <oerjan> (hell, norway) 21:42:23 -!- CakeProphet has joined. 21:42:23 -!- CakeProphet has quit (Changing host). 21:42:24 -!- CakeProphet has joined. 21:42:33 <atehwa> IRCnet is big, I don't think it could consist of Finns solely 21:42:43 <atehwa> IRCnet is the first IRC network 21:42:50 <atehwa> there ever was 21:42:54 <oerjan> depends. how many million people are on IRCnet? 21:42:56 <elliott> not to my knowledge 21:43:00 <CakeProphet> < elliott> CakeProphet: You're stupid in the past 21:43:05 <CakeProphet> elliott: this isn't news to me. 21:43:06 <elliott> ircnet descends from it 21:43:08 <elliott> but so does efnet 21:43:18 <elliott> undernet predates ircnet, even 21:43:21 <CakeProphet> also I had a heavy Python bias. 21:43:25 <elliott> I think ircnet just descends from efnet 21:43:28 <atehwa> depends on the definition of sameness, I guess 21:43:32 <CakeProphet> so I didn't really understand the point of lambdas other than to be used with map. 21:43:38 <oerjan> CakeProphet: but of course, to be news it would have to be in the future 21:43:41 <elliott> atehwa: well, there can't be more than one server there ever was :) 21:43:44 <elliott> erm 21:43:46 <elliott> atehwa: well, there can't be more than one first server there ever was :) 21:43:52 <elliott> s/server/network/ 21:44:02 <atehwa> the first server was tolsun.oulu.fi 21:44:08 <atehwa> oh. 21:44:20 <atehwa> well, the first network didn't really have a name. 21:44:26 <elliott> IRC :P 21:44:38 <atehwa> IIRC :P 21:44:48 <elliott> huh, you're not allowed to run bots on ircnet without permission? weird 21:45:01 <atehwa> no, that's not true... 21:45:04 <CakeProphet> fungot isn't a bot 21:45:05 <fungot> CakeProphet: perhaps i should read about contification if you haven't 21:45:11 <atehwa> depends on your server 21:45:16 <CakeProphet> fungot has feelings like all of us. 21:45:17 <fungot> CakeProphet: and the equally endless " ha ha crappy microsoft programs" 21:45:19 <elliott> Keep in mind: IRC is a privilege, not a right 21:45:19 <elliott> Basic rules: 21:45:19 <elliott> [...]- No bots! They will be removed from this server without hesitation. 21:45:22 <atehwa> many IRCnet servers have overly strict policies 21:45:24 <elliott> that's irc.xs4all.nl at least 21:45:36 <elliott> my source is wikipedia, so maybe it's a totally unrepresentative server :P 21:45:49 <elliott> "IRCnet mostly consists of Finnish communities." Could someone please verify this? Scoo 17:20, 13 December 2005 (UTC) 21:45:56 <atehwa> well, it's not true: bots abound on IRCnet. 21:45:58 <elliott> at least one other person in the world thinks so :P 21:46:06 <itidus20> `log finnish 21:46:10 <HackEgo> 2011-03-18.txt:18:02:56: <oerjan> that's due to my decent knowledge of the finnish gibberish 21:46:17 <elliott> atehwa: hehe, I'm sure lots of non-permitted stuff abounds on EFnet... doesn't _necessarily_ mean it's ok:P 21:46:32 <oerjan> suomi gibberilainen 21:46:33 <elliott> I wonder what the largest network is nowadays 21:46:37 <elliott> I'm sure freenode is up there 21:46:43 <atehwa> well, _everybody_ means every "true" channel on IRCnet has a bot to regulate it 21:46:48 <elliott> maybe quakenet... wikipedia says quakenet 21:46:50 <itidus20> `log suomi 21:46:54 <HackEgo> 2006-04-21.txt:00:29:21: <kipple> "Finland" in Finnish is "Suomi", so I guess it it is something similar 21:47:08 <atehwa> what's typical of IRCnet is that it does not have a central service/bot that you can invite on your channel 21:47:24 <atehwa> s/means/knows/ 21:47:49 <elliott> yeah, serverlessness is kinda weird 21:47:52 <elliott> s/server/service/ 21:47:55 <elliott> I guess it's traditional 21:48:15 <oerjan> the service sucks 21:48:18 <atehwa> yes, it's an oldschool irc network if there ever was one :) 21:48:34 <CakeProphet> oerjan: yeah I want a refund. 21:51:53 <atehwa> wow, this wikipedia article is really interesting 21:52:01 <atehwa> http://en.wikipedia.org/wiki/IRCnet 21:52:34 <atehwa> but maybe that's just because I'm so interested in how social hierarchy works in the Internet 21:52:39 <elliott> I like the "with the support of Jarkko Oikarinen" part... IRCNet: God's Chosen Network 21:52:48 <elliott> oh, hmm, that was EFnet 21:53:01 <elliott> I wonder if it's even technically possible for freenode to split 21:53:09 <elliott> as in, permanently 21:53:30 <elliott> I don't really know much about server linking 21:54:11 <CakeProphet> I believe you could have a netsplit without a subsequent join, if that's what you mean. 21:54:25 <elliott> I know that part :P 21:54:30 -!- sllide has quit (Ping timeout: 258 seconds). 21:54:38 <elliott> I'm just wondering how easy it would be for half of freenode to split off and rename overnight 21:54:51 <atehwa> in IRC, server linking means that the servers share _all_ knowledge about nicks, channels, etc 21:55:32 <CakeProphet> elliott: sounds on the difficult side to me. 21:55:45 <CakeProphet> but it would be worth it... 21:55:54 <atehwa> elliott: so what do you think freenode could split off from? 21:56:02 <elliott> atehwa: no idea :P 21:56:05 <CakeProphet> irc.esonode.net 21:56:10 <elliott> CakeProphet: not /us/, server operators 21:56:11 <atehwa> :) 21:56:52 <CakeProphet> elliott: well, right 21:57:13 <elliott> but 21:57:18 <elliott> if they rename us to ##esoteric 21:57:22 <elliott> we should totally ditch this lame-ass network 21:57:48 <itidus20> humm.... is lambda calc level knowledge on the same level as knowing how to write compilers? 21:58:02 <atehwa> actually, the article about IRCnet is really interesting also in that it states many assumptions about IRC usage that I've taken for granted for a very long time 21:58:03 <elliott> no 21:58:04 <CakeProphet> no 21:58:08 <elliott> lambda calculus is easy 21:58:19 <CakeProphet> also there aren't levels of knowledge. 21:58:22 <elliott> so are compilers really, (just not the "traditional" kind), but they're harder than LC 21:58:28 <CakeProphet> one does not make it easier to do the other, and vice versa. 21:58:35 <atehwa> LC is just a rewrite system 21:58:47 <CakeProphet> atehwa: hey so are compilers. :P 21:58:49 <elliott> atehwa: I was raised on freenode, I assume so much :( 21:58:57 <atehwa> where you have first-class rewriting rules, and nothing else 21:59:33 <elliott> LC isn't much like rewriting rules (it's a rewrite system but not really a rewrite-system /language/) because they can't examine their inputs 21:59:37 <elliott> like, deconstruct them 21:59:40 <elliott> apart from applying them, of course 21:59:41 <atehwa> elliott: I assume, for instance, that no one will care if your channel is taken over 22:00:10 <elliott> haha 22:00:11 <itidus20> ok ok.. maybe i should ask 22:00:24 <itidus20> is lambda calc taught at a bachelor degree level? 22:00:30 -!- Sgeo has joined. 22:00:33 <elliott> atehwa: I assume that channels can't be taken over, except when freenode staff decide to do it to inactive mainspace channels because your nick dropped because you didn't log in for like a month 22:01:56 <itidus20> i.e. is lambda calc something you study when working on a phd or masters? 22:02:04 <elliott> lol 22:02:12 <elliott> lambda calculus is taught in any decent cs course 22:02:30 <atehwa> elliott: wow, talk about secure 22:02:54 <elliott> atehwa: I think it's actually something like thirty days that your nick can be dropped after 22:02:55 <itidus20> elliott: is it ever taught to a student working towards a bachelor's degree? 22:02:55 <elliott> or sixty days 22:02:57 <elliott> it's ridiculous 22:03:01 <elliott> itidus20: of course 22:03:40 <atehwa> elliott: nick wars still happen occasionally on IRCnet 22:03:49 <atehwa> there's no service to register nicks 22:04:09 <atehwa> nor should there be, probably 22:04:14 <elliott> atehwa: clearly you just need a bot to spam anyone who steals your nick without giving the password 22:04:38 <atehwa> what password? on IRCnet, there are no passwords 22:04:48 <atehwa> you protect your nick by being always present 22:04:58 <elliott> atehwa: The password the bot knows, duh. 22:05:09 <elliott> It's your own private NickServ, except instead of forcibly renaming you, it just tries to be really annoying. 22:05:20 <atehwa> :) 22:05:34 <Gregor> You could just have it join every channel that the nick purloiner joins and after every line, say "THIS PERSON IS A FRAUD. DO NOT LISTEN." 22:05:39 <atehwa> but it would have to be on every channel in order to notice a nick offender. 22:05:59 <elliott> atehwa: Nah, it'd just /whois every ten seconds. 22:06:08 <atehwa> ... and, on IRCnet, most server won't let you join 20+ channels 22:06:18 <atehwa> and that applies to bots, too. 22:06:26 <Gregor> The different servers on IRCnet have different join limits? :P 22:06:28 <atehwa> elliott: I suppose you mean /ison. 22:06:35 <elliott> atehwa: there's no whois on ircnet? 22:06:40 <atehwa> Gregor: yup. 22:06:47 <elliott> you finns are... so primitive :| 22:07:03 <atehwa> elliott: who should the bot do a /whois on? 22:07:23 <elliott> atehwa: your nick, duh 22:07:30 <elliott> or does whois require hostname 22:08:18 <atehwa> are you suggesting there should be a bot for _every_ user that wants their nick monitored? 22:08:42 <elliott> atehwa: obviously 22:08:46 <elliott> every _real_ channel has a bot 22:08:49 <elliott> every _real_ user has a bot 22:08:51 <elliott> botyguards 22:10:08 -!- augur has joined. 22:10:08 <atehwa> on IRCnet, channel bots are common, but user bots.. unheard of 22:10:15 <shachaf> > id runST (return 3) 22:10:17 <lambdabot> Couldn't match expected type `m t' 22:10:17 <lambdabot> against inferred type `forall s.... 22:10:19 <shachaf> > (id runST) (return 3) 22:10:21 <lambdabot> 3 22:10:21 <atehwa> because every _real_ user has a screen 22:10:21 <shachaf> elliott: u mad? 22:10:28 <elliott> atehwa: Well clearly I need to innovate. 22:10:36 <elliott> shachaf: Augh, what. That's a GHC bug, right? 22:10:46 <elliott> I know rank-N types do that kind of thing, but... 22:10:48 <elliott> Surelyn ot. 22:10:55 <elliott> Yes, surelyn ot. 22:10:59 <shachaf> elliott: GHC bug? Come on, it's the parentheses. 22:10:59 <Gregor> On SovietRussiaNet, users manage network services. 22:11:08 <elliott> shachaf: BUT THOSE SHOULD PARSE IDENTICALLY 22:11:14 <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. 22:11:41 <elliott> shachaf: ;_____; 22:11:43 <Gregor> `addquote <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. 22:11:46 <HackEgo> 662) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. 22:12:06 <shachaf> Ugh. 22:12:20 <Gregor> Welcome to the out-of-context quote database! 22:12:22 <Gregor> Enjoy your stay! 22:12:25 <elliott> shachaf: You've been QUOTED. 22:13:31 <Sgeo> `quote tusho 22:13:33 <HackEgo> No output. 22:13:39 <Sgeo> `quote ehird 22:13:41 <HackEgo> 19) <oerjan> ehird has gone insane, clearly. \ 24) <oerjan> In an alternate universe, ehird has taste \ 25) IN AN ALTERNATE UNIVERSE: <oerjan> In an alternate universe, I would say "In an alternate universe, ehird has taste" \ 26) <ehird> so i can only conclude that it is flawed, or the world is utterly bonkers \ 27) IN EINEM 22:13:54 <elliott> `pastequotes 22:13:56 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1312 22:13:56 <elliott> Now you have all the quotes. 22:13:57 <elliott> `pastelogs 22:13:59 <elliott> Also some logs. 22:14:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19059 22:14:29 <Gregor> Also, every True Scotsman has a bot. 22:14:36 <Gregor> Phantom_Hoover: Right? 22:14:43 <elliott> Who's Phantom_Hoover's bot? elliott? 22:14:43 <Phantom_Hoover> Yes. 22:14:48 <Phantom_Hoover> To both. 22:15:05 <elliott> Do we really have over 650 quotes? 22:15:11 <Gregor> Apparently. 22:15:20 -!- sebbu2 has joined. 22:15:20 -!- sebbu2 has quit (Changing host). 22:15:20 -!- sebbu2 has joined. 22:15:37 <Sgeo> Not all of them are #esoteric 22:16:11 <elliott> All of the good ones are. 22:16:16 <elliott> Also all of the ones beyond like quote fifty. 22:16:19 <elliott> Gregor: I don't like how you liked Python in 2006. 22:17:00 <Sgeo> 107 < 50 according to elliott 22:17:14 <elliott> I thought you were hurrying to school. 22:17:29 <Sgeo> I'm done hurrying to school 22:17:45 <elliott> Hurry some more. 22:17:50 <Gregor> I'm fairly certain I didn't know Python in 2006. 22:18:10 <elliott> Gregor: You did. 22:18:14 * Sgeo is listening to the professor drone about HTM 22:18:15 <Sgeo> HTML 22:18:16 <elliott> It was your "preferred non-web scripting language". 22:18:16 -!- sebbu has quit (Ping timeout: 260 seconds). 22:18:28 <Gregor> I suppose that's a distinct possibility :P 22:18:29 <elliott> http://eris.berkeley.edu/ hahaha 22:18:37 <Gregor> I have since discovered that Python is extremely terrible. 22:18:45 <elliott> <HackEgo> 2011-09-13.txt:22:18:16: <elliott> It was your "preferred non-web scripting language". 22:18:49 <elliott> That does not help my tab recovery, HackEgo. 22:18:53 <elliott> <elliott> `log preferred non-web 22:18:54 <elliott> <HackEgo> 2011-09-13.txt:22:18:45: <elliott> <HackEgo> 2011-09-13.txt:22:18:16: <elliott> It was your "preferred non-web scripting language". 22:18:54 <elliott> Dude. 22:19:04 <Gregor> :P 22:19:13 <Gregor> You SURE you don't want to filter HackEgo? :P 22:19:16 <elliott> 2006-04-22.txt:06:13:58: <GregorR> That being said, I now have a non-web scripting language of preference, which is good because perl is amazingly bad. 22:19:23 -!- DH____ has joined. 22:19:35 <elliott> 06:09:58: <lament> i like python 22:19:35 <elliott> 06:12:53: <GregorR> lament: DAMN YOU AND YOUR GOOD PROGRAMMING LANGUAGE!!!!!!!!!!!!!!!! 22:19:35 <elliott> 06:13:58: <GregorR> That being said, I now have a non-web scripting language of preference, which is good because perl is amazingly bad. 22:19:35 <elliott> 06:14:22: <lament> heh 22:19:35 <elliott> 06:15:04: <GregorR> I still don't enjoy the whole no-block-ending-keyword thing, but I'm learning to grok that, and it's a small price to pay. 22:19:37 <elliott> 06:15:59: <lament> don't worry, you'll enjoy it soon enough. 22:19:39 <elliott> 06:16:08: <lament> it's really way better than any other way. 22:19:41 <elliott> 06:17:28: <GregorR> I just don't like that you can end multiple blocks in one swift move, especially since it can sometimes be unclear exactly what block you just dropped to >_> 22:19:44 <elliott> PROOF 22:19:59 <Gregor> Tastes change *shrugs* 22:20:04 <Phantom_Hoover> `log stupid 22:20:06 <elliott> Um no sorry you are Bad Forever. 22:20:08 <HackEgo> 2011-01-28.txt:23:27:51: <quintopia> elliott: you would be stupid to do that. you can create fenced off areas indoors. 22:20:29 <Sgeo> am i bad forever 22:20:41 <elliott> Sgeo: yes. 22:21:55 <CakeProphet> elliott: also you're not allowed to read logs of me with that nickname. :P 22:22:07 <elliott> CakeProphet: Whyn't 22:22:11 <elliott> I really need to slog through the entire Kernel report sometime. 22:22:13 <CakeProphet> because I was young and naive. 22:22:22 <Phantom_Hoover> `log Sgeo 22:22:24 <CakeProphet> totally different from now. 22:22:27 <HackEgo> 2010-08-28.txt:22:43:01: <Sgeo> Anything with "Taxi" in the name should be an interpreter for Taxi 22:22:30 <elliott> CakeProphet: now you're old and naive. 22:22:41 <elliott> `log Oegs 22:22:42 <CakeProphet> makes a huge difference. 22:22:45 <HackEgo> 2009-08-03.txt:19:06:11: <HackEgo> \ I'm the one who created this project. Known as Sgeo almost everywhere I'm known, one place as Oegs, and one place as Sgeo2. 22:23:43 <CakeProphet> elliott: old and less naive for sure. 22:24:00 <CakeProphet> consider that I now know that lambdas and list comprehensions do not do the same things. :P 22:24:11 <CakeProphet> see how far I've come? 22:24:44 <itidus20> ok thinking again 22:24:54 <CakeProphet> itidus20: that's never good. 22:24:58 <oerjan> `log thinking 22:25:02 <HackEgo> 2009-09-20.txt:15:44:23: <AnMaster> ehird, ooh nice, but I was thinking more along the lines of rougelike in 3D 22:25:19 <CakeProphet> itidus20: I try to block out all thinking as much as possible. 22:25:27 <itidus20> so i could potentially invent my own notation such as: "λx." = "X" 22:25:28 <itidus20> and.. 22:25:31 <itidus20> therefore 22:25:45 <itidus20> "λx.x" = "Xx" 22:25:49 <CakeProphet> uh, sure 22:26:03 <CakeProphet> that's how notation works, yep. 22:26:15 <oerjan> itidus20: please google "wadler's law" 22:26:33 <itidus20> "λf.λx.f (f x)" = "FXf(fx)" 22:26:50 <CakeProphet> oerjan: hahaha 22:27:08 <itidus20> i know that capital letter has another use in LC but just saying 22:28:58 <CakeProphet> I have a notation whereby x is a function that solves the halting problem for all inputs. 22:29:04 <CakeProphet> x 22:29:14 <CakeProphet> man that sure was fun. 22:29:19 <itidus20> so with what i am saying here can all LC expressions be expressed by the alphabet and parentheses? 22:30:14 <itidus20> assuming a maximum of 26 variables of course 22:30:15 <elliott> I like how you can tell when oerjan gives up. 22:30:28 <itidus20> ok wadlers law 22:31:06 -!- DH____ has quit (Ping timeout: 260 seconds). 22:31:07 <oerjan> itidus20: trivially so 22:31:37 <itidus20> elliott: ah but i am trying to determine which parts of LC can flex and bend without making any difference 22:32:00 <elliott> itidus20: before you actually understand it? ok 22:32:06 <elliott> i am sure itw ill help 22:32:06 <itidus20> a second syntax i thought of was using coloured blocks to represent expressions 22:32:13 <CakeProphet> ... 22:32:19 <CakeProphet> pretty 22:32:19 <itidus20> well there is nothing outside of the expressions 22:32:21 <oerjan> itidus20: ooh, google "alligator eggs" 22:32:33 <elliott> http://worrydream.com/AlligatorEggs/ 22:32:34 <elliott> googled for you 22:32:55 <CakeProphet> elliott: fastest googler in the west. 22:32:56 <itidus20> already seen the alligator eggs and the bird calls at an earlier stage... 22:33:17 <elliott> CakeProphet: Technically I used DDG. 22:33:27 <CakeProphet> elliott: what? ...what? 22:33:31 <CakeProphet> how could you do such a thing? 22:33:39 <itidus20> i couldn't make sense of the bird calls though 22:33:43 <itidus20> too many lines 22:34:05 <elliott> CakeProphet: What. 22:34:20 <CakeProphet> elliott: if you google "furry strapon girls" and then use duckduckgo to search for "furry strapon girls" 22:34:26 <CakeProphet> you will see a distinct difference in the number of hits. 22:34:27 <oerjan> elliott: it's ok, ducks lay eggs too 22:34:37 <elliott> CakeProphet: I'm sure the former results are mostly junk 22:34:44 <elliott> seeing as Gregor was the first person to say that 22:34:47 <elliott> well 22:34:49 <elliott> TO MY KNOWLEDGE 22:34:52 <CakeProphet> elliott: but more representative of what you might find on the internet. 22:35:04 <elliott> I don't care what the internet has, I care about useful results 22:35:17 <elliott> In my trial, I found that DDG provided more useful results to me than Google on average 22:35:23 <CakeProphet> first hit: "furry strapon images" 22:35:26 <CakeProphet> wasn't that helpful? 22:35:29 <Gregor> If I was the first person to say that, then my life is sad. 22:35:31 <elliott> I also preferred the UI and don't trust Google much, so I decided to switch to DDG 22:35:33 <CakeProphet> you got exactly what you looked for. 22:35:39 <Gregor> As furry strapon girls are the solution to nearly every problem. 22:36:25 <itidus20> just like.. in arithmetic the main thing is i have to arrange numbers and operators.. and then i can rewrite them and gradually arrive at a single number.. unless there are variables in the arithmetic expression 22:36:29 <CakeProphet> Gregor: and DDG is highly lacking in this realm. 22:36:31 <CakeProphet> shame. 22:36:39 <itidus20> which will mean i arrive at numbers and varables 22:37:08 <CakeProphet> itidus20: only numbers and variables? x 12 45 y is not valid I think. 22:37:15 <CakeProphet> surely you also have operators. 22:37:23 <itidus20> hmmm 22:37:28 <itidus20> ok also operators 22:37:48 <itidus20> and.. i can always take an operator and combine 2 arithmetic expressions 22:38:26 <itidus20> so a variable tends to imply part of an expression which is rewritable 22:38:38 <CakeProphet> all parts of an algebraic expression are rewritable. 22:38:40 <elliott> oerjan: having fun? 22:38:45 <CakeProphet> not just variables. 22:39:04 <itidus20> hummm 22:39:06 <itidus20> ok ok 22:39:12 <CakeProphet> x + y = z + a 22:39:24 <CakeProphet> now those expressions are interchangeable. 22:39:26 <CakeProphet> along with others. 22:39:48 <itidus20> the operators are defined in such a way that you can always take any expression1 and rewrite it into: expression1 + expression2 22:39:52 <CakeProphet> but I'm not really sure what the point of this topic is. 22:40:07 <CakeProphet> itidus20: what? 22:40:13 <itidus20> in algebra that is the case 22:40:17 <CakeProphet> uh, no? 22:40:49 <CakeProphet> rewrite x*y as expression1 + expression2 22:40:56 <oerjan> expression1 + e^(i*pi) + 1 22:40:57 <CakeProphet> ...oh wait 22:40:58 <CakeProphet> lol 22:40:59 <CakeProphet> wjehriuwheuthwryg 22:41:01 <itidus20> x*y + expression2 22:41:17 <itidus20> i just worded it badly cos im not a mathematician >.< 22:41:17 <CakeProphet> oerjan: counterexample plz 22:41:33 <itidus20> ^ (x*y) + expression2 22:41:42 <oerjan> CakeProphet: it's rather hard to give a counterexample to something that is technically true. 22:42:08 <CakeProphet> ...oh. 22:42:11 <CakeProphet> yeah. nevermind. :P 22:42:15 <itidus20> for any expression1, you can have something like expression1 + expression2,.. you can do some kind of: (x*y) + expression2 22:42:30 <CakeProphet> I have two, which can also be 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 22:42:34 <itidus20> i lose control of my english grammar at such times 22:42:50 <itidus20> oh yes.. expression + 0 = expressin 22:42:59 <CakeProphet> profound. 22:43:03 <itidus20> oh yes.. expression * 1 = expression 22:43:23 <oerjan> it's called having an identity element 22:43:26 <itidus20> (sorry didn't mean to retype oh yes) expression / expression = expression 22:43:32 <CakeProphet> ....... 22:43:33 <elliott> Gregor: Hey, can you stop all thirty-two bit machines from existing? 22:43:38 <elliott> itidus20: N... 22:43:39 <CakeProphet> itidus20: yep, that's how division works. 22:43:39 <elliott> No... 22:43:40 <itidus20> expression - 0 = expression 22:43:40 <CakeProphet> don't let them 22:43:43 <oerjan> mind you, you _can_ define operators which don't have any 22:43:46 <CakeProphet> don't let them try to convince you otherwise. 22:43:50 <CakeProphet> they're lying. 22:43:52 <Gregor> Bahaha, "Take Penfold, he could be useful as a sacrifice." 22:44:11 <Gregor> `run uname -a | sed 's/^/elliott: PROBLEM SOLVED. /' 22:44:13 <HackEgo> elliott: PROBLEM SOLVED. Linux (none) 3.0.1-umlbox #5 Fri Aug 19 13:17:44 UTC 2011 x86_64 GNU/Linux 22:44:29 <elliott> Gregor: Thanks. Also are you watching Dangermouse. 22:44:33 <CakeProphet> itidus20 is kind of the algebras. 22:44:34 <elliott> Is that because Taneb mentioned Dangermouse. 22:44:41 <elliott> Dangermouse is quality British culture. 22:44:43 <CakeProphet> s/kind/king/ 22:44:53 <itidus20> elliott: i realise that is algebra and not LC which i am typing 22:44:54 <Gregor> elliott: No, I was watching Danger Mouse /when/ Taneb mentioned it. 22:45:00 <Gregor> elliott: And am still watching it. 22:45:01 <elliott> itidus20: no, x/x is not the same thing as x. 22:45:03 <elliott> what's 9/9 22:45:06 <elliott> Gregor: keep doing that 22:45:10 <CakeProphet> elliott: 9! 22:45:16 <itidus20> oops 22:45:19 <itidus20> i got confused then 22:45:23 <Phantom_Hoover> itidus20, what is x/x 22:45:28 <itidus20> expression / 1 = expression :P sorry 22:45:34 <Gregor> If you say "1" I'll punch you :P 22:46:07 <CakeProphet> well, now that x/x != x 22:46:12 <CakeProphet> there is nothing esoteric about this topic. 22:46:25 <Gregor> elliott: The thing I don't get is ... was this ever a kids show? It was presented to me as such, but as far as I can tell, no kid would get it :P 22:46:31 * Phantom_Hoover → sleep 22:46:49 -!- Phantom_Hoover has quit (Quit: Leaving). 22:47:06 <elliott> Gregor: Dude, we have smart kids in britain. 22:47:21 <elliott> I watched Danger Mouse as a kid, at least :P 22:47:47 <Gregor> Oh. 22:47:51 <elliott> What. 22:47:52 <Gregor> 'cuz we have stupid kids in the USA. 22:47:56 <elliott> Yes. 22:47:57 <itidus20> expression = 0... expression/expression = 1? 22:47:58 <itidus20> :P 22:48:08 <Gregor> And cartoons are just an alternative to ritalin. 22:48:10 <elliott> Gregor: Have you watched Top Cat -- wait you're American of course you've seen the entire Hanna-Barbera output. 22:48:16 <elliott> (Hanna-Barbera: So bad?) 22:48:19 <Gregor> itidus20: You need the hospital's rule. 22:48:20 <itidus20> no time for me to stfu 22:48:31 <itidus20> ^no. time for me to stfu 22:49:13 <CakeProphet> Gregor: does the hospital's rule involve you punching someone? 22:49:31 <itidus20> l'hopital 22:49:35 <itidus20> according to wiki 22:49:39 <CakeProphet> -_- 22:50:01 <itidus20> chances of me comprehending < chances of elliott winning the lottery this week ... :D 22:50:14 <elliott> A good self-fulfilling prophecy. 22:50:30 <CakeProphet> I am a self-fulfilling prophet. 22:50:34 -!- elliott has quit (Remote host closed the connection). 22:50:41 <itidus20> elliott: do you think i should study hospital's rule? 22:50:52 <CakeProphet> itidus20: you need to... focus. :P 22:50:56 <CakeProphet> on one thing 22:50:57 <CakeProphet> and learn that 22:50:57 -!- elliott has joined. 22:50:59 <itidus20> hang on.. zero over zero 22:51:14 <CakeProphet> and not jump from lambda calculus to basic algebra to regular calculus. 22:51:15 <oerjan> elliott: i thought you were doing an ais-style quit there 22:51:27 <CakeProphet> and not understand any of them very well. 22:51:28 <elliott> oerjan: no, i was restarting X. 22:51:29 <itidus20> maybe i was onto something there.. hahaha.. 22:51:36 <elliott> oerjan: it's rage_/parts_ that ais does, not /quits. 22:51:48 * CakeProphet has exactly one rage part. 22:51:56 <itidus20> `log hospital 22:51:59 <HackEgo> 2011-08-02.txt:21:01:29: <Taneb> "Heatwave bone breaks clog hospital." 22:52:04 <itidus20> `log hospital 22:52:08 <HackEgo> 2011-01-31.txt:02:39:52: <elliott> What surprises some observers, including advice columnist Ann Landers, is the extent to which people hold strong opinions on such a trivial topic. Defenders of either position cite advantages ranging from aesthetics, hospitality, and cleanliness; to paper conservation and the ease of detaching 22:52:18 <itidus20> hehehe 22:52:19 <oerjan> `log l'hopital 22:52:22 <HackEgo> 2011-09-13.txt:22:52:19: <oerjan> `log l'hopital 22:52:26 <elliott> `log l'hopital 22:52:30 <HackEgo> 2010-03-12.txt:16:18:45: <fax> AnMaster, it's just exploring the convergence/divergence of sequences of real numbers, then series (running totals of sequences), then lim & integrability - the big theorem from it is l'hopital 22:53:19 <CakeProphet> `log `log 22:53:22 <HackEgo> 2011-09-13.txt:17:35:40: <HackEgo> 2011-09-13.txt:17:35:26: <monqy> `log `log 22:53:23 <itidus20> anmaster gets it now 22:53:35 <itidus20> `log `log log 22:53:38 <HackEgo> 2011-09-13.txt:18:33:30: <itidus20> `log log 22:53:40 <Gregor> >_< 22:53:52 <CakeProphet> `log log log 22:53:55 <HackEgo> 2010-09-17.txt:13:05:54: <Vorpal> since clog logs doesn't include anything but nick 22:54:05 <CakeProphet> :) 22:54:07 <Gregor> Hm 22:54:12 <Gregor> I have "OH GOD NOOOOOOOO" on my clipboard. 22:54:16 <Gregor> And no idea why. 22:54:29 <CakeProphet> someone is trapped in your clipboard 22:54:30 <elliott> Gregor: It's your OS. 22:54:32 <itidus20> `log `log `log log 22:54:34 <elliott> Gregor: It wants to be @. 22:54:36 <HackEgo> 2011-09-13.txt:22:53:35: <itidus20> `log `log log 22:54:50 <itidus20> a nice easter egg for someone to find oneday perhaps 22:55:08 <CakeProphet> `log dick nipples 22:55:11 <HackEgo> 2011-09-13.txt:22:55:08: <CakeProphet> `log dick nipples 22:55:24 <Sgeo> `log PSOX 22:55:25 <CakeProphet> a nice easter egg for someone to find. 22:55:28 <HackEgo> 2007-12-30.txt:21:30:38: * Sgeo considers PSOX.py to be a bit of a project 22:55:37 <Sgeo> `log PSOX 22:55:38 <elliott> `log PSOX sucks 22:55:41 <HackEgo> 2009-05-30.txt:01:52:52: <pikhq> goonx: It's kinda impoſsible, aſide from PSOX. 22:55:42 <HackEgo> 2007-09-10.txt:17:10:09: <bsmntbombdood> PSOX stands for "PSOX Sucks Other's Xenophobia" 22:55:49 <itidus20> `log stardate 22:55:53 <HackEgo> 2008-12-22.txt:05:59:12: <lolbot> Oh, that sound of male ego. You travel halfway across the galaxy and it's still the same song...-- Eve McHuron, "Mudd's Women", stardate 1330.1 22:55:57 <Gregor> elliott: By the way, you've better have watched Rocky and Bullwinkle *evil eye* 22:56:03 <elliott> `logurl 2008-12-22.txt:05:59:12: 22:56:04 <HackEgo> http://codu.org/logs/log/_esoteric/2008-12-22 22:56:08 <elliott> Gregor: >__________________________________________---__> i think i saw it once?????????////////// 22:56:16 <elliott> look ok usa cartoons are just not as good as uk cartoons 22:56:41 <Gregor> Rocky and Bullwinkle is better than EVERYTHING 22:56:42 <Sgeo> Avatar: The Last Airbender isn't good? 22:56:48 <CakeProphet> elliott: typical UK mind virus dronespeak 22:56:53 <CakeProphet> all US things are superior to UK things. 22:57:05 <itidus20> `log turtle 22:57:08 <HackEgo> 2011-02-11.txt:15:24:34: <Gregor> !bfjoust raping_turtle < 22:58:01 <itidus20> i was thinking of ninja turtles but, the comic was american, the animation was japanese 22:58:05 <Lymee> !bfjoust hi -*100000 22:58:08 -!- nooga has joined. 22:58:09 <CakeProphet> ITT: read things that were said in the past instead of talking in the present. 22:58:10 <tiffany> o.o 22:58:14 <EgoBot> ​Score for Lymee_hi: 8.1 22:58:15 * Lymee hugs tiffany ^^ 22:58:21 * tiffany hugs lymee ^_^ 22:58:46 * Gregor expands the vertical smiley ^__^ 22:59:01 <oerjan> what's ITT again 22:59:18 <elliott> Is that a bot. 22:59:28 <CakeProphet> in this thread 22:59:31 <CakeProphet> or topic, I guess. 23:00:31 <CakeProphet> oerjan: an excellent way to make meta-observations about a conversation. 23:00:58 <oerjan> ITT: excellent meta-observations 23:01:01 <itidus20> some day i hope someone makes a calculus of notations 23:01:33 <CakeProphet> but you don't really know what that means. 23:02:09 <oerjan> there are almost surely several possible meanings of that phrase for which someone already did 23:02:17 <itidus20> the problem i need to solve is to increase my personal understanding of all existant notations while not negating the benefits of that feat 23:02:37 <Lymee> !bfjoust bye +*100000 23:02:37 <oerjan> BNF comes to mind 23:02:39 <CakeProphet> notations aren't even really that interesting. 23:02:40 <EgoBot> ​Score for Lymee_bye: 8.1 23:02:50 <Lymee> !bfjoust hi -*128 23:02:53 <EgoBot> ​Score for Lymee_hi: 8.1 23:02:58 <Lymee> !bfjoust bye [+] 23:03:01 <EgoBot> ​Score for Lymee_bye: 15.4 23:03:05 <Lymee> wat 23:03:12 <Lymee> !bfjoust hi [-] 23:03:16 <EgoBot> ​Score for Lymee_hi: 15.4 23:03:17 <Lymee> how does that 23:04:08 <elliott> itidus20: you want to know the metalevel before the base level? 23:04:18 <elliott> deconstructing notation will not help you learn anything. 23:04:24 <elliott> it is an excuse. 23:04:32 <itidus20> im good at excuses 23:04:37 <elliott> indeed. 23:04:42 <CakeProphet> !bfjoust a_dozen_tits_many_success (.)*12[+] 23:04:48 <CakeProphet> !bfjoust a_dozen_tits_many_success (.)*12[+] 23:04:52 <EgoBot> ​Score for CakeProphet_a_dozen_tits_many_success: 15.4 23:05:06 <itidus20> let me formalize that now 23:05:16 <CakeProphet> >_> 23:05:51 <itidus20> the part of my psyche which is being passive aggressive is good at excuses 23:05:55 <CakeProphet> itidus20 is playing with toys. 23:06:10 * CakeProphet <--- expert psychologist 23:06:35 <itidus20> it is not for me to identify with my passive aggression.. to glamourize it 23:06:44 <itidus20> although i do anyway 23:07:09 <CakeProphet> !bfjoust a_dozen_pairs_of_tits_many_success (.)*24[+] 23:07:12 <EgoBot> ​Score for CakeProphet_a_dozen_pairs_of_tits_many_success: 15.4 23:07:17 <itidus20> so that is the error in "im good at excuses" 23:08:19 <Lymee> !bfjoust not-so-perverted successes .*23[+] 23:08:22 <EgoBot> ​Score for Lymee_not-so-perverted: 15.6 23:08:25 <itidus20> its probably even worse to try to de-identify with it... thats a cultish thing to do 23:08:28 <Lymee> !bfjoust not_so_perverted_successes .*23[+] 23:08:32 <EgoBot> ​Score for Lymee_not_so_perverted_successes: 15.6 23:08:51 -!- CakeProphet has set topic: Freudian armchair psycho-babble | It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!& | http://codu.org/logs/_esoteric/. 23:09:04 <elliott> Gregor: How does Fythe do parsing, again 23:09:07 <oerjan> is .*23 actually recognized 23:09:15 <elliott> probably not 23:09:42 <Gregor> elliott: Quite well, thank you. 23:09:49 <elliott> Gregor: Not helpful 23:09:59 <Gregor> elliott: It's a memoized recursive descent parser (AKA a ratpack parser) 23:09:59 <Lymee> !bfjoust test0 >*2< 23:10:02 <EgoBot> ​Score for Lymee_test0: 6.8 23:10:05 <Lymee> Erm 23:10:08 <Gregor> Err ... packrat 23:10:11 <Lymee> !bfjoust test0 ><*2 23:10:14 <EgoBot> ​Score for Lymee_test0: 6.8 23:10:16 <Lymee> !bfjoust test1 >< 23:10:19 <EgoBot> ​Score for Lymee_test1: 6.8 23:10:24 <Lymee> !bfjoust test2 >(<)*2 23:10:27 <EgoBot> ​Score for Lymee_test2: 0.0 23:10:28 -!- oerjan has set topic: Freudian armchair psycho-babble | It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!& | http://codu.org/logs/_esoteric/. 23:10:29 <Lymee> Nope! 23:10:31 <CakeProphet> >< = "grrr" 23:10:32 <elliott> Gregor: Right, so PEGs. 23:10:41 <CakeProphet> the infamous grr strategy. 23:10:41 <elliott> Gregor: Isn't packrat parsing kinda slow? :P 23:10:41 <Gregor> Yes 23:10:45 <Gregor> No 23:10:48 <Lymee> !bfjoust not-so-pervertedly-named-successes (.)*23[+] 23:10:50 <elliott> I thought it was. 23:10:52 <EgoBot> ​Score for Lymee_not-so-pervertedly-named-successes: 15.2 23:10:52 <Gregor> It's O(n) 23:11:07 <elliott> The step could be really expensive :P 23:11:11 <CakeProphet> oerjan: what is different in that one? 23:11:30 <elliott> Apparently there's already a PEG parser for Haskell but I BET IT SUCKS. 23:11:32 <Gregor> elliott: If you have an enormously-ambiguous grammar, it can be memory-expensive. 23:11:51 <oerjan> CakeProphet: less horribly evil spacing 23:11:58 <Gregor> Otherwise, it's roughly the same speed as recursive descent parsing, but with a better worst-case. 23:12:29 <Lymee> !fyb plzreport +! 23:12:40 <elliott> Gregor: Right. I'm just tired of not being able to write left-recursive grammars :) 23:12:46 <EgoBot> ​Score for Lymee_plzreport: 23.1 23:13:01 <Gregor> elliott: Fythe supports left recursion with a simple transformation. 23:13:07 <elliott> I thought PEGs did in general. 23:13:12 -!- pikhq_ has quit (Ping timeout: 240 seconds). 23:13:17 -!- pikhq has joined. 23:13:32 <elliott> I wonder if I can get left-recursion working without observable sharing... (oerjan?) 23:13:48 <elliott> I'd have to try and look for the /RHS/ of any e.g. sequencing operator, as well as trying to see if the LHS will parse... 23:14:03 <Gregor> elliott: Sort of a definitional thing ... 23:14:05 <elliott> Then see if the string up to there is a valid LHS, and so on, until there's no more RHSs left in the string 23:14:06 <oerjan> eek 23:14:06 <elliott> At least I think so. 23:14:16 <elliott> Obviously it's a lot SIMPLER with observable sharing :P 23:14:27 <elliott> And I bet Gregor has no idea what I'm talking about because he doesn't know what observable sharing is, and so thinks I'm a total kook. 23:14:28 <elliott> THEM HASKELLERS 23:14:59 <oerjan> haskellers can be observed to share 23:15:14 <Gregor> Lies 23:15:27 <elliott> Gregor: DO you know what observable sharing is? :-P 23:15:34 <Gregor> Lies 23:15:49 <elliott> Gregor: That's a weird way of saying no X-D 23:16:07 <Gregor> I would assume that it's a situation where, for efficiency sake, two immutable objects are referentially identical, and that fact is not supposed to be observable, but is 23:16:16 <elliott> Sort of. 23:16:23 <Gregor> (Two properly equal immutable objects of course) 23:16:25 <elliott> It basically means you can extract the graph out of "x = f x y". 23:16:36 <elliott> Normally, you can't tell that the first parameter to x is shared with the object itself. 23:16:48 <elliott> But with some unsafeness (which you can wrap around), you can obviously tell it is. 23:16:51 <elliott> By storing a unique identifier with x. 23:16:58 <elliott> (There's other ways to do it too, but that's the most common._ 23:16:59 <elliott> ) 23:17:08 <elliott> Basically it's reifying the graph of pointers from an object :P 23:17:21 <oerjan> elliott: bad idea: recurse on the length of how much you're allowed to match 23:17:23 <elliott> So obviously you can do left-recursion if you have it, because you can tell that 23:17:26 <elliott> x = x, 'a' 23:17:30 <elliott> is left-recursive. 23:17:44 <elliott> Whereas if you don't do observable sharing, you just have to look at the right argument before you go recursing leftwards :P 23:17:46 <elliott> Or do both at once, or whatever. 23:18:18 <oerjan> that may have issues with empty strings matching non-terminals though 23:18:29 <elliott> oerjan: Eh? 23:18:35 <elliott> Erm, I mean 23:18:40 <elliott> x = '' | x, 'a' 23:18:44 <elliott> Which is obviously just a+. 23:19:29 <oerjan> elliott: if when you match that second x, it is not allowed to match as long a string as the whole... 23:19:58 <elliott> oerjan: The idea is to look for an "a" somewhere in the string, then see if the string /before/ that a matches "x". If so, then it's a match. If not, then you look for the /next/ "a", and see if the string before that matches x. 23:20:10 <elliott> And so on, until there are no more "a"s in the string; then you know it doesn't parse. 23:20:45 <elliott> I think if you do that in parallel (deterministic parallelism, obviously) with seeing if there's an x at the start, and then going on to 'a', means that you can parse both left- and right- recursive grammars. 23:20:47 <elliott> Not sure though. 23:21:57 <elliott> And then oerjan stopped listening to me :P 23:22:07 <oerjan> i wasn't talking about your idea anyhow 23:22:22 <elliott> Well, I didn't understand what you were criticising. 23:22:30 <oerjan> myself 23:22:38 <elliott> xD 23:22:46 <CakeProphet> -_;;; 23:22:56 <elliott> ;_____________; 23:22:59 <oerjan> i just thought of a bad idea for left-recursing without observable sharing 23:23:11 <elliott> what was the idea? just out of curiosity 23:23:23 <elliott> Gregor: By O(n), you meant in the length of the input string, right? 23:23:46 <Gregor> Of course 23:23:48 <itidus20> bad idea means "idea which is so good that merely calling it good would not express the magnitude of it's goodness" 23:23:50 <oerjan> to include a parameter for how long a string you're allowed to match, which must be decremented when recursing 23:24:17 <elliott> oerjan: ah 23:24:23 <elliott> oerjan: what was the problem with that? 23:24:45 * elliott wonders if PEGs are monadic or just applicative... 23:25:26 <elliott> Gregor: Do PEGs have a|b = b|a? I really should know more about them :/ 23:25:45 <oerjan> if one nonterminal can consist entirely of another, then it's not safe to decrement 23:25:48 <Gregor> elliott: They don't. 23:25:54 <elliott> Gregor: :'( 23:25:57 <elliott> Gregor: Why not? 23:26:10 <Gregor> elliott: Because if you implement that, it's more than O(n) :) 23:26:14 -!- nooga has quit (Ping timeout: 260 seconds). 23:26:25 <Gregor> (In memory, not time) 23:26:35 <elliott> Gregor: Are you suuuure? :( 23:26:45 <elliott> No way around that? :P 23:27:05 <Gregor> Nothing comes to mind. 23:27:20 <elliott> Gregor: You could deterministically rearrange all alternatives before parsing :P 23:27:41 <Gregor> elliott: That doesn't help if it's properly ambiguous. 23:27:59 <elliott> Like whaddya mean? 23:28:50 -!- pikhq_ has joined. 23:28:52 -!- pikhq has quit (Ping timeout: 252 seconds). 23:30:45 -!- kmc has quit (Quit: Leaving). 23:31:24 <Gregor> elliott: If there exists a nonterminal in your grammar which can correctly parse two different lengths of input, but then only one will be selected as correct by a parser higher in the hierarchy, there's no way to guess which to choose. 23:33:03 <elliott> Gregor: Why are ambiguous grammars even accepted >_> 23:33:31 <elliott> "The fundamental difference between context-free grammars and parsing expression grammars is that the PEG's choice operator is ordered. If the first alternative succeeds, the second alternative is ignored. Thus ordered choice is not commutative, unlike unordered choice as in context-free grammars and regular expressions. Ordered choice is analogous to soft cut operators available in some logic programming languages." 23:33:32 <elliott> Bah :P 23:33:38 <elliott> Can we just do all parsing with Prolog? 23:33:47 <oerjan> determining whether a grammar is ambiguous is undecidable 23:33:53 <elliott> oerjan: Oh right :P 23:34:04 <elliott> oerjan: I knew that, it just didn't occur to me >_> 23:34:21 <elliott> "Compared to pure regular expressions (i.e. without back-references), PEGs are strictly more powerful, but require significantly more memory. For example, a regular expression inherently cannot find an arbitrary number of matched pairs of parentheses, because it is not recursive, but a PEG can. However, a PEG will require an amount of memory proportional to the length of the input, while a regular expression matcher will require only a constant a 23:34:22 <elliott> mount of memory." 23:34:30 <elliott> Hmm 23:34:40 <elliott> What's the memory usage of an LR(one) parser anyway 23:34:55 <elliott> I am so un-clued-up-on wrt parsers :| 23:34:56 <Gregor> Lower than a PEG :P 23:35:30 <elliott> If you have a PEG parser that produces an infinite list, can you GC the memory if you keep taking the tail of that list? 23:35:32 <elliott> Like... 23:35:35 <CakeProphet> elliott: I wonder how much memory a regex that parses matches parens uses. 23:35:39 <elliott> Can you match 'a'+ to an infinite list of as 23:35:39 <CakeProphet> compared to a PEG. 23:35:44 <CakeProphet> *matched 23:35:45 <elliott> CakeProphet: No regex can do that. 23:35:50 <elliott> <elliott> Can you match 'a'+ to an infinite list of as 23:35:52 <elliott> With constant memory 23:35:53 <oerjan> LR(one) parsers are deterministic PDAs 23:35:56 <elliott> Because you keep discarding the parses 23:35:56 <CakeProphet> elliott: Perl regexes can... 23:35:57 <elliott> Maybe??? 23:35:58 <elliott> Gregor??? 23:36:02 <elliott> CakeProphet: Perl regexps are not regular expressions. 23:36:10 <elliott> They, therefore, have none of the parsing guarantees regexps do. 23:36:10 <CakeProphet> elliott: ...that's why I said regex. 23:36:18 <elliott> CakeProphet: Well, the answer is bad. 23:36:22 <elliott> Perl's algorithm is very exponential. 23:36:23 <Gregor> elliott: Not in the conventional definition. 23:36:32 <oerjan> i don't think they can grow the stack more than no. of characters 23:36:35 <elliott> Gregor: Laziness isn't in the conventional definition :P 23:38:06 <elliott> I know that Frisby (Haskell PEG parser) is composable... "Unlike other parsers of PEG grammars, frisby need not be supplied with all possible rules up front, allowing composition of smaller parsers." 23:38:16 <elliott> But I don't wanna use it or look at it because NYEH PRIOR ART DOESN'T EXIST 23:38:44 <elliott> "Although memory consumption is linear in the size of the input, the constant factor is very large. 23:38:45 <elliott> frisby attempts to address both these concerns." 23:38:46 <elliott> PAH 23:38:52 <elliott> Gregor: How large is the constant for Fythe btw :P 23:39:19 <elliott> "frisby attempts to be lazy in reading the results of parsers, parsers tend to work via sending out 'feeler' predicates to get an idea of what the rest of the file looks like before deciding what pass to take, frisby attempts to optimize these feeler predicates via extra lazyness such that they do not cause the actual computation of the results, but rather just compute enough to determine whether a predicate would have succeeded or not. 23:39:19 <elliott> (It is interesting to note that the memory efficiency of frisby depends vitally on being as lazy as possible, in contrast to traditional thoughts when it comes to memory consumption)" 23:39:21 <elliott> IT'S LIKE MAGIC.............. 23:39:24 <Gregor> elliott: Small enough that the parser has never been more than a spec in any profile of Fythe. 23:39:27 <Gregor> *speck 23:39:35 <Gregor> The transform engine, on the other hand .... 23:39:58 <elliott> Gregor: I take it Fythe solves the "Unlike other parsers of PEG grammars, frisby need not be supplied with all possible rules up front, allowing composition of smaller parsers." part 23:40:22 <Gregor> I don't understand why that would be an issue for any PEG parser :P 23:40:51 <elliott> Gregor: "Traditionally, PEG parsers have suffered from two major flaws: 23:40:51 <elliott> A global table of all productions must be generated or written by hand, disallowing composable parsers implemented as libraries and in general requiring the use of a parser generator tool like pappy" 23:40:54 <elliott> It doesn't go into any more depth :P 23:41:05 -!- oerjan has quit (Quit: Good night). 23:41:24 <Gregor> I have a global table of productions ... which is mutable ... 23:42:20 <elliott> Right, which is distinctly not composable :P 23:42:32 <CakeProphet> but does allow rules to not be given up front. 23:42:36 <CakeProphet> *all possible rules 23:43:40 <Gregor> The parsers can be defined as functions. 23:45:06 <elliott> Gregor: Doesn't mean it's composable 23:45:17 <CakeProphet> baaaawwww 23:45:20 <CakeProphet> :P 23:45:38 <elliott> Sorry, I won't state facts in future if it upsets you 23:46:14 <CakeProphet> I get very upset when things don't compose. :( 23:50:35 <itidus20> <EXP> ::= <VAR> | (<EXP><EXP>) | (λ<VAR>.<EXP>) 23:50:47 <elliott> additive = mdo 23:50:48 <elliott> additive <- newRule $ multitive <> char '+' ->> additive ## uncurry (+) // multitive 23:50:48 <elliott> multitive <- newRule $ primary <> char '*' ->> multitive ## uncurry (*) // primary 23:50:48 <elliott> primary <- newRule $ char '(' ->> additive <<- char ')' // decimal 23:50:48 <elliott> decimal <- newRule $ many1 (oneOf ['0' .. '9']) ## read 23:50:50 <elliott> return additive 23:50:52 <elliott> this is awfully ugly 23:50:58 <tiffany> ._. 23:51:10 <elliott> Gregor: So, what's the hot new thing in parsers these days that isn't PEG :P 23:51:33 <CakeProphet> human sweatshops; 23:53:01 <itidus20> <VAR> ::= 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' 23:53:07 -!- sebbu2 has changed nick to sebbu. 23:53:57 <itidus20> <EXP> ::= <VAR> | '('<EXP><EXP>')' | '(' 'λ'<VAR>'.'<EXP>')' 23:54:53 <CakeProphet> itidus20: that forces parens 23:54:59 <itidus20> yup 23:55:01 <CakeProphet> you can just have a '('<EXP>')' rule 23:55:11 <CakeProphet> and then have not-forced parens. 23:55:13 -!- Jafet has quit (Quit: Leaving.). 23:55:25 <itidus20> humm 23:55:39 <itidus20> humm 23:56:28 <monqy> CakeProphet: but then it becomes ambiguous unless you fix it more 23:56:35 <elliott> monqy: WHAT'S THE HOT NEW THING IN PARSING 23:56:45 <monqy> elliott: i dunno ;_; 23:56:49 <CakeProphet> furry strapon parsers. 23:56:54 <itidus20> <EXP> ::= <VAR> | '('<EXP>')' | <EXP><EXP> | 'λ'<VAR>'.'<EXP> 23:57:09 <elliott> Gregor: Detail to me the furry strapon parser algorithm 23:57:47 <CakeProphet> monqy: is that ambiguous? 23:57:52 <monqy> CakeProphet: yes!! 23:58:01 <CakeProphet> how so? 23:58:06 <CakeProphet> ....oh wait 23:58:09 <CakeProphet> perhaps. I see. 23:58:27 <monqy> consider the case of, say, yλx.xy 23:59:01 <monqy> or even just λx.xx I guess 23:59:13 <CakeProphet> ah 23:59:15 <CakeProphet> yeah 23:59:46 <elliott> I should probably Read The Literature on parsers. 23:59:57 <CakeProphet> elliott: RTFL 2011-09-14: 00:00:06 <elliott> Yes. 00:00:23 <CakeProphet> while you're at it 00:00:24 <monqy> those closest i got to Reading The Literature is learning about the old hat way of parsers and looking through the trifecta slides 00:00:27 <CakeProphet> since I'm bad at reading literature 00:00:31 <CakeProphet> you should compile a list of literature 00:00:33 <CakeProphet> for me to read 00:00:35 <elliott> monqy: I want something that can do left-recursion :'( 00:01:07 <CakeProphet> left-recursion is strange 00:01:21 <CakeProphet> ...and thus on topic(?) 00:01:28 <monqy> what's so strange about it 00:01:30 <itidus20> i based it on this: http://oi51.tinypic.com/drc86g.jpg 00:01:39 <CakeProphet> it recurses leftwards... 00:01:41 <CakeProphet> I dunno 00:01:47 <itidus20> i don't actually know BNF particularly well 00:01:48 <CakeProphet> that is not a good explanation. 00:01:54 <monqy> wtf is <constant> 00:02:00 <itidus20> i left that out 00:02:04 <itidus20> forget about it 00:02:07 <elliott> there's no such thing as predefined objects 00:02:10 <elliott> read a different book 00:02:16 <elliott> CakeProphet: it is the cleanest way to express infix 00:02:25 <elliott> exp := number | exp '+' exp | exp '-' exp | ... 00:02:35 <elliott> although that misses precedence :P 00:02:47 <CakeProphet> though precedence can also be done with only left recursion 00:02:48 <monqy> CakeProphet: have you ever tried doing infix without recursion in one of the ways? it gets messy 00:02:53 <CakeProphet> instead of uh... left-right-recursion? I guess? 00:03:16 <CakeProphet> monqy: no I have not. But I have tried it with right recursion and it works quite well. 00:03:20 <itidus20> elliott: succ is a predefined constant 00:03:26 <itidus20> or Succ, is it 00:03:32 <CakeProphet> >_> 00:03:32 <itidus20> :> 00:03:35 <CakeProphet> no. 00:03:36 <monqy> CakeProphet: if by works quite well you mean is hideous, you may be correct 00:03:59 <CakeProphet> you and your aesthetics. 00:04:21 <itidus20> by constants, which is a fairly bad choice of words 00:04:41 <itidus20> i think he mainly means libraries of LC's 00:04:41 <monqy> itidus20: succ is not a predefined constant 00:04:46 <itidus20> what is it? 00:04:47 <monqy> itidus20: what libraries 00:04:52 <itidus20> what is succ? 00:04:59 <monqy> it depends on your encoding of numbers 00:05:11 <itidus20> hummm 00:05:16 <itidus20> ok >.< 00:05:51 <itidus20> succ has to be defined before usage anyway 00:06:08 <monqy> what do you mean "defined" 00:06:17 <CakeProphet> heh, "pre-defined" as in defined before? 00:07:03 <itidus20> maybe he should have called them predefined expressions 00:07:15 <monqy> maybe your book sucks and you shouldn't be reading it 00:07:15 <monqy> ok 00:07:38 <CakeProphet> predefined to me implies that it was defined outside of the language itself 00:07:39 <itidus20> the term constant seems a bit of a mes 00:07:42 <CakeProphet> which is not the case for succ 00:07:46 <monqy> constant isn't a thing 00:07:53 <itidus20> yeah 00:07:54 <CakeProphet> there are no "constants" in LC 00:08:13 <itidus20> CakeProphet: but what mechanism of the language can you use to define things? 00:08:14 <CakeProphet> ....except maybe uh, lambda? 00:08:21 <CakeProphet> lambda 00:08:25 <monqy> itidus20: there isn't one!!! 00:08:36 <itidus20> so then is succ defined outside of the language itself? 00:08:38 <CakeProphet> >_> lambda? 00:08:40 <monqy> itidus20: you define them in your head or on pencil and paper or with some sort of preprocessor 00:08:42 <CakeProphet> > cycle "lambda " 00:08:43 <lambdabot> "lambda lambda lambda lambda lambda lambda lambda lambda lambda lambda lamb... 00:08:49 <monqy> itidus20: and then inline the definitions 00:08:56 <elliott> itidus20: ((\succ. ...code using succ...) (...definition of succ...)) 00:08:59 <elliott> that's the only way to name anything. 00:09:04 <monqy> or you can do that 00:09:05 <itidus20> monqy: yeah.. well notice i left constants out of my bnf :D 00:09:17 <itidus20> i just conveniently ignored that line 00:09:50 <elliott> CakeProphet: WHAT'S THE NEW THING IN PARSING monqy HELP 00:10:03 <itidus20> but i want to show that i didnt think it all up on my own... not that advanced yet 00:10:09 <CakeProphet> dude I don't know any more than you about parsing 00:10:13 <CakeProphet> why would you think such things. 00:10:20 <monqy> i don't knwlo; =______-; the parsec slides seemed intregueing but i forgot what they said 00:10:25 <monqy> not parsec 00:10:26 <monqy> trifecta 00:10:31 <monqy> trifecta slides 00:10:35 <CakeProphet> itidus20: http://en.wikipedia.org/wiki/Church_encoding 00:10:37 <monqy> I dunno if there's anything more than slides 00:10:38 <CakeProphet> read this. 00:10:39 <monqy> for trifecta 00:10:50 <elliott> CakeProphet: how will that help 00:11:14 <CakeProphet> elliott: it would show him ways to define data in lambda calculus? 00:11:19 <itidus20> All Church numerals are functions that take two parameters. Here f is the successor function and x represents 0. -- makes sense 00:11:52 <itidus20> a whole number then is a function of zero and a successor function. that isn't bad. :) 00:12:07 <CakeProphet> natural number specifically. 00:12:51 <monqy> all i remember about the trifecta slides is it did things to solve problems (and i remember vaguely some of these ways) and also mentioned other methods of parsing 00:12:56 <itidus20> so when it says λf.λx.x is zero.. it means it has no successor ? 00:13:08 <itidus20> oops sorry i take that back 00:13:10 <CakeProphet> zero is just a special case basically. 00:13:15 <itidus20> it means it is not a successor of anything 00:13:20 <CakeProphet> yeah. 00:14:30 <itidus20> to actually use church numerals do you have to apply zero to something? 00:14:36 <CakeProphet> no. 00:14:45 <CakeProphet> but you don't "actually use" lambda calculus. 00:14:54 <CakeProphet> if I understand what you mean. 00:15:21 <itidus20> there is such a thing as impure/applied lambda calculus though as i understand it 00:15:27 <elliott> no. 00:15:29 <elliott> your source was bullshit. 00:15:34 <elliott> CakeProphet: well he only wants to learn LC to "apply it to his gamedev". so of course he isn't going to be able to understand LC as the pure system it is. 00:15:55 <itidus20> are there any other pure systems? 00:15:56 <CakeProphet> itidus20: even if you did apply something to a function, you would be applying a function and returning a function 00:16:00 <CakeProphet> there is nothing else to apply or return. 00:16:03 <itidus20> is LC an instance of a pure system? 00:16:06 <elliott> oh my god 00:16:12 <elliott> note to self never say anything iti will overanalyse it 00:16:50 <itidus20> everything can be abstracted :D 00:16:55 <elliott> sigh 00:16:57 <monqy> :D 00:16:58 <itidus20> even LC 00:17:09 <CakeProphet> LC is a pure system, sure. 00:17:17 <itidus20> it is an instance of a pure system 00:17:18 <elliott> you do _not_ have enough knowledge to think about things like LC on a metalevel before you even understand the base level of plainly understanding it 00:17:25 <monqy> lc is a thing. an instance of a thing. thing. 00:17:27 <elliott> if you keep doing things like that you will _never_ learn it. 00:18:17 <itidus20> its a form of trolling of mine. but thats enough of it i dont want to stir trouble 00:18:33 <elliott> saying dumb things isn't trolling. 00:18:37 <elliott> it's just dumb. 00:18:50 <itidus20> i play with abstraction a lot 00:18:57 <CakeProphet> ....lol 00:19:17 <monqy> itidus20: and for what and in what ways do you want to use the lambda calculus? surely you have some applications in mind with such grave misconception of it 00:19:22 <itidus20> i have considered that sitting down is an instance of human actions 00:19:30 <monqy> itidus20: if i tell you you're wrong, will you stop being wrong? 00:19:53 <CakeProphet> itidus20 is master of the abstract. 00:19:59 <CakeProphet> do not trifle him. 00:20:08 <itidus20> no im not .. i just need to stop 00:20:14 <itidus20> and figure out why im being a pain 00:20:32 <itidus20> and hence stop being a pain 00:20:38 <CakeProphet> just learn the basics before you go off on misguided tangents. 00:20:47 <CakeProphet> that's pretty much all that you're doing wrong. 00:20:59 <itidus20> i got my first irc ban last night... it was kind of uncomfortable 00:21:08 <monqy> I must have missed it 00:21:13 <CakeProphet> being banned is pretty easy. 00:21:14 <elliott> where 00:21:16 <itidus20> not in this channel, or even this server 00:21:20 <elliott> where was it :P 00:21:20 <CakeProphet> 1. join #python 2. msg "lol 00:21:25 <itidus20> efnet #xna 00:21:36 <CakeProphet> " 00:21:44 <elliott> why'd you get banned 00:21:58 <itidus20> well this guy had been warning me for a while.. i think he just had enough 00:21:59 <CakeProphet> xna... fun stuff. 00:22:07 <elliott> that's not an answer :P 00:22:11 <elliott> but sure 00:22:11 <monqy> warning you? for generally acting like yourself? 00:22:14 <itidus20> partially i don't even use xna.. i just rant as if i was in here 00:22:24 <CakeProphet> oh okay. 00:22:34 <CakeProphet> yeah that makes sense. 00:22:37 <elliott> why are you in #xna if you don't use xna 00:22:37 <itidus20> he said the other day allowances can be made for people who at least sometimes talk about xna or use it 00:22:40 <elliott> ? 00:22:43 <itidus20> good point 00:22:54 <itidus20> i considered using it once upon a time years ago 00:23:16 <itidus20> not merely gamedev 00:23:17 <elliott> so how many channels do you rant in :P 00:23:39 <itidus20> i am thinking about bringing a new artform out of gaming 00:23:44 <monqy> oh? 00:23:55 <elliott> just curious 00:24:14 <itidus20> elliott: im currently in 9 00:24:20 <CakeProphet> itidus20: again, you should probably learn the basics of game design before you go making an artform out of it. 00:24:37 <elliott> itidus20: do you rant in all of them 00:24:39 <monqy> what are the basics of game design 00:24:43 <elliott> i just assumed we were special. 00:24:57 <itidus20> you are special 00:25:02 <elliott> howso 00:25:08 <CakeProphet> monqy: I don't think there's really a formal theory to it... it's just like... experience. 00:25:25 <itidus20> this is the only channel like it 00:25:40 <elliott> but you give those other channels your special rants :'( 00:25:59 <CakeProphet> the formal aspect would be the same as in the rest of CS. So game design is essentially just a specific subset of learning how to design programs. 00:26:10 <monqy> game design has nothing to do with cs 00:26:15 <itidus20> well in #xna.. i keep reacting to offtopic topics 00:26:23 <CakeProphet> monqy: fine. applied CS. 00:26:26 <itidus20> overreacting. 00:26:27 <elliott> monqy: it should 00:26:30 <monqy> CakeProphet: i said nothing to do 00:26:31 <elliott> game developers are just bad programmers 00:26:34 <itidus20> basically rants about patents 00:26:45 <monqy> elliott: the point was the separation between design and programming 00:26:45 <elliott> (usually) 00:27:01 <elliott> monqy: well all SE is applied CS. 00:27:05 <CakeProphet> CS isn't concerned with design? 00:27:13 <CakeProphet> in any way 00:27:16 <CakeProphet> there is no branch of it? 00:27:17 <CakeProphet> that cares? 00:27:24 <itidus20> i dont rant that much honestly 00:27:26 <monqy> game design would also apply to non-electronic games, and the such 00:27:33 <CakeProphet> ah, that's true. 00:27:42 <CakeProphet> fun design. :P 00:27:44 <CakeProphet> how to make fun. 00:27:46 <itidus20> some conclusions i have reached is that the word game does not imply entertainment 00:28:04 <itidus20> sorry cake.. didn't mean to be the fly in your soup 00:28:11 <elliott> the cake says it's ok. 00:28:12 <CakeProphet> wat. 00:28:19 <monqy> cake soup. 00:28:33 <Sgeo> My professor is assuming that my classmate's problem is due to a .txt extension, despite his saying (and being right) that it isn't 00:28:35 <itidus20> i am using lazy evaluation style of thinking 00:28:43 <CakeProphet> .. 00:28:45 <CakeProphet> ... 00:28:46 <elliott> do you mean you're just being lazy 00:28:52 <CakeProphet> itidus20: you say these wrong things 00:28:55 <CakeProphet> and it just makes me cringe. 00:29:11 <itidus20> i only JUST NOW concluded that the word game does not imply entertainment 00:29:21 <itidus20> but i had gathered the necessary proofs over the last month or so 00:29:22 <CakeProphet> you're like me from years ago on this channel. stop that. 00:29:27 <monqy> itidus20: do you know what lazy evaluation is 00:29:35 <aspect> is that why there are so many bad games? 00:30:10 <elliott> CakeProphet: i agree w/ comparison 00:30:18 <CakeProphet> a game is essentially an entertaining competition. What makes a game fun is subjective and different people find different kinds of games fun. 00:30:28 <elliott> competition? nah 00:30:35 <itidus20> monqy: i think it means only calculate the answers to questions you need the answers to 00:30:40 <elliott> games present challenges sure 00:30:43 <CakeProphet> elliott: well, not necessarily against other players 00:30:46 <elliott> but competition is the wrong word 00:30:52 <elliott> arguing over definitions of words is stupid anyway 00:30:55 <CakeProphet> you can be competing against the game rules. there is some kind of objective at least. 00:30:59 <elliott> it doesn't matter if something is a game or a toy or whatever 00:31:06 <elliott> CakeProphet: some games have no objective, literally no reward 00:31:14 <CakeProphet> minecraft. 00:31:15 <elliott> for instance, consider minecraft creative 00:31:16 <itidus20> ill reword that: i think it means only calculate the answers to questions you need the answers to when you need them 00:31:18 <elliott> nah 00:31:22 <elliott> today's minecraft has obstacles and shit 00:31:27 <elliott> but creative has literally no obstacle or objective 00:31:31 <elliott> and it's still undeniably a game 00:31:37 <elliott> or if you say it isn't a game, then every player of it would disagree 00:31:47 <itidus20> i still don't see how my definition differs from non-lazy evaluation. 00:31:49 <CakeProphet> hmmm. okay. 00:31:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:31:51 <quintopia> it is not a game in the mathematical sense 00:31:56 <CakeProphet> lulz 00:32:05 <monqy> good words for good people 00:32:12 <CakeProphet> games are not games in the mathematical sense, are they? 00:32:17 <itidus20> monqy, cake: What I seem to do is an act of topic-dropping. 00:32:45 <monqy> itidus20: if you're wrong about something enough, maybe someone will pick up the topic and correct you? 00:32:52 <itidus20> Similar to name-dropping, I use an inappropriate phrase as a synonym for another phrase. 00:33:03 <elliott> monqy: usually no since it's too painful 00:33:22 <monqy> itidus20: oh. that's horrible. 00:33:28 <itidus20> it is 00:33:42 -!- Patashu has joined. 00:34:16 <CakeProphet> an itidus20 is an instance of an OO mind virus. 00:34:27 <elliott> monqy: help, parser, help, help 00:34:30 <quintopia> CakeProphet: CGoL is certainly not a game in the mathematical sense 00:34:47 <CakeProphet> quintopia: indeed not. 00:35:46 <itidus20> the appropriate phrase in place of "<itidus20> i am using lazy evaluation style of thinking" would have been "What I mean is I realized it just now because of the topic." 00:35:56 <itidus20> so that is topic-dropping 00:36:06 <itidus20> needlessly mentioning lazy evaluation when it is not relevant 00:36:26 <pikhq_> #define as ;while 00:36:27 <pikhq_> do foo 00:36:29 <CakeProphet> elliott: hopefully the difference between my former self and itidus20 is that I got around to learning all (well, most) of the things I didn't understand. 00:36:35 <pikhq_> do foo(n) as (n --> 0); 00:36:41 <elliott> CakeProphet: how old were you in like two thousand and seven again 00:36:53 <CakeProphet> elliott: 15 00:37:04 <itidus20> my mind viruses are partially built up by other people. 00:37:05 <CakeProphet> 15-16 00:37:14 <elliott> CakeProphet: another difference: you wre fourteen years younger 00:37:17 <elliott> s/wre/were/ 00:37:20 <CakeProphet> ....oh 00:37:29 <itidus20> people who are happier if i am downtrodden and confused, taking steps to keep me down 00:38:01 <itidus20> it's human nature. people are often setting it as their goal to cause harm. 00:38:11 -!- Sgeo has quit (Ping timeout: 258 seconds). 00:38:24 -!- Jafet has joined. 00:39:13 <itidus20> humans cope because we manage to chill out in spite of our harmful intent 00:40:04 <itidus20> having said all that, i am taking lots of steps at formal introspection 00:40:07 <elliott> what made you convince yourself that that wasn't projecting, at least partially? 00:40:42 <itidus20> i know it is partially my fault. 00:40:56 <elliott> didn't say that 00:40:57 <elliott> at all 00:41:04 <elliott> was just asking a question 00:41:07 <itidus20> uhmmm 00:42:06 <itidus20> people take advantage of my defence mechanisms. i am responsible for my defence mechanisms. they are responsible for how they react to me. 00:42:24 <monqy> take advantage of? 00:43:03 <CakeProphet> help what is formal introspection 00:43:05 <itidus20> i'm not healthy in mind, body, social life, or money. 00:43:13 <CakeProphet> help Freudian armchair psycho-babble what do? 00:43:22 <CakeProphet> oh wait I have monqy help back in exchange for sour cereal. 00:43:30 <itidus20> CakeProphet: taking notes of how i am feeling at various times 00:43:58 <monqy> very formal 00:44:06 <monqy> very introspective 00:44:27 <itidus20> trying to analyze the actual causes of feelings i don't want to feel 00:45:22 <monqy> do the causes point to yourself is that where this is going 00:45:36 <monqy> or do they point to other people is that where this is going 00:46:12 <itidus20> well, other people can do what they like.. its my problem if i overreact 00:46:51 -!- kmc has joined. 00:47:04 <monqy> lots of gecho revisions recently 00:47:34 <itidus20> basically, if something i remember upsets me.. like for example.. if i remember such and such is gonna happen 00:47:47 <monqy> where by gecho I mean the gecho page. these revisions are saddening. 00:47:56 <monqy> gecho is saddening 00:47:57 <itidus20> im trying to take note of which things are actually causing such upset 00:48:17 <monqy> ok 00:48:21 <itidus20> monqy: yeah thats the idea.. no need to get depressed by gecho 00:48:32 <monqy> has your note taking worked 00:49:12 <itidus20> monqy: well, theres these feelings of derealization and depersonalization and psychosis which i seem to enter into at times 00:49:29 <CakeProphet> hey me too. 00:49:48 <itidus20> those are the main uhmm vector of attack which is bothering me recently 00:50:35 <itidus20> another thing is to be realistic about things. 00:51:03 <monqy> what does that mean 00:51:31 <CakeProphet> monqy: come on, be more realistic. 00:51:55 <CakeProphet> wow this topic is really appropriate right now. 00:52:02 <monqy> hm? 00:52:06 <itidus20> i have convinced myself that my brother isn't psychotic. he's just an asshole quite often. 00:52:26 <monqy> that must be a relief 00:52:52 <Gregor> Note that he just said he convinced himself of that, not that it's true. 00:53:10 <CakeProphet> I am convinced that Gregor is actually Roger G. 00:53:31 <Gregor> I am convinced that Scotland is where Santa Claus is from. 00:53:35 <CakeProphet> and his first name propaganda is a terrible lie that he has told everyone including the government. 00:53:50 <monqy> his last name is propaganda lies too 00:54:40 <CakeProphet> Gregor is also lying to himself about his name. 00:54:46 <CakeProphet> /Gregor/Roger G./ 00:55:04 <CakeProphet> s'^/'s/' 00:55:26 <monqy> ok 00:55:28 <CakeProphet> man sometimes regex substition on IRC gets tricky. 00:55:37 <monqy> I don't bother with regex 00:55:39 -!- zzo38 has joined. 00:55:45 <monqy> I like it better my way 00:55:51 <elliott> i just do s/thing/ 00:55:55 <elliott> monqy: what is your way, 00:56:03 <monqy> thing/other thing 00:56:12 <itidus20> Gregor: well he is an angry violent manipulative drunk who will take others things without a thought, but that doesn't necessarily mean psychotic 00:57:03 <monqy> if thing/other thing is insufficient I do a "where by ... i mean ..." 00:57:33 <monqy> I also sometimes use thing/other thing to add meaning rather than replace maybe? I forget if I do this. 01:01:49 <CakeProphet> perl regex substition is the only sane way to replace typos and misinformation. 01:01:57 <CakeProphet> all substitions must parse correctly. 01:02:01 <CakeProphet> these are the rules. 01:02:13 <monqy> I tend not to care about typos 01:04:43 -!- Gregor has changed nick to NotRogerGYouGuys. 01:04:52 <elliott> "...does it count as pedophilia if it's animals" --a friend 01:04:58 <CakeProphet> s/<monqy>(.*?)/$1, also I am a really bad/ 01:05:16 <CakeProphet> s/<monqy>(.*?)/$1, also I am a really bad/g 01:05:27 <monqy> im a really bad 01:09:03 <CakeProphet> http://sourcereal.com/ 01:09:10 <CakeProphet> I just need to revisit this site 01:09:12 <monqy> sour cereal 01:09:15 <CakeProphet> because it is truly the best site I've seen. 01:10:25 <elliott> what IS IT 01:11:31 <elliott> monqy: explain...... 01:11:35 <elliott> you posted it originally right 01:11:44 <monqy> yes 01:11:56 <elliott> where 01:11:57 <elliott> did you find it 01:11:58 -!- Jafet has quit (Quit: Leaving.). 01:12:04 <CakeProphet> he googled sour cereal I imagine 01:12:06 <monqy> by searching for sour cereal 01:12:11 <elliott> is that it 01:12:13 <CakeProphet> after I mentioned it being possibly a good idea. 01:12:24 <CakeProphet> after eating SOUR PUNCH STRAWS 01:12:26 <elliott> source real . com 01:12:30 -!- Jafet has joined. 01:12:35 <elliott> nooo its privately registered whois 01:12:40 <elliott> IM CANNOT CONTACT 01:12:42 <CakeProphet> which, by the way, I must go buy more of. 01:13:12 <NotRogerGYouGuys> `log Roger G 01:13:18 <HackEgo> 2011-09-14.txt:00:54:46: <CakeProphet> /Gregor/Roger G./ 01:13:23 <NotRogerGYouGuys> Piffle 01:13:38 <elliott> `log pop 01:13:42 <HackEgo> 2011-02-09.txt:14:41:06: <elliott> Deewiant: Personally, I think that "ABCD"4) only pops from the fingerprint stack if ABCD is the most recently loadedfingerprint. 01:13:44 <CakeProphet> part of becoming an adult is spending your money irresponsibly. 01:13:59 <elliott> `logurl 2011-02-09.txt:14: 01:14:01 <HackEgo> http://codu.org/logs/log/_esoteric/2011-02-09 01:14:05 <CakeProphet> on things like candy and alcohol and wimminz 01:14:15 <itidus20> roger: well psychopath's are like shannon's maxim.. the key is simply knowing yes or no if they are 01:14:34 <itidus20> it can be virtually impossible to know without this key piece of info 01:14:40 <CakeProphet> .. 01:14:49 <itidus20> thats the truth. i have read up on it 01:15:39 <CakeProphet> this KEY piece of info bahahahahaha 01:15:45 <CakeProphet> okay time to go. 01:15:51 -!- NotRogerGYouGuys has changed nick to Gregor. 01:16:19 <itidus20> yes. once a psychopath is known to be a psychopath, that is all you need to know to know.. and without this knowledge you can almost not know 01:16:47 <itidus20> it is like trying to use a captcha to catch a bot 01:16:51 <elliott> kk 01:16:53 <elliott> k 01:17:27 <itidus20> in accordance with shannon's maxim, it is their most prized possession 01:17:35 <CakeProphet> I am a psychopath. 01:18:20 <itidus20> so several moral dilemmas are raised. is a person evil just by being a psychopath? 01:18:35 <itidus20> and once caught there is no treatment, only to cycle them between prison and mental hospital 01:18:42 <elliott> please...stop... 01:18:47 <CakeProphet> you can eat them 01:18:47 <itidus20> why? 01:19:11 <CakeProphet> 21:16 < CakeProphet> okay time to go. 01:19:15 <CakeProphet> okay time to go. 01:22:19 <itidus20> basically ok, it's like trying to determine what is on a display by scanning the video memory instead of looking at the display with a camera 01:24:28 -!- DH____ has joined. 01:26:12 <elliott> Wow, String has really bad overhead. 01:26:22 <elliott> Gregor: Ask me what String's overhead is in Haskell. 01:27:15 -!- tswett has quit (Read error: Operation timed out). 01:27:21 <elliott> Gregor: Do it, it will amuse you. 01:27:56 <elliott> Gregor is bad. 01:28:53 <elliott> monqy: tell Gregor he is bad. 01:29:02 <Jafet> Only 39 bytes 01:29:14 <monqy> Gregor: bad 01:29:31 <elliott> Jafet: Forty, isn't it? 01:29:43 <Gregor> I was going to guess fifteen bytes one bit per character. 01:29:44 <elliott> Per codepoint, of course. 01:29:53 -!- tswett has joined. 01:29:56 <elliott> Gregor: It takes 5n words per codepoint, apparently :P 01:29:57 <Gregor> (Assuming ASCII only) 01:30:04 <elliott> Erm 01:30:06 <elliott> 5 words per codepoint 01:30:12 <Jafet> You asked for overhead 01:30:14 <elliott> It uses utf-thirtytwo always 01:30:18 <elliott> Jafet: Point :P 01:30:26 <elliott> It's not thirty-nine bytes though. 01:30:29 <elliott> It's thirty-two. No? 01:30:31 <elliott> Four words. 01:31:02 <Jafet> Most code points use one byte, 01:31:08 <Jafet> So UTF-320 01:31:16 <Gregor> Most take 7 bits :P 01:31:25 <elliott> UTF-320? 01:31:38 <pikhq_> Gregor: If you go by frequency of usage, perhaps. 01:31:43 <Gregor> pikhq_: Naturalismo. 01:32:04 <pikhq_> Context-dependent, but generally true in non-plain text. 01:33:52 <elliott> I wonder if there's a known-nicer string representation than ropes... 01:34:12 <elliott> (Or, well, "finger tree of small vectors of codepoints" if you want to be precise.) 01:36:37 -!- DH____ has quit (Read error: Connection reset by peer). 01:36:42 -!- DH____ has joined. 01:38:14 -!- Jafet has quit (Ping timeout: 276 seconds). 01:38:31 <itidus20> `log godel 01:38:35 <HackEgo> 2011-01-04.txt:19:12:22: <j-invariant> elliott: I don't get that godel quote 01:38:48 <itidus20> `pastelog godel 01:38:50 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pastelog: not found 01:39:06 <quintopia> :/ 01:39:17 <quintopia> that would be a good program 01:39:22 <quintopia> please write it 01:39:37 <itidus20> `pastelogs godel 01:39:42 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.25506 01:40:16 <quintopia> `run which pastelogs 01:40:18 <HackEgo> ​/hackenv/bin/pastelogs 01:40:26 <elliott> `logurl 2007-07-23 01:40:28 <HackEgo> http://codu.org/logs/log/_esoteric/2007-07-23 01:40:35 <elliott> quintopia: i made it : ): )) 01:40:36 <elliott> also `log 01:40:36 <elliott> `log 01:40:38 <HackEgo> 2005-03-24.txt:03:34:00: -!- lament has quit (clarke.freenode.net irc.freenode.net). 01:40:41 <elliott> `log 01:40:43 <HackEgo> 2005-09-15.txt:04:50:58: <lament> (actually, i'm not sure about this. hrm) 01:40:52 <monqy> ggood logss 01:41:43 <quintopia> `run ln -s /hackenv/bin/pastelogs /hackenv/bin/pastelog 01:41:45 <HackEgo> No output. 01:41:52 <quintopia> can i do that? :P 01:42:14 -!- zzo38 has quit (Remote host closed the connection). 01:42:24 -!- Sgeo has joined. 01:42:25 <monqy> `pastelog 01:42:42 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.16730 01:42:58 <itidus20> `log dangerously 01:43:03 <HackEgo> 2011-03-07.txt:18:41:51: <Phantom_Hoover> Sgeo doesn't, and was coming dangerously close to taking relationship advice from him. 01:43:23 <itidus20> `pastelogs dangerously 01:43:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13037 01:44:14 -!- calamari has joined. 01:46:07 -!- Sgeo_ has joined. 01:46:59 -!- Jafet has joined. 01:47:42 -!- Sgeo has quit (Ping timeout: 260 seconds). 01:57:00 <itidus20> so is "\x x" church numeral 0? 01:57:06 -!- Jafet has quit (Quit: Leaving.). 01:57:14 <itidus20> hmm oops forgot 1 thing 01:57:26 <itidus20> so is "\f \x x" church numeral 0? 01:57:57 <quintopia> it can be 01:58:18 -!- augur has quit (Remote host closed the connection). 01:58:36 <itidus20> is "\f \x x" like "(λf.(λx.(x)))" 01:59:20 <monqy> it can be 01:59:41 <elliott> <quintopia> `run ln -s /hackenv/bin/pastelogs /hackenv/bin/pastelog 01:59:42 <elliott> no 01:59:42 <monqy> why do you have so many parentheses 01:59:48 <monqy> why do you have parentheses around the x 01:59:50 <monqy> why 02:00:05 <itidus20> because i don't want to make mistakes 02:00:12 <elliott> `rm bin/pastelog 02:00:13 <pikhq_> Because he's being strange and not doing sane notation. 02:00:13 <HackEgo> No output. 02:00:19 <monqy> you're more likely to make mistakes if you make a huge mess of parens like that 02:00:22 <itidus20> seems i am leaving out -> too 02:00:29 <pikhq_> I'd recommend \f x->x 02:00:40 <itidus20> ahh 02:00:41 <pikhq_> Or \f->\x->x if you want the currying explicit. 02:00:45 <itidus20> ahh 02:00:56 <monqy> I tend to use more spaces 02:00:59 <monqy> \ f x -> x 02:01:01 <pikhq_> Or \f.\x.x if you want it to *just* be all-ASCII standard lambda calculus notation. 02:01:33 <monqy> \fx.x if I'm doing it like that 02:02:02 <pikhq_> I'm too used to names of variable length. ;) 02:03:16 <itidus20> Ichi \fx->f x, Ni \fx->f(f x), San \fx->f(f(f x)), Yon \fx->f(f(f(f x))), Go \fx->f(f(f(f(f x)))) 02:04:05 <pikhq_> 馬鹿じゃ! 02:04:10 <itidus20> One, Eck, Ichi \fx->f x, Two, Dou, Ni \fx->f(f x), Three, Teen, San \fx->f(f(f x)), Four, Chaar, Yon \fx->f(f(f(f x))), Five, Paanch, Go \fx->f(f(f(f(f x)))) 02:05:04 <monqy> itidus20: it's strange of you to omit spaces in the formal parameters thingy but leave them in in the application 02:05:08 <pikhq_> 「12345」か、「一二三四五」か良いかもしらない。でも「Ichi Ni San Yon Go」がとても変だ。 02:05:21 <monqy> itidus20: and also leave them out in other applications 02:05:21 <itidus20> monqy: ahh true true 02:05:50 <itidus20> Is there anything not strange about what i am doing though? 02:05:54 <monqy> what 02:06:22 -!- Jafet has joined. 02:06:54 <calamari> the other day someone thought a lang had all instructions executing at once (turned out it wasn't), but it got me thinking, what if all instructions had a queue on the data.. for example *addr1=*addr2+*addr3. if addr2 or addr3 are changed, then that would execute, changing addr1, then anything that relied on addr1 would execute, etc. Is there an esolang like that? 02:07:38 <Jafet> Dataflow languages aren't esoteric 02:07:47 <Jafet> Neither are constraint logic ones 02:08:12 <itidus20> I am just getting used to the lego blocks of lambda calculus 02:08:15 <Sgeo_> It's certainly possible to make an esoteric dataflow language 02:08:18 <CakeProphet> I mean esoteric languages aren't even esoteric. 02:08:21 <CakeProphet> you're pretty much fucked. 02:08:33 <pikhq_> Nor are spreadsheets esoteric. 02:08:35 <itidus20> see monqy, that was what i call a topic-dropping.. the unnecessary use of "lego blocks" to mean "components" or "elements" 02:08:53 <Sgeo_> what's a good non-esoteric dataflow language 02:08:59 <monqy> itidus20: now im dead inside :( 02:09:08 <Sgeo_> why am i trying to talk like monqy 02:09:15 <monqy> what 02:09:30 <Sgeo_> with the whole no capitalization thing 02:09:30 <itidus20> learning to type logically also teaches how to think logically 02:09:38 <Jafet> You admire his intellect? 02:09:40 <calamari> cool, so I discovered something that they came up with in 1966 according to wikipedia :) 02:09:42 <monqy> sometimes I do caps; I'm rather inconsistent about it. 02:09:46 <itidus20> Sgeo_: because it's col 02:09:53 <itidus20> ^cool 02:09:57 <pikhq_> calamari: Well, topological sorting spreadsheets are a *bit* newer. 02:10:12 <itidus20> once you type i as i you're basically a no-caps'er 02:10:19 <CakeProphet> spreadsheets of functions 02:10:24 <pikhq_> Still, not exactly new. 02:10:34 <pikhq_> CakeProphet: Yes... 02:10:41 <monqy> spreadsheet of spreadsheets 02:10:44 <Sgeo_> What not new new thing did calamari do? 02:10:55 <calamari> Sgeo: said something :) 02:11:01 <Sgeo_> lol\ 02:11:02 <itidus20> Sgeo_: you can type faster without caps.. 02:11:07 <itidus20> its just a fact 02:11:12 <Sgeo_> But I don't like to type without caps. 02:11:16 <itidus20> you can type faster still without punctuation 02:11:28 <monqy> Typing with caps and punctuation doesn't slow me down very much at all. 02:11:37 <itidus20> but in either case i like punctuation 02:11:43 <monqy> what slows me down is bothering to correct ytpeoes 02:11:44 <Sgeo_> itidus20, not if your finger memory always reaches for the Shift and as such, you have to think about not doing it. 02:11:47 <CakeProphet> I'm too busy busting caps in niggas and hoes to type caps. 02:11:53 <itidus20> Sgeo_: yeah i just noticed that 02:12:19 <monqy> Shoiudl I stop bothering to correct my types? What will ahpepn? 02:12:22 <Sgeo_> Off to read some Discworld and eat 02:12:27 <itidus20> punctuation probably doesn't help much 02:12:34 <itidus20> i mean.. the removal of it 02:12:39 <Sgeo_> monqy, ugh, I hvae done that sort of thing before, really speeds things up att the expesne of typoes. 02:12:44 <itidus20> w.r.t speed 02:12:47 <calamari> I'm thinking about it, and I'm not sure a spreadsheet is exactly the same 02:12:54 <monqy> sometimes I bother, sometimes I don't!!! 02:13:01 <monqy> sometimes I also make more typoes than others. 02:13:04 <Sgeo_> 0_0 02:13:05 <monqy> sometimes. 02:13:18 <CakeProphet> higher order spreadsheets are spreadsheets of functions that take a spreadsheet input and a spreadsheet output 02:13:54 <CakeProphet> they are the best spreadsheets of all. 02:14:21 <quintopia> elliott: i hate you 02:14:22 <Jafet> I think you could make an esolang out of higher dimensional spreadsheets 02:14:32 <Jafet> And higher order, of course 02:17:52 <calamari> thanks for letting me know the name of what I discovered... now I won't have to implement it :) 02:19:50 <Jafet> I bet if someone here implemented an esolang based on spreadsheets, their endeavour to make it turing complete will make it superior to other real spreadsheets 02:20:20 <calamari> most spreadsheets have some kind of language you can embed behind it 02:21:00 <CakeProphet> I don't believe that was new information for anyone. 02:21:36 <CakeProphet> I once tried to write a brainfuck interpreter in Excel 02:21:38 <CakeProphet> didn't work. 02:21:53 -!- augur has joined. 02:22:07 <itidus20> <VARS> ::= <VAR> | <VARS><VAR>; <EXPR> ::= "\"<VARS> | <EXPR> "->" <EXPR> | <VAR>; ... is this faulty? 02:22:19 <CakeProphet> it's unecessary. 02:22:40 <itidus20> its a nice way to express ideas without using english 02:22:42 <elliott> yes faulty 02:22:48 <elliott> what's x -> x 02:23:02 <elliott> \ and -> are part of same rule 02:23:12 <itidus20> hmm 02:23:16 <itidus20> heheheh ok 02:23:41 <itidus20> <VARS> ::= <VAR> | <VARS><VAR>; <EXPR> ::= "\"<VARS> "->" <EXPR> | <VAR>; ... is this better? 02:25:29 <itidus20> i am wondering to myself and now typing it if the last one can be vars 02:26:24 <CakeProphet> well function application would be <EXPR><EXPR> ignoring insignificant whitespace. 02:26:28 <itidus20> trying to avoid \x->xxyzx not sure if i need to though 02:26:52 <itidus20> bugger 02:27:09 <CakeProphet> well, in Haskell it's a bit more complicated than that. 02:27:11 <CakeProphet> for function application 02:27:17 <CakeProphet> because you can have f x or f(x) 02:27:29 <elliott> itidus20: your expr has no application 02:27:32 <elliott> CakeProphet: no 02:27:44 <elliott> f(x) is just f (x) 02:27:50 <elliott> just like (((x))) = x 02:28:25 <itidus20> hmm.. so is "\x->" the same as "λx." 02:28:41 <CakeProphet> elliott: ...yes I understand they are the same 02:28:45 <CakeProphet> but to describe the syntax 02:28:49 <CakeProphet> you would include both forms. 02:29:00 <itidus20> or is -> used in both application and lambdaing 02:29:08 <CakeProphet> > reverse "hello" 02:29:10 <lambdabot> "olleh" 02:29:10 <CakeProphet> is application 02:29:14 <CakeProphet> > ( 02:29:15 <lambdabot> <no location info>: parse error (possibly incorrect indentation) 02:29:20 <CakeProphet> > (\x -> x + x) 2 02:29:20 <elliott> itidus20: just lambdaing 02:29:21 <lambdabot> 4 02:29:26 <elliott> CakeProphet: not helpiiiing 02:29:29 <CakeProphet> is a lambda that is bein applied. 02:29:32 <elliott> CakeProphet: not helping 02:29:42 <elliott> you used arithmetic 02:29:46 <elliott> again 02:29:52 <itidus20> uhmm ok so function application in haskell is just (x y) ? 02:29:58 <CakeProphet> x y 02:30:03 <itidus20> ah 02:30:10 <itidus20> can it be x x? 02:30:13 <CakeProphet> sure 02:30:18 <CakeProphet> :t id id 02:30:19 <lambdabot> forall a. a -> a 02:30:22 <monqy> how about 02:30:26 <monqy> instead of concrete syntax 02:30:26 <elliott> sigh 02:30:28 <monqy> we focus on 02:30:30 <monqy> abstract syntax 02:30:52 <elliott> CakeProphet: you are _really_ not helping iti. please stop. 02:30:59 <itidus20> if i just keep stareing at syntaxes enough it is sure to just make sense 02:31:00 -!- sebbu2 has joined. 02:31:00 -!- sebbu2 has quit (Changing host). 02:31:00 -!- sebbu2 has joined. 02:31:01 <monqy> I'm actually surprised how much fuss you guys are making over concrete syntax 02:31:23 <CakeProphet> monqy: /me has not been making any sort of fuss about concrete syntax. 02:31:27 <monqy> yes you have 02:31:45 <itidus20> i am going on the theory that if you know the grammar of a language you should be able to use it at least in a trivial manner 02:31:54 <monqy> you're wrong 02:31:54 <elliott> lol 02:32:02 <elliott> jesus christ 02:32:08 <itidus20> its not like it has many rules 02:32:15 <itidus20> it's not latin 02:32:30 <Jafet> Hey, it works for python. 02:32:37 -!- sebbu has quit (Ping timeout: 260 seconds). 02:32:41 <Jafet> And any other language that is C in disguise 02:33:00 <CakeProphet> Python: C in disguise 02:33:21 <elliott> itidus20: you are acting like you are on the same level as the people trying to teach you - forming your own different path and disagreeing. until you accept that you must first be a _learner_, you will never learn. 02:33:33 <Jafet> C with reference counting. 02:33:42 <itidus20> hmm now heres how wirth would say it 02:34:13 <elliott> ok, ignore me 02:34:19 <itidus20> im not 02:34:53 <itidus20> curry f x; body begin x end; 02:34:56 <monqy> what 02:35:08 <elliott> wow. 02:35:14 <monqy> you're going like 02:35:17 <monqy> in the wrong direction 02:35:36 <elliott> remember itidus20 what i said about trying to form your own path? 02:35:58 <itidus20> lao tse once say, the sage follows the well worn path 02:36:30 <elliott> heheheheehehehehehee 02:37:32 <itidus20> well he might have said that 02:43:02 <itidus20> uhmm 02:43:38 <monqy> hm? 02:46:00 <itidus20> about lao tse could be a false memory 02:46:22 <itidus20> about how wirth would do a functional language, i think it would be beyond my imagination 02:46:30 <CakeProphet> what is wirth. 02:46:38 <itidus20> nikolaus wirth 02:46:40 <CakeProphet> is it the end of win? 02:46:49 <CakeProphet> or the end of wear? 02:47:00 <itidus20> algol-w, pascal, modula, oberon 02:47:12 <itidus20> i only know the names of his works really 02:48:08 <CakeProphet> if I beat you with this stick will learn more stuff? 02:48:36 <itidus20> cut and paste from some googling "I also remember bursting out laughing when the Modula-2 compiler warned correctly that I had written an infinite loop! Ooops." 02:50:44 <CakeProphet> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs 02:50:45 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946... 02:51:09 <itidus20> http://web.archive.org/web/20100331222736/http://www.cs.inf.ethz.ch/~wirth/Articles/GoodIdeas_origFig.pdf 02:52:51 <itidus20> "To postulate a state-less model of computation on top of a machinery whose most eminent characteristic is state, seems to be an odd idea, to say the least." :P 02:54:51 <CakeProphet> and yet so good. 02:55:00 <elliott> yeah youve disproved the lambda calculus with a quote and a smiley good thing you never had to learn it 02:55:19 <itidus20> elliott: alright relax. im not giving up on it 02:55:31 <Lymee> > let fibs = 1 : 2 : zipWith (*) fibs (tail fibs) in fibs 02:55:31 <lambdabot> [1,2,2,4,8,32,256,8192,2097152,17179869184,36028797018963968,61897001964269... 02:55:44 <itidus20> its just i was looking for wirth's take on it.. its natural he is biased towards his imperative languages 02:56:06 <elliott> im perfectly relaxed. 02:56:21 <itidus20> you have shown me that it can be used for building OS's 02:56:52 <itidus20> i am used to the quotes of old men being bitter 02:57:30 <pikhq_> There's a pretty obvious issue with that quote. 02:57:55 <itidus20> the link was from lambda the ultimate anyway ironically 02:57:56 <pikhq_> Our machines are designed for ease of dealing with physical reality. 02:58:05 <pikhq_> Our code has no such concerns. 02:58:14 <itidus20> http://lambda-the-ultimate.org/node/1773 02:58:14 <pikhq_> (modulo obvious limits) 02:58:38 <CakeProphet> I'm not entirely sure that's how modulo works pikhq_ :P 02:59:06 <pikhq_> CakeProphet: Sadly, our code is guaranteed to halt. 02:59:47 <pikhq_> At a minimum, it will go with the rest of the universe. 03:00:02 <CakeProphet> if only lived in a magical world of mathematical thought. 03:00:09 <CakeProphet> I could be a theorem! 03:01:39 <itidus20> elliott: well i will never be able to learn it(LC) through the method of acquiring prerequisite knowledges.. so i am analyzing it's component's 03:02:02 <monqy> itidus20: what are its components 03:02:13 <monqy> itidus20: you may have a bad idea of what they are 03:02:59 <itidus20> it has just occured to me that i still don't have a good idea of what a variable is 03:03:38 <CakeProphet> in lambda calculus variables function parameters. 03:03:41 <CakeProphet> +are 03:03:47 <itidus20> such as with... \x-> .. 03:03:51 <monqy> they are also all functions 03:03:51 <CakeProphet> yes 03:03:53 <monqy> everything is a function 03:03:55 <CakeProphet> and yes. 03:04:07 <itidus20> is "λx." a complete lambda expression? 03:04:11 <CakeProphet> no 03:04:11 <monqy> no 03:04:22 <pikhq_> The function has to map to *something*. 03:05:38 <itidus20> and.. "λx." is basically equally incomplete as: "λa.", "λb.", "λc.", "λd.", ... etc.. and they each express the same thing in isolation right? 03:05:48 <monqy> what 03:06:00 <monqy> they don't express anything. they're nonsense. 03:06:17 <itidus20> i mean like if i wrote "λp." on a piece of paper and showed it to someone it would mean just as much as "λr." 03:06:25 <itidus20> no more or less 03:06:34 <monqy> at what are you getting 03:06:46 <pikhq_> itidus20: Yes, but it would also mean just as much as ASDGJIFujyh0-qwe4itgo0xcfnvjbhklsdau5689234iq8ibvgo0sdujt89ioweausjfgioxzfhyuiqejhiopfgjhsar89pitpjq; 03:06:50 <itidus20> and yet this is a component of LC .. and i am analyzing it 03:06:54 <pikhq_> It's a fucking syntax error. 03:07:05 <monqy> it isnot a component of the lambda calculus; it's a syntax error. 03:07:05 <CakeProphet> itidus20: yes the name of the variable doesn't matter as long as it's unique 03:07:10 <itidus20> its 1 character short of being a complete LC expression 03:07:22 <monqy> itidus20: things do not work like that 03:07:27 <monqy> itidus20: you are doing it wrong 03:07:36 <itidus20> i am being cruel perhaps 03:07:36 <Lymee> "λp." means "take p and... 404 file not found" 03:07:48 <monqy> itidus20: cruel? 03:07:58 <itidus20> yup... 03:08:05 -!- calamari has quit (Quit: Leaving). 03:08:16 <pikhq_> itidus20: When you write such "expressions" you are granting permission to launch demons from your nose, now stop it. ;) 03:08:21 <Gregor> `fetch http://sprunge.us/OViK 03:08:22 <HackEgo> 2011-09-14 03:08:22 URL:http://sprunge.us/OViK [7576] -> "OViK" [1] 03:08:28 <Gregor> `run sh OViK ; rm OViK 03:08:32 <HackEgo> x - created lock directory _sh21266. \ x - extracting bin/unlearn (text) \ x - extracting bin/forget (text) \ x - extracting bin/learnt (text) \ x - extracting bin/learn (text) \ x - removed lock directory _sh21266. 03:08:38 <itidus20> i am showing you a piece of the space with which i am exploring LC syntax.. and its nasty! 03:08:40 <Gregor> `learn elliott Ignore this loser. 03:08:42 <HackEgo> Learned! 03:08:45 <Gregor> `elliott 03:08:47 <HackEgo> elliott = Ignore this loser. 03:08:57 <monqy> ooh I love learn 03:09:09 <Lymee> `learn Lymee *hugs* 03:09:14 <Lymee> :( 03:09:17 <HackEgo> Learned! 03:09:21 <Lymee> :) 03:10:04 <pikhq_> Does GNU shar *actually test* for *GNU* md5sum? 03:10:10 <pikhq_> Not a functioning one, but *GNU*. 03:10:15 <pikhq_> Fucking fuck. 03:10:31 <monqy> a test: 03:10:32 <monqy> `learn cat cat 03:10:34 <HackEgo> Learned! 03:10:36 <monqy> `cat 03:10:37 <Gregor> shar: Easily the best. 03:10:38 <HackEgo> cat = cat 03:10:49 <Gregor> monqy: That ... could be a problem ... 03:11:04 <Lymee> `run echo a | cat 03:11:07 <HackEgo> cat = cat 03:11:09 <monqy> cat 03:11:12 <pikhq_> Gregor: Kinda an elegant archive format, but jebus GNU stuff is feces. 03:11:15 <Gregor> `rm bin/cat 03:11:16 <Lymee> `run echo $PATH 03:11:17 <HackEgo> No output. 03:11:17 <elliott> Gregor: this is a bad learndb i shall improve 03:11:18 <HackEgo> ​/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin 03:11:31 <Gregor> elliott: THEN DOOOOOOOOOOOOOOOOOOOOOOOOO SO 03:11:49 <itidus20> lambda seems to be a modification of a symbol.. just as 'A' is a capitalization of 'a', and 'ga' in japanese is a change to 'ka', so "λx." is related directly to "x" 03:11:51 <Lymee> `export PATH=/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin:/hackenv/bin 03:11:52 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: export: not found 03:11:58 <Lymee> `run export PATH=/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin:/hackenv/bin 03:11:59 <HackEgo> No output. 03:12:01 <monqy> itidus20: what 03:12:09 <Lymee> `learn cat cat 03:12:11 <HackEgo> Learned! 03:12:14 <monqy> itidus20: you're not thinking right 03:12:16 <itidus20> "λx." introduces the symbol "x" 03:12:16 <Lymee> `run echo a | cat 03:12:18 <HackEgo> cat = cat 03:12:20 <Lymee> `rm bin/cat 03:12:21 <HackEgo> No output. 03:14:02 <itidus20> "λx." says something like.. in the following expression, "x" is a bound variable. 03:14:32 <monqy> "λx." isn't a complete thought 03:15:36 -!- pikhq_ has quit (Ping timeout: 240 seconds). 03:15:42 <monqy> maybe you should try learning the lambda calculus before you do this nonsense with it 03:16:01 <monqy> or have you given up on that 03:16:07 <itidus20> perhaps i should say "(λx.())" 03:16:15 <monqy> you're making it worse 03:16:30 <itidus20> i can go a little further 03:16:33 <Lymee> `wiki lambda calculus 03:16:35 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wiki: not found 03:16:38 <Lymee> :< 03:16:51 <itidus20> "((()())(λx.(())())())" 03:16:56 <monqy> ;_; 03:16:59 <CakeProphet> that's not a thing 03:17:07 <itidus20> indeed 03:17:14 <itidus20> it is missing parts 03:17:15 -!- pikhq has joined. 03:17:22 <Lymee> Can we... 03:17:23 <Lymee> Get rid of itidus20 03:17:39 <monqy> no 03:17:42 <itidus20> ok i should leave until i can play reasonably though 03:17:55 <itidus20> bye 03:17:59 -!- itidus20 has left ("Leaving"). 03:18:17 <monqy> bye 03:18:47 <Patashu> what are your guys' minesweeper records 03:19:08 <Jafet> I made a script to reroll until I could get it on the first click 03:19:15 <Patashu> haha 03:20:06 <Patashu> I just opened it up and got 227 seconds on expert. was wondering if that was decent 03:21:17 <Jafet> Microsoft has made a few different versions... the recent ones play in the background and prevent you from losing if the position is ambiguous 03:22:18 <Patashu> yeah, I'm using a verson that prevents you from needing luck 03:27:11 <monqy> `elliott 03:27:13 <HackEgo> elliott = Ignore this loser. 03:27:40 <monqy> oh i misread something up there 03:29:28 <CakeProphet> what a stupid command 03:29:57 <CakeProphet> well 03:30:01 <CakeProphet> it will come in handy later. 03:32:01 <elliott> back 03:32:12 <monqy> hi 03:32:44 -!- itidus20 has joined. 03:32:54 <monqy> hi 03:33:00 <itidus20> hi monqy 03:33:02 <elliott> coool simonrc knows edwin brady 03:33:03 <itidus20> everyone 03:33:08 <elliott> (i am logread) 03:34:07 -!- zzo38 has joined. 03:36:38 -!- copumpkin has joined. 03:37:10 <zzo38> Do you have idea if I could make up some doppelganger's prestige class for Dungeons & Dragons game? I should also probably write a fix for the Metamind class. But I think I did fix the Illithid Savant class now. 03:37:57 <zzo38> I don't remember very well. Was copumpkin wrote the which/left/right class for me or someone else? 03:38:36 -!- augur has quit (Remote host closed the connection). 03:40:58 <itidus20> ok, is λx.y a valid lambda calculus expression? 03:41:07 <zzo38> Not by itself. 03:41:47 <monqy> depends on what you mean by valid 03:42:16 <elliott> itidus20: you're still thinking about lc in terms of its concrete syntax, i see 03:42:53 <itidus20> hmmm 03:44:08 <itidus20> hmmm. now if λx.y is applied to something, would it become "y"? 03:44:13 <elliott> Gregor: How much convincing do you need to add new regexp-ish handlers to egobot 03:44:21 <elliott> itidus20: yes. 03:44:28 <elliott> specifically, the _application_ would become y. 03:44:43 <itidus20> perhaps i should instantiate a something 03:44:47 -!- quintopia has quit (Quit: Lost terminal). 03:44:55 -!- quintopia has joined. 03:44:55 -!- quintopia has quit (Changing host). 03:44:55 -!- quintopia has joined. 03:44:58 <Gregor> elliott: ??? 03:45:06 <itidus20> (λx.y) z becomes (y) 03:45:25 <elliott> Gregor: For a nicer learndb system :P 03:45:51 <elliott> Hmm,w ait 03:45:53 <elliott> `? test 03:45:55 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?: not found 03:45:57 <elliott> Great 03:46:01 <elliott> Gregor: Never mind 03:46:25 <itidus20> and (λx.x) z becomes (x) 03:46:33 <itidus20> oops 03:46:35 <itidus20> oops 03:46:39 <elliott> Gregor: How can one view a certain file on hackego served as text/html :P 03:46:39 <itidus20> and (λx.x) z becomes (z) 03:46:56 <Gregor> `url 03:46:58 <HackEgo> http://codu.org/projects/hackbot/fshg/ 03:47:04 <elliott> Gregor: That's as text/plain 03:47:22 <Gregor> Oh ... I see what you ... want ... but not why :P 03:47:27 <Gregor> "You can't" is the simple answer :P 03:47:30 <elliott> Gregor: Hyperlinked learndb wiki :D 03:47:36 <elliott> I just have to generate it after every learndb mutation. 03:48:47 <elliott> Gregor: C'moooooooooon 03:48:54 <itidus20> (λx.y) z becomes y and (λx.x) z becomes z, is this so far so good? 03:50:11 <elliott> itidus20: Yes. 03:50:28 <Gregor> elliott: Seems to me like this is when hackiki and hackbot should be merged :P 03:50:51 <elliott> Gregor: Well, no, it'd not be like hackiki. But I could write it as a hackiki page. 03:50:58 <elliott> Can any hackiki read from HackEgo? 03:52:22 <Gregor> Not at present >: ) 03:52:38 <Gregor> Aaaaaaaaaand ... not tonight :P 03:53:55 <elliott> Gregor: How can I make HackEgo send multiple lines X-D 03:54:11 <elliott> I need to send each definition of a word on a separate line or it won't fit multiple definitions at all >__> 03:54:44 <Gregor> Not - gonna - happen. 03:54:59 <Gregor> One-in-one-out is a pretty strict rule. 03:55:12 <zzo38> Is it ever going to fix that QUIT messages should be copied into the channel logs? 03:55:14 <elliott> Maaaan, HackEgo is SO unsuitable for a learndb. 03:55:43 <pikhq> Clearly we need another bot. 03:55:47 <elliott> Yes. 03:56:00 <Gregor> zzo38: Probably. Months/years from now when I grab a moment to do it. 03:56:05 <pikhq> fungot, EgoBot, glogbot HackEgo? Definitely not enough. 03:56:06 <fungot> pikhq: it saves valuable internet bandwidth even if i'd get an " indefinite" number of arguments ( 1 for 0) i need to 03:56:11 <pikhq> Oh, and clog. 03:56:34 <zzo38> I wrote an IRC bot program once. 03:58:12 <zzo38> It is currently connected to Freenode. 03:58:37 <elliott> What's it called 03:58:38 * CakeProphet finishes his Data Structures project and turned it in with exactly 2 minutes to spare. 03:58:40 <elliott> Is it that pokemon one 03:58:51 <zzo38> elliott: Yes, well, sort of. 03:59:13 <zzo38> It is named "PocketMonsterIRC" you can command it to join channels 03:59:14 -!- augur has joined. 03:59:36 -!- Jafet has quit (Quit: Leaving.). 04:00:51 -!- PocketMonsterIRC has joined. 04:01:38 <zzo38> See? That is how it works. 04:02:36 <zzo38> OK 04:02:52 <CakeProphet> cool! 04:02:55 <itidus20> So if I put x y that is an application, but it cannot be applied until something like (λx.(x y)) λa.b which would become (λa.b) y and then finally b 04:03:04 <CakeProphet> no 04:03:19 <CakeProphet> x y is an application 04:03:20 <elliott> that is a correct reduction 04:03:25 <CakeProphet> it applies things. 04:03:30 <CakeProphet> but yes the reduction is correct. 04:03:59 <itidus20> CakeProphet: ah so you mean the terminology is a bit wonky 04:04:01 <CakeProphet> oh... I see what you mean, nevermind. 04:04:18 <itidus20> anyway.. hmm 04:04:23 <CakeProphet> the expression that a function returns is not evaluated until the function itself is applied. 04:04:36 <CakeProphet> if that's what you mean. 04:04:39 <elliott> Gregor: I have the perfect learndb ;___; 04:04:39 <elliott> What if 04:04:42 <elliott> I could make it 04:04:44 <elliott> Send notices 04:04:45 <elliott> ???????????????????????? 04:04:47 <elliott> Those are better 04:04:48 <elliott> maybe 04:04:49 <elliott> help 04:04:54 <elliott> friendship learndb 04:04:55 <zzo38> I set up a macro to send command to PocketMonsterIRC, in my IRC client. It is possible to do that 04:05:04 <itidus20> now.. if i was to (λx.(x y)) a then that would become a y right? 04:05:07 -!- Jafet has joined. 04:05:16 <zzo38> So you can set up a macro too if you want to send commands, including your own program if you want to make IRC bot, to do that 04:05:23 <PocketMonsterIRC> zzo38:ro 2d6 = 5 04:05:30 <PocketMonsterIRC> zzo38:ro 2d6 = 7 04:05:30 <CakeProphet> itidus20: yes, but y should be defined somewhere. 04:05:32 <PocketMonsterIRC> zzo38:ro 2d6 = 4 04:05:33 <PocketMonsterIRC> zzo38:ro 2d6 = 12 04:05:38 <elliott> Gregor: See. 04:05:42 <elliott> So non-obtrusive. 04:05:43 <Patashu> stop that 04:05:44 <elliott> My nick column is only like 04:05:48 <elliott> At the edge of my screen now 04:05:57 <CakeProphet> itidus20: the thing to remember is that a, x, and y are all functions. 04:06:18 <itidus20> hmm... 04:06:31 <CakeProphet> there is /no/ other kind of value 04:07:15 <CakeProphet> and... that's pretty much it, in essense. 04:07:24 -!- elliott has changed nick to shfkhsdlsjdflsah. 04:07:27 <itidus20> CakeProphet: well would i just define y by nesting it in something else? 04:07:34 -!- shfkhsdlsjdflsah has changed nick to XXXXXXXXXXXXXXXX. 04:07:34 <CakeProphet> I'm not sure what you mean. 04:07:38 <XXXXXXXXXXXXXXXX> MWAHAHA 04:07:41 -!- XXXXXXXXXXXXXXXX has changed nick to elliott. 04:07:56 <CakeProphet> you define y through as a lambda parameter, yes. 04:08:09 <itidus20> ahh i see 04:08:39 <itidus20> so i would just say a y becomes λa.(a y) b and then it would become a b 04:08:53 <oklopol> "<Patashu> I just opened it up and got 227 seconds on expert. was wondering if that was decent" <<< my record is about 180 on this computer, haven't played a lot yet. i usually play normal since you can only win every 8th or so expert, which is frustrating 04:08:55 <CakeProphet> a y doesn't become that expression, no 04:08:59 <CakeProphet> but you could change it to that yourself. 04:09:01 <elliott> oklopol: teach itidus20 lambda calculus 04:09:13 <itidus20> sorry cake sorry 04:09:17 <itidus20> i got distratced rushing 04:09:23 <itidus20> so i would just say a y becomes λy.(a y) b and then it would become a b 04:09:24 <oklopol> my leftie record is something like 227 04:09:31 <Patashu> oklopol: download Mines-Perfect and set it to 'Hint' mode. whenever you have to be lucky hint gives you hints until you don't have to be anymore 04:09:50 <CakeProphet> itidus20: but then a is not defined in any of that. 04:10:01 <elliott> oklopol: im waiting 04:10:12 <oklopol> oh also i don't use flags usually, it's more fun that way, but way slower 04:10:25 <CakeProphet> itidus20: also do you understand how multiparameter functions work? 04:10:30 <elliott> there 04:10:32 <elliott> is no such thing 04:10:34 <elliott> in the lambda calculus 04:10:35 <CakeProphet> ....... 04:10:38 <CakeProphet> yes I know 04:10:39 <elliott> jesus christ are you trying to complicate it for itidus20 04:10:47 <CakeProphet> no I am showing him how you would do such a thing. 04:10:47 <elliott> he doesn't even know the basics stop bringing up things for no reason 04:11:08 <elliott> yes "now that you have failed to learn the basics of the lambda calculus let me tutor you in its more advanced usage" 04:11:13 <Patashu> why are we teaching itidus20 lambda calculus? 04:11:19 <CakeProphet> ...he just demonstrated that he has an idea of the basics. 04:11:21 <oklopol> itidus20: first things first, here's how to simulate oop in lc 04:12:00 <itidus20> so guys.. whats another way i can write λx.(a y)? is there any? 04:12:09 <CakeProphet> a is not defined 04:12:11 <CakeProphet> y is not defined 04:12:22 <CakeProphet> you can have. 04:12:22 <itidus20> yes its an ironic function 04:12:29 <oklopol> ironic function 04:12:32 <itidus20> i just realized it when i hit enter 04:12:49 <elliott> oklopol: im waiting for you to teach itidus20 lc 04:12:51 <itidus20> humm i guess what i mean is 04:13:01 <CakeProphet> λa.(λy.(λx.a y)) 04:13:31 <oklopol> elliott: okay, but only because i'm a professional teacher now 04:13:46 <itidus20> cake. ok i get what you mean there i think.. however.. 04:13:47 <oklopol> itidus20: see, functions are like these creatures that eat stuff and poop other stuff out 04:13:58 <oklopol> but the poop is edi 04:14:01 <oklopol> ble! 04:14:13 <itidus20> is there a way to reduce λa.b c 04:14:21 <CakeProphet> not as a standalone expression 04:14:23 <oklopol> it's yummy poop really 04:15:38 <itidus20> but λa.b c d is either (λa.b c) d or λa.((b c) d) right? 04:16:20 <itidus20> hmm or λa.(b (c d)) also 04:16:24 <Jafet> I wonder what's the minimum number of identifiers you need for lambda calculus to be turing complete 04:16:29 <Jafet> Enough to define S and K, I guess 04:16:46 <Jafet> That makes three or so 04:16:56 <oklopol> "<Patashu> oklopol: download Mines-Perfect and set it to 'Hint' mode. whenever you have to be lucky hint gives you hints until you don't have to be anymore" <<< does it crash if you construct a convoluted case where it's hard to tell 04:17:19 <pikhq> S=\xyz.xz(yz);K=\xy.x says "3 at most". 04:17:27 <Patashu> oklopol: I've never seen it mischaracterize or crash 04:17:28 <Jafet> I presume the software doesn't let you tell it which position to use 04:17:36 <pikhq> itidus20: It's always \a.((b c) d), by definition. 04:17:47 <oklopol> Patashu: i've never seen a hard problem in ms 04:17:51 <elliott> oklopol: please teach itidus20 lambda calculus thanks 04:17:57 <oklopol> which was not manually constructed 04:18:12 <itidus20> its best just to let me ask the questions ^_^; 04:18:20 <oklopol> elliott: oh okay but only because it's my profession 04:18:51 <Jafet> Can you make a turing complete set of combinators with two variables? I suspect it's impossible with one 04:19:08 <elliott> Jafet: it's provably impossible with one 04:19:14 <Patashu> oklopol: yeah, the randomly genreated patterns are easy because you get so many clues 04:19:24 <CakeProphet> elliott: prove it. 04:19:27 <oklopol> itidus20: so you know how functions have an arg and then they have a body, well, the thing is when you apply a function, or "usabilize" it, it means you like put stuff to the arg and then like substitute things (let's not get into details) and that's it then 04:19:28 <elliott> k 04:19:35 <elliott> its proved in that paper uhh 04:19:36 <pikhq> CakeProphet: There is one definable function:\x.x 04:19:40 <elliott> but basically 04:19:42 <itidus20> pikhq: so λa.b c d is unambiguously λa.((b c) d) then? 04:19:45 <elliott> repeat the combinator N times 04:19:47 <Jafet> pikhq: \x.x x 04:19:49 <elliott> Jafet: oh uh 04:19:51 <pikhq> Jafet: Fuck you. 04:19:53 <pikhq> Jafet: :P 04:19:53 <elliott> Jafet: there is a one-combinator complete base 04:19:56 <elliott> but you need parentheses 04:19:58 <elliott> or at least 04:20:00 <elliott> some tree structure 04:20:03 <elliott> you cannot just have it be "unary" 04:20:09 <elliott> i.e. repeated applications without parens of one combinator 04:20:10 <pikhq> itidus20: Yes. 04:20:11 <oklopol> Patashu: maybe that's the reason, yes, dunno. 04:20:15 <Jafet> elliott: but the combinator can't be defined with just one variable name 04:20:20 <elliott> Jafet: oh 04:20:21 <elliott> right 04:20:23 <Jafet> So you can't bootstrap it into one-variable lambda calculus 04:20:25 <elliott> i see what you mean 04:20:41 <oklopol> in any case, there's a very small amount of patterns you have to learn 04:21:04 <elliott> Jafet: yeah i suspect you always need three variables 04:21:08 <elliott> except hmm 04:21:16 <elliott> can S be expressed as some composition of two-arg combinators... 04:21:35 <zzo38> I have had idea, make a program it can do compression, decompression, encryption, using its own programming language with these blocks: Top block, Pipe block, Control block, I/O block, Pure block, and Data block. 04:22:03 <Jafet> Breaking news: zzo invents cobol 04:22:07 <itidus20> so i know that λf.λx.x or λfx.x or \fx.x or \fx->x is church zero :D 04:22:15 <elliott> Jafet: teach itidus20 lambda calculus 04:22:36 <itidus20> ^alonzo-church zero 04:22:43 <oklopol> "<CakeProphet> elliott: prove it." --- it basically means you can only have functions that take an argument and apply it to itself n times 04:22:48 <pikhq> itidus20: The Church numerals are nothing inherent, they're just an encoding of numerals in the calculus. 04:22:49 <oklopol> so isn't it kind of obvious 04:22:58 <elliott> oklopol: well you can also apply them to self-applications :P 04:23:08 <elliott> as in \x.x(xx) 04:23:12 <elliott> CLEARLY 04:23:13 <elliott> THAT MAKES 04:23:14 <elliott> ALL 04:23:14 <elliott> THE 04:23:15 <elliott> DIFFERENCE 04:23:15 <pikhq> itidus20: This would be a bit like learning C by staring at struct {void*car,*cadr;} for a bit. 04:23:16 <CakeProphet> oklopol: prove that it's obvious. :D 04:23:21 <zzo38> Each one has its own commands, restrictions, etc. Such as, Top block is only one and it has no flow control. All operations in I/O block are reversible, including I/O. Each block has its own memory and there are restrictions how to access the memory from other blocks and from within the same block. 04:23:32 <itidus20> hmmmm 04:23:44 <pikhq> Erm, s/cadr/cdr/ 04:23:44 <itidus20> ok back on track lets see 04:23:46 <Jafet> oklopol: jigsaw puzzles are turing complete 04:24:05 <Patashu> is that like the wang tiling turing completeness proof? 04:24:28 <Jafet> Yes, just assign colours to pieces 04:24:46 <oklopol> "<elliott> oklopol: well you can also apply them to self-applications :P" --- well yes, sure, and i don't actually have any idea what that implies 04:24:48 <zzo38> Can you explain how jigsaw puzzles are turing complete? 04:25:01 <CakeProphet> a human with a pencil and paper is turing complete. 04:25:02 <Patashu> zzo38, look up wang tiling 04:25:03 <elliott> \x.x(xx) looks suspiciously like the body of fix 04:25:07 <elliott> erm 04:25:07 <elliott> of Y 04:25:15 <elliott> but that has two variables :P 04:25:41 <Patashu> basically, it's set up to never repeat itself. so with certain initial conditions you can come up with an infinite number of different end results 04:25:52 <oklopol> "<CakeProphet> oklopol: prove that it's obvious. :D" --- i never said it's obvious, i asked whether it was obvious. i have revolutionized the socratic method, really. 04:26:14 <Patashu> I think it halts if you have to make a hole? don't recall exactly 04:26:34 <CakeProphet> I will now use the socratic method to teach itidus20 04:26:39 <CakeProphet> itidus20: what is the lambda calculus? 04:26:50 <oklopol> halts? 04:27:25 <oklopol> if a tiling never repeats itself, you have uncountably many ways to tile the plane 04:27:26 -!- cheater has quit (Ping timeout: 260 seconds). 04:27:35 <CakeProphet> oklopol: also that was a rhetorical question DOESN'T COUNT. 04:27:47 <oklopol> i mean if there is no periodic tiling, then you have uncountably many tilings 04:28:05 <Jafet> oklopol: incorrect 04:28:10 <zzo38> OK, I did read about it. "It is possible to translate any Turing machine into a set of Wang tiles, such that the Wang tiles can tile the plane if and only if the Turing machine will never halt. This problem is undecidable; therefore, the Wang tiling problem is also uncomputable. In a sense, Wang tiles have computational power equivalent to that of a Turing machine." 04:28:12 <Jafet> See Penrose tilings 04:28:40 <oklopol> i'm talking about wang tiles, but i'm pretty sure this holds for other shapes too 04:28:41 <zzo38> And even DNA as well, apparently. 04:29:09 <itidus20> back hmm 04:29:20 <oklopol> Therefore, a finite patch cannot differentiate between the uncountably many Penrose tilings, nor even determine which position within the tiling is being shown.[43] 04:29:23 <oklopol> on wp 04:29:39 <oklopol> where's your reference for only countably many tilings? 04:29:46 <CakeProphet> what are some examples of languages that can be proved to be Turing complete, but where it is very difficult to prove through isomorphism to another language. 04:29:59 <Jafet> Hmm, whoops 04:30:07 <Jafet> Maybe it was the pinwheel tiling 04:30:09 <Gregor> zzo38: Fixed (but not in raw yet) 04:30:22 <oklopol> you do realize i get paid thousands of euros a month to think about tilings 04:30:37 <Jafet> No, I did not realize that 04:30:54 <oklopol> i talk about it all the time 04:31:05 <oklopol> i'm like hey guys you know how i do ca and shit 04:31:19 <oklopol> and you guys like wow oklo u so cool 04:31:23 <oklopol> and i'm like, well, yes 04:31:53 <elliott> copumpkin: so if ghc is getting type-level nats, constraint kinds... what about pattern synonyms? I figure someone must be working on everything I've ever wanted :P 04:31:57 <oklopol> cellular automata are just deterministic tilings 04:32:12 <oklopol> you use the same constructions 04:32:35 <CakeProphet> elliott: pattern tail x = (_:x) ??? 04:32:55 <elliott> CakeProphet: that's not the right name for that pattern 04:32:58 <elliott> you can do that already anyway 04:33:00 <elliott> f (tail -> xs) = ... 04:33:09 <elliott> what's more relevant is something like 04:33:18 <CakeProphet> .....you can? is that an extension or something? 04:33:26 <elliott> pattern VarBind name value = SetVar (Var name) (Eval (Exp value)) 04:33:27 <elliott> or w/e 04:33:29 <elliott> CakeProphet: view patterns 04:34:06 <CakeProphet> I am not finding your example easy to discern. 04:34:13 <oklopol> anyway there are multiple ways to show tiling is undecidable, the usual way is to use robinson's tileset which draws an infinite quadtree of squares on the plane (Squares on a Plane!), you then just run a tm in each of these squares, avoiding hitting any of the smaller squares inside the big one 04:34:17 <elliott> which example 04:34:20 <oklopol> this is easy to do as tilings are nondeterministic 04:34:21 <zzo38> But I wanted more-notation in GHC, too. As well as, the ability to transform categories at compile time using TH, other than only the Hask category. 04:34:26 <elliott> CakeProphet: / 04:34:27 <elliott> ? 04:34:49 * Sgeo_ irritates Gregor 04:35:00 <oklopol> determinizing this is slightly harder, but possible, and proves nilpotency of 1-d ca is undecidable as well 04:35:18 <oklopol> this is a result of my supervisor from some 20 years ago 04:35:38 <elliott> CakeProphet: ? 04:35:41 <oklopol> also proves entropy of ca is uncomputable 04:36:43 <elliott> CakeProphet: hello? 04:37:12 <oklopol> Patashu: i can easily prove the uncountability thing to you if you know what compactness is, otherwise i'll go to work 04:37:45 <CakeProphet> elliott: back. 04:37:51 <oklopol> (i hope you don't, because i really have to go to work) 04:37:53 <elliott> <elliott> which example 04:37:56 <Patashu> go to work 04:37:59 <CakeProphet> your VarBind thing. 04:38:00 <CakeProphet> what does it do. 04:38:08 <elliott> declares a pattern synonym. 04:38:12 <elliott> then 04:38:17 <elliott> f (VarBind name value) = ... 04:38:18 <elliott> === 04:38:21 <elliott> f (SetVar (Var name) (Eval (Exp value))) = ... 04:38:38 <CakeProphet> oh okay 04:38:42 <CakeProphet> right that's what I was saying basically. 04:38:45 <elliott> the lack of ability to abstract patterns is one of haskell's major flaws imo. it means that you have to deliberately design your datatypes to avoid nesting (and therefore be weaker, structurally) to make matching convenient. 04:38:58 <elliott> it also makes using things like Mu to do recursive types prohibitive 04:39:08 <elliott> which makes e.g. seamless annotation of datatypes a pain 04:39:15 <elliott> (like annotating an AST with source location information at every node) 04:39:20 <zzo38> Well, I would like to have macros. 04:39:26 <oklopol> thanks. also because it's not at all easy to prove 04:39:32 <CakeProphet> elliott: also how was tail not the right name for that pattern. 04:39:37 <CakeProphet> when that's exactly what it is.. 04:39:41 <elliott> it is not. 04:39:55 <elliott> it's consSomething 04:40:00 <elliott> an ugly name for an ugly patter 04:40:00 <elliott> n 04:40:04 <elliott> you have to describe the _inverse_ 04:40:32 <CakeProphet> ...no? pattern tail x = (_:x) 04:40:38 <elliott> no. 04:40:41 <elliott> that is the wrong name. 04:40:44 <CakeProphet> f (tail z) === f (_:x) 04:40:46 <copumpkin> elliott: they're in SHE, quit bitchin' 04:40:47 <CakeProphet> er 04:40:49 <CakeProphet> s/x/z/ 04:40:53 <elliott> f (tail xs) = xs 04:40:55 <elliott> if we say 04:40:58 <elliott> f (tail [99,9]) 04:41:02 <elliott> we should get [99,9] 04:41:05 <elliott> because that's how patterns work 04:41:11 <elliott> f (tail [99,9]) == [] 04:41:15 <elliott> oops! 04:41:18 <elliott> your name is incorrect. 04:41:21 <elliott> copumpkin: oh come on 04:41:36 <CakeProphet> ....erm 04:42:07 <CakeProphet> so what is tail? 04:42:10 <CakeProphet> in pattern land? 04:42:11 <elliott> sigh 04:42:16 <elliott> it's not anythning 04:42:19 <elliott> because tail is not reversible 04:42:27 <elliott> you can't go from (tail [99,9,9]) to [99,9,9] 04:42:33 <elliott> because you get [9,9] which drops the head information 04:42:35 <elliott> there is no tail pattern 04:42:44 <CakeProphet> ...? 04:42:49 <CakeProphet> patterns need to be reversible? 04:43:01 <elliott> i am done bashing my head against this particular brick wall, sorry. figure it out for yourself 04:43:06 <zzo38> I will try to make a better macro system for Haskell, if I can. 04:43:47 <CakeProphet> functions are already pretty good at being macros... 04:44:46 <zzo38> CakeProphet: I don't think so. That is, if you want complicated macros doing stuff that is not how functions do. 04:44:57 <Gregor> Huzzah, I just fixed an extremely minor bug nobody knew about while thinking I was fixing a less-minor bug somebody did know about :P 04:45:35 <oklopol> Gregor: i'm a bit disappointed, i thought you were omnipotent 04:45:38 <Gregor> zzo38: OK, now the ACTUAL bug has been fixed :P 04:45:56 <Gregor> Sgeo_: Maybe once per /book/ :P 04:46:00 <oklopol> but 41 seconds to fix that second bug... 04:46:01 <zzo38> Gregor: OK thanks 04:46:42 <zzo38> Another feature I would like to have, is a function whatType :: Q Type in Template Haskell which when bind to function, that function will receive the parameter telling what types are expected for an expression belonging in place of the TH splice. 04:46:59 -!- PocketMonsterIRC has quit (Read error: Connection reset by peer). 04:46:59 <CakeProphet> elliott: I think the problem is that [99,9] is not a pattern you'd want to use with tail anyways. 04:47:13 <CakeProphet> because it's a literal. 04:47:31 <Gregor> `run wc -l quotes 04:47:42 <HackEgo> 662 quotes 04:47:54 <Gregor> Note how "wc -l quotes" happens to give a perfectly-formatted English reply :P 04:48:01 <elliott> CakeProphet: you are wrong 04:48:03 <zzo38> OK 04:48:52 <CakeProphet> okay, but I don't think I am. 04:48:56 <CakeProphet> noted? 04:49:07 <elliott> CakeProphet: 04:49:11 <elliott> f (tail [99,9]) = "hello world" 04:49:14 <elliott> f _ = "oh no" 04:49:19 <elliott> f (tail [99,9]) --> "oh no" 04:49:29 <CakeProphet> right, I'm saying it doesn't make sense to use [99,9] with tail 04:49:29 <elliott> if you think that a pattern should not match _itself_ as code, you are insane. 04:49:36 <elliott> copumpkin: please tell CakeProphet he's wrong thx 04:49:40 <CakeProphet> you would want to use a variable. 04:49:44 <CakeProphet> to bind 04:49:46 <CakeProphet> with 04:49:52 <elliott> CakeProphet: you are wrong. 04:49:59 <elliott> hey Gregor tell CakeProphet he's wrong. 04:50:27 <monqy> whats hapening 04:50:31 <monqy> i haven't been attentioen 04:50:36 <monqy> is CakeProphet wrong 04:50:36 <elliott> CakeProphet thinks that 04:50:39 <elliott> pattern tail x = _:x 04:50:42 <elliott> is a correct pattern synonym 04:50:42 <elliott> despite 04:50:45 <elliott> <elliott> f (tail [99,9]) = "hello world" 04:50:45 <elliott> <elliott> f _ = "oh no" 04:50:46 <elliott> <elliott> f (tail [99,9]) --> "oh no" 04:50:49 <elliott> and the fact that tail is not reversible anyway 04:50:55 <elliott> and me telling him that pattern should actually be called consAnythingTo 04:51:04 <monqy> im confsued?????? 04:51:07 <elliott> yes 04:51:15 <CakeProphet> I didn't say it matched the code, but that tail was a correct name for it because it matches the tail of the input. 04:51:22 <elliott> CakeProphet: that is not how patterns work. 04:51:56 <elliott> the pattern (tail xs) should match the result of a function application (tail xs) and bind xs to the argument given to tail. 04:52:02 <elliott> this is impossible, as tail is not reversible. 04:52:15 <CakeProphet> ...is there any functions that could be turned into pattern synonyms like that? 04:52:15 <elliott> if you think otherwise, you are wrong, and I have explicitly shown you why your pattern is incorrect 04:52:31 <elliott> varBind name value = SetVar (Var name) (Eval (Exp value)) 04:52:34 <elliott> pattern varBind name value = SetVar (Var name) (Eval (Exp value)) 04:52:43 <elliott> O;H MY GOD SO HARD 04:52:51 <elliott> the correct definition of a tail pattern is 04:52:55 <elliott> pattern tail (_:xs) = xs 04:52:57 <elliott> which would be used like 04:53:07 <elliott> f (tail (x:xs)) = x 04:53:10 <elliott> which is clearly impossible 04:53:18 <zzo38> What I mean, is, to be able to make up macros that make up do notation and list notation and that stuff. 04:54:40 <CakeProphet> elliott: okay I understand. 04:54:48 <CakeProphet> I was just thinking of the pattern synonyms as pattern functions, which they are. 04:58:37 -!- jix has quit (Ping timeout: 260 seconds). 04:58:37 -!- Wamanuz has quit (Ping timeout: 252 seconds). 04:58:37 -!- Deewiant has quit (Ping timeout: 252 seconds). 04:59:21 -!- CakeProphet has quit (Ping timeout: 252 seconds). 04:59:21 -!- yiyus has quit (Ping timeout: 260 seconds). 05:01:05 -!- monqy has quit (Ping timeout: 252 seconds). 05:04:09 -!- tiffany has quit (Ping timeout: 260 seconds). 05:04:10 -!- zzo38 has quit (*.net *.split). 05:04:10 -!- yorick has quit (*.net *.split). 05:04:10 -!- aloril has quit (*.net *.split). 05:04:11 -!- augur has quit (*.net *.split). 05:04:11 -!- copumpkin has quit (*.net *.split). 05:04:11 -!- itidus20 has quit (*.net *.split). 05:04:11 -!- fizzie has quit (*.net *.split). 05:04:11 -!- Zetro has quit (*.net *.split). 05:04:11 -!- chickenzilla has quit (*.net *.split). 05:04:12 -!- Jafet has quit (*.net *.split). 05:04:12 -!- quintopia has quit (*.net *.split). 05:04:12 -!- Patashu has quit (*.net *.split). 05:04:12 -!- lambdabot has quit (*.net *.split). 05:04:12 -!- aspect has quit (*.net *.split). 05:04:13 -!- twice11 has quit (*.net *.split). 05:04:13 -!- sebbu2 has quit (*.net *.split). 05:04:13 -!- Sgeo_ has quit (*.net *.split). 05:04:13 -!- DH____ has quit (*.net *.split). 05:04:13 -!- kmc has quit (*.net *.split). 05:04:13 -!- iamcal has quit (*.net *.split). 05:04:13 -!- rodgort has quit (*.net *.split). 05:04:13 -!- ineiros has quit (*.net *.split). 05:04:13 -!- Lymee has quit (*.net *.split). 05:04:13 -!- Nisstyre has quit (*.net *.split). 05:04:13 -!- jcp has quit (*.net *.split). 05:04:14 -!- elliott has quit (*.net *.split). 05:04:14 -!- myndzi has quit (*.net *.split). 05:04:14 -!- MDude has quit (*.net *.split). 05:05:20 -!- elliott has joined. 05:05:20 -!- Deewiant has joined. 05:05:20 -!- glogbackup has joined. 05:05:20 -!- tiffnya has joined. 05:05:20 -!- monqy_ has joined. 05:05:20 -!- CakeProp1et has joined. 05:05:20 -!- jix_ has joined. 05:05:20 -!- Wamanuz2 has joined. 05:05:20 -!- Jafet has joined. 05:05:20 -!- augur has joined. 05:05:20 -!- quintopia has joined. 05:05:20 -!- copumpkin has joined. 05:05:20 -!- zzo38 has joined. 05:05:20 -!- itidus20 has joined. 05:05:20 -!- sebbu2 has joined. 05:05:20 -!- Sgeo_ has joined. 05:05:20 -!- kmc has joined. 05:05:20 -!- iamcal has joined. 05:05:20 -!- lambdabot has joined. 05:05:20 -!- rodgort has joined. 05:05:20 -!- yorick has joined. 05:05:20 -!- myndzi has joined. 05:05:20 -!- aloril has joined. 05:05:20 -!- MDude has joined. 05:05:20 -!- fizzie has joined. 05:05:20 -!- ineiros has joined. 05:05:20 -!- Zetro has joined. 05:05:20 -!- aspect has joined. 05:05:20 -!- chickenzilla has joined. 05:05:20 -!- Lymee has joined. 05:05:20 -!- Nisstyre has joined. 05:05:20 -!- jcp has joined. 05:05:20 -!- twice11 has joined. 05:05:37 -!- elliott has quit (Client Quit). 05:05:37 -!- glogbackup has left. 05:05:37 <CakeProp1et> lol 05:05:37 -!- monqy_ has changed nick to monqy. 05:06:04 <CakeProp1et> that was a tumultuous netsplit. 05:06:20 -!- CakeProp1et has changed nick to CakeProphet. 05:08:22 -!- elliott_ has joined. 05:08:30 <elliott_> CakeProphet: hyo 05:08:31 <elliott_> yorick: 05:08:31 <CakeProphet> elliott_: I don't really see why you didn't just ait. :P 05:08:31 <elliott_> yo 05:08:36 <elliott_> ait? 05:08:37 <CakeProphet> *wait 05:08:40 <elliott_> because 05:08:40 <elliott_> f 05:09:02 <CakeProphet> do I repulse you? :P 05:09:17 <elliott_> yes 05:09:58 <CakeProphet> you just don't understand my ways. 05:10:22 -!- MDude has changed nick to MSleep. 05:10:42 <monqy> ok time to pay attention again 05:10:49 -!- zzo38 has quit (Remote host closed the connection). 05:11:11 <elliott_> monqy: help in mercury how do i define a typeclass which takes a type function 05:11:12 <elliott_> not a type 05:12:30 <monqy> i dont know that much meurgcury :_--; how to learn type clases 05:12:34 * Sgeo_ wonder if any Ruby nuts would consider it sinful to use hg for a Ruby project 05:12:58 <monqy> "dont use ruby" -monqy 05:13:06 <elliott_> "dont use hg" -elliott 05:13:30 <elliott_> hey monqy its 05:13:30 <elliott_> six am 05:13:31 <elliott_> do i 05:13:32 <Sgeo_> Hmm? What's wrong with hg, is git any better, and if no to the last question, what should I use? 05:13:33 <elliott_> sleep 05:13:38 <elliott_> Sgeo_: darcs 05:13:47 <elliott_> or git if you care about other people but really you don't 05:13:51 <CakeProphet> !perl print (("yes", "no")[int(rand(2))]) 05:13:53 <EgoBot> no 05:14:07 <CakeProphet> -- monqy 05:14:08 <monqy> can you selpp? recently i have been unable to sleep properly so i do not sleep properly, then i take naps when i am ready 05:14:31 -!- lifthrasiir has quit (Ping timeout: 260 seconds). 05:15:22 -!- yiyus has joined. 05:15:29 -!- Jafet has quit (Quit: Leaving.). 05:17:35 <itidus20> ok so, λa.(((((b c)d)e)f)g) i figure this is equivalent of λa.bcdefg but does (λa.bcdefg) h reduce to h ? 05:17:55 <itidus20> oops.. no i thought that out wrong 05:18:00 <monqy> oops 05:18:28 <itidus20> does (λa.bcdefg) h reduce to bcdefg ? 05:18:51 <copumpkin> yes 05:20:03 <itidus20> do applications only get applied in the presence of bound variables? 05:20:19 <monqy> what 05:20:25 <itidus20> well 05:20:34 <itidus20> bcdefgh cannot be reduced right? 05:20:58 <itidus20> uhm no.. i'm still asking the wrong question 05:21:23 <itidus20> (bcdefg) h cannot be reduced right? 05:21:34 <elliott_> sure 05:22:28 <itidus20> but if it was λb.(bcdefg) h it would become hcdefg 05:22:54 <copumpkin> if you meant different parentheses 05:23:08 <itidus20> parentheses are fairly confuing to me 05:23:49 <monqy> (\b.bcdefg)h 05:23:57 <itidus20> ahhh 05:23:59 <monqy> => hcdefg 05:27:17 <itidus20> hmm.. so the order of bcdefg only matters when one of them has an abstraction applied to it 05:27:30 <monqy> what 05:29:38 <itidus20> well.. you only need to think about implicit parentheses in (\b.bcdefg) if there is something like (\d.bcdefg) \x.y 05:29:53 <monqy> what 05:30:45 <itidus20> well i guess i am wondering what (\d.bcdefg) \x.y becomes 05:31:00 <CakeProphet> substitute d with \x.y 05:31:02 <CakeProphet> in the lambda 05:31:06 <CakeProphet> and return the expression 05:31:41 <itidus20> hmmm bc \x.y efg 05:31:50 <monqy> needs parens 05:32:09 <itidus20> thats what i am a bit confused about 05:32:13 <CakeProphet> you do know how functions work right? 05:32:36 <CakeProphet> also how is it confusing. 05:32:36 <itidus20> hmmm (((((bc)\x.y)e)f)g) ? 05:33:04 <monqy> you can reduce it further 05:33:10 <CakeProphet> you can also just write it as bc(\x.y)efg 05:33:17 <monqy> wait no oops 05:33:23 <monqy> im cfoneuse 05:33:35 <itidus20> ahhh 05:34:03 <itidus20> ok so needs parens means bc \x.y efg needs to be at least bc(\x.y)efg ? 05:34:08 <monqy> it might be wise to work with a few less free variables and do bigger reductions etc........... 05:34:19 <elliott_> "Have a question for the Republican candidates? Ask it now" ask it now links to youtube fox news help... "fox news google debate" oh god stop collaborating with them nO google 05:34:23 <elliott_> YUORE EVIL BUT NOT TATHT EVIL 05:34:29 <monqy> itidus20: something you might enjoy: (\x.xx)(\x.xx) 05:35:05 <itidus20> monqy: i set that situation up specifically to confuse myself and have it resolved now 05:35:17 <monqy> itidus20: oh? 05:37:26 <itidus20> so what i have learned is if i get (\d.bcdefg) \x.y then it is best reduced to bc(\x.y)efg 05:37:51 <monqy> have you learned anything else 05:38:21 <itidus20> i have what is known as a slow mind 05:38:29 <monqy> oh 05:38:32 <itidus20> i don't multitask very well.. 05:38:43 <monqy> what was your conclusion on (\x.xx)(\x.xx) 05:38:48 <itidus20> i tend to like to finish one thought before jumping to another though 05:39:04 <itidus20> i havent actually begun looking at it yet.. which i will start now 05:39:52 <monqy> oh I thought you said you had resolved it but I guess you were referring to something else oops 05:41:34 <itidus20> step 1) (\x.xx)(\x.xx) intermediate step 1.5) (\x.(\x.xx)(\x.xx)) step 2) (\x.xx)(\x.xx) ... this i can now recall as something which i saw in some sidenote i saw somewhere about how not everything can be reduced (i forget exactly.. nevermind that) 05:42:18 <monqy> your intermediate step does not make sense to me 05:42:26 <monqy> is it in a different notation 05:42:32 <itidus20> hahaha 05:42:42 <itidus20> (\x.xx)(\x.xx) reduces to (\x.xx)(\x.xx) 05:42:48 <monqy> yes 05:43:01 <elliott_> sounds like itidus20 is starting to get it :P 05:44:07 <CakeProphet> is (\x.xx) fix? it seems similar. 05:44:18 <monqy> no 05:44:35 <CakeProphet> can you do Y in LC? 05:44:45 <monqy> sorry i just sputtered 05:44:57 <itidus20> (\x.xx) a would be a a 05:45:15 <elliott_> CakeProphet: it's mock. and duh, of course. 05:45:17 <elliott_> erm 05:45:18 <elliott_> mockingbird 05:45:39 <CakeProphet> I figured it was possible I'm just not sure how to write it 05:48:47 <monqy> I used to remember, but then I forgot. ;_; 05:49:53 <elliott_> sent in /msg 05:49:59 <CakeProphet> NOPE I AM GOING TO FIGURE IT OUT. 05:50:03 <elliott_> too late 05:50:06 <CakeProphet> not looking 05:50:12 <elliott_> k 05:50:16 <elliott_> its trivial 05:50:44 <itidus20> so is... trivia 05:50:49 <monqy> hi 05:51:44 <CakeProphet> \f. (\x. f (x x))(\x f (x x)) 05:51:58 <CakeProphet> I think. 05:52:00 * CakeProphet checks. 05:52:09 <CakeProphet> BAM... 05:52:13 <CakeProphet> awwww yeah. 05:52:26 <monqy> victory dance 05:52:41 <CakeProphet> like mockingbird with that extra f... 05:56:29 <CakeProphet> recursion is weird in lambda calculus 05:56:32 <CakeProphet> well, I mean, not weird. 05:56:40 <monqy> ok 05:56:46 <CakeProphet> you just can't refer to the function by a name so you have to do the above. 05:57:17 <monqy> there are other ways too 05:58:15 <CakeProphet> I'd imagine they're all more or less equivalent. 06:00:10 <elliott_> LC is really in need of primitive fix, because a proper fix introduces sharing. 06:00:32 <CakeProphet> is sharing a thing that even makes sense to talk about in the context of LC? 06:00:38 <elliott_> yes. 06:00:39 <itidus20> and (\xy.xx)(\xy.xx) reduces into y.(y.(y.(y.((\xy.xx)(\xy.xx))))) and so on reducing forever right? 06:01:21 <itidus20> oops what i mean is 06:01:22 <elliott_> (\xy.xx)(\xy.xx) -> (\y.(\xy.xx)(\xy.xx)) 06:01:23 <elliott_> then it stops 06:01:27 <elliott_> because it's a lambda without any application 06:01:38 <itidus20> ahhh 06:01:45 <monqy> you can still reduce cant you?? 06:01:56 <monqy> depending on your 06:01:59 <monqy> evaluation strategy 06:02:15 <elliott_> monqy: not helpful 06:02:22 <monqy> ?? 06:02:24 <CakeProphet> elliott is using the evaluate-by-impatient-programer strategy. 06:02:47 <monqy> oh wait 06:02:49 <monqy> uhh 06:02:56 <monqy> i think something bad happened 06:03:01 <monqy> heygenie wise 06:03:11 <monqy> it got dirted 06:03:17 <CakeProphet> genie: hey 06:03:30 <monqy> or not 06:03:37 <monqy> how did i confuse myself like that 06:03:38 <monqy> how 06:03:39 <monqy> did that happen 06:03:44 <monqy> maybe i am tired 06:03:55 <CakeProphet> maybe I am going to sleep. 06:04:01 <Vorpal> morning 06:04:12 <Vorpal> I see elliott_ is still up 06:04:26 <elliott_> NO IVE BEEN 06:04:27 <elliott_> IN BED FOR HOURS 06:04:28 <elliott_> AND 06:04:29 <elliott_> AM GOING TO BED 06:04:30 <elliott_> NOW 06:04:37 <Vorpal> elliott_: surely you will fall asleep during school? 06:05:12 <elliott_> zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz; 06:05:15 <monqy> z 06:08:43 <itidus20> (λy'2'.(λy'6'.(λy'10'.(λy'14'.(λy'18'.(λy'22'.(λy'26'.(λy'30'.(λy'34'.(λy'38'.(λy'42'.(λy'46'.(λy'50'.(λy'54'.(λy'58'.(λy'62'.(λy'66'.(λy'70'.(λy'74'.(λy'78'.(λy'82'.(λy'86'.(λy'90'.(λy'94'.(λy'98'.(λy'102'.(λy'106'.(λy'110'.(λy'114'.(λy'118'.(λy'122'.(λy'126'.(λy'130'.(λy'134'.(λy'138'.((λx'141'.(λy'142'.(x'141' x'141'))) (λx'143'.(λy'144'.(x'143' x'143')))))))) 06:08:43 <itidus20> ))))))))))))))))))))))))))))))) 06:08:50 <itidus20> heh phew 06:09:37 -!- elliott_ has quit (Ping timeout: 240 seconds). 06:09:40 <monqy> itidus20: hi 06:09:43 <aspect> are those 'numbers' for hygiene? 06:10:03 <itidus20> this thing http://codu.org/lambda/lambda.html 06:10:07 <aspect> because if so, you might be interested to look up deBruijn-index notation 06:10:23 <itidus20> aspect: i'm a newbie really. 06:10:39 <aspect> that doesn't make it any less fun :) 06:10:55 <itidus20> it was auto generated numbers 06:18:05 <CakeProphet> itidus20: http://en.wikipedia.org/wiki/Church_encoding#Church_booleans 06:18:12 <CakeProphet> now read through this article, starting there. 06:18:25 <CakeProphet> and then go back to the top once you've read that. 06:19:36 <CakeProphet> notice how the Church encodings for true and false act like an if expression. 06:20:05 <CakeProphet> true x y = x; false x y = y 06:21:21 <itidus20> i don't like" true = ^ift.^iff.ift " 06:21:33 <CakeProphet> ...okay. 06:21:43 <itidus20> does he mean something else? :P 06:21:54 <CakeProphet> who is he. 06:22:13 <CakeProphet> also what is ^if 06:22:16 <itidus20> well its the codu page i assume its gregor 06:22:27 <itidus20> sounds like a screenshot in order 06:22:55 <monqy> CakeProphet: ^ is lambda 06:22:57 <CakeProphet> dunno but just look at that wikipedia page. 06:23:00 <CakeProphet> it uses a nicer syntax 06:23:08 <CakeProphet> no I saw it. 06:23:10 <CakeProphet> itidus20: no screenshot 06:24:31 <itidus20> http://oi55.tinypic.com/25pq0bc.jpg wahahaha 06:24:34 <CakeProphet> .. 06:24:41 <CakeProphet> dude I can scroll up in the conversation and click on a link. 06:24:52 <itidus20> ok ok nevermind 06:24:55 <itidus20> hmm 06:25:32 <CakeProphet> so yeah you write conditionals like: predicate then-value else-value 06:25:35 <itidus20> so what gregor is doing then is saying "x" = "ift", "y" = "iff" 06:25:43 <CakeProphet> no. 06:25:56 <CakeProphet> just ignore that it's bad. 06:25:59 <CakeProphet> :P 06:26:18 <CakeProphet> true = \a.\b. a 06:26:49 <CakeProphet> you can think of this as a kind of two-argument function. 06:26:53 <CakeProphet> true x y 06:27:18 <CakeProphet> which is actually ((true x) y), see how that works? 06:27:40 <itidus20> hmm \ab.a and \ab.b 06:27:53 <CakeProphet> yes those the typical representations for true and false. 06:28:23 <CakeProphet> \ab.expr just being a shorthand for \a.(\b. expr) 06:28:35 <itidus20> (\ab.a) c reduces to \b.c ? 06:28:41 <CakeProphet> yes. 06:28:52 <CakeProphet> see how it's like a conditional? 06:28:57 <itidus20> hmm 06:29:07 <CakeProphet> once you have and, or, and not defined 06:29:09 <CakeProphet> you can say things like 06:29:15 <CakeProphet> (and a b) x y 06:29:23 <CakeProphet> if a and b are both true then x is returns, otherwise y 06:29:38 <itidus20> (\ab.b) c reduces to (b.b) ? 06:29:47 <CakeProphet> \b.b yes 06:29:52 <itidus20> oops 06:29:59 <itidus20> haha those silly \'s 06:30:10 <itidus20> always trying to catch me out 06:30:11 <CakeProphet> ...am I making any sense? 06:30:25 <itidus20> yes except im thinking about 5 times slower 06:32:25 <CakeProphet> are you familiar with ?: in other languages? church booleans work like that except automatically... you don't need ?: 06:32:47 <itidus20> so if true = \ab.a then true x == \b.x and if false = \ab.b then false x == \b.b 06:32:56 <CakeProphet> yes. 06:33:03 <CakeProphet> true x y = ??? 06:33:05 <CakeProphet> false x y = ?? 06:33:11 <itidus20> humm 06:33:12 <CakeProphet> homework. go. 06:33:55 -!- Jafet has joined. 06:35:53 <CakeProphet> ....have you figured it out yet. 06:36:32 <itidus20> (\a.(\b.a)) x y (\b.x) y x ; (\a.(\b.b)) x y (\b.b) y y; 06:36:46 <itidus20> so thats about my processing speed 06:37:01 <CakeProphet> you already had half of it worked out you didn't need to start over. 06:37:16 <itidus20> either of us expecting my brain to go any faster will result in just anguish 06:37:27 <itidus20> i suggest enjoy the peace 06:37:28 <CakeProphet> okay so... uh 06:37:33 <CakeProphet> do you see how that's a conditional? 06:38:00 <CakeProphet> if you pass a Church boolean two arguments, true will give you the first one, and false will give you the second one. 06:40:16 <CakeProphet> true x y == x 06:40:19 <CakeProphet> false x y == y 06:40:31 <CakeProphet> .......right? 06:40:50 <CakeProphet> that's like.... a conditition, where you want one thing to happen when something is true and another thing to happen when something is false. 06:40:56 <CakeProphet> >_> <_< hello? 06:44:08 <CakeProphet> you're not paying attention are you. 06:44:12 <Sgeo_> itidus20, ping 06:44:40 <Sgeo_> Night all 06:49:20 -!- Sgeo_ has changed nick to Sgeo. 06:50:04 -!- GreaseMonkey has joined. 06:50:04 -!- GreaseMonkey has quit (Changing host). 06:50:04 -!- GreaseMonkey has joined. 07:01:46 <itidus20> i was afk 07:02:21 <CakeProphet> go forth and learn. 07:06:06 <CakeProphet> :t let true x y = x; false x y = y; not b = b false true in not true 07:06:06 <lambdabot> forall t t1. t -> t1 -> t1 07:06:11 <CakeProphet> :t let true x y = x; false x y = y; not b = b false true in not false 07:06:12 <lambdabot> forall t t1. t -> t1 -> t 07:09:02 <CakeProphet> > let true x y = x; false x y = y; not b = b; and x y = x y false; or x y = x true y in false true in or (not true) (and true false) "launch nukes" "pet kitten" 07:09:03 <lambdabot> <no location info>: parse error on input `in' 07:09:18 <CakeProphet> > let true x y = x; false x y = y; not b = b; and x y = x y false; or x y = x true y in or (not true) (and true false) "launch nukes" "pet kitten" 07:09:19 <lambdabot> "launch nukes" 07:09:25 -!- Patashu has joined. 07:09:39 <Patashu> first minesweeper 'speedrun' video http://www.youtube.com/watch?v=k​tLAPx_v8AE 07:09:44 <CakeProphet> > let true x y = x; false x y = y; not b = b; and x y = x y false; or x y = x true y in or (not false) (and true false) "launch nukes" "pet kitten" 07:09:45 <lambdabot> "pet kitten" 07:10:08 <CakeProphet> er... 07:10:21 <CakeProphet> not should be not b = b false true... I accidentally cut that out. 07:12:10 <CakeProphet> heh, I just noticed that if' in Haskell is a function that converts a Bool to a Church boolean. :P 07:15:31 <Patashu> http://www.youtube.com/watch?v=ktLAPx_v8AE fixed link 07:32:32 -!- rodgort has quit (Ping timeout: 260 seconds). 07:32:49 -!- lifthrasiir has joined. 07:42:12 -!- rodgort has joined. 07:50:17 -!- sllide has joined. 08:01:54 -!- sllide has quit (Ping timeout: 260 seconds). 08:12:51 -!- GreaseMonkey has quit (Quit: The Other Game). 08:21:31 <aspect> let true x = const x; false x = id; cons x y = \z -> z x y; car = true; cdr = false in (car (cdr (cons 1 (cons 2 3)))) 08:21:34 <aspect> > let true x = const x; false x = id; cons x y = \z -> z x y; car = true; cdr = false in (car (cdr (cons 1 (cons 2 3)))) 08:21:35 <lambdabot> Overlapping instances for GHC.Show.Show (b -> a -> a) 08:21:35 <lambdabot> arising from a use... 08:21:58 <aspect> hm, really? 08:23:07 <Patashu> I think that happens if it tries to show a function 08:23:08 <aspect> > let true x = const x; false x = id; cons x y = \z -> z x y; car = true; cdr = false in (cons 1 (cons 2 3)) cdr car 08:23:09 <lambdabot> 2 08:23:25 <aspect> duh 08:23:44 <aspect> should have used car x = x true etc 08:27:07 -!- nooga has joined. 09:27:01 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 09:41:00 -!- Patashu has joined. 09:42:02 <Patashu> I have a question about holding ctrl and hitting space. 09:42:06 <Patashu> On pidgin and notepad++, it does nothing. 09:42:12 <Patashu> On chrome and mIRC, it creates a space. 09:42:23 <Patashu> Why does it differ across programs? Is it a linux vs non linux thing? 09:59:03 -!- jix_ has quit (Ping timeout: 260 seconds). 09:59:34 -!- jix has joined. 10:10:01 -!- cheater has joined. 10:10:33 -!- cheater has quit (Client Quit). 10:10:48 -!- cheater has joined. 10:33:21 -!- sebbu2 has quit (Read error: Connection reset by peer). 10:33:51 -!- sebbu2 has joined. 10:54:07 -!- FireFly has joined. 10:57:34 -!- Patashu has quit (Read error: Connection reset by peer). 10:57:49 -!- Patashu has joined. 11:18:41 -!- oerjan has joined. 11:48:33 -!- oerjan has quit (Quit: Reboot). 11:55:03 -!- sebbu2 has changed nick to sebbu. 12:06:07 -!- boily has joined. 12:21:00 -!- oerjan has joined. 12:36:09 -!- oerjan has quit (Quit: Something saw my reboot as an opportunity to ask for another one). 12:37:02 -!- Sgeo has quit (Ping timeout: 260 seconds). 12:43:50 -!- pikhq_ has joined. 12:44:10 -!- pikhq has quit (Ping timeout: 258 seconds). 13:08:30 -!- pikhq has joined. 13:09:30 -!- pikhq_ has quit (Ping timeout: 276 seconds). 13:55:39 -!- Sgeo has joined. 14:00:04 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:04:09 -!- augur has quit (Remote host closed the connection). 14:11:06 * Sgeo gets an evil gleam in his eye 14:14:48 * CakeProphet gets a gleam in his evil eye 14:14:54 <Sgeo> and by evil i mean boring 14:19:39 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:23:02 -!- Phantom_Hoover has joined. 14:24:57 -!- sllide has joined. 14:26:42 -!- jcp has quit (Ping timeout: 260 seconds). 14:28:49 -!- Sgeo has quit (Ping timeout: 258 seconds). 14:46:51 -!- copumpkin has joined. 15:42:37 -!- DH____ has joined. 15:49:28 <Gregor> Idea: wine for win32s. 15:49:38 <Gregor> I expect this to be implemented by the time I reappear in ~1hr. 15:49:39 <Gregor> Thx 15:56:27 <CakeProphet> how's the baltic sea doing? 15:57:10 * CakeProphet has been studying for a quiz on the world map, and now knows where things are located. 15:57:21 <CakeProphet> I feel like, at least for now, my dumb American syndrome has been cured. 15:58:46 <cheater> not frozen over yet 15:59:01 <CakeProphet> oh good. 15:59:29 <cheater> although judging by the last winter it might well happen this year 16:00:01 <cheater> i think they hadn't had that for at least 50 years 16:00:56 <CakeProphet> I think lakes in northern Canada freeze often (...?) and they're on the same latitude roughly. 16:01:03 <CakeProphet> but climate is weird and doesn't really work like that. 16:01:11 <cheater> no it doesn't 16:01:29 <cheater> no it is not the same latitude really, the baltic sea is further south 16:01:31 <cheater> also it is a sea. 16:01:35 <cheater> and very salty. 16:01:48 <CakeProphet> is everything named sea in Europe a sea? 16:01:52 <CakeProphet> because there's a lot of inland seas as well. 16:02:11 <CakeProphet> *Eurasia 16:02:13 <cheater> yes 16:02:16 <cheater> those are seas too. 16:02:45 <cheater> although some seas are called lakes by some cultures 16:02:52 <CakeProphet> yeah we don't have those. Unless you count Salt Lake. 16:02:53 <cheater> for example the baltic sea is called Ostsee in german 16:02:56 <cheater> the eastern lake 16:03:00 <CakeProphet> which I think is a... salt lake? I'm not sure what the difference is. 16:03:06 <cheater> probably an influence from dutch 16:03:36 <cheater> the difference is the drifts 16:03:39 <cheater> ebb and flow and so on 16:03:56 <CakeProphet> I thought it was perhaps naming conventions or size related. 16:04:02 <cheater> and whether it is at the top or at the bottom of the reservoir 16:04:03 <cheater> no 16:04:10 <cheater> a sea is the place all water goes into 16:04:18 <cheater> a lake is a source or an intermediate 16:04:24 <CakeProphet> ah okay. 16:04:43 <CakeProphet> can you have a freshwater sea then? 16:04:52 -!- augur has joined. 16:05:01 <cheater> no 16:05:15 <cheater> in the end water ends up penetrating the sediment and reaching minerals 16:05:20 <cheater> that's the "salt" 16:05:31 <CakeProphet> ah. 16:05:34 <cheater> it's not really salt as is, it's a much more complex selection of minerals 16:05:43 <CakeProphet> right. 16:06:04 <cheater> that's why sea salt is a billion times better than industry table salt 16:06:07 * CakeProphet would like to sail on the great lakes. 16:06:22 <cheater> i can get salt which is gathered from the sea by hand in the adriatic 16:06:23 <CakeProphet> I've only seen the coast (I guess that's what you would call it...) 16:06:47 <CakeProphet> I assume when you say "by hand" you mean "by hand using some tools" right? :D 16:06:51 <cheater> apparently if it's very windy the salt grains crystallize on the surface of the adriatic and they are then gathered by the fishermen or something 16:06:58 <CakeProphet> oh. 16:07:07 <cheater> usually by hand means as opposed to using machines 16:07:18 <CakeProphet> NEVER KNOW SEEMED UNLIKELY. 16:07:49 <CakeProphet> thank you for clearing up my dumb american syndrome with some of your geology. 16:08:02 <CakeProphet> unfortunately that will not help me on my map quiz, which I'm still probably fucked for. 16:10:05 <CakeProphet> it's strange, I would think that things like the Arabian and Adriatic seas as being gulfs 16:10:08 <CakeProphet> and not seas. 16:10:25 <CakeProphet> s/that/of/ 16:10:56 <CakeProphet> well, red sea is a better example than arabian. 16:13:05 <CakeProphet> I guess they are gulfs but not by name, perhaps. 16:15:16 <CakeProphet> The Red Sea (alternatively Arabian Gulf[1] or Gulf of Arabia[2][3]) i 16:15:17 <CakeProphet> ah 16:15:45 <CakeProphet> but the Adriatic sea doesn't have an alternative gulf name. :P 16:15:45 <cheater> a gulf is like a sea which is more connected to the ocean 16:19:42 <CakeProphet> what's the climate in Germany comparable to? 16:19:52 <CakeProphet> on the western hemisphere. 16:20:18 <cheater> south or north germany? 16:20:26 <CakeProphet> both I guess. 16:20:43 <cheater> i don't think there is a direct match like that 16:20:48 <CakeProphet> I imagine it's cooler than it is here in the south US. 16:20:54 <cheater> yes 16:21:01 <cheater> south usa is like italy i am told 16:21:05 <CakeProphet> currently 81 F here. which is... 16:21:13 <cheater> i was talking about how the weather is in bari just today 16:21:14 <CakeProphet> 28 C 16:21:22 <cheater> apparently it never goes below 10 celsius 16:21:33 <CakeProphet> huh. 16:21:34 <cheater> which would be similar to what i was told about houston 16:21:44 <CakeProphet> it actually does reach freezing here in the winter, at least for a few weeks. 16:21:45 <CakeProphet> depends on the winter. 16:21:59 <CakeProphet> climate in Georgia = wonderful 16:22:16 <CakeProphet> you get really hot summers and still get below freezing temps in the winter sometimes. :P 16:22:26 <cheater> i don't like winters 16:22:28 <cheater> they're pointless 16:22:46 <CakeProphet> this summer was ridiculous. pretty much upper 90s F for over a month. 16:23:03 <cheater> very good 16:23:05 <cheater> that is what i like 16:23:15 <CakeProphet> and, unlike places like Arizona which frequently hit above 100, it's very humid here. 16:23:47 <CakeProphet> !interp 16:23:51 <CakeProphet> !userinterp 16:23:56 <CakeProphet> !userinterps 16:23:56 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph hello id insanetemp jethro kraut lperl lsh map num numberwang ook pansy pi pikhq pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez wc yodawg 16:24:26 <CakeProphet> I'm pretty sure we have a temperature converter somewhere here... 16:24:40 <CakeProphet> maybe it was removed. 16:25:05 <CakeProphet> !insanetemp 90 16:25:07 <EgoBot> 194.0 16:25:13 -!- MSleep has changed nick to MDude. 16:25:14 <CakeProphet> that's the opposite one. 16:25:23 <CakeProphet> !sanetemp 90 16:25:24 <EgoBot> 32.2 16:25:26 <CakeProphet> !sanetemp 100 16:25:26 <EgoBot> 37.7 16:25:46 <cheater> yea 37 is nice 16:25:52 <CakeProphet> ...not here. 16:26:04 <CakeProphet> humidity + heat = miserable 16:26:18 <CakeProphet> ~90 isn't bad though. 16:26:36 -!- zzo38 has joined. 16:26:50 <CakeProphet> still someone from the north US would be completely baffled as to how anyone would enjoy 90 degree temperatures. 16:26:52 -!- iamcal has quit (Ping timeout: 260 seconds). 16:27:12 <CakeProphet> !sanetemp 0 16:27:12 <EgoBot> ​-17.7 16:27:28 <CakeProphet> ...but I can't imagine who would enjoy 0 degree weather. :P 16:27:47 <CakeProphet> well 0 is a bit extreme 16:27:49 <CakeProphet> but not far off. 16:28:23 <CakeProphet> in any case Italy is much nicer than GA 16:28:27 <CakeProphet> go there, not here. :P 16:28:31 <cheater> -17 is normal winter weather 16:28:35 <cheater> i don't really like that 16:28:50 <cheater> yeah i am learning italian 16:28:59 <cheater> so maybe one day i'll move there or spain 16:29:06 <cheater> catalonian is like halfway italian anyways 16:29:12 <cheater> so learning italian helps with that too 16:29:13 <CakeProphet> though I guess GA is nice if you like deciduous forests.... everywhere. 16:29:30 <CakeProphet> and really old not-very-pointy mountains. 16:29:34 <CakeProphet> I'm sure there's a word for that. 16:29:38 <cheater> i had a lot of forests in poland 16:29:42 <cheater> didn't do much there 16:29:53 <cheater> eroded 16:30:10 <CakeProphet> north GA = mountains and forests south and central GA = boring slightly hilly plains 16:30:24 * CakeProphet lives in north GA. 16:30:34 <cheater> boring plains are boring 16:30:50 <CakeProphet> yeah. the great plains are kind of neat 16:30:55 <CakeProphet> but, you really only need to see them once to get the idea. 16:31:02 <CakeProphet> that it drags on for miles looking exactly the same. 16:31:13 <CakeProphet> but it is cool to see the... vastness, with no obstructions. 16:32:24 <CakeProphet> there are definitely many places in Europe I would enjoy. 16:32:35 <CakeProphet> Italy or Poland would be nice. 16:32:49 <CakeProphet> but I can't speak anything but English. Which isn't a huge problem, but still makes things more difficult. 16:33:04 * CakeProphet can read some Spanish somewhat proficiently, but is terrible at speaking or listening. 16:33:15 -!- pikhq_ has joined. 16:33:22 <cheater> you learn once you're there 16:33:36 -!- pikhq has quit (Ping timeout: 276 seconds). 16:33:41 <CakeProphet> after years I guess. 16:34:25 <CakeProphet> how often do you run into people that don't speak English, though? 16:37:19 <cheater> people at the local italian were surprised when i told them they called the seafood in the menu "sea fruit" 16:37:34 <CakeProphet> haha 16:37:50 <CakeProphet> awesome 16:38:02 <CakeProphet> Europe would be a hilarious place to live for a while. 16:38:04 <cheater> which is what you call it in german and italian 16:38:12 <cheater> yeah it's a hilarious place always 16:38:22 <cheater> i heard america was sort of boring in that regard 16:38:31 <CakeProphet> ...yes. 16:38:33 <CakeProphet> I think 16:38:38 <CakeProphet> I'm not really sure what makes a place hilarious 16:38:51 <cheater> that's the problem with you americans 16:38:57 <CakeProphet> the whole melting pot thing is kind of inaccurate. 16:38:58 <cheater> you don't know what makes a place hilarious 16:39:07 <cheater> yeah it's not really melting 16:39:15 <CakeProphet> just kind of stuck together in one culture. 16:39:16 <cheater> munich is a melting pot 16:39:21 <cheater> london even more so 16:39:48 <cheater> in london you can really get culture shock 16:40:06 <CakeProphet> percentage wise we have more non-English speakers than the UK. 16:40:22 <cheater> america is pretty much jews and mexicans vs the rest 16:40:30 <CakeProphet> lol 16:40:38 <CakeProphet> not really, but yeah there's a lot of hispanics. 16:40:53 <cheater> those are the major groups though aren't they 16:40:57 <CakeProphet> don't forget black people. 16:41:01 <cheater> oh yeah 16:41:08 <cheater> i totally forgot the black guy 16:41:09 <CakeProphet> well Jewish isn't really so big. 16:41:13 <cheater> in europe it's not like that that really 16:41:13 <CakeProphet> we kind of just have this color-code system 16:41:19 <cheater> because everyone has their like 16:41:22 <cheater> identity 16:41:23 <CakeProphet> and don't really pay attention to actual ethnicity. 16:41:36 <cheater> where their family lived for 1000s of years since it evolved from a fern 16:42:20 <CakeProphet> it depends on where you go really. 16:42:32 <cheater> nah it's like that everywhere 16:42:34 <CakeProphet> in the south for instance most immigrants are hispanic 16:42:39 <cheater> oh 16:42:42 <cheater> that is what you mean 16:42:44 <cheater> yeah ok 16:42:50 <CakeProphet> because, well, uh, the spanish speaking countries are south of us. 16:43:00 <cheater> nice 16:43:15 <cheater> i have just had two copies of the same partition on my computer 16:43:30 <CakeProphet> I imagine in the north you get more europeans and people of Jewish decent. 16:43:38 <cheater> and one was updated, recovered, fixed, and had a newer kernel 16:43:43 <cheater> grub loaded the kernel from that 16:43:45 <CakeProphet> ...that's odd. 16:43:48 <cheater> but mounted the other one 16:43:54 <cheater> and it couldn't find the modules :D 16:43:57 <cheater> hilarity ensued. 16:44:00 <CakeProphet> a lot of native Georgians actually come from colonial German immigrants. 16:44:21 <CakeProphet> I imagine I am a descendent from one of these immigrants. 16:44:28 <CakeProphet> but I don't really know. 16:45:24 <CakeProphet> and then in New York for example you have a lot of people who descend from colonial Irish people 16:45:31 <CakeProphet> so it really just depends on the location as to the ethnic make-up. 16:45:48 <CakeProphet> but "general American white mutt" permeates everywhere. :P 16:46:45 <cheater> i liked the movie 'gangs of new york' 16:46:57 <CakeProphet> haven't seen that one. 16:47:08 <cheater> it was a historical reconstruction of the every day life of the irish minority in the early days of new york 16:47:24 <CakeProphet> ah 16:47:32 <cheater> (not really) 16:47:44 <CakeProphet> a Hollywood bastardization of such? 16:47:50 <CakeProphet> yeah we're good at that. 16:47:56 <cheater> no it is a movie about gangs in new york 16:48:01 <CakeProphet> oh... 16:48:04 <cheater> beating and killing eachother up 16:48:10 <CakeProphet> oh fun. 16:48:16 <Gregor> "killing eachother up" 16:48:32 <CakeProphet> Gregor: be quiet roger or I'll kill you up. 16:48:34 <cheater> yeah funny how it came out innit? 16:48:37 <cheater> yeah 16:48:44 <cheater> you know daniel day lewis? of "my left foot" fame? 16:48:48 <cheater> sure you've seen that movie 16:48:51 <CakeProphet> noepep 16:48:58 <CakeProphet> I CANNOT TALK ANYMORE I MUST BE AT SCHOOL. 16:49:06 * CakeProphet is a terrible procrastinator. 16:49:06 <cheater> well he also played a character in gangs of new york 16:49:12 <cheater> he was good in both movies 16:49:17 <cheater> both roles were also very similar 16:49:30 <cheater> (not really, they were amazingly different) 16:49:39 * CakeProphet will return in.... about 2 and a half hours. 16:49:57 <CakeProphet> actually 1 and a half 16:50:13 <CakeProphet> er wait, what... 16:50:29 <CakeProphet> 2 hours. there we go... 16:50:35 <CakeProphet> I CAN DO MATHZ 16:52:30 <CakeProphet> also it is really strange to me that non-Americans talk about American movies. 16:52:37 <CakeProphet> and watch them. 16:52:39 <CakeProphet> a lot. 16:52:53 -!- iamcal has joined. 16:53:34 <CakeProphet> GET YOUR OWN MOVIES. 16:54:03 <cheater> no u 16:54:04 <Gregor> I notice a distinct lack of wine for win32s. 16:54:19 <cheater> win32s? 16:54:33 <cheater> ok 16:54:37 <cheater> never mind. 16:54:47 <cheater> forget i ever asked. 16:55:06 <CakeProphet> Gregor: get vodka instead. 16:55:10 <CakeProphet> it will help you 16:55:15 <CakeProphet> bahahaha 16:55:19 <CakeProphet> ..okay I'm gone now. 16:58:20 <zzo38> Is it possible to represent anything masthematically correct in category theory in Haskell? 16:58:44 <cheater> it might be but i'd call that masthurbation 16:59:00 <cheater> maybe if you're a masthodon 17:01:05 <zzo38> What does that mean? 17:02:24 <zzo38> What are the classes in Haskell called in category theory? 17:13:38 <CakeProphet> well there are only a few that I know of. 17:13:48 <CakeProphet> Monoids are... monoids. Categories are categories. Monads are monads. 17:15:21 <CakeProphet> I don't think you'll get anything too amazing by trying to apply category theory to programming in Haskell. 17:15:34 <CakeProphet> but it does help to understand some of the concepts. 17:16:26 <zzo38> No, I mean classes in general. 17:17:14 <CakeProphet> well a typeclass is a set of polymorphic functions 17:17:27 <CakeProphet> which would make it something like a... set of sets of morphisms? 17:18:05 * CakeProphet is teh category theory exphurt 17:19:13 <CakeProphet> because you have to account for Haskell's polymorphic functions being represented by multiple monomorphic morphisms in category theory. 17:20:06 <zzo38> I know about that 17:20:12 <CakeProphet> I bet copumpkin or oerjan know more about this... 17:22:36 <CakeProphet> yeah I believe a set of morphism sets would be accurate. 17:22:40 <CakeProphet> each instance is an additional subset. 17:27:37 -!- CakeProphet has quit (Ping timeout: 240 seconds). 17:30:58 -!- boily has quit (Ping timeout: 260 seconds). 17:31:55 -!- elliott_ has joined. 17:36:13 <elliott_> hi 17:38:40 <elliott_> 06:32:25: <CakeProphet> are you familiar with ?: in other languages? church booleans work like that except automatically... you don't need ?: 17:38:57 <elliott_> i am very sceptical of cakeprophet's approach to teaching iti. 17:39:23 <elliott_> especially bringing haskell into it. 17:40:13 <Gregor> You know how monads work in Haskell? Church numerals are like that, only better. 17:41:08 <elliott_> Gregor: Wow, you just set off seething hatred in me :P 17:41:38 <elliott_> hey oklopol did you see patashu totally own at minesweeper (apart from the bit where he lost) i dunno whether it'll make you feel superior or inferior 17:42:07 * Gregor takes a bow. 17:42:29 <Gregor> ... and shoots elliott_ with it. 17:42:32 <Gregor> Also an arrow. 17:42:39 <elliott_> :'( 17:42:52 <elliott_> Good thing this is Minecraft and so I've sustained approximately one minor bruise 17:43:15 <Gregor> You know how the arrow pierces your skin, rearranging and randomizing vital internal structure? 17:43:19 <Gregor> Monads are like that, only worse. 17:43:40 <elliott_> `addquote <Gregor> You know how the arrow pierces your skin, rearranging and randomizing vital internal structure? <Gregor> Monads are like that, only worse. 17:43:43 <HackEgo> 663) <Gregor> You know how the arrow pierces your skin, rearranging and randomizing vital internal structure? <Gregor> Monads are like that, only worse. 17:44:00 <elliott_> `log monad 17:44:09 -!- zzo38 has quit (Remote host closed the connection). 17:44:19 <HackEgo> 2008-06-01.txt:20:27:37: <tusho> Slereah: the IO monad is what we refer to as a "clever trick", though 17:46:13 <elliott_> `log monad 17:46:20 <HackEgo> 2010-02-20.txt:21:16:03: <alise> It's a full-blooded language, define what you want as long as it halts. If it might not or doesn't halt, put it in the partiality monad and you can still define it. 17:46:34 -!- boily has joined. 17:46:45 <elliott_> Gregor: can you make it filter out everything i say so it's less predictable 17:47:34 <Gregor> No, but you can :P 17:47:59 <elliott_> i have the power 17:48:04 <elliott_> `log monad 17:48:08 <HackEgo> 2011-02-09.txt:17:28:52: <Vorpal> elliott, well hm. So you don't use that monad for IO at all? 17:48:11 <elliott_> `log monad 17:48:15 <HackEgo> 2010-05-08.txt:23:14:28: <uorygl> A monad is a pair of functions. 17:48:22 <elliott_> tswett: and a type 17:48:23 <elliott_> `log monad 17:48:28 <HackEgo> 2010-05-08.txt:23:13:22: <alise_> stop even trying. learn haskell first, then monads 17:48:30 <elliott_> `log monad 17:48:34 <HackEgo> 2009-12-26.txt:13:19:26: <augur> soupdragon, are monads all Functors? they are right? 17:48:35 <elliott_> thsi si SOoooOOOOOoooOOOooOOOooOOooooooooooo boring 17:48:41 <elliott_> zzzzzzz 17:49:28 <tswett> elliott_: I may have been talking about category theory, where the functions determine the type. I think. 17:50:06 <elliott_> tswett: Maybe you were talking about LAAAAAAAAAAAAAME 17:50:10 <elliott_> It's possible. 17:50:52 <elliott_> this is the best minesweeper video i've ever watched 17:50:54 <elliott_> also the only 17:52:46 <tswett> I don't think LAME has monads. 17:53:40 <elliott_> No, but LAAAAAAAAAAAAAME does. 17:54:49 <elliott_> It stands for LAME-Aided Axiom-Added Ableising Americanisms Astutely Analysing An Antediluvian Astrophysicist Also A Monadic Exoskeleton. 17:55:49 -!- DH____ has quit (Read error: Connection reset by peer). 17:58:48 <elliott_> Gregor: I just realised that I already know what the hot new thing in parsing it, but had been mentally blocking it out for some reason :P 17:58:52 <elliott_> NO THANKS TO YOU ASSHOLES 18:02:27 <Gregor> And it is? 18:02:45 <Gregor> GLR? 18:03:32 <Gregor> bison? :P 18:03:44 <Gregor> RR(k)? 18:03:50 <elliott_> Gregor: The parsing with derivatives stuff 18:04:12 <elliott_> (Most people ignored it after Russ Cox thought it went exponential for a certain left-recursive grammar but then it turns out that it actually doesn't at all) 18:04:17 <elliott_> It works with any CFG, so woo :P 18:06:18 <elliott_> And it also uses laziness in its core algorithm, so TOTALLY GONNA BE THE BEST HASKELL PARSER COMBINATOR LIBRARY EVERRRRRRRRRRR 18:19:07 <augur> elliott_: you're boring 18:19:21 <elliott_> augur: th 18:19:22 <elliott_> x 18:19:50 <elliott_> th 18:19:52 <elliott_> x is the best word. 18:20:21 <augur> x 18:20:22 <augur> or th 18:20:22 <augur> x 18:20:24 <augur> ? 18:20:41 <elliott_> th 18:20:42 <elliott_> x. 18:21:16 <augur> words with newline chars are indeed pretty cool 18:21:45 <itidus20> THX 18:22:35 <itidus20> (\t.h) x = h 18:24:26 -!- Taneb has joined. 18:24:29 <itidus20> hmm.. now if i made that into (\t->h) x would it be haskell? 18:24:34 <Taneb> Hello! 18:24:40 <elliott_> "Parser-generators 18:24:40 <elliott_> are WYSIWYGIYULR(k)—“what you see is what you get if you understand 18:24:40 <elliott_> LR(k).”" 18:24:42 <elliott_> Gregor: Best acronym? 18:27:35 <olsner> wysi wygi yurlk 18:27:38 <Taneb> What is happening in the WORLD OF ESOTERIC PROGRAMMING 18:27:59 <Taneb> Aside from Gecho 18:28:06 <elliott_> Nothing 18:28:32 <itidus20> if i have (\t.h) x and i made that into (\t->h) x would it be haskell? 18:29:02 <itidus20> or is this opening a can of worms? 18:29:16 <Taneb> flip (const h) x 18:29:22 <elliott_> itidus20: Not unless you define h. 18:29:24 <elliott_> > (\t->h) x 18:29:25 <lambdabot> Ambiguous type variable `a' in the constraints: 18:29:25 <lambdabot> `SimpleReflect.FromExpr ... 18:29:27 <elliott_> Erm. 18:29:29 <elliott_> Fuck off, lambdabot. 18:29:39 <elliott_> itidus20: 18:29:40 <elliott_> *Main> (\t -> h) x 18:29:40 <elliott_> <interactive>:1:8: Not in scope: `h' 18:29:40 <elliott_> <interactive>:1:11: Not in scope: `x' 18:29:46 <elliott_> Given definitions of h and x, yes, that works. 18:29:50 <elliott_> But really, concentrate on just LC. 18:30:03 <Taneb> How's itidus20 going with his education? 18:30:05 <itidus20> ahh... i see.. i havent defined h and x 18:30:08 <elliott_> Haskell is not the LC, it isn't even a superset of the lambda calculus; it's a superset of a different, related system. 18:30:09 <itidus20> makes sense 18:30:17 <itidus20> ok 18:31:15 <itidus20> one fascinating element of LC is that an expression can't reduce itself out of existence 18:31:41 <itidus20> ie.. there is no empty set as it were 18:35:54 <itidus20> perhaps i am missing the point a bit.. arithmetic can never get beyond zero 18:36:17 <Taneb> You mean, arithmetic can never be a negative number? 18:36:40 <itidus20> i mean, no matter what you do to an arithmetic expression it will never cease to be an arithmetic expression 18:36:53 <itidus20> it will default to zero though 18:37:34 <elliott_> that's because the LC is closed under reduction 18:37:45 <elliott_> i.e., the reduction of any lambda-calculus term is a lambda-calculus term 18:38:25 <itidus20> ahh 18:38:51 <elliott_> so, reducing a lambda-calculus term any number of times cannot produce something that isn't a lambda-calculus term 18:51:00 <Taneb> Youth Theatre started today 18:51:12 <Taneb> Also, I am lamenting the loss of my luscious locks 18:51:58 <itidus20> and (\abcdefg.a) mnopqrs will reduce to m 18:54:12 <itidus20> and (\abcdefg.h) mnopqrs will reduce to h 18:54:32 <Taneb> Yes 18:54:39 <Taneb> Assuming h is defined 18:54:52 -!- augur has quit (Remote host closed the connection). 18:55:05 <itidus20> oh .. does that matter in pure LC? 18:55:19 <Taneb> ...I think so? 18:55:22 <Taneb> Ask elliott_ 18:56:06 <itidus20> ok 18:58:00 -!- elliott has joined. 18:58:00 -!- elliott_ has quit (Read error: Connection reset by peer). 18:58:05 <elliott> <itidus20> and (\abcdefg.a) mnopqrs will reduce to m 18:58:07 <elliott> <itidus20> and (\abcdefg.h) mnopqrs will reduce to h 18:58:09 <elliott> <Taneb> Yes 18:58:11 <elliott> <Taneb> Assuming h is defined 18:58:13 <elliott> * augur has quit (Remote host closed the connection) 18:58:15 <elliott> <itidus20> oh .. does that matter in pure LC? 18:58:28 <elliott> you can say "for all h,m,n,o,p,q,r,s, (\abcdefg.h) mnopqrs reduces to h" 18:58:41 <elliott> so basically it doesn't matter 18:59:00 -!- augur has joined. 18:59:03 <itidus20> ahh that is the answer 18:59:12 <itidus20> i see 19:10:49 -!- KingOfKarlsruhe has joined. 19:22:06 <itidus20> is it possible to treat I = (\x.x) as meaning x does not exist outside of I? 19:22:32 <itidus20> if name clashes are caused by notation for example 19:22:32 <elliott> Sure, x is lexically scoped. 19:22:38 <elliott> It is completely opaque outside of I. 19:24:35 <itidus20> so anyway, this alternative paper i found is a bit better, by some guy Raul Rojas 19:24:56 <elliott> A retired Mexican-American featherweight boxer, apparently 19:24:59 <elliott> Perhaps not the same Raul Rojas 19:25:41 <itidus20> Ral Rojas Gonzlez (born 1955, in Mexico City) is a professor of Computer Science and Mathematics at the Free University of Berlin and a renowned specialist in artificial neural networks. 19:31:17 <Vorpal> elliott: crazy torrent: 40158 seeders, 38480 leechers 19:31:24 <Vorpal> never seen that much before 19:31:33 <elliott> what is it 19:31:44 <elliott> i suspect that's uh... not accurate 19:31:47 <Vorpal> elliott: a game I'm trying out a bit before buying. Yogscast recently played it. 19:31:57 <Vorpal> elliott: anyway that is what the tracker reports. 19:32:19 <Vorpal> or trackers rather, there is about 20000 on each of the ones that don't time out. 19:32:29 <elliott> Sounds like crap 19:32:40 <Vorpal> elliott: what does? 19:32:45 <elliott> The numbers 19:32:55 <Vorpal> perhaps 19:33:08 <Vorpal> elliott: but I seem to connect to several hundred peers just fine. 19:33:16 <Vorpal> who knows 19:33:19 <elliott> Ten thousand or so for a huge torrent, sure 19:33:24 <elliott> Forty thousand /seeders/... no 19:33:33 <Vorpal> elliott: yes I'm wtf at it too 19:34:02 <Vorpal> elliott: maybe some are dual counted on different trackers somehow? 19:34:16 <elliott> dunno 19:34:28 <Vorpal> elliott: anyway it is massive, even if not as massive as that 19:34:39 <itidus20> i think there is some fanciful seeder counts that get around 19:34:57 <itidus20> you can easily see a torrent with 3000 seeders and then wait for any action sometimes 19:36:43 <Vorpal> itidus20: well there are no issues with seeders or leechers here, whatever the real numbers are 19:37:09 <elliott> Wow, I had no idea SQLite's testing was /that/ hardcore. 19:38:43 <Vorpal> elliott: hm? 19:38:57 <elliott> Vorpal: http://www.sqlite.org/testing.html 19:39:01 <elliott> Read and weep. 19:39:12 <Vorpal> elliott: iirc they have fairly extensive automated testing tools? *waiting for page to load* 19:39:24 <Vorpal> ah yes, I read that page before 19:39:28 <elliott> "As of version 3.7.5 (all statistics in the report are against that release of SQLite), the SQLite library consists of approximately 73.0 KSLOC of C code. (KSLOC means thousands of "Source Lines Of Code" or, in other words, lines of code excluding blank lines and comments.) By comparison, the project has 1251 times as much test code and test scripts - 91378.6 KSLOC." 19:39:31 <elliott> " The TCL Tests are the oldest set of tests for SQLite. They are contained in the same source tree as the SQLite core and like the SQLite core are in the public domain. The TCL tests are the primary tests used during development. The TCL tests are written using the TCL scripting language. The TCL test harness itself consists of 18.9 KSLOC of C code used to create the TCL interface. The test scripts are contained in 617 files totaling 9.3MB in siz 19:39:32 <elliott> e. There are 27664 distinct test cases, but many of the test cases are parameterized and run multiple times (with different parameters) so that on a full test run, about 1.4 million separate tests are performed." 19:40:02 <Vorpal> yeah 19:40:17 <elliott> Jesus christ, 48.7 MB of C code making up one of the test suites? 19:40:24 <Taneb> Has anyone written a Brainfuck self-compiler? 19:40:26 <elliott> I can't even comprehend what that much C can do. 19:40:28 <elliott> Taneb: awib 19:40:50 <Vorpal> elliott: well you can trust sqlite3 to be correct pretty much. Sure, not proven, but correct for most purposes 19:51:41 -!- oerjan has joined. 19:52:09 <itidus20> for all y, (\x.yx) y reduces to y y , right? 19:52:59 <elliott> Yes. 19:53:01 <oerjan> itidus20: if y does not contain x free 19:53:42 <elliott> oerjan: You might want to clarify that a bit :P 19:53:58 <itidus20> i sort of understand 19:54:03 <oerjan> if x is a free variable of y, then it might fail 19:54:51 <itidus20> such as (\y.(\x.yx) y) x 19:55:45 <itidus20> which i guess could be rewritten as (\yx.yx)yx 19:55:56 <oerjan> yes. although that particular case happens not to be a counterexample, i think 19:56:38 -!- coppro has quit (Quit: Reconnecting). 19:56:40 <oerjan> hm i should switch servers 19:56:43 -!- coppro has joined. 19:57:09 -!- oerjan has quit (Quit: leaving). 19:57:10 <elliott> oerjan: just reconnect when it goes down 19:57:12 <elliott> or that 19:57:21 -!- oerjan has joined. 19:57:25 <elliott> <elliott> oerjan: just reconnect when it goes down 19:57:25 <elliott> <elliott> or that 19:57:44 <olsner> gotta disconnect before you get disconnected! 19:58:08 <itidus20> hrmm 19:58:35 <oerjan> elliott: it could take my client a long time to discover the disconnection 19:58:40 <elliott> wat 19:58:48 <oerjan> i'm not exactly sure 19:59:30 <oerjan> but it certainly takes a while for freenode to notice the other way 20:00:15 <itidus20> oerjan: what about (\y.(\x.yx)yx) a b is that a broken example? 20:00:50 <oerjan> <itidus20> which i guess could be rewritten as (\yx.yx)yx <-- no that's not the same, the last y isn't in both scopes 20:01:10 <itidus20> hmm 20:01:28 -!- boily has quit (Ping timeout: 260 seconds). 20:01:42 <itidus20> humm 20:02:00 <oerjan> itidus20: you cannot get a broken example from \y.(\x.yx)yx 20:02:15 -!- variable has quit (*.net *.split). 20:02:15 -!- pikhq_ has quit (*.net *.split). 20:02:16 -!- rodgort has quit (*.net *.split). 20:02:16 -!- tswett has quit (*.net *.split). 20:02:16 -!- mtve has quit (*.net *.split). 20:02:16 -!- SimonRC has quit (*.net *.split). 20:02:16 -!- coppro has quit (*.net *.split). 20:02:16 -!- augur has quit (*.net *.split). 20:02:17 -!- Zwaarddijk has quit (*.net *.split). 20:02:17 -!- olsner has quit (*.net *.split). 20:02:17 -!- copumpkin has quit (*.net *.split). 20:02:18 -!- sebbu has quit (*.net *.split). 20:02:18 -!- oklopol has quit (*.net *.split). 20:02:18 -!- clog has quit (*.net *.split). 20:02:18 -!- HackEgo has quit (*.net *.split). 20:02:32 <oerjan> because that automatically renames things 20:02:43 <itidus20> humm 20:03:10 <Gregor> HACKEGO, NOOOOOOOOO 20:03:16 -!- iamcal has quit (Remote host closed the connection). 20:03:18 <elliott> oerjan: I wish alpha-conversion wasn't the traditional way to present the lc :( 20:03:18 -!- coppro has joined. 20:03:18 -!- augur has joined. 20:03:18 -!- pikhq_ has joined. 20:03:18 -!- copumpkin has joined. 20:03:18 -!- sebbu has joined. 20:03:18 -!- rodgort has joined. 20:03:18 -!- tswett has joined. 20:03:18 -!- variable has joined. 20:03:18 -!- Zwaarddijk has joined. 20:03:18 -!- oklopol has joined. 20:03:18 -!- clog has joined. 20:03:18 -!- HackEgo has joined. 20:03:18 -!- olsner has joined. 20:03:18 -!- mtve has joined. 20:03:18 -!- SimonRC has joined. 20:03:22 <elliott> oerjan: I wish alpha-conversion wasn't the traditional way to present the lc :( 20:03:23 <oerjan> <itidus20> for all y, (\x.yx) y reduces to y y , right? 20:03:41 <oerjan> for that to break you have to replace y with something which _literally_ contains x 20:04:08 <oerjan> (and y = x doesn't actually work, but that's a coincidence) 20:04:47 <itidus20> (\y(\x.yx) y) (\z.xx) 20:05:04 <itidus20> does that break? 20:05:24 <elliott> oerjan: mutters something about de bruijn 20:05:28 <itidus20> yeah at this point i am just guessing :P 20:05:31 <Taneb> Yep 20:05:32 <itidus20> ill let it go.. 20:05:51 <itidus20> i can study more when i am ready 20:06:00 <oerjan> itidus20: that one doesn't work because of alpha renaming. once you put it inside \y ... alpha renaming protects you against name collisions 20:06:42 <oerjan> it's only when you substitute something for y _literally_ in (\x.yx) y without doing alpha renaming for x that it can break 20:06:52 <Taneb> POSITIONING SQUAF 20:07:17 <itidus20> ahh 20:07:19 <oerjan> hm it might be that your book consider renaming x to happen automatically with substitution too, in which case it's always y y 20:07:46 <itidus20> like if you change (\x.yx) y (\x.yx) x 20:07:54 <itidus20> well this isnt from a book.. just thinking 20:08:03 <itidus20> ^ change to 20:08:08 <oerjan> itidus20: well i was assuming you substituted _both_ y's 20:08:14 <oerjan> with the same thing 20:08:32 <oerjan> and also, y = x doesn't work as a counterexample 20:08:44 <itidus20> can you give an example of anything that could go wrong with (\x.yx) y ? 20:09:00 <oerjan> y = x x should get pretty hairy :P 20:09:12 <oerjan> (\x.(xx)x)(xx) 20:09:33 <itidus20> ahh.. i think i get it 20:10:45 <itidus20> i think that what has happened is that i havent explored substitutions at all.. 20:10:58 <itidus20> and so didn't realize it was possible 20:11:46 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 20:14:43 -!- fungot has quit (*.net *.split). 20:14:43 -!- Vorpal has quit (*.net *.split). 20:14:43 -!- Zuu has quit (*.net *.split). 20:14:44 -!- atehwa has quit (*.net *.split). 20:14:59 -!- Zuu has joined. 20:15:04 -!- Zuu has quit (Changing host). 20:15:04 -!- Zuu has joined. 20:15:09 -!- Vorpal has joined. 20:15:13 <oerjan> basically the rules for when you must do alpha conversion when substituting are, in modern terms, about preserving lexical scoping 20:15:38 <oerjan> although it is possible that the idea of lexical scoping actually evolved _from_ lambda calculus 20:15:41 <itidus20> so i know you can add (\<name>.<expression1>) around expression1 and thus it becomes that.. 20:16:08 <itidus20> and you can add (<expression1> <expression) around expression1 and it becomes that 20:16:48 <itidus20> but i didn't consider that you can take <expression1> and replace it with <expression2> 20:17:05 -!- boily has joined. 20:17:29 <oerjan> itidus20: erm you haven't learned beta reduction yet? that's the _essence_ of lambda calculus 20:18:19 -!- esowiki has joined. 20:18:19 -!- glogbot has joined. 20:18:19 -!- glogbackup has left. 20:18:19 -!- Gregor has joined. 20:18:21 -!- shachaf has joined. 20:18:29 -!- atehwa has joined. 20:18:29 -!- mycroftiv has joined. 20:18:43 -!- EgoBot has joined. 20:18:46 -!- Gregor has changed nick to Guest82930. 20:19:03 <elliott> oerjan: i don't think he's learning it as a formal set of rules, he's just replacing it intuitively :P 20:19:17 -!- yorick has quit (Quit: Poef!). 20:19:46 <oerjan> basically, (\x.<expression1>)(<expression2>) reduces to <expression1> with <expression2> substituted for x, while renaming bound variables to avoid collisions 20:19:58 <oerjan> *name collisions 20:20:46 <oerjan> and repeating beta reduction is how lambda calculus computes things 20:20:58 <itidus20> well (\x.yx) y to (\x.(xx)x)(xx) isn't really reduction right? 20:21:15 <itidus20> well i mean it may be some form of reduction 20:21:21 <itidus20> but what would you call that? 20:21:29 <itidus20> substitution? 20:21:30 <oerjan> no, that's substituting xx for y, but ignoring the renaming rules 20:22:14 <oerjan> you could call it substitution, but it's not a correct one for beta reduction 20:22:26 <itidus20> is it because (\x.(xx)x)(xx) is broken that it requires substitution to arrive at it? 20:22:34 <elliott> fromApple News_Europe@insideapple.apple.com 20:22:34 <elliott> subject20 Sept. is your last chance to get a 65 pound University Gift Card. 20:22:34 <elliott> Wow, that's a pretty heavy University Gift Card. 20:22:39 <elliott> What the hell is it made out of? 20:23:26 <oerjan> itidus20: yes. because if you started with (\y.(\x.yx)y)(xx) instead, then the beta reduction rule would demand the bound x be renamed. 20:23:56 <Guest82930> HELLO I AM GUEST 20:23:59 <itidus20> so, in practice do you ever need to do something likel (\x.yx) y to (\x.(xx)x)(xx) ? 20:24:28 <Guest82930> I HEARD THAT MELNU THE OVERSEER IS GOING TO RETURN IN 2012. COMMENTS? 20:24:29 <elliott> Guest82930: hi 20:24:32 -!- iamcal has joined. 20:24:33 <oerjan> -> (\y.(\z.yz)y)(xx) -> (\z.(xx)z)(xx) -> (xx)(xx) 20:24:34 <elliott> yes 20:24:35 <elliott> true 20:24:46 <oerjan> that doesn't break when renaming properly 20:24:48 <Guest82930> SHOULD WE FEAR THE GREAT OVERSEER? 20:25:34 <oerjan> Guest82930: THE GREAT OVERSEER SMELLS PRETTY BAD, SO SHOULD BE EASY TO HIDE FROM FOR MOST PEOPLE 20:25:36 <Taneb> WHY THE CAPS LOCK 20:25:48 <Guest82930> CAPS LOCK IS CRUISE CONTROL FOR COOL. 20:25:57 <Guest82930> *actually, that's the sustain pedal 20:26:00 -!- Guest82930 has changed nick to Gregor. 20:26:42 <itidus20> oerjan: i am not sure how to ask the right question. is it wrong to just say y = (xx)? 20:27:30 <Taneb> itidus20: no, but in some cases (when it is ambiguous what x is) yes 20:28:00 <oerjan> itidus20: that's ok. but you should always avoid name collisions by renaming. 20:28:33 <oerjan> so basically if you say (\x.yx)y where y = xx, you normally will automatically rename the bound x'es 20:28:33 <Phantom_Hoover> <Guest82930> SHOULD WE FEAR THE GREAT OVERSEER? 20:28:42 <Phantom_Hoover> Only if you are a noble. 20:29:32 <itidus20> does y = (xx) imply ( \y.<expr>) (xx) ? 20:29:39 <oerjan> itidus20: it is even common when representing lambda calculus in computers to use a representation where bound variables aren't named, that's the deBruijn indexes elliott mentioned 20:30:03 <oerjan> because that avoids a lot of this trouble 20:30:23 <Phantom_Hoover> Or even just to pretend everything is combinator calculus because it's so much easier. 20:30:45 <Taneb> Combinator calculus is harder to write but easier to read 20:30:50 <oerjan> itidus20: no. the y to the right is bound, so not the same variable really 20:31:06 <oerjan> itidus20: er or wait 20:31:27 <itidus20> hmm .. i will restate 20:31:45 <oerjan> itidus20: actually, yes, you can always incorporate equations in that way, which is why pure lambda calculus doesn't really need them 20:32:16 <itidus20> when going from (\x.yx) y to (\x.(xx)x)(xx) is ( \y.<expr>) (xx) implied? 20:32:48 <oerjan> itidus20: not if you want it to break. 20:33:04 <itidus20> but you never want it to break right? 20:33:59 <oerjan> itidus20: wikipedia suggests the term "capture-avoiding substitutions" for the ones involving renaming 20:34:02 <itidus20> uhmmm ok in other words 20:34:18 <itidus20> (\x.yx) y is safe as long as you use proper renaming methods 20:34:19 <oerjan> and you should always use them to avoid breakage 20:34:22 <oerjan> yep 20:35:17 <itidus20> ok so its basically that i said "for all y, " can include a y which is not following proper renaming methods 20:36:12 <oerjan> yeah 20:36:23 <Phantom_Hoover> oh god I'm running out of disk how 20:36:30 <Phantom_Hoover> FAREWELL RED DWARF 20:36:41 <itidus20> can you compress it any more? 20:37:20 <elliott> use more zippes 20:37:38 <itidus20> my guess is that the compressability of a video is not much though 20:38:53 <itidus20> if anything "video format" is all about the set of compression routines optimized for videos 20:39:08 <Phantom_Hoover> Oh BtW I have to go to Ireland tomorrow for grandfather hauling, don't miss me too much. 20:39:26 <itidus20> have a craic 20:39:30 <itidus20> or whatever 20:40:29 <Phantom_Hoover> That is not what 'craic' means iti. 20:41:04 <oerjan> <Phantom_Hoover> FAREWELL RED DWARF <-- are you sure your priorities are sound? 20:41:13 -!- Taneb has quit (Ping timeout: 260 seconds). 20:43:21 <Phantom_Hoover> oerjan, I've watched it all twice, I need fresh DS9 to stave off the boredom. 20:45:43 -!- Taneb has joined. 20:46:51 <itidus20> Phantom_Hoover: i revised my knowledge 20:47:40 <itidus20> but i still don't think sad events should mean you can't have craic 20:48:28 <itidus20> the only thing i think i got wrong about the meaning was using an article 'a' 20:49:50 <Phantom_Hoover> itidus20, no, I mean you don't have craic. 20:49:58 <Phantom_Hoover> It's just a thing. 20:50:38 <itidus20> ok it makes sense that i don't know what it means 20:51:32 <Phantom_Hoover> itidus20, it doesn't mean 'a good time', it doesn't really have a direct equivalent. 20:51:42 <itidus20> yeah. it is fair enouhg 20:51:45 <Phantom_Hoover> There is simply craic, and it is sometimes good. 20:51:49 <itidus20> ^fair enough 20:51:50 <Taneb> In BytePusher, is the register thingy containing the current instruction automatically updated? 20:51:52 <itidus20> :) 20:58:21 <elliott> `addquote <Taneb> Mayor says we need to make aluminum items <Phantom_Hoover> Taneb, PH says you need to make lava items. 20:58:23 <HackEgo> 664) <Taneb> Mayor says we need to make aluminum items <Phantom_Hoover> Taneb, PH says you need to make lava items. 21:02:25 <oerjan> can you feel the lava tonight 21:08:24 <itidus20> (\x.yx) y = (\bound1.free1 bound1) free1 ; (\y.(\z.yz)y)(xx) = (\bound1.(\bound2.bound1 bound2)bound1)(free1 free1) 21:08:47 <Phantom_Hoover> oerjan, deeply in lava. 21:09:01 -!- Taneb has quit (Read error: Connection reset by peer). 21:09:14 <itidus20> is this making sense? 21:10:11 <oerjan> itidus20: it is not usually allowed to rename _free_ variables, only bound ones 21:10:25 <itidus20> humm 21:11:25 <itidus20> yeah i am implying some unstated mechanism for converting variables named free to variables named bound 21:12:15 <itidus20> no no tats not the problem. nevermind hm. ok 21:12:22 <itidus20> thanks for comment 21:15:02 <itidus20> sorry oerjan my brain goes off in 10 directions before just taking a proper literal interpretation 21:17:18 <oerjan> with math, it's important to understand the literal interpretation first 21:18:03 <itidus20> hm 21:19:04 <itidus20> ironically with narrative text the literal interpretation can be a problem 21:19:25 <itidus20> narrative might be wrong word here 21:19:52 <itidus20> things like philosophy, religion, novels, poetry 21:20:50 <itidus20> maybe it is formal vs informal 21:28:14 -!- nooga has quit (Ping timeout: 252 seconds). 21:32:19 -!- augur has quit (Remote host closed the connection). 21:34:02 -!- augur has joined. 21:46:08 -!- BeholdMyGlory has joined. 21:47:35 -!- pikhq has joined. 21:49:05 -!- pikhq_ has quit (Ping timeout: 260 seconds). 22:03:32 -!- MDude has quit (Ping timeout: 260 seconds). 22:08:42 <elliott> `addquote <elliott> Dear god stop staring at me. <monqy> no never <Phantom_Hoover> monqy is always staring at everyone. <monqy> it takes many eyes to do this but I manage <Phantom_Hoover> He is an inspiration to us all. 22:08:44 <HackEgo> 665) <elliott> Dear god stop staring at me. <monqy> no never <Phantom_Hoover> monqy is always staring at everyone. <monqy> it takes many eyes to do this but I manage <Phantom_Hoover> He is an inspiration to us all. 22:09:17 <Phantom_Hoover> My quotes collection seems that bit more empty when I remember that elliott added like all of them. 22:09:34 <elliott> Whose quotes collection. 22:09:49 <elliott> That was a monqy quote not a Phantom_Hoover quote you egoistic fuck. 22:10:05 <Phantom_Hoover> elliott, it is a collaboration. 22:10:14 <Phantom_Hoover> It is a monqy quote feat. Phantom_Hoover. 22:10:19 <elliott> monqy ft. Phantom_Hoover -- always staring at everyone 22:10:25 <elliott> An instant hit. 22:10:36 <elliott> monqy ft. Phantom_Hoover remixed by elliott, a HackEgo production. 22:11:17 <elliott> `pastequotes Phantom_Hoover 22:11:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7911 22:11:24 <Phantom_Hoover> Just monqy staring at you, also I sometimes stare at you too. 22:11:29 <elliott> Holy shit that's a lot. 22:12:36 <elliott> 433) <Sgeo> Hmm. I guess it's nearby GRBs that would be problematic? <Phantom_Hoover> Sgeo, if by 'problematic' you mean 'what's that in the AAAAAAAAARRRRRGGGGHHHH'. 22:12:40 <elliott> Phantom_Hoover: WHAT IS THE CONTEXT 22:12:42 <Gregor> Phantom_Hoover's quote collection seems really small when he realizes they're all somebody else's. 22:13:18 <elliott> 421) <Phantom_Hoover> Lymia, I don't know what that is but I want to hit you for it on principle. 22:13:18 <elliott> Interestingly, glogbot didn't log this. 22:13:30 <elliott> `log is pursuing the line of reasoning that eating raw foods can improve cognitive function 22:13:33 <HackEgo> 2011-09-14.txt:22:13:30: <elliott> `log is pursuing the line of reasoning that eating raw foods can improve cognitive function 22:13:37 <elliott> `log is pursuing the line of reasoning that eating raw foods can improve cognitive function 22:13:40 <HackEgo> 2011-09-14.txt:22:13:33: <HackEgo> 2011-09-14.txt:22:13:30: <elliott> `log is pursuing the line of reasoning that eating raw foods can improve cognitive function 22:13:43 <elliott> ... 22:13:45 <monqy> oh no 22:13:45 <elliott> `log is pursuing the line of reasoning that eating raw foods can improve cognitive function 22:13:46 -!- DH____ has joined. 22:13:49 <HackEgo> 2011-09-14.txt:22:13:40: <HackEgo> 2011-09-14.txt:22:13:33: <HackEgo> 2011-09-14.txt:22:13:30: <elliott> `log is pursuing the line of reasoning that eating raw foods can improve cognitive function 22:13:49 <Phantom_Hoover> I am a man of wit. 22:13:53 <monqy> oh noooo 22:13:58 <elliott> `pastelogs is pursuing the line of reasoning that eating raw foods can improve cognitive function 22:14:02 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1860 22:14:03 -!- kmc has quit (Quit: Leaving). 22:14:10 -!- kmc_ has joined. 22:14:10 <elliott> Hmm. 22:14:15 <elliott> Where was that from, then? 22:14:18 <elliott> I doubt it was -minecraft. 22:14:28 -!- kmc_ has changed nick to kmc. 22:14:28 -!- Patashu has joined. 22:14:52 <Phantom_Hoover> <elliott> Phantom_Hoover: WHAT IS THE CONTEXT 22:14:52 <Phantom_Hoover> GRBs, funnily enough. 22:14:52 <Phantom_Hoover> I love all the quotes the context of which is lost to history because you added them from an msg. 22:15:10 <elliott> 563) <Phantom_Hoover> Oh god. <Phantom_Hoover> I've become a metallurgy hipster. 22:15:16 <elliott> Phantom_Hoover: Was that really after we started playing DF? 22:15:26 <Phantom_Hoover> elliott, I already told you why that was. 22:15:38 <Phantom_Hoover> I removed the "Iridium is too mainstream." for comedic effect. 22:15:45 <elliott> Oh, right. 22:15:48 <elliott> You're meant to use sed to do that. 22:16:14 <oerjan> <elliott> Phantom_Hoover: WHAT IS THE CONTEXT <-- all necessary context was included afaiac 22:16:21 <elliott> Afaiac? 22:16:28 <elliott> Oh, right. 22:16:58 <elliott> `pastequotes oerjan 22:17:00 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15374 22:19:08 <elliott> `log understand it perfectly\. it's complete 22:19:11 <HackEgo> No output. 22:19:21 <elliott> `log not even going to try and understand 22:19:24 <HackEgo> 2011-09-14.txt:22:19:21: <elliott> `log not even going to try and understand 22:19:31 <elliott> `pastelogs not even going to try and understand 22:19:35 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.23435 22:19:39 <itidus20> `log perfectly 22:19:42 <HackEgo> 2010-11-13.txt:22:18:45: <pikhq> Vorpal: With a GFCI it's perfectly safe. 22:19:46 <elliott> Gregor: What is UP with these incomplete logs. 22:19:49 <elliott> `log @ 22:19:54 <HackEgo> 2011-02-03.txt:23:09:13: <elliott> @undo do x <- pSimpleUL; xs <- pUL; return (x :< xs) 22:20:02 <elliott> `log @ 22:20:07 <HackEgo> 2007-02-11.txt:23:43:53: -!- sebbu2 has quit ("@+"). 22:20:09 <elliott> `log \b@\b 22:20:13 <HackEgo> 2011-03-09.txt:03:03:48: <elliott> Gregor: nearbyint@libc.so 22:20:15 <itidus20> `log \bDMM\b 22:20:19 <HackEgo> 2005-06-09.txt:10:12:12: <DMM> I read about Homespring for the first time today. Wow... that just blew me away :-) 22:20:23 <Gregor> elliott: :'( 22:20:28 <elliott> What, is that the real DMM? 22:20:28 <Gregor> elliott: That reference makes me cry 22:20:35 <elliott> Gregor: What reference 22:20:40 <elliott> `logurl 2005-06-09.txt:10:12:12: 22:20:41 <HackEgo> http://codu.org/logs/log/_esoteric/2005-06-09 22:20:46 <Gregor> elliott: <HackEgo> 2011-03-09.txt:03:03:48: <elliott> Gregor: nearbyint@libc.so 22:20:57 <elliott> wow, it's real DMM :DDDDDDDDddddddddddddddddddddddd 22:21:00 <elliott> i think 22:21:00 <sebbu> ? 22:21:04 <elliott> sebbu: ? 22:21:06 <elliott> oh 22:21:08 <elliott> blame `log 22:21:12 <Phantom_Hoover> dmm 22:21:14 <Phantom_Hoover> was here 22:21:14 <elliott> oerjan: dude dude. 22:21:16 <Phantom_Hoover> oh my god 22:21:16 <elliott> oerjan: dmm. 22:21:17 <elliott> was here. 22:21:26 <Phantom_Hoover> come back dmm ;_; 22:21:29 <elliott> dmm come 22:21:33 <elliott> back we will 22:21:34 <elliott> be friends ;__; 22:21:56 <elliott> 11:14:47: <DMM> I got some TV to watch... later guys 22:21:56 <elliott> AND HE LEFT... 22:22:03 <elliott> `patselogs <DMM> 22:22:05 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: patselogs: not found 22:22:10 <elliott> Phantom_Hoover: oh my god wiki drama 22:22:10 <elliott> 23:27:51: <calamari> graue: your vision of the wiki is a bit narrower than I'd hoped for 22:22:11 <elliott> 23:28:28: <calamari> I'm halfway wondering if you'll be pulling up those in-progress pages at any moment 22:22:11 <elliott> 23:30:29: <calamari> now I realize it's your wiki, you're running it, and all that.. which I appreciate.. but perhaps if you're going to stifle the expressive purposes of the wiki we need to abandon your stranglehold and start a new wiki elsewhere 22:22:19 <elliott> THIS FASCIST GRAUE REGIME 22:22:22 <Lymee> `pastelogs @pl 22:22:23 <elliott> `pastelogs <DMM> 22:22:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.18293 22:22:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2363 22:22:32 <Phantom_Hoover> elliott, dude, graue was a bit extreme. 22:22:44 <Phantom_Hoover> No new categories without his approval? 22:22:46 <Phantom_Hoover> Seriously? 22:22:49 <elliott> THREE MONTHS OF SPORADIC DMM 22:22:57 <elliott> Phantom_Hoover: Erm, it's never been "his approval". 22:23:04 <elliott> It's always been "consensus". 22:23:34 <elliott> Phantom_Hoover: Also calamari said that just because of 22:23:34 <elliott> 23:26:11: <calamari> graue: I'd really like to integrate EsoShell into the wiki. Would you like to work on it with me? 22:23:34 <elliott> 23:26:49: <graue> i'd rather not have executable code running out of the wiki 22:23:34 <elliott> 23:26:56: <graue> it's for information, not running programs 22:23:36 <elliott> which is hilarious ok. 22:23:49 <elliott> It is hilarious. I have a policy that this is hilarious. 22:25:54 <Patashu> I love the idea of going to a page for an esolang and at the bottom is a console. "Try writing XXX language now!" 22:26:08 <monqy> hm did anything happen to the learn db 22:26:09 <monqy> `cat 22:26:15 <elliott> it would be a good way to find esolangs that are far too easy to be should exist 22:26:21 <elliott> monqy: i wrote a better one but gregor woudln't ;__; 22:26:23 <elliott> because it needed 22:26:25 <elliott> multiple line sends 22:26:31 <monqy> why did it need this 22:26:39 <elliott> because 22:26:41 <HackEgo> No output. 22:26:43 <elliott> multipe definitions 22:26:46 <elliott> but ok i will write one that is 22:26:48 <elliott> slightly better than that 22:29:24 <monqy> for multiple definitions you could stuff them into a listy thing and on requesting entry without being explicit as to which one it would display the first one. on displaying entry it says the entry number and the number of entries?? perhaps an special entry identifier for random entry, too?? perhapS??? 22:29:43 <Gregor> Multiple entries is just a terrible idea :P 22:30:04 <Lymee> `which learn 22:30:05 <monqy> how is it a bad idea 22:30:05 <HackEgo> ​/hackenv/bin/learn 22:30:12 <Lymee> `paste /hackenv/bin/learn 22:30:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30666 22:30:16 <Gregor> monqy: Complexity cost huge, benefit tiny. 22:30:23 <monqy> how is the benefit tiny 22:30:29 <elliott> `rm bin/learn 22:30:31 <HackEgo> No output. 22:30:35 <elliott> `rm bin/forget 22:30:37 <HackEgo> No output. 22:30:38 <Gregor> Who the hell needs multiple definitions? Think wiki, not ... whatever the hell you're thinking. 22:30:44 <elliott> Gregor: Complexity cost huge? Dude, my scripts were like ten lines. 22:30:48 <Lymee> `paste learnt 22:30:50 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31091 \ cat: learnt: No such file or directory 22:30:52 <elliott> You have clearly never used a proper learndb :P 22:30:53 <Gregor> elliott: Use, not code. 22:30:54 <elliott> `run ls bin 22:30:56 <HackEgo> Lymee \ addquote \ allquotes \ botsnack \ calc \ commands \ creatures \ define \ delquote \ elliott \ esolang \ etymology \ fuck \ google \ imdb \ json \ k \ karma \ learnt \ log \ logurl \ marco \ minifind \ paste \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ penis \ ping \ prefixes \ quine \ quote \ quotes \ rec 22:31:03 <elliott> Gregor: No... it was three commands. 22:31:04 <monqy> learning multiple things is very important!!! 22:31:06 <elliott> And trivial to use. 22:31:07 <Gregor> >_< 22:31:17 <Gregor> elliott: Yes, because it would presumably barf out every definition every time. 22:31:20 <oerjan> @list what 22:31:20 <lambdabot> where provides: where url what where+ 22:31:21 <elliott> `run rm bin/Lymee bin/learnt 22:31:23 <HackEgo> No output. 22:31:27 <Lymee> `cat bin/Lymee 22:31:27 <oerjan> @what me worry 22:31:27 <lambdabot> I know nothing about me. 22:31:28 <HackEgo> cat: bin/Lymee: No such file or directory 22:31:29 <elliott> Gregor: Yes, which if you actually bothered to rate-limit properly would be fine :P 22:31:33 <elliott> Lymee: Stop. 22:31:34 <Lymee> `paste bin/lymee 22:31:35 <Gregor> Oy vey. 22:31:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19221 \ cat: bin/lymee: No such file or directory 22:31:38 <elliott> I'm trying to add new scripts. 22:31:48 <Gregor> elliott: Having a bot that runs FUCKING ARBITRARY commands be able to output more than one per one is the 22:31:49 <Gregor> WORST 22:31:52 <Gregor> POSSIBLE 22:31:54 <Lymee> `paste bin/elliott 22:31:56 <Lymee> Okey. 22:31:56 <Gregor> IDEA 22:31:56 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28307 22:32:07 <elliott> "What is rate limiting, also what is maximum lines of output" --Gregor 22:32:16 <monqy> you dont have to make it barf them all out....would that make it too complicated to use.....(hint: no) 22:32:16 <Gregor> I have a rate limit, and a maximum. 22:32:19 <Gregor> The rate limit is one per one. 22:32:21 <Gregor> The maximum is one. 22:32:33 <Gregor> Your ideas. They are fucking terrible. 22:32:41 <elliott> w/e 22:32:43 <elliott> `fetch http://sprunge.us/QFPP 22:32:45 <HackEgo> 2011-09-14 22:32:45 URL:http://sprunge.us/QFPP [97] -> "QFPP" [1] 22:32:51 <elliott> `run mv QFPP bin/'?'; chmod +x bin/'?' 22:32:53 <HackEgo> No output. 22:33:02 <monqy> `? 22:33:03 <HackEgo> ​? ¯\(°_o)/¯ 22:33:06 <elliott> monqy: Not done. 22:33:17 <elliott> `fetch http://sprunge.us/OIib 22:33:18 <HackEgo> 2011-09-14 22:33:18 URL:http://sprunge.us/OIib [173] -> "OIib" [1] 22:33:18 <Gregor> lol, greatest output ever 22:33:25 <elliott> `run mv OIib bin/learn; chmod +x bin/learn 22:33:27 <HackEgo> No output. 22:33:36 <elliott> `fetch #!/bin/sh 22:33:36 <elliott> rm "learn/$1" 22:33:37 <HackEgo> http://#!/bin/sh: Invalid host name. 22:33:37 <elliott> ... 22:33:43 <elliott> `fetch http://sprunge.us/fgdX 22:33:44 <HackEgo> 2011-09-14 22:33:44 URL:http://sprunge.us/fgdX [25] -> "fgdX" [1] 22:33:48 -!- sllide has quit (Ping timeout: 260 seconds). 22:33:48 <elliott> `run mv fgdX bin/forget; chmod +x bin/forget 22:33:50 <HackEgo> No output. 22:33:51 <elliott> `run mkdir learn 22:33:53 <HackEgo> No output. 22:34:02 <elliott> `learn Gregor is the stupidest stupid. 22:34:04 <HackEgo> ​/hackenv/bin/learn: line 7: learn/Gregor: No such file or directory 22:34:13 <monqy> rip gregor 22:34:13 <elliott> Uhh 22:34:15 <elliott> `ls learn 22:34:16 <HackEgo> ls: cannot access learn: No such file or directory 22:34:17 <monqy> "the stupidest stupid" 22:34:20 <elliott> >_< 22:34:21 <elliott> `run mkdir learn 22:34:23 <HackEgo> No output. 22:34:26 <elliott> `learn Gregor is the stupidest stupid. 22:34:28 <HackEgo> ​/hackenv/bin/learn: line 7: learn/Gregor: No such file or directory 22:34:31 <elliott> Gregor: what 22:34:38 <elliott> `run mkdir learn 22:34:40 <HackEgo> No output. 22:34:51 <elliott> `learn Gregor is the stupidest stupid. 22:34:53 <HackEgo> ​/hackenv/bin/learn: line 7: learn/Gregor: No such file or directory 22:34:56 <elliott> Gregor: ?????????????? 22:35:15 <oerjan> `ls learn 22:35:17 <HackEgo> ls: cannot access learn: No such file or directory 22:35:22 <monqy> what is learn doimg.... 22:35:34 <elliott> `help 22:35:35 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 22:35:46 <Gregor> elliott: It doesn't remember empty directories. 22:35:52 <elliott> Gregor: lol@hg 22:36:03 <Gregor> elliott: lol@virtually every VCS in existence? 22:36:07 <elliott> Nope. 22:36:11 <elliott> darcs gets it right, for one. 22:36:15 <Gregor> 1. 22:36:16 -!- FireFly has quit (Quit: FireFly). 22:36:19 <elliott> I think SVN did too. 22:36:21 <Gregor> 2. 22:36:32 <elliott> Gregor: Dude, the only VCSes taht don't are git and hg :P 22:36:35 <elliott> I think bzr gets it right as well. 22:36:48 <monqy> git and hg are virtually every vcs in existence 22:36:54 <elliott> `run sed -i 's/learn/wisdom/g' bin/learn; sed -i 's/learn/wisdom/g' bin/'?'; sed -i 's/learn/wisdom/g' bin/forget 22:36:55 <HackEgo> No output. 22:36:57 <Gregor> It's been too long since I've used bzr to corroborate *shrugs* 22:37:08 <elliott> `run mkdir wisdom; echo "is a big stupid stupid." >wisdom/Gregor 22:37:11 <HackEgo> No output. 22:37:12 <elliott> `? Gregor 22:37:13 <HackEgo> Gregor? ¯\(°_o)/¯ 22:37:18 <elliott> `ls wisdom 22:37:20 <HackEgo> Gregor 22:37:23 <elliott> uh 22:37:24 <Gregor> Oh good, so now you can't just say the name ... 22:37:33 <elliott> Gregor: Yes, because that was terrible :P 22:37:38 <elliott> `url bin/? 22:37:39 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/? 22:37:45 <elliott> >_< 22:37:45 <Gregor> Well, I'll admit that having it get in the way of cat was kinda bad. 22:37:48 <elliott> `paste bin/? 22:37:50 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.25292 22:37:50 <Gregor> And that URL ain't gonna work at all X-D 22:37:57 <elliott> Hmm 22:38:05 <elliott> `run ls wisdom/Gregor 22:38:07 <HackEgo> wisdom/Gregor 22:38:10 <elliott> ??? 22:38:19 <elliott> Am I misunderstanding what -e does? :P 22:38:50 <elliott> halp 22:38:55 <monqy> `cat wisdom/Gregor 22:38:57 <HackEgo> is a big stupid stupid. 22:39:18 <Gregor> `run [ -e wisdom/Gregor ] && echo hewoo 22:39:19 <HackEgo> hewoo 22:39:22 <Phantom_Hoover> `log wisdom 22:39:25 <HackEgo> 2011-09-14.txt:22:39:22: <Phantom_Hoover> `log wisdom 22:39:40 <elliott> `? . 22:39:42 <HackEgo> cat: wisdom/.: Is a directory \ . 22:39:47 <elliott> Nice X-D 22:40:03 <elliott> `? ../bin/? 22:40:04 <HackEgo> ​../bin/? #!/bin/sh \ [ -e "wisdom/$1" ] || { echo "$1? ¯\(°_o)/¯"; exit 1; } \ echo "$1 $(cat "wisdom/$1")" 22:40:10 <elliott> Feature. 22:40:12 <elliott> `? Gregor 22:40:13 <Gregor> Agreed 22:40:14 <HackEgo> Gregor is a big stupid stupid. 22:40:17 <elliott> Huh 22:40:19 <elliott> It suddenly works 22:40:25 <Lymee> `? echo 22:40:26 <HackEgo> echo? ¯\(°_o)/¯ 22:40:29 <elliott> `pastequotes monqy 22:40:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1494 22:40:32 <elliott> Time to start documenting the masses 22:40:44 <Gregor> `learn Gregor Wrote the bot. Better than you. For most values of "you". 22:40:46 <HackEgo> No output. 22:40:48 <Gregor> >_> 22:40:50 <elliott> Gregor: Wrong style :P 22:40:52 <Gregor> `? Gregor 22:40:54 <Gregor> Oh foo 22:40:54 <HackEgo> Gregor "you". 22:40:55 <elliott> Following `learn is a full sentence. 22:40:57 <elliott> ... 22:40:58 <elliott> what 22:40:58 <Gregor> lol 22:41:04 <Gregor> I'll go with that. 22:41:06 <elliott> Gregor "you". 22:41:06 <Gregor> Works for me. 22:41:14 <elliott> topic=$(echo "$1" | sed 's/ .*//') 22:41:14 <elliott> info=$(echo "$1" | sed 's/.* //') 22:41:17 <elliott> OK sed-experts, help me out here :P 22:41:27 <elliott> I didn't use /g 22:41:28 <Gregor> info removes everything before the last space there. 22:41:28 <elliott> So?? 22:41:35 <elliott> Oh hmm 22:41:37 <Gregor> .* is greedy 22:41:42 <elliott> How can I make it be tighter >_> 22:41:44 <Gregor> You want [^ ]* 22:41:45 <elliott> .*? is perlism 22:41:48 <elliott> Thx :P 22:41:57 <Gregor> Yeah, as far as I know there's no non-greedy modifier for sed. 22:42:03 <elliott> `fetch http://sprunge.us/ECNd 22:42:04 <HackEgo> 2011-09-14 22:42:04 URL:http://sprunge.us/ECNd [178] -> "ECNd" [1] 22:42:08 <elliott> `run mv ECNd bin/learn; chmod +x bin/learn 22:42:10 <HackEgo> No output. 22:42:15 <elliott> `learn Gregor wrote the bot, which is why he's terrible. 22:42:16 <HackEgo> No output. 22:42:18 <elliott> `? Gregor 22:42:20 <HackEgo> Gregor wrote the bot, which is why he's terrible. 22:42:25 <Gregor> "No output" isn't the ideal output :P 22:42:34 <elliott> OK FINE TIME FOR SOME MEGA OUTPUT 22:42:50 <Gregor> How about "Filling me with your knowledge gives me a sexual kind of pleasure." 22:43:01 * Phantom_Hoover wonders how Transmission concludes, from a rate of consistently between 50 and 100 KiB/s, that it will take twelve hours to torrent 3GB. 22:43:33 <elliott> `fetch http://sprunge.us/aJVh 22:43:33 <HackEgo> 2011-09-14 22:43:33 URL:http://sprunge.us/aJVh [198] -> "aJVh" [1] 22:43:39 <elliott> `run mv aJVh bin/learn; chmod +x bin/learn 22:43:41 <HackEgo> No output. 22:43:48 <elliott> `run echo 'echo "Forget what?"' >>bin/forget 22:43:50 <HackEgo> No output. 22:43:58 <Gregor> `learn Gregor Wrote the bot. Better than you. For most values of "you". 22:44:01 <HackEgo> I knew that. 22:44:03 <elliott> Gregor: NOT A SENTENCE 22:44:08 <monqy> `forget Gregor 22:44:10 <HackEgo> Forget what? 22:44:15 <Gregor> `learn Gregor Wrote the bot. Better than you. For most values of "you". 22:44:17 <HackEgo> ​/hackenv/bin/learn: line 7: wisdom/Gregor: No such file or directory \ I knew that. 22:44:21 <Gregor> Sweet. 22:44:25 <Phantom_Hoover> > 3000000 / (75*60) 22:44:25 <lambdabot> 666.6666666666666 22:44:34 <Phantom_Hoover> > 3000000 / (75*60*60) 22:44:35 <lambdabot> 11.11111111111111 22:44:38 <Gregor> `? Gregor 22:44:39 <Phantom_Hoover> Oh. 22:44:40 <HackEgo> Gregor? ¯\(°_o)/¯ 22:44:48 <elliott> `run mkdir wisdom; echo "You do not have the clearance necessary to view this entry." >wisdom/.doorstop 22:44:50 <HackEgo> No output. 22:44:53 <elliott> `? .doorstop 22:44:55 <HackEgo> ​.doorstop You do not have the clearance necessary to view this entry. 22:44:58 <Gregor> You yeah :P 22:45:00 <Gregor> `learn Gregor Wrote the bot. Better than you. For most values of "you". 22:45:02 <HackEgo> I knew that. 22:45:04 <elliott> `run mkdir wisdom; echo "is -- You do not have the clearance necessary to view this entry." >wisdom/.doorstop 22:45:05 <HackEgo> mkdir: cannot create directory `wisdom': File exists 22:45:05 <Gregor> Errr ... "Oh yeah" 22:45:11 <Phantom_Hoover> Dammit, computers, stop being better than me at arithmetic. 22:45:11 <elliott> `? .doorstop 22:45:13 <HackEgo> ​.doorstop is -- You do not have the clearance necessary to view this entry. 22:45:14 * Phantom_Hoover → sleep 22:45:16 -!- Phantom_Hoover has quit (Quit: Leaving). 22:45:19 <Gregor> `? Gregor 22:45:20 <HackEgo> Gregor Wrote the bot. Better than you. For most values of "you". 22:45:25 <elliott> You need to de-capitalise that w >_> 22:45:27 <Gregor> `learn Gregor wrote the bot. Better than you. For most values of "you". 22:45:29 <HackEgo> I knew that. 22:45:31 <Gregor> `? Gregor 22:45:32 <HackEgo> Gregor wrote the bot. Better than you. For most values of "you". 22:45:42 <elliott> Hmm 22:45:49 <Gregor> Now just to configure the bot to make that file unwritable :P 22:45:50 <elliott> I'm going to make it de-capitalise the queries 22:45:56 <elliott> So that 22:45:57 <elliott> `? gregor 22:45:58 <elliott> DTRT :P 22:45:58 <HackEgo> gregor? ¯\(°_o)/¯ 22:47:56 <Gregor> I AM AN INSULIN NINJA 22:47:59 <elliott> `fetch http://sprunge.us/IWUd 22:48:00 <HackEgo> 2011-09-14 22:48:00 URL:http://sprunge.us/IWUd [126] -> "IWUd" [1] 22:48:14 <elliott> `run mv IWUd bin/'?'; chmod +x bin/'?' 22:48:16 <HackEgo> No output. 22:48:21 <elliott> `fetch http://sprunge.us/HggH 22:48:22 <HackEgo> 2011-09-14 22:48:22 URL:http://sprunge.us/HggH [250] -> "HggH" [1] 22:48:27 <elliott> `run mv HggH bin/learn; chmod +x bin/learn 22:48:29 <HackEgo> No output. 22:48:42 <elliott> `fetch http://sprunge.us/LYaH 22:48:43 <HackEgo> 2011-09-14 22:48:43 URL:http://sprunge.us/LYaH [69] -> "LYaH" [1] 22:48:44 <elliott> (learn you a haskell :DDddd) 22:48:50 <elliott> `run mv LYaH bin/forget; chmod +x bin/forget 22:48:51 <HackEgo> No output. 22:48:55 <elliott> `run rm -r wisdom 22:48:57 <HackEgo> No output. 22:49:09 <elliott> `run mkdir wisdom; echo "You do not have the clearance necessary to view this entry." >wisdom/.doorstop 22:49:11 <HackEgo> No output. 22:49:12 <elliott> `? DoorStop 22:49:14 <HackEgo> DoorStop? ¯\(°_o)/¯ 22:49:19 <elliott> ;__; 22:49:20 <elliott> `? DoorStop 22:49:22 <HackEgo> DoorStop? ¯\(°_o)/¯ 22:49:31 <elliott> oh duh 22:49:32 <itidus20> `? elliott 22:49:34 <HackEgo> elliott? ¯\(°_o)/¯ 22:49:34 <elliott> `? .DoorStop 22:49:36 <HackEgo> You do not have the clearance necessary to view this entry. 22:49:45 <elliott> Gregor: OK gogogo :P 22:49:48 <Gregor> `? gREGOR 22:49:50 <HackEgo> gREGOR? ¯\(°_o)/¯ 22:50:00 <Gregor> `run ls -a wisdom 22:50:02 <HackEgo> ​. \ .. \ .doorstop 22:50:05 <Gregor> Oh 22:50:07 <Lymee> `which ? 22:50:08 <Gregor> `learn Gregor wrote the bot. Better than you. For most values of "you". 22:50:09 <HackEgo> ​/hackenv/bin/? 22:50:11 <HackEgo> I knew that. 22:50:16 <Gregor> `? gREGOR 22:50:18 <HackEgo> Gregor wrote the bot. Better than you. For most values of "you". 22:50:20 <Lymee> `paste /hackenv/bin/? 22:50:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.6482 22:50:53 <elliott> `run echo '#!/bin/sh' >bin/pastewisdom; echo 'cat wisdom/* | paste' >>bin/pastewisdom; chmod +x bin/pastewisdom 22:50:55 <HackEgo> No output. 22:50:59 <elliott> Hmmhmm 22:51:00 <Gregor> `learn Wiki , the, is at http://esoteric.voxelperfect.net/wiki/Main_Page 22:51:03 <HackEgo> I knew that. 22:51:20 <elliott> `fetch http://sprunge.us/XAGK 22:51:21 <HackEgo> 2011-09-14 22:51:21 URL:http://sprunge.us/XAGK [143] -> "XAGK" [1] 22:51:26 <elliott> `run mv XAGK bin/learn; chmod +X bin/learn 22:51:28 <HackEgo> No output. 22:51:29 <elliott> `run chmod +x bin/learn 22:51:31 <HackEgo> No output. 22:51:34 <elliott> `run chmod -X bin/learn 22:51:36 <HackEgo> No output. 22:51:39 <elliott> Don't really want topics with spaces. 22:51:40 <elliott> `pastewisdom 22:51:43 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27806 22:51:56 <elliott> Gregor: You can do that without the space after the comma btw. 22:52:07 <Gregor> "before" I assume you mean? 22:52:13 <Gregor> So it only accepts alpha(num)? 22:52:20 <elliott> `run echo "The wiki is at http://esolangs.org/wiki" >wisdom/wiki 22:52:22 <HackEgo> No output. 22:52:23 <elliott> Secret haxx 22:52:25 <elliott> `? wiki 22:52:26 <Gregor> Heh 22:52:26 <HackEgo> The wiki is at http://esolangs.org/wiki 22:53:09 <Lymee> `which forget 22:53:11 <HackEgo> ​/hackenv/bin/forget 22:53:12 <elliott> OK, now to fill this thing with correct opinions :P 22:53:20 <Lymee> `mv /hackenv/bin/forget /hackenv/bin/forget_ 22:53:21 <HackEgo> mv: missing destination file operand after `/hackenv/bin/forget /hackenv/bin/forget_' \ Try `mv --help' for more information. 22:53:29 <elliott> Lymee: Being annoying =/= being funny/amusing/etc. 22:53:33 <Lymee> `run mv /hackenv/bin/forget /hackenv/bin/forget_ 22:53:35 <HackEgo> No output. 22:53:39 <Lymee> `run mv /hackenv/bin/learn /hackenv/bin/forget 22:53:41 <HackEgo> No output. 22:53:43 <elliott> `help 22:53:44 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 22:53:46 <monqy> Lymee: whjat 22:53:47 <Lymee> `run mv /hackenv/bin/forget_ /hackenv/bin/learn 22:53:48 <HackEgo> No output. 22:53:49 <elliott> Gregor: Can you please make the bots ignore Lymee? 22:53:56 <elliott> She hasn't run a productive command in the last... uh, ever. 22:53:59 <monqy> Lymee: wahy are you dOING that 22:54:04 <elliott> `revert 229 22:54:06 <HackEgo> Done. 22:54:09 <Lymee> :( 22:54:25 <elliott> http://esolangs.org/wiki/User:WLaquitaCuevasa 22:54:26 <elliott> Oh my god. 22:54:46 <Gregor> lolwut 22:54:49 <elliott> However, some builders of Python and other languages disrespect PHP developers and deal with us like children of a lesser God. I have previously witnessed some Python developers particularly engaging in dislike speech towards PHP builders, in all probability because they do not have an understanding of why PHP received so well-known. 22:54:54 <elliott> THIS IS AMAZING 22:55:37 <elliott> `log international hub 22:55:41 <HackEgo> 2008-06-30.txt:20:50:03: <ais523> I like the international hub topic 22:55:45 <elliott> `log international hub 22:55:49 <HackEgo> 2007-07-16.txt:22:36:21: <oklopol> The international hub for esoteric programming language design and deployment | FORUM AND WIKI: http://esolangs.org | CHANNEL LOGS: http://ircbrowse.com/cdates.html?channel=esoteric | PASTEBIN: http://pastebin.ca 22:55:49 <itidus20> ahahhaha 22:55:51 <Gregor> SO DO I, AIS OF THE PAST! SO DO I! 22:56:11 <elliott> `learn Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 22:56:13 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/learn: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/learn: cannot execute: Success 22:56:19 <Gregor> ... uhh 22:56:20 <elliott> sigh 22:56:23 <Gregor> `url 22:56:24 <elliott> Lymee: You get to fix whatever you fucked up. 22:56:25 <HackEgo> http://codu.org/projects/hackbot/fshg/ 22:56:38 <Lymee> `run chmod +x /usr/bin/learn 22:56:40 <HackEgo> chmod: cannot access `/usr/bin/learn': No such file or directory 22:56:40 <Lymee> `run chmod +x /usr/bin/forget 22:56:41 <elliott> Gregor: I bet `revert doesn't manage permissions somehow. 22:56:42 <HackEgo> chmod: cannot access `/usr/bin/forget': No such file or directory 22:56:45 <elliott> Lymee: idiot. 22:56:47 <Lymee> `run chmod +x /hackenv/bin/forget 22:56:49 <HackEgo> No output. 22:56:49 <Lymee> `run chmod +x /hackenv/bin/learn 22:56:51 <HackEgo> No output. 22:56:51 <Lymee> elliott, :< 22:56:56 <elliott> `learn Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 22:56:58 <HackEgo> I knew that. 22:56:58 <Gregor> elliott: It ought to >_> 22:57:02 <elliott> `? welcome 22:57:04 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 22:57:07 <elliott> Gregor: Behold 22:57:12 <elliott> The newbie experience has been revolutionised 22:57:17 <Gregor> WOW 22:57:22 <elliott> Mere characters are all that is necessary to induct them into the channel 22:57:31 <elliott> Gone are the days of verbose explanation of the channel's purpose 22:57:37 <Gregor> Amazing! 22:57:40 <elliott> HERE AGAIN ARE THE DAYS OF THE INTERNATIONAL HUB! 22:57:42 <elliott> REJOICE!!!! 22:58:27 <elliott> `learn friendship wisdom 22:58:29 <HackEgo> I knew that. 22:58:32 <elliott> monqy: ask HackEgo what friendship is 22:59:05 <elliott> FINE I WILL 22:59:08 <elliott> `? friendshi 22:59:09 <elliott> `? friendshi 22:59:09 <HackEgo> friendshi? ¯\(°_o)/¯ 22:59:09 <elliott> `? friendship 22:59:10 <monqy> `? friendship 22:59:11 <HackEgo> friendshi? ¯\(°_o)/¯ 22:59:12 <HackEgo> friendship wisdom 22:59:12 <HackEgo> friendship wisdom 22:59:18 <elliott> `? friendship 22:59:20 <HackEgo> friendship wisdom 22:59:30 <monqy> `? wisdom 22:59:32 <HackEgo> wisdom? ¯\(°_o)/¯ 22:59:55 <monqy> `? ../bin/? 22:59:57 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | tr A-Z a-z) \ [ -e "wisdom/$topic" ] || { echo "$1? ¯\(°_o)/¯"; exit 1; } \ cat "wisdom/$topic" \ 23:00:14 <elliott> `url bin/pastenquotes 23:00:15 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/pastenquotes 23:00:23 <monqy> pastenquotes? 23:00:26 <monqy> oh 23:00:28 <monqy> pastenquotes 23:00:38 <elliott> `learn qdb is used like: `quote regexp; `quote id; `addquote ...; `delquote id; `pastequotes regexp; `pastenquotes [n]; see also qdbformat 23:00:40 <HackEgo> I knew that. 23:01:29 <elliott> `learn qdbformat is: <nick> message; * nick action; two spaces between messages; all elisions marked with [...] other than irrelevant intervening messages; for messages separated by elision, one space on each side, not two 23:01:30 <itidus20> `learn Esoteric is an abbreviation for Esoteric Programming Languages as contrasted with Esoteric languages such as lojban and klingon and contrasted with the occult, however those topics may well be compatible with each other .. according to itidus20 23:01:31 <HackEgo> I knew that. 23:01:32 <HackEgo> I knew that. 23:01:35 <elliott> itidus20: ... 23:01:50 <elliott> `? qdb 23:01:52 <HackEgo> qdb is used like: `quote regexp; `quote id; `addquote ...; `delquote id; `pastequotes regexp; `pastenquotes [n]; see also qdbformat 23:01:54 <elliott> `? qdbformat 23:01:56 <HackEgo> qdbformat is: <nick> message; * nick action; two spaces between messages; all elisions marked with [...] other than irrelevant intervening messages; for messages separated by elision, one space on each side, not two 23:02:01 <elliott> Gregor: DOCUMENTATION ;D 23:02:10 <itidus20> ok .. i won't do that 23:04:11 <itidus20> what have i done 23:04:34 <Gregor> `learn HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. 23:04:36 <HackEgo> I knew that. 23:04:39 <Gregor> `? HackEgo 23:04:41 <HackEgo> HackEgo? ¯\(°_o)/¯ 23:04:45 <Gregor> `? HackEgo, 23:04:47 <HackEgo> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. 23:04:50 <Gregor> elliott: YOUR LIES 23:04:52 <Gregor> elliott: THEY ARE LIES 23:05:14 <Gregor> `run mv wisdom/HackEgo, wisdom/HackEgo 23:05:16 <HackEgo> mv: cannot stat `wisdom/HackEgo,': No such file or directory 23:05:18 <monqy> `mv wisdom/hackego, wisdom/hackego 23:05:20 <HackEgo> mv: missing destination file operand after `wisdom/hackego, wisdom/hackego' \ Try `mv --help' for more information. 23:05:22 <monqy> oops 23:05:28 <Gregor> Feh 23:05:39 <Gregor> `run mv wisdom/hackego',' wisdom/hackego 23:05:40 <HackEgo> No output. 23:06:06 <monqy> maybe `learn should handle comas.. 23:06:47 <Gregor> elliott SAID that it does :P 23:06:51 <Gregor> Because he LIES. 23:07:03 <monqy> `? elliott 23:07:05 <HackEgo> elliott? ¯\(°_o)/¯ 23:07:15 <elliott> Gregor: i did not say that 23:07:29 <itidus20> `log `? elliott 23:07:32 <HackEgo> 2010-10-28.txt:20:41:05: <Vorpal> elliott, -b and -m iirc 23:07:51 <Gregor> <elliott> Gregor: You can do that without the space after the comma btw. <Gregor> "before" I assume you mean? <Gregor> So it only accepts alpha(num)? // I just assumed you meant "before" because "after" made no sense at all. 23:08:05 -!- augur has quit (Remote host closed the connection). 23:08:33 <Gregor> `learn elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things? 23:08:35 <HackEgo> I knew that. 23:09:04 <elliott> HackEgo: literally my only achievement. 23:09:12 <elliott> 05:31:08: <Tefad> i dislike the presence of chanserv btw 23:09:12 <elliott> 05:31:12: <Tefad> there's no point 23:09:12 <elliott> 05:31:28: <Tefad> and it just gives them means to peak at our conversation if they so choose 23:09:12 <elliott> 05:31:52: <Tefad> unless clog is a logger to a webpage 23:09:12 <elliott> 05:31:53: <Tefad> then uh 23:09:12 <elliott> 05:31:55: <Tefad> yeah.. 23:09:15 <elliott> 05:31:59: * Tefad stabs violently 23:09:17 <elliott> 05:32:31: -!- Tefad has parted #esoteric (?). 23:10:04 <monqy> bye tefad 23:10:17 <Gregor> lol 23:11:08 <elliott> i like how he thinks freenode couldn't peek at convos without chanserv 23:11:30 <Gregor> THE GUMMINT 23:11:40 <monqy> the man 23:12:32 <elliott> this log is insane 23:12:52 <elliott> calamari rising up against the graue tyranny because his java applet will be ONE PAGE AWAY because graue doesn't want to embed java applets on the wiki 23:12:55 <elliott> s/PAGE/CLICK/ 23:13:38 -!- Sgeo has joined. 23:15:41 <itidus20> `log applet 23:15:45 <HackEgo> 2007-07-06.txt:13:44:44: <oklopol> can applets be run without a browser? (:P) 23:15:46 <elliott> `pastelogs Tefad 23:15:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32098 23:16:05 <elliott> lmao never came back after discoevring clog 23:16:14 <elliott> omg but is on freenode now must resist 23:16:15 <elliott> temptation 23:16:52 <itidus20> @oklopol: yes they can there is some applet player program 23:17:36 <elliott> "2007" 23:17:46 <elliott> `log oklopol 23:17:50 <HackEgo> 2011-01-15.txt:00:14:10: <fizzie> oklopol: And then there was the water thing. 23:18:05 <elliott> `log <oklopol> 23:18:09 <HackEgo> 2008-01-03.txt:21:34:47: <oklopol> oh holland, you crack me up! 23:19:22 <elliott> `log holland 23:19:26 <HackEgo> 2010-09-22.txt:23:01:42: <cheater99> alise: holland is the official name of the netherlands in polish, for example. 23:19:33 <elliott> `pastelogs finland 23:19:36 <elliott> gotta get the finland theory for learndb 23:19:37 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3700 23:20:01 <elliott> 2003-09-08.txt:13:17:43: <Verbed> ~awaken The Russian Federation is by far the largest country of the world in area by spanning 11 time zones in both Europe and Asia. Russia shares borders with the following countries (starting in the north and in counter-clockwise order): Norway, Finland, Estonia, Latvia, Belarus, Lithuania (via Kaliningrad Oblast), Poland (idem), Ukraine, Georgia, Azerbaijan, Kazakhs 23:20:01 <elliott> tan, China, Mongolia and North Korea. 23:20:01 <elliott> 2003-09-08.txt:13:17:45: <Doppelganger> The Resin Feathered is by for the largesse country of the world in are by spinning 11 tone zoans in but Erebia and As. Rise swoors brother what they flummoxed country (starting in to north and in contrescene order: Near, Finlandia, Extend, Latvia, Bowler's, Letdown (via Killmaimthem Obligation, Plenty (idem), Ukraine, Grace, Acorpolous, Kissykissy, Come, Monosyll 23:20:04 <elliott> ables and Nerthe Krow. 23:20:06 <elliott> wat 23:20:28 <monqy> `log finland theory 23:20:31 <HackEgo> 2011-09-14.txt:23:20:28: <monqy> `log finland theory 23:21:21 <elliott> see 23:21:21 <elliott> 2008-08-31.txt:14:55:26: <Corun> There's only like 2 people in finland right? 23:21:22 <elliott> onwards 23:21:24 <elliott> in that paste 23:23:20 <elliott> `learn Finland is a European country. There are two people in Finland, and at least five of them are in this channel. Corun drives the bus. 23:23:22 <HackEgo> I knew that. 23:23:37 * shachaf is a citizen of Finland! 23:23:55 <elliott> shachaf: That's what they all say. 23:24:03 <shachaf> elliott: I've spent two weeks of my life there. 23:24:38 <elliott> Also what they all say. 23:24:52 <elliott> shachaf: Write your one-line biography. 23:24:56 <elliott> The learndb demands it. 23:25:05 * shachaf refuses to be biographed. 23:25:13 <elliott> `learn shachaf refuses to be biographed. 23:25:15 <HackEgo> I knew that. 23:25:18 <elliott> Biographed. 23:25:20 <monqy> I was just about to do that exact same thing 23:25:21 <shachaf> `unlearn shachaf 23:25:21 <monqy> biographed. 23:25:22 <Gregor> Was gonna do that 23:25:22 <HackEgo> I don't even know that! 23:25:29 <elliott> `rm bin/unlearn 23:25:30 <HackEgo> No output. 23:25:31 <elliott> unlearn is quite obsolete :P 23:25:38 <shachaf> :-( 23:25:39 <oerjan> `learn Vorpal går aldrig på biografen. 23:25:41 <HackEgo> I knew that. 23:25:44 <shachaf> `help 23:25:45 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 23:25:51 <elliott> There's a command to do it but you don't know what it is. 23:25:55 <shachaf> `ls 23:25:57 <HackEgo> babies \ bin \ bluhbluh \ canary \ env \ foo \ paste \ ps \ quine.pl \ quine2.pl \ quine3.pl \ quotes \ quotese \ tekst \ test.c \ test2.c \ test3.c \ tmp.tmp \ wisdom 23:25:59 <shachaf> `ls bin 23:26:01 <HackEgo> ​? \ addquote \ allquotes \ botsnack \ calc \ commands \ creatures \ define \ delquote \ elliott \ esolang \ etymology \ forget \ fuck \ google \ imdb \ json \ k \ karma \ learn \ log \ logurl \ marco \ minifind \ paste \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ penis \ ping \ prefixes \ quine \ quote 23:26:02 <elliott> `learn Vorpal is really boring. Seriously, you have no idea. 23:26:04 <shachaf> `forget shachaf 23:26:04 <HackEgo> I knew that. 23:26:06 <HackEgo> Forget what? 23:26:14 <shachaf> `forget --help 23:26:16 <HackEgo> rm: cannot remove `wisdom/--help': No such file or directory \ Forget what? 23:26:23 <elliott> `learn shachaf refuses to be biographed. 23:26:25 <HackEgo> I knew that. 23:26:28 <elliott> IT SHALL NEVER 23:26:29 <elliott> FORGET 23:26:35 <shachaf> `cat bin/elliott 23:26:37 <HackEgo> ​#!/usr/bin/env learnt \ elliott = Ignore this loser. 23:26:42 <shachaf> `elliott 23:26:43 <HackEgo> ​/usr/bin/env: learnt: No such file or directory 23:26:43 <elliott> `rm bin/elliott 23:26:45 <HackEgo> No output. 23:26:47 <elliott> Damn these old things hanging around :P 23:26:54 <elliott> `url bin/minifind 23:26:56 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/minifind 23:27:02 <elliott> Gregor: What 23:27:03 <monqy> `elliott 23:27:05 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: elliott: not found 23:27:17 <monqy> `ls bin 23:27:18 <HackEgo> ​? \ addquote \ allquotes \ botsnack \ calc \ commands \ creatures \ define \ delquote \ esolang \ etymology \ forget \ fuck \ google \ imdb \ json \ k \ karma \ learn \ log \ logurl \ marco \ minifind \ paste \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ penis \ ping \ prefixes \ quine \ quote \ quotes 23:27:42 <monqy> what do these do 23:28:06 <itidus20> `marco 23:28:07 <shachaf> `run rm -rf bin 23:28:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: marco: not found 23:28:09 <HackEgo> No output. 23:28:12 <elliott> `help 23:28:13 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 23:28:22 <elliott> `revert 254 23:28:24 <HackEgo> Done. 23:28:25 <elliott> `? HackEgo 23:28:28 <HackEgo> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. 23:28:30 <shachaf> elliott: Aw, I didn't really rm it. 23:28:31 <elliott> shachaf: Observe last two sentences. 23:28:45 <elliott> `learn Haskell is preferred by 9 out of 10 esoteric programmers. Ask your GP today! http://learnyouahaskell.com/ 23:28:47 <HackEgo> I knew that. 23:28:51 <elliott> `pastewisdom 23:28:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9171 23:28:56 <shachaf> elliott: I had previously mved bin .bin 23:29:14 <elliott> shachaf: So http://codu.org/projects/hackbot/fshg/ shows. 23:29:20 <shachaf> Hmph. :-( 23:29:26 <elliott> :D 23:29:37 <shachaf> `run killall -9 elliott 23:29:39 <HackEgo> sh: killall: command not found 23:29:41 <elliott> im dead 23:29:49 <shachaf> u dead? 23:30:01 <elliott> i dead 23:30:04 <Gregor> u mad bro? 23:30:05 <monqy> dead 23:30:07 <monqy> :( 23:30:10 <elliott> Gregor: thatsthejoke.jpg 23:30:14 <elliott> `learn monqy dead :( 23:30:16 <HackEgo> I knew that. 23:30:16 <Lymee> `run ls -al | grep bin 23:30:18 <HackEgo> drwxr-xr-x 2 5000 0 4096 Sep 14 23:30 bin 23:30:28 <monqy> `? monqy 23:30:30 <HackEgo> monqy dead :( 23:30:32 <monqy> :( 23:30:35 <elliott> :( 23:30:37 <shachaf> i heard u mad, so i put all the things in your things so u can mad while u mad? 23:30:44 <elliott> `learn shachaf heard u mad, so i put all the things in your things so u can mad while u mad? 23:30:46 <HackEgo> I knew that. 23:30:56 <monqy> no no no no no non on ononn ;_____________________; 23:31:01 -!- DH____ has quit (Read error: Connection reset by peer). 23:31:03 <shachaf> `cat /etc/shadow 23:31:04 <elliott> now anyone who wants to know about shachaf 23:31:04 <elliott> gets 23:31:05 <HackEgo> cat: /etc/shadow: No such file or directory 23:31:05 <elliott> the torture 23:31:07 <itidus20> `learn :( :-D 23:31:09 <HackEgo> I knew that. 23:31:13 <elliott> `forget :( 23:31:14 -!- DH____ has joined. 23:31:15 <HackEgo> Forget what? 23:31:17 <shachaf> `forget shachaf 23:31:19 <HackEgo> Forget what? 23:31:27 <elliott> `learn shachaf heard u mad, so i put all the things in your things so u can mad while u mad? 23:31:29 <HackEgo> I knew that. 23:31:30 <shachaf> `forget shachaf 23:31:32 <HackEgo> Forget what? 23:31:35 <elliott> shachaf: I have won botwars lasting whole days. 23:31:39 <elliott> `learn shachaf heard u mad, so i put all the things in your things so u can mad while u mad? 23:31:41 <HackEgo> I knew that. 23:31:49 <monqy> shachaf: this is all your fault 23:32:08 <oerjan> `learn shachaf is the one whose fault this all is. 23:32:10 <HackEgo> I knew that. 23:32:40 <elliott> `learn oerjan is just zis guy, you know? 23:32:42 <HackEgo> I knew that. 23:32:56 <shachaf> Hmph. 23:33:02 <oerjan> z'is true 23:33:04 <elliott> Hmph. 23:33:10 <monqy> hmph 23:33:13 <shachaf> Why can't you chmod +x things? 23:33:15 <shachaf> `cat bin/u 23:33:17 <HackEgo> ​#!/bin/bash \ echo i mad 23:33:21 <shachaf> Stupid thing. 23:33:23 <elliott> You can. You need `run. 23:33:26 <Gregor> `learn C is the language of choice for sexy, intelligent esolangers. 23:33:26 <elliott> `run chmod +x bin/u 23:33:28 <HackEgo> I knew that. 23:33:29 <HackEgo> No output. 23:33:33 <shachaf> elliott: No, my echo got messed up. 23:33:47 <elliott> `learn C is the language of��V�>WIד�.��Segmentation fault 23:33:49 <HackEgo> I knew that. 23:33:51 <shachaf> `run rm -rf / 23:33:51 <oerjan> ^echo works fine 23:33:53 <elliott> `? C 23:33:53 <HackEgo> rm: cannot remove root directory `/' 23:33:55 <HackEgo> C is the language of��V�>WIד�.��Segmentation fault 23:33:59 <shachaf> `run rm -rf `pwd` 23:34:01 <HackEgo> rm: cannot remove directory `/hackenv': Permission denied 23:34:03 <oerjan> aaaaaaaaaaaaaaaaaaaaaaaaa fungot!!! 23:34:06 <elliott> `help 23:34:06 <shachaf> `run rm -rf * .* 23:34:06 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 23:34:08 <HackEgo> rm: cannot remove directory `.' \ rm: cannot remove directory `..' 23:34:15 <shachaf> This bot is useless. 23:34:17 <elliott> `revert 274 23:34:18 <shachaf> lambdabot is way better. 23:34:19 <HackEgo> Done. 23:34:22 <shachaf> @admin + elliott 23:34:24 <shachaf> @admin - elliott 23:34:27 <elliott> @admin - shachaf 23:34:27 <lambdabot> Not enough privileges 23:34:33 <Gregor> ........... 23:34:34 <elliott> Fuck y'all. 23:35:04 <shachaf> @admin + elliott 23:35:06 <shachaf> @admin - elliott 23:35:08 <elliott> @admin -sh 23:35:08 <lambdabot> Not enough privileges 23:35:09 <elliott> sodihfgfdgjdfg 23:35:09 <elliott> gdfoji 23:35:25 <shachaf> @@ (@admin + elliott) (@admin - elliott) 23:35:25 <lambdabot> Plugin `compose' failed with: Privledged commands cannot be composed 23:35:26 <elliott> @admin - shachaf 23:35:26 <lambdabot> Not enough privileges 23:35:30 <shachaf> Hah. 23:35:31 <oerjan> `learn INTERCAL has excellent features for modular program for the enterprise market. 23:35:31 <Gregor> btw, elliott: 23:35:33 <HackEgo> I knew that. 23:35:34 <Gregor> `run rm -rf * 23:35:36 <HackEgo> No output. 23:35:36 <Gregor> Doesn't work. 23:35:39 <Gregor> `ls 23:35:41 <HackEgo> babies \ bin \ bluhbluh \ canary \ env \ foo \ paste \ ps \ quine.pl \ quine2.pl \ quine3.pl \ quotes \ quotese \ tekst \ test.c \ test2.c \ test3.c \ tmp.tmp \ wisdom 23:35:42 <elliott> How come :P 23:35:45 <shachaf> @admin - elliott 23:35:49 <shachaf> @admin + elliott 23:35:50 <shachaf> @admin - elliott 23:35:50 <Gregor> elliott: Note the files in the root thar 23:35:52 <elliott> @admin - shachaf 23:35:52 <lambdabot> Not enough privileges 23:35:57 <elliott> Gregor: idgi 23:36:01 <shachaf> elliott: You're not very good at this. 23:36:07 <Gregor> elliott: Note a particular, unusually-named file. 23:36:07 <elliott> shachaf: Oh I will be. 23:36:08 <elliott> You'll se.e 23:36:10 <elliott> I'll be the best. 23:36:11 <shachaf> @admin - elliott 23:36:12 <elliott> Ill be the utter best 23:36:13 <elliott> @admin - shachaf 23:36:13 <lambdabot> Not enough privileges 23:36:16 <elliott> Gregor: Ah :P 23:36:23 <elliott> shachaf: Butseriously, 23:36:23 <shachaf> @admin - elliott 23:36:24 <Gregor> elliott: Simplest way to avoid the stupidest offenders. 23:36:25 <elliott> The best I'll 23:36:25 <elliott> @admin - shachaf 23:36:25 <lambdabot> Not enough privileges 23:36:26 <shachaf> @admin + elliott 23:36:27 <shachaf> @admin - elliott 23:36:28 <elliott> be 23:36:28 <elliott> @admin - shachaf 23:36:28 <lambdabot> Not enough privileges 23:36:30 <elliott> uiasdjnkalcmsdv]\ 23:36:31 <elliott> \ 23:36:34 <elliott> The best I'll be 23:36:35 <elliott> is basically 23:36:36 <elliott> you know the best? 23:36:37 <elliott> Well 23:36:38 <elliott> shachaf 23:36:39 <elliott> the best I'll be 23:36:42 <elliott> is basically 23:36:44 <elliott> ten times that 23:36:45 <shachaf> @admin - elliott 23:36:46 <elliott> because 23:36:48 <elliott> I am 23:36:49 <elliott> the best 23:36:50 <shachaf> @admin + elliott 23:36:51 <shachaf> @admin - elliott 23:36:52 <elliott> at reaction times 23:36:54 <elliott> and to prove it 23:36:56 <elliott> @admin - shachaf 23:36:56 <lambdabot> Not enough privileges 23:37:00 <elliott> Fuck the police. 23:37:01 <elliott> fuck 23:37:04 <elliott> HA 23:37:06 <Gregor> ................... 23:37:07 <Lymee> Oh oh oh 23:37:08 <Gregor> Can we stop now. 23:37:09 <Lymee> Admin me instead 23:37:23 <elliott> So is dons an admin of lambdabot these days 23:37:27 <shachaf> @admin + elliott 23:37:30 <elliott> @admin - shacha 23:37:30 <elliott> @admin - shachaf 23:37:32 <elliott> YESSS 23:37:33 <elliott> YESSS 23:37:34 <elliott> EYESSSSSS 23:37:37 <elliott> YESSSSSSSSSSSSSSSSSSSSSSSSSSSSS 23:37:49 <Lymee> elliott, @kill 23:37:59 <elliott> @vixen-on 23:37:59 <lambdabot> Unknown command, try @list 23:38:02 <elliott> @list 23:38:02 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS 23:38:05 <shachaf> Vixen got taken out of lambdabot. 23:38:12 <elliott> @vixen 23:38:12 <lambdabot> Government enterprise is the most inefficient and costly way of producing jobs. 23:38:14 <shachaf> elliott: You're not *actually* an admin, by the way. 23:38:14 <elliott> @vixen 23:38:14 <lambdabot> I reject the cynical view that politics is a dirty business. 23:38:17 <elliott> im cry 23:38:19 <elliott> shachaf: Why not. 23:38:29 <elliott> Also why vixen ded 23:38:35 <elliott> Gregor: butsrs what's minifin 23:38:35 <elliott> d 23:38:44 <Gregor> elliott: olde :P 23:38:46 <Gregor> `minifind 23:38:48 <HackEgo> ​./babies/babies.db \ ./bin/? \ ./bin/addquote \ ./bin/allquotes \ ./bin/botsnack \ ./bin/calc \ ./bin/commands \ ./bin/creatures \ ./bin/define \ ./bin/delquote \ ./bin/esolang \ ./bin/etymology \ ./bin/forget \ ./bin/fuck \ ./bin/google \ ./bin/imdb \ ./bin/json \ ./bin/k \ ./bin/karma \ ./bin/learn \ ./bin/log \ ./bin/logurl 23:38:50 <elliott> What's it fooooor. 23:38:51 <shachaf> @admin + elliott 23:38:52 <lambdabot> Not enough privileges 23:38:56 <shachaf> What? 23:38:59 <Gregor> elliott: It's find. Only stupid. 23:39:04 <shachaf> @admin + elliott 23:39:05 <lambdabot> Not enough privileges 23:39:09 <shachaf> I guess neither of us is an admin. 23:39:14 <elliott> @admin + shachaf 23:39:16 <elliott> @admin - shachaf 23:39:18 <elliott> I guess I am. 23:39:31 <elliott> But seriously, why vixen rip. 23:39:33 <elliott> Gregor: why 23:39:39 <Lymee> elliott has dethroned shachaf 23:39:42 <Gregor> elliott: I don't rightly recall. 23:39:45 <shachaf> Lymee: Not really. 23:39:48 <shachaf> @admin - elliott 23:39:49 <Lymee> Grats. 23:39:49 <lambdabot> Not enough privileges 23:39:57 <shachaf> @admin - elliott 23:40:02 <elliott> shachaf: But srsly, how am I not an admi- feck 23:40:02 <Lymee> :( 23:40:06 -!- elliott has changed nick to dons. 23:40:08 <dons> @admin + elliott 23:40:10 <shachaf> @admin - dons 23:40:11 -!- dons has changed nick to elliott. 23:40:11 <shachaf> @admin - elliott 23:40:14 <elliott> fuck 23:41:15 <elliott> shachaf: u r the worst 23:41:21 <shachaf> u r the maddest 23:41:33 <Gregor> The maddest ... 23:41:34 <Gregor> Of all bros. 23:41:48 <elliott> yes 23:41:50 <elliott> im maximum mad 23:41:56 <Gregor> elliott: HALP I'm out of Danger Mouse D-8 23:42:03 <elliott> Gregor: did you 23:42:06 <elliott> consume lal the dangermouse 23:42:24 <Gregor> Only "lal" the available. 23:42:42 <Gregor> PLUS all the Danger Mouse rule 34 fanfic on the web. 23:42:50 <elliott> Well that's a given 23:43:08 <shachaf> @admin + elliott 23:43:12 <shachaf> @admin - elliott 23:43:37 <elliott> i dont need your admin 23:43:45 <elliott> `learn shachaf mad 23:43:47 <HackEgo> I knew that. 23:43:49 <shachaf> I need to add some sort of randomized positive reinforcement. 23:43:55 <shachaf> i aint even mad 23:44:11 <shachaf> `cat bin/learn 23:44:13 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | sed 's/ .*//' | tr A-Z a-z) \ info=$(echo "$1" | sed 's/[^ ]* //') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." \ 23:44:23 <shachaf> `ls wisdom 23:44:25 <HackEgo> c \ elliott \ esoteric \ finland \ friendship \ gregor \ hackego \ haskell \ intercal \ monqy \ oerjan \ qdb \ qdbformat \ shachaf \ vorpal \ welcome \ wiki 23:44:38 <shachaf> `run grep wisdom bin/* 23:44:40 <HackEgo> bin/?:[ -e "wisdom/$topic" ] || { echo "$1? ¯\(°_o)/¯"; exit 1; } \ bin/?:cat "wisdom/$topic" \ bin/forget:rm "wisdom/$(echo "$1" | tr A-Z a-z)" \ bin/learn:echo "$1" >"wisdom/$topic" \ bin/pastewisdom:cat wisdom/* | paste 23:44:48 <shachaf> `run grep -l wisdom bin/* 23:44:49 <HackEgo> bin/? \ bin/forget \ bin/learn \ bin/pastewisdom 23:44:50 <elliott> protip | paste 23:45:03 <elliott> also `url 23:45:11 <shachaf> `? elliott 23:45:13 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things? 23:45:18 <shachaf> ? elliott 23:45:28 <shachaf> #nethack's learndb is better. 23:45:49 <elliott> shachaf: Gregor wouldn't add new message hooks. 23:45:53 <elliott> Or multi-line output. 23:45:55 <elliott> He is noob. 23:46:00 <Gregor> I didn't say I wouldn't add new message hooks. 23:46:05 <Gregor> I said I wouldn't add multi-line output. 23:46:06 <shachaf> `learn elliott mad 23:46:08 <HackEgo> I knew that. 23:46:11 <Gregor> I could be persuaded to add new message hooks. 23:46:16 <elliott> `learn elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things? 23:46:18 <HackEgo> I knew that. 23:46:39 <shachaf> `learn u mad? 23:46:41 <HackEgo> I knew that. 23:46:47 <shachaf> `run cat bin/\? 23:46:48 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | tr A-Z a-z) \ [ -e "wisdom/$topic" ] || { echo "$1? ¯\(°_o)/¯"; exit 1; } \ cat "wisdom/$topic" \ 23:47:27 -!- Jafet has quit (Quit: Leaving.). 23:47:32 <elliott> `url bin/? 23:47:34 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/? 23:47:42 <Gregor> Hyuk 23:48:11 <shachaf> `run ls -a 23:48:12 <HackEgo> ​. \ .. \ babies \ bin \ bluhbluh \ canary \ env \ foo \ paste \ ps \ quine.pl \ quine2.pl \ quine3.pl \ quotes \ quotese \ tekst \ test.c \ test2.c \ test3.c \ tmp.tmp \ wisdom 23:48:25 <shachaf> `cat env 23:48:27 <HackEgo> PLASH_FAKE_GID=0 \ CONSOLE=/dev/console \ TERM=linux \ SHELL=/bin/sh \ IRC_SOCK=/tmp/multibot.HackEgo \ rootmnt=/root \ IRC_NICK=Lymia \ PLASH_CAPS=conn_maker;fs_op \ PLASH_FAKE_EUID=5000 \ http_proxy=http://127.0.0.1:3128 \ LD_LIBRARY_PATH=/usr/lib/plash/lib \ INIT_VERSION=sysvinit-2.88 \ init=/sbin/init \ HACKENV=/tmp/hackenv.10379 23:48:36 <elliott> Gregor: Still got plash stuff set? 23:48:37 <shachaf> `run ./quine.pl 23:48:38 <HackEgo> sh: ./quine.pl: Permission denied 23:48:40 <shachaf> `ls -F 23:48:41 <HackEgo> babies/ \ bin/ \ bluhbluh \ canary \ env \ foo \ paste/ \ ps \ quine.pl \ quine2.pl \ quine3.pl \ quotes \ quotese \ tekst \ test.c \ test2.c \ test3.c \ tmp.tmp* \ wisdom/ 23:48:44 <shachaf> `perl ./quine.pl 23:48:45 <HackEgo> open 0; print <0> 23:48:50 <Gregor> elliott: That's just a file that's been sitting there, probably for months :P 23:48:50 <elliott> Such a cheat. 23:48:56 <elliott> Gregor: Oh :P 23:49:04 <elliott> `run rm *.pl env 23:49:06 <HackEgo> No output. 23:49:10 <elliott> `run rm *.c 23:49:12 <HackEgo> No output. 23:49:16 <elliott> `run rm quotese tekst 23:49:18 <HackEgo> No output. 23:49:19 <elliott> `run rm foo 23:49:21 <HackEgo> No output. 23:49:22 <elliott> `ls 23:49:23 <HackEgo> babies \ bin \ bluhbluh \ canary \ foo \ paste \ ps \ quotes \ tmp.tmp \ wisdom 23:49:28 <elliott> `run rm tmp.tmp babies 23:49:30 <HackEgo> rm: cannot remove `babies': Is a directory 23:49:30 <elliott> (babies is broken anyway) 23:49:38 <Gregor> I'll break YOUR babies. 23:49:43 <elliott> `run rm -r babies bin/fuck bluhbluh foo paste ps tmp.tmp 23:49:45 <HackEgo> rm: cannot remove `foo': No such file or directory \ rm: cannot remove `tmp.tmp': No such file or directory 23:49:47 <elliott> `ls 23:49:48 <HackEgo> bin \ canary \ quotes \ wisdom 23:49:51 <elliott> Good 23:49:52 <elliott> `ls bin 23:49:54 <HackEgo> ​? \ addquote \ allquotes \ botsnack \ calc \ commands \ creatures \ define \ delquote \ esolang \ etymology \ forget \ google \ imdb \ json \ k \ karma \ learn \ log \ logurl \ marco \ minifind \ paste \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ penis \ ping \ prefixes \ quine \ quote \ quotes \ rec 23:49:57 <elliott> `k 23:49:57 <shachaf> elliott: wats the best monad 23:49:58 <HackEgo> ​!"#$%^&* 0123456789 23:50:06 <elliott> shachaf: IOT 23:50:07 <Gregor> `quote monad 23:50:09 <HackEgo> 293) <elliott> Deewiant: ha, you were wrong, I have stacks, fungespace and MULTIPLE functions! <elliott> and a monad! <elliott> nothing can stop me now! \ 478) <Phantom_Hoover> oerjan, little do you realise that everything you say and do is part of that great monad tutorial we call life. \ 649) <Gregor> Phantom_Hoover: Sort of 23:50:16 <itidus20> `help creatures 23:50:16 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 23:50:17 <elliott> 478 is still one of the best quotes ever. 23:50:18 <Gregor> `pastequotes monad 23:50:20 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3585 23:50:23 <shachaf> 8`quote 478 23:50:26 <shachaf> `quote 478 23:50:26 <itidus20> `creatures 23:50:27 <HackEgo> 478) <Phantom_Hoover> oerjan, little do you realise that everything you say and do is part of that great monad tutorial we call life. 23:50:28 <HackEgo> Look up what? 23:50:33 <Gregor> `quote 663 23:50:35 <HackEgo> 663) <Gregor> You know how the arrow pierces your skin, rearranging and randomizing vital internal structure? <Gregor> Monads are like that, only worse. 23:50:47 <monqy> `cat bin/penis 23:50:48 <HackEgo> ​#!/bin/sh \ echo "I'm a program. I don't /have/ genitals." 23:50:51 <elliott> `cat bin/rec 23:50:52 <HackEgo> ​#!/bin/bash \ rec 23:50:59 <elliott> `run rm bin/{penis,vagina} 23:51:01 <HackEgo> No output. 23:51:01 <elliott> stupid 23:51:03 <elliott> `rm bin/rec 23:51:04 <HackEgo> No output. 23:51:06 <elliott> `ls rec 23:51:07 <HackEgo> ls: cannot access rec: No such file or directory 23:51:08 <elliott> `ls bin 23:51:10 <HackEgo> ​? \ addquote \ allquotes \ botsnack \ calc \ commands \ creatures \ define \ delquote \ esolang \ etymology \ forget \ google \ imdb \ json \ k \ karma \ learn \ log \ logurl \ marco \ minifind \ paste \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ quine \ quote \ quotes \ roll \ runasperl 23:51:11 <shachaf> #haskell-blah informs me that jQuery is the best monad. 23:51:15 <elliott> shachaf: It's true. 23:51:17 <elliott> `esolang 23:51:18 <Gregor> lol 23:51:19 <HackEgo> Use: `esolang <language> 23:51:21 <shachaf> jQuery is such a monad. 23:51:22 <elliott> Gregor: Does etymology work btw? :p 23:51:24 <elliott> `esolang brainfuck 23:51:26 <HackEgo> ​\ Looking up 127.0.0.1:3128 \ Making HTTP connection to 127.0.0.1:3128 \ Sending HTTP request. \ HTTP request sent; waiting for response. \ Alert!: Unexpected network read error; connection aborted. \ Can't Access `http://esolangs.org/wiki/brainfuck' \ Alert!: Unable to access document. \ \ lynx: Can't access startfile 23:51:27 <Gregor> elliott: Idonno, I didn't make it. 23:51:31 <elliott> Nice 23:51:33 <Gregor> `etymology etymology 23:51:36 <HackEgo> etymology \ late 14c., ethimolegia "facts of the origin and development of a word," from O.Fr. et(h)imologie (14c., Mod.Fr. tymologie), from L. etymologia, from Gk. etymologia, properly "study of the true sense (of a word)," from etymon "true sense" (neut. of etymos "true, real, actual," related to eteos "true") + 23:51:39 <Gregor> Seems to. 23:51:41 <elliott> You installed lynx I see 23:51:45 <elliott> `rm bin/esolang 23:51:46 <elliott> `ls bin 23:51:47 <HackEgo> No output. 23:51:47 <Gregor> Yes :P 23:51:47 <HackEgo> ​? \ addquote \ allquotes \ botsnack \ calc \ commands \ creatures \ define \ delquote \ esolang \ etymology \ forget \ google \ imdb \ json \ k \ karma \ learn \ log \ logurl \ marco \ minifind \ paste \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ quine \ quote \ quotes \ roll \ runasperl 23:51:52 <elliott> Just doin' housecleaning :P 23:51:52 <itidus20> `etymology wales 23:51:54 <HackEgo> No output. 23:51:57 <elliott> `cat bin/botsnack 23:51:57 <monqy> `cat bin/runasperl 23:51:58 <HackEgo> ​#!/bin/sh \ echo 'OH BARF >XO' 23:51:58 <HackEgo> perl -e twat.pl alise 23:52:01 <Gregor> `etymology whales 23:52:03 <HackEgo> No output. 23:52:11 <elliott> `run rm bin/botsnack bin/runasperl 23:52:12 <HackEgo> No output. 23:52:14 <elliott> TODO: Think of a better botsnack. 23:52:18 <elliott> `roll 9d9 23:52:20 <HackEgo> 39 23:52:21 <itidus20> `etymology walnut 23:52:22 <elliott> Good 23:52:23 <HackEgo> walnut \ O.E. walhnutu "nut of the walnut tree," lit. "foreign nut," from wealh "foreign" (see Welsh) + hnutu (see nut). Cf. O.N. valhnot, M.L.G. walnut, M.Du. walnote, Du. walnoot, Ger. Walnu, So called because it was introduced from Gaul and Italy, distinguishing it from the native hazel nut. Cf. the L.L. name for it, 23:52:23 <elliott> `ls bin 23:52:24 <HackEgo> ​? \ addquote \ allquotes \ calc \ commands \ creatures \ define \ delquote \ etymology \ forget \ google \ imdb \ json \ k \ karma \ learn \ log \ logurl \ marco \ minifind \ paste \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ quine \ quote \ quotes \ roll \ runfor \ rungcc \ say \ sayhi 23:52:27 <monqy> what is twat.pl 23:52:28 <shachaf> `run echo $HOME 23:52:29 <HackEgo> ​/ 23:52:32 <elliott> `cat bin/commands 23:52:33 <HackEgo> ​#!/bin/sh \ cd `dirname "$0"` \ ls -m 23:52:35 -!- tiffnya has changed nick to tiffany. 23:52:36 <shachaf> `ls / 23:52:36 <elliott> X_X 23:52:37 <HackEgo> bin \ dev \ etc \ hackenv \ home \ lib \ lib64 \ opt \ proc \ sbin \ sys \ tmp \ usr \ var 23:52:37 <elliott> How stupid 23:52:40 <elliott> `commands 23:52:41 <HackEgo> ​?, addquote, allquotes, calc, commands, creatures, define, delquote, etymology, \ forget, google, imdb, json, k, karma, learn, log, logurl, marco, minifind, \ paste, pastelog, pastelogs, pastenquotes, pastequotes, pastewisdom, ping, \ prefixes, quine, quote, quotes, roll, runfor, rungcc, say, sayhi, strfile, \ swedish, toutf8, 23:52:42 <shachaf> `run ls -a / 23:52:43 <HackEgo> ​. \ .. \ bin \ dev \ etc \ hackenv \ home \ lib \ lib64 \ opt \ proc \ sbin \ sys \ tmp \ usr \ var 23:52:52 <tiffany> I just noticed someone's been using my nick :I 23:52:55 <shachaf> Hmm, how would you add things to bashrc? 23:52:59 <elliott> `run sed -i s'/-m/-m | tr -d '\n'/' bin/commands 23:53:00 <HackEgo> No output. 23:53:01 <elliott> `commands 23:53:03 <HackEgo> ​?, addquote, allquotes, calc, commads, creatures, defie, delquote, etymology, \ forget, google, imdb, jso, k, karma, lear, log, logurl, marco, miifid, \ paste, pastelog, pastelogs, pastequotes, pastequotes, pastewisdom, pig, \ prefixes, quie, quote, quotes, roll, rufor, rugcc, say, sayhi, strfile, \ swedish, toutf8, traslate, 23:53:04 <Gregor> shachaf: You wouldn't. 23:53:06 <elliott> Eh? 23:53:07 <elliott> Gregor: ? 23:53:10 <elliott> `cat bin/commands 23:53:11 <HackEgo> ​#!/bin/sh \ cd `dirname "$0"` \ ls -m | tr -d n 23:53:11 <shachaf> Gregor: Curses. 23:53:14 <elliott> `run sed -i s'/-m/-m | tr -d '\\n'/' bin/commands 23:53:15 <HackEgo> No output. 23:53:15 <elliott> `cat bin/commands 23:53:17 <HackEgo> ​#!/bin/sh \ cd `dirname "$0"` \ ls -m | tr -d n 23:53:19 <elliott> `cat bin/commands 23:53:20 <HackEgo> ​#!/bin/sh \ cd `dirname "$0"` \ ls -m | tr -d \ | tr -d n 23:53:24 <elliott> ..fuck :P 23:53:27 <elliott> `rm bin/commands 23:53:28 <HackEgo> No output. 23:53:30 <elliott> ls bin works juuust fine :P 23:53:31 <elliott> `ls bin 23:53:32 <HackEgo> ​? \ addquote \ allquotes \ calc \ creatures \ define \ delquote \ etymology \ forget \ google \ imdb \ json \ k \ karma \ learn \ log \ logurl \ marco \ minifind \ paste \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ quine \ quote \ quotes \ roll \ runfor \ rungcc \ say \ sayhi \ strfile 23:53:38 <elliott> `cat bin/runfor 23:53:39 <HackEgo> ​#!/bin/bash \ if [ ! "$2" ] \ then \ echo 'Use: runfor <time> <command>' \ exit 1 \ fi \ \ TIME="$1" \ shift \ \ "$@" & \ sleep $(( TIME + 0 )) \ kill -9 %1 23:53:44 <elliott> `run ls -l bin | paste 23:53:46 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31636 23:53:51 <elliott> Wow, that's a lot 23:53:58 <elliott> `sayhi 23:53:59 <HackEgo> hi, all 23:54:02 <elliott> x_X 23:54:06 <monqy> `cat bin/sayhi 23:54:06 <elliott> Gregor: When do we even GET this crap :P 23:54:07 <HackEgo> ​#!/bin/sh \ echo hi, all 23:54:09 <shachaf> `mkdir /tmp/home 23:54:10 <HackEgo> No output. 23:54:13 <Gregor> elliott: When you're not looking. 23:54:14 <shachaf> `chsh -h /tm/home 23:54:14 <monqy> `cat bin/wtf 23:54:15 <HackEgo> Usage: chsh [options] [LOGIN] \ \ Options: \ -h, --help display this help message and exit \ -s, --shell SHELL new login shell for the user account \ 23:54:15 <HackEgo> ​#!/bin/sh \ echo "why $1 is like wtf" 23:54:19 <elliott> `run rm bin/say{,hi} bin/twat 23:54:20 <HackEgo> No output. 23:54:21 <Gregor> shachaf: tmp is not preserved between commands. 23:54:24 <shachaf> `id -a 23:54:25 <HackEgo> uid=5000 gid=188466 23:54:28 <shachaf> `whoami 23:54:29 <HackEgo> whoami: cannot find name for user ID 5000 23:54:33 <monqy> `cat bin/twat 23:54:33 <elliott> `imdb the room 23:54:34 <itidus20> `log fnord 23:54:34 <HackEgo> cat: bin/twat: No such file or directory 23:54:36 <HackEgo> ​\ Looking up 127.0.0.1:3128 \ Making HTTP connection to 127.0.0.1:3128 \ Sending HTTP request. \ HTTP request sent; waiting for response. \ Alert!: Unexpected network read error; connection aborted. \ Can't Access `http://imdb.com/find?q=%74%68%65%20%72%6f%6f%6d' \ Alert!: Unable to access document. \ \ lynx: Can't access startfile 23:54:40 <elliott> `rm bin/imdb 23:54:40 <HackEgo> 2007-12-11.txt:20:11:34: <oerjan> ELIZA: Gak fnord bezeekel ash fnebby. 23:54:41 <HackEgo> No output. 23:54:46 <tiffany> what happens if I `cat /usr/share/dict/words 23:54:47 <tiffany> :P 23:54:48 <elliott> `k 23:54:50 <HackEgo> ​!"#$%^&* 0123456789 23:54:51 <shachaf> `chfn -h /hackend/bin 23:54:52 <HackEgo> No output. 23:54:58 <Gregor> tiffany: Nothing very interesting. 23:55:01 <elliott> `cat bin/runfor 23:55:02 <HackEgo> ​#!/bin/bash \ if [ ! "$2" ] \ then \ echo 'Use: runfor <time> <command>' \ exit 1 \ fi \ \ TIME="$1" \ shift \ \ "$@" & \ sleep $(( TIME + 0 )) \ kill -9 %1 23:55:05 <elliott> What does that even do. 23:55:09 <shachaf> `run echo 'echo -ne a' > bin/.bashrc 23:55:10 <HackEgo> No output. 23:55:12 <shachaf> `echo a 23:55:13 <HackEgo> a 23:55:14 <shachaf> `run echo a 23:55:15 <HackEgo> a 23:55:16 <elliott> `run grep -r runfor bin 23:55:17 <HackEgo> bin/runfor: echo 'Use: runfor <time> <command>' 23:55:20 <shachaf> `echo $HOME 23:55:21 <elliott> `rm bin/runfor 23:55:21 <HackEgo> ​$HOME 23:55:22 <HackEgo> No output. 23:55:26 <shachaf> `run echo $HOME 23:55:26 <elliott> `cat bin/rungc 23:55:27 <HackEgo> ​/ 23:55:27 <elliott> `cat bin/rungcc 23:55:27 <HackEgo> cat: bin/rungc: No such file or directory 23:55:28 <HackEgo> ​#!/usr/bin/env bash \ name=$(mktemp) \ tail -n +1 "$1" | gcc -x c -w -O2 -std=gnu99 /dev/stdin -o "$name" || exit $? \ shift \ "$name" "$@"; st=$? \ rm -f "$name" 2>/dev/null \ exit $? \ 23:55:30 <shachaf> Stupid thing. 23:55:30 -!- Sgeo_ has joined. 23:55:33 <shachaf> `cat /etc/passwd 23:55:34 <HackEgo> cat: /etc/passwd: No such file or directory 23:55:38 <monqy> `cat bin/swedish 23:55:39 <HackEgo> ​#!/bin/bash \ echo "$1" | /usr/games/chef 23:55:44 <elliott> `run echo 'int main(){printf("hi\n");}' | rungcc 23:55:47 <shachaf> Useless. 23:55:47 <HackEgo> tail: cannot open `' for reading: No such file or directory \ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/crt1.o: In function `_start': \ (.text+0x20): undefined reference to `main' \ collect2: ld returned 1 exit status 23:55:55 <Gregor> lol 23:55:55 <elliott> `rm bin/rungcc 23:55:57 <HackEgo> No output. 23:55:58 <elliott> `cat bin/strfile 23:55:58 <monqy> `swedish this is a good command 23:55:59 <HackEgo> ​ELF... 23:55:59 <HackEgo> ​/hackenv/bin/swedish: line 2: /usr/games/chef: No such file or directory 23:56:03 <elliott> Why do we have strfile 23:56:11 <Gregor> elliott: Don't ask me X-D 23:56:12 <elliott> `rm bin/strfile 23:56:13 <HackEgo> No output. 23:56:16 <Gregor> GOD I love this bot. 23:56:19 <elliott> `run ls -l bin | paste 23:56:19 <monqy> `rm bin/swedish 23:56:20 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20134 23:56:21 <HackEgo> No output. 23:56:31 <elliott> `cat bin/u 23:56:32 <HackEgo> ​#!/bin/bash \ echo i mad 23:56:36 <monqy> :( 23:56:38 <elliott> `rm bin/u 23:56:39 <HackEgo> No output. 23:56:40 <elliott> `? u 23:56:42 <HackEgo> u mad? 23:56:44 <elliott> See, it's obsolete. 23:56:47 <elliott> `cat bin/unstr 23:56:48 <HackEgo> ​ELF... 23:56:51 <elliott> X_X 23:56:54 <elliott> `rm bin/unstr 23:56:55 <HackEgo> No output. 23:56:56 <elliott> `ping 23:56:57 <HackEgo> pong 23:57:01 <elliott> `karma 23:57:04 <monqy> `cat bin/wolfram 23:57:05 <HackEgo> ​#!/bin/bash \ WA='http://www24.wolframalpha.com' \ \ dowget() { \ wget -U "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.11) Gecko/2009060214 Firefox/3.0.11" "$@" \ return "$?" \ } \ \ if [ ! "$1" ] \ then \ echo 'Look up what?' \ exit 1 \ fi \ \ QUERY=`echo -n "$1" | od -t x1 -A n -w1000 | tr " 23:57:05 <elliott> `karma HackEgo 23:57:07 <HackEgo> grep: karma: No such file or directory 23:57:12 <itidus20> `learn Strfile has a mysterious purpose. 23:57:12 <elliott> `url bin/karma 23:57:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/karma 23:57:13 <HackEgo> I knew that. 23:57:18 <elliott> `forget Strfile 23:57:19 <HackEgo> Forget what? 23:57:20 <elliott> I know what strfile does :P 23:57:23 <elliott> `rm bin/karma 23:57:24 <HackEgo> No output. 23:57:27 <elliott> I'll implement a proper karma system 23:57:31 <shachaf> This channel is too crowded. 23:57:31 <HackEgo> No output. 23:57:33 <elliott> `google qwerty 23:57:33 <itidus20> i don't 23:57:35 <HackEgo> No output. 23:57:38 <shachaf> Also, everyone in here is mad. 23:57:39 <elliott> `cat bin/creatures 23:57:39 <Gregor> shachaf: Only when people go into botnonsense mode. 23:57:40 <HackEgo> ​#!/bin/bash \ if [ ! "$1" ] \ then \ echo 'Look up what?' \ exit 1 \ fi \ \ QUERY=`echo -n "$1" | od -t x1 -A n -w1000 | tr " " %` \ \ lynx --cfg=/dev/null --lss=/dev/null \ \ --dump --width=1000 'http://creatures.wikia.com/wiki/'"$QUERY" | \ grep -A 100 'Jump to:' | \ tail -n +3 | \ sed 's/ */ /g' 23:57:47 <elliott> ...yeah, so useful and borken. 23:57:48 -!- Sgeo has quit (Ping timeout: 260 seconds). 23:57:49 <elliott> `rm bin/creatures 23:57:50 <HackEgo> No output. 23:57:51 <shachaf> Can all y'all get out of bot nonsense mode? 23:57:53 <elliott> `cat bin/calc 23:57:54 <HackEgo> ​#!/bin/bash \ if [ ! "$1" ] \ then \ echo 'Calculate what?' \ exit 1 \ fi \ \ QUERY=`echo -n "$1" | od -t x1 -A n -w1000 | tr " " %` \ \ lynx --cfg=/dev/null --lss=/dev/null \ \ --dump --width=1000 'http://google.com/search?q='"$QUERY" | \ grep -m 1 '=' | sed 's/ \+/ /g' 23:57:56 <elliott> shachaf: I'm doing HOUSEWORK. 23:57:57 <monqy> `cat bin/toutf8 23:57:59 <HackEgo> ​#!/usr/bin/python \ import sys \ import chardet \ x = sys.stdin.read() \ enc = chardet.detect(x)['encoding'] \ sys.stdout.write(x.decode(enc).encode('UTF-8')) 23:58:03 <elliott> `rm bin/calc 23:58:04 <HackEgo> No output. 23:58:05 <elliott> `rm bin/minifind 23:58:07 <HackEgo> No output. 23:58:08 <elliott> `marco 23:58:09 <HackEgo> polo 23:58:11 <elliott> That can stay. 23:58:13 <Gregor> shachaf: If HackEgo didn't so desperately need a cleanup, I'd try to put a stop to it :P 23:58:14 <monqy> `wtf 23:58:14 <elliott> The genocide is over. 23:58:15 <HackEgo> why is like wtf 23:58:16 <tiffany> o.o 23:58:19 <itidus20> `learn Everyone in here is mad. 23:58:21 <HackEgo> I knew that. 23:58:24 <elliott> `run ls -lR | paste 23:58:25 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27770 23:58:29 <elliott> Gregor: Behold the new, cleaner HackEgo :P 23:58:39 -!- MSleep has joined. 23:58:41 <shachaf> `saverevision 23:58:42 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: saverevision: not found 23:58:44 <elliott> `wolfram 99 23:58:47 <Gregor> elliott: It is teh sexy. 23:58:47 <shachaf> So much for DWIM 23:58:54 <elliott> C'mon HackEgo. 23:58:56 <elliott> EH 23:58:56 <elliott> `rm bin/wolfram 23:58:57 <HackEgo> No output. 23:58:59 <elliott> Pretty sure it was broken anyway. 23:59:02 <shachaf> elliott: I've changed my mind. data Null a = Null is the best monad. 23:59:08 <elliott> shachaf: That it is. 23:59:14 <HackEgo> ​--2011-09-14 23:58:45-- http://www24.wolframalpha.com/input/?i=%39%39 \ Connecting to 127.0.0.1:3128... connected. \ Proxy request sent, awaiting response... No data received. \ Retrying. \ \ --2011-09-14 23:58:46-- (try: 2) http://www24.wolframalpha.com/input/?i=%39%39 \ Connecting to 127.0.0.1:3128... connected. 23:59:18 <elliott> X-D 23:59:37 <shachaf> u monad? 23:59:37 <tiffany> o.o 23:59:45 <shachaf> `learn u monad? 23:59:46 <HackEgo> I knew that. 23:59:59 <monqy> `cat bin/wl 2011-09-15: 00:00:01 <HackEgo> ​#!/usr/bin/env python \ \ import os \ import sys \ import json \ import urllib2 \ \ proxy_handler = urllib2.ProxyHandler({'http': os.environ['http_proxy']}) \ opener = urllib2.build_opener(proxy_handler) \ urllib2.install_opener(opener) \ \ def lose(): \ print 'You get NOTHING! You LOSE! Good DAY sir!' \ sys.exit() 00:00:08 <itidus20> 99 repeats a single digit in base 10. 00:00:17 <elliott> `learn Monads are just monoids in the category of endofunctors. 00:00:19 <HackEgo> I knew that. 00:00:23 <elliott> `run ln -s wisdom/monad{,s} 00:00:24 <HackEgo> ln: creating symbolic link `wisdom/monads': File exists 00:00:25 <shachaf> @quote copumpkin lax 00:00:25 <lambdabot> copumpkin says: a monad is just a lax functor from a terminal bicategory, duh. fuck that monoid in category of endofunctors shit 00:00:28 <elliott> `run ln -s wisdom/monad{s,} 00:00:29 <HackEgo> No output. 00:00:33 <elliott> `learn monad 00:00:34 <monqy> `paste bin/wl 00:00:35 <elliott> erm 00:00:35 <HackEgo> ​/hackenv/bin/learn: line 4: wisdom/monad: No such file or directory \ I knew that. 00:00:35 <elliott> fuck 00:00:35 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3547 00:00:41 <elliott> `? monad 00:00:42 <HackEgo> monad? ¯\(°_o)/¯ 00:00:44 <elliott> `? monads 00:00:45 <HackEgo> Monads are just monoids in the category of endofunctors. 00:00:51 <elliott> `run ln -s wisdom/monad{s,} 00:00:52 <HackEgo> ln: creating symbolic link `wisdom/monad': File exists 00:00:52 <elliott> oh 00:00:53 <elliott> duh 00:00:56 <monqy> what does wl do 00:00:57 <elliott> `run rm wisdom/monad 00:00:58 <HackEgo> No output. 00:01:01 <elliott> `run cd wisdom; ln -s monads monad 00:01:03 <HackEgo> No output. 00:01:05 <elliott> monqy: wikilates 00:01:05 <elliott> `? monad 00:01:07 <HackEgo> Monads are just monoids in the category of endofunctors. 00:01:13 <shachaf> `run mv wisdom foolishness 00:01:14 <HackEgo> No output. 00:01:20 <elliott> `run mv foolishness wisdom 00:01:21 <HackEgo> No output. 00:02:07 <elliott> `run echo $(($(cat /dev/null)+1)) 00:02:09 <HackEgo> 1 00:02:12 <elliott> Excellent. 00:02:34 <shachaf> `run mv wisdom elliott 00:02:35 <HackEgo> No output. 00:02:39 <elliott> `run mv elliott wisdom 00:02:40 <HackEgo> No output. 00:02:47 <elliott> You're encouraging botnonsense mode, shachaf. 00:02:58 <shachaf> `? elliott/u 00:03:00 <HackEgo> elliott/u? ¯\(°_o)/¯ 00:03:02 -!- augur has joined. 00:03:08 -!- MSleep has changed nick to MDude. 00:03:46 <shachaf> `> u 00:03:47 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: >: not found 00:03:48 <shachaf> `? u 00:03:50 <HackEgo> u monad? 00:03:56 <shachaf> `rm -rf wisdom 00:03:57 <HackEgo> rm: invalid option -- \ Try `rm --help' for more information. 00:04:04 <shachaf> `run rm -rf wisdom 00:04:05 <HackEgo> No output. 00:04:07 <shachaf> No more nonsense. 00:04:14 <elliott> `help 00:04:14 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 00:04:18 <shachaf> `run while true; do true; done 00:04:30 <elliott> shachaf: Do you really think you're going to break the bot? 00:04:34 <elliott> `revert 318 00:04:35 <HackEgo> Done. 00:04:45 <elliott> `revert 321 00:04:45 <HackEgo> Done. 00:04:49 <HackEgo> No output. 00:04:49 <shachaf> elliott: No. 00:04:55 <shachaf> I just think I'll encourage the nonsense to stop. 00:04:58 <shachaf> By being part of it. 00:05:01 <elliott> `run mkdir lib 00:05:02 <HackEgo> No output. 00:05:05 <tiffany> o.o 00:05:05 <elliott> The nonsense is over :P 00:05:46 <shachaf> Do you people ever talk about esoteric languages? 00:05:50 <elliott> Yep 00:05:58 <elliott> `fetch http://sprunge.us/MYMX 00:05:59 <HackEgo> 2011-09-15 00:05:59 URL:http://sprunge.us/MYMX [73] -> "MYMX" [1] 00:06:07 <shachaf> ?bf +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. 00:06:07 <lambdabot> [ 00:06:09 <elliott> `run mv MYMX bin/karma; chmod +x bin/karma 00:06:10 <HackEgo> No output. 00:06:14 <itidus20> `? esoteric 00:06:16 <HackEgo> Esoteric is an abbreviation for Esoteric Programming Languages as contrasted with Esoteric languages such as lojban and klingon and contrasted with the occult, however those topics may well be compatible with each other .. according to itidus20 00:06:23 <elliott> `fetch http://sprunge.us/RDIF 00:06:23 <HackEgo> 2011-09-15 00:06:23 URL:http://sprunge.us/RDIF [155] -> "RDIF" [1] 00:06:28 <itidus20> ok i just wanted to do it once 00:06:31 <elliott> `run mv RDIF lib/adjustkarma; chmod +x lib/adjustkarma 00:06:33 <HackEgo> mv: cannot move `RDIF' to `lib/adjustkarma': No such file or directory \ chmod: cannot access `lib/adjustkarma': No such file or directory 00:06:42 <elliott> `run mkdir lib; mv RDIF lib/adjustkarma; chmod +x lib/adjustkarma 00:06:44 <HackEgo> No output. 00:06:54 <elliott> `fetch http://sprunge.us/IVaB 00:06:55 <HackEgo> 2011-09-15 00:06:55 URL:http://sprunge.us/IVaB [35] -> "IVaB" [1] 00:06:58 <elliott> `fetch http://sprunge.us/RRje 00:06:59 <HackEgo> 2011-09-15 00:06:59 URL:http://sprunge.us/RRje [35] -> "RRje" [1] 00:07:07 <elliott> `run mv IVaB bin/'++'; mv RRje bin/'--' 00:07:08 <HackEgo> No output. 00:07:10 <itidus20> shachaf: as a newbie here i am not at liberty to make the comments i made 00:07:15 <elliott> `run chmod +x bin/'++'; chmod +x bin/'--' 00:07:17 <HackEgo> No output. 00:07:21 <elliott> `run mkdir karma; touch karma/.doorstop 00:07:23 <HackEgo> No output. 00:07:24 <itidus20> thats why i added "according to" clause :D 00:07:26 <elliott> `karma shachaf 00:07:27 <HackEgo> cat: karma/shachaf: No such file or directory \ shachaf has karma 0. 00:07:32 <elliott> Ugh 00:07:55 <elliott> `fetch http://sprunge.us/SUdf 00:07:56 <HackEgo> 2011-09-15 00:07:56 URL:http://sprunge.us/SUdf [85] -> "SUdf" [1] 00:08:01 <elliott> `run mv SUdf bin/karma; chmod +x bin/karma 00:08:02 <HackEgo> No output. 00:08:11 <elliott> `fetch http://sprunge.us/jcDD 00:08:12 <HackEgo> 2011-09-15 00:08:12 URL:http://sprunge.us/jcDD [167] -> "jcDD" [1] 00:08:17 <shachaf> `ls karma 00:08:19 <HackEgo> No output. 00:08:19 <elliott> `run mv jcDD lib/adjustkarma; chmod +x lib/adjustkarma 00:08:20 <HackEgo> No output. 00:08:23 <elliott> `karma shachaf 00:08:24 -!- Sgeo__ has joined. 00:08:24 <HackEgo> shachaf has 0 karma. 00:08:26 <elliott> `-- shachaf 00:08:27 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: shachaf: not found 00:08:32 <elliott> Gregor? 00:08:41 <elliott> Think you have a problem with quoting -- there :P 00:08:44 <elliott> You want to put -- before all the arguments 00:08:47 <elliott> To denote end of options, etc. 00:08:50 <shachaf> itidus20: What? 00:09:00 <itidus20> nothing 00:09:40 <elliott> Gregor: BUUUUUUUUUUUUUUUUUUUGS 00:09:55 <elliott> `run mv bin/'++' bin/karma'+'; mv bin/'--' bin/karma'-' 00:09:56 <HackEgo> No output. 00:10:00 <elliott> `karma- shachaf 00:10:02 <itidus20> `log esperanto 00:10:02 <HackEgo> shachaf has -1 karma. 00:10:05 <HackEgo> 2007-07-13.txt:21:27:58: <oklokok> pikhq: esperanto isn't that good, judging by what i've read about it 00:10:25 <elliott> Ugh 00:10:27 <itidus20> `forget esoteric 00:10:27 <elliott> I forgot to case-normalise karma 00:10:28 <HackEgo> Forget what? 00:10:51 <itidus20> `forget esoteric 00:10:52 <HackEgo> rm: cannot remove `wisdom/esoteric': No such file or directory \ Forget what? 00:10:53 <itidus20> oops 00:10:55 <Gregor> elliott: ... huh? 00:10:56 <itidus20> `log esperanto 00:10:59 <HackEgo> 2007-05-31.txt:20:28:35: <Pikhq> Ne, ne, ne! Lernu Esperanton. 00:11:00 <Gregor> elliott: Oh 00:11:01 <elliott> Gregor: You handle `-- incorrectly 00:11:06 <shachaf> `karma+ shachaf 00:11:07 <itidus20> `log esperanto 00:11:08 <HackEgo> shachaf has 0 karma. 00:11:10 <HackEgo> 2006-08-26.txt:01:32:32: <pikhq> ihope: Ne. Esperanto. 00:11:13 -!- Sgeo_ has quit (Ping timeout: 260 seconds). 00:11:14 <elliott> `fetch http://sprunge.us/FPTI 00:11:15 <HackEgo> 2011-09-15 00:11:15 URL:http://sprunge.us/FPTI [117] -> "FPTI" [1] 00:11:17 <shachaf> `cat bin/karma+ 00:11:17 <elliott> `fetch http://sprunge.us/RaVh 00:11:18 <HackEgo> 2011-09-15 00:11:18 URL:http://sprunge.us/RaVh [211] -> "RaVh" [1] 00:11:18 <HackEgo> ​#!/bin/sh \ lib/adjustkarma "$1" +1 \ 00:11:23 <elliott> `run mv FPTI bin/karma; chmod +x bin/karma 00:11:24 <HackEgo> No output. 00:11:30 <itidus20> `log esperanto 00:11:31 <shachaf> `run lib/adjustkarma shachaf +1000 00:11:32 <elliott> `run mv RaVh lib/adjustkarma; chmod +x lib/adjustkarma 00:11:33 <HackEgo> shachaf has 1000 karma. 00:11:33 <HackEgo> No output. 00:11:34 <HackEgo> 2008-06-02.txt:15:08:16: <pikhq> I'd tend to say "Esperanto parolas vin", BTW. 00:11:39 <elliott> `rm karma/shachaf 00:11:40 <HackEgo> No output. 00:11:41 <shachaf> `cat RaVh 00:11:43 <HackEgo> cat: RaVh: No such file or directory 00:11:46 <shachaf> `ls 00:11:47 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 00:11:49 <elliott> shachaf discovers that in an open-world bot it is possible to adjust any data. 00:11:52 <elliott> No shit, sherlock. 00:12:05 <shachaf> elliott: I wasn't particularly unaware of it beforehand. 00:12:17 <Gregor> elliott: Fixt. 00:12:22 <shachaf> This wasn't exactly a "zomg guys u have a bug!!!!" 00:12:26 <elliott> :P 00:12:27 <itidus20> `karma itidus20 00:12:29 <HackEgo> itidus20 has 0 karma. 00:12:29 <elliott> Gregor: Thx, not that I want it to be called `-- 00:12:34 <elliott> Gregor: But speaking of message handlers 00:12:45 <shachaf> `echo 1337 > karma/elliott 00:12:46 <HackEgo> 1337 > karma/elliott 00:12:46 <elliott> Gregor: Can you cause any foo++ and foo-- in a message to run bin/karma+ foo or bin/karma- foo 00:12:48 <elliott> Thanks 00:12:52 <shachaf> `run echo 1337 > karma/elliott 00:12:53 <HackEgo> No output. 00:12:58 <elliott> `rm karma/elliott 00:13:00 <HackEgo> No output. 00:13:11 <Gregor> elliott: /just/ foo++, or anywhere in the message? 00:13:36 <elliott> Gregor: Anywhere in the message. Actually, you probably want to run it as "karma+ blah; karma+ blah; karma- blah" etc., otherwise it'll spam N lines for N karma adjustments. 00:13:49 <elliott> Gregor: You might want to special-case C++ and C--... but you might not, it's way more fun if you don't :P 00:13:55 <Gregor> Idonno if I like it being anywhere in the message ... 00:13:57 <elliott> Gregor: Actually just silence the output. 00:14:06 <shachaf> Gregor: That's how the cool bots do it. 00:14:08 <shachaf> @karma Gregor 00:14:09 <lambdabot> Gregor has a karma of 1 00:14:09 <elliott> It's true. 00:14:12 <elliott> preflex and lambdabot agree thoroughly. 00:14:12 <shachaf> Gregor++ 00:14:14 <shachaf> @karma Gregor 00:14:14 <lambdabot> Gregor has a karma of 2 00:14:19 <Gregor> Oh, do it silently. 00:14:22 <Gregor> Silently works. 00:14:23 <elliott> <elliott> karma C 00:14:24 <elliott> <preflex> C: 174240 00:14:34 <shachaf> @karma c/c 00:14:35 <lambdabot> c/c has a karma of 650 00:14:39 <elliott> X-D 00:14:40 <shachaf> u mad kmc? 00:14:44 <Lymee> `run lib/adjustkarma elliott -100000 00:14:46 <HackEgo> elliott has -100000 karma. 00:14:49 <shachaf> Oops, he's in here. 00:14:51 <Lymee> `run lib/adjustkarma elliott -100000000000000000000000000000000000000000000000 00:14:53 <HackEgo> elliott has -6450984253743269536 karma. 00:14:53 <elliott> Lymee: You're not funny, you're just annoying. 00:14:55 <elliott> `rm karma/elliott 00:14:56 <Lymee> Okey. 00:14:56 <HackEgo> No output. 00:15:05 <monqy> `ls karma 00:15:06 <HackEgo> No output. 00:15:07 <shachaf> elliott: That's true of everyone in this channel. 00:15:14 <elliott> True. 00:16:12 <elliott> `run echo '#!/bin/sh' >bin/pastekarma; echo 'for thing in karma/*; do' >>bin/pastekarma; echo ' echo "$thing: $(cat "karma/$thing")"' >>bin/pastekarma; echo 'done | paste' >>bin/pastekarma 00:16:13 <HackEgo> No output. 00:16:15 <elliott> `run chmod +x bin/pastekarma 00:16:16 <HackEgo> No output. 00:16:17 <elliott> `pastekarma 00:16:18 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7337 \ cat: karma/karma/*: No such file or directory 00:16:22 <elliott> What. 00:16:26 <elliott> `url bin/pastekarma 00:16:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/pastekarma 00:16:32 <elliott> Oh, hmm. 00:16:38 <elliott> What's the right way to do it? 00:16:39 <elliott> I know that 00:16:42 <elliott> for thing in `echo karma/*`; do 00:16:46 <elliott> is meant to be a Useless Use of Whatever. 00:16:54 <elliott> oh hmm 00:17:00 <elliott> `run for thing; do echo $thing; done 00:17:01 <HackEgo> No output. 00:17:04 <elliott> huh 00:17:15 <elliott> Oh 00:17:17 <elliott> That's for argument processing 00:17:37 <Sgeo__> LOLOLOL at rather idiotic VirtualBox bug 00:17:43 <elliott> LOLOLOLOLOLOL UMAD 00:18:03 <Sgeo__> Try to import ovf file, change the name, and the extension of the disk image changes 00:18:04 <elliott> `fetch http://sprunge.us/FHcN 00:18:04 <HackEgo> 2011-09-15 00:18:04 URL:http://sprunge.us/FHcN [94] -> "FHcN" [1] 00:18:09 <elliott> `run mv FHcN bin/pastekarma; chmod +x bin/pastekarma 00:18:11 <HackEgo> No output. 00:18:12 <elliott> `pastekarma 00:18:14 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27268 00:18:28 <elliott> `karma- C++ 00:18:30 <HackEgo> C++ has 0 karma. 00:18:33 <Lymee> `karma+ foo 00:18:35 <HackEgo> foo has 1 karma. 00:18:35 <elliott> Huh? 00:18:38 <Lymee> `karma+ bar 00:18:40 <HackEgo> bar has 1 karma. 00:18:41 <elliott> It should become minus one. 00:18:42 <Lymee> `pastekarma 00:18:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.8129 00:18:46 <elliott> `karma- C++ 00:18:48 <HackEgo> C++ has 0 karma. 00:18:51 <elliott> Oh 00:18:54 <elliott> Gregor: Did you implement it? 00:19:02 <elliott> Might wanna disable it on lines targeted at HackEgo X-D 00:19:13 <Gregor> elliott: Haven't even started :P 00:19:24 <elliott> `run rm -r karma; mkdir karma; touch karma/.doorstep 00:19:25 <elliott> Righty then 00:19:25 <HackEgo> No output. 00:19:49 <elliott> Gregor: When you do, it'd be nice if you routed ?foo, where the ? is at the start of the message, to bin/? foo 00:19:55 <elliott> But yeah, no big deal :P 00:20:01 <elliott> TIME TO SIT BACK AND RELAX 00:20:05 <elliott> `log relax 00:20:08 <HackEgo> 2008-10-29.txt:14:43:05: <ehird> Relax, sit back. It'll be alright. 00:20:15 <elliott> me too 00:20:31 <elliott> shachaf: Botmadness officially over. 00:20:31 <itidus20> `log horror 00:20:34 <HackEgo> 2007-04-29.txt:02:44:01: <bsmntbombdood> horror? 00:20:46 <itidus20> `log horror 00:20:49 <HackEgo> 2011-08-13.txt:12:50:59: <CakeProphet> I'm pretty sure CakeProphet: The Musical would be of the horror tradgedy genre 00:20:50 <oerjan> elliott: erm, ? is lambdabot prefix 00:21:04 <elliott> oerjan: All the better. 00:21:07 <Gregor> `url 00:21:09 <HackEgo> http://codu.org/projects/hackbot/fshg/ 00:21:22 <elliott> Gregor: Whaddya doin' :P 00:21:24 <elliott> oerjan: btw 00:21:25 <elliott> `? welcome 00:21:27 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 00:21:28 <elliott> oerjan: the most useful??? 00:21:28 <Gregor> elliott: EVIL 00:21:35 <elliott> Gregor: I am sceptical 00:21:41 <itidus20> `log evil 00:21:45 <HackEgo> 2010-10-30.txt:20:37:16: <Phantom_Hoover> Well, I can't see why you view it as evil. 00:21:57 -!- Jafet has joined. 00:22:03 -!- oerjan has quit (Quit: Good night). 00:22:15 <itidus20> `log evil 00:22:18 <HackEgo> 2010-11-17.txt:00:41:04: <elliott> Vorpal: (If I succumb to you and other evil people's wishes, I'll just put a huge gob of extra code in svmg so it can support start scripts that don't leave a process running around, but it will require donations.) 00:23:02 <elliott> `karma .doorstep 00:23:03 <HackEgo> ​.doorstep has karma. 00:23:05 <elliott> good old doorstep 00:23:08 <elliott> um 00:23:08 <elliott> wait 00:23:09 <elliott> doorstep 00:23:10 <elliott> its 00:23:12 <elliott> meant to be doorstop... 00:23:12 <shachaf> elliott: Doesn't look that way. 00:23:17 <elliott> `run mv karma/.doorstep karma/.doorstop 00:23:19 <HackEgo> No output. 00:23:22 <elliott> shachaf: This isn't botmadness, this is just botusage. 00:23:25 <elliott> `log happiness 00:23:28 <HackEgo> 2011-01-22.txt:11:51:53: <oklopol> well someone could be experiencing happiness in your backyard, so you tell them happiness is not allowed in there, and then he says "but the happinessness of my happiness is so overwhelming i can't control it!" and then you say "the happinessnessness your happiness' happinessness is feeling 00:24:29 <Lymee> `echo abcd > karma/test 00:24:31 <HackEgo> abcd > karma/test 00:24:32 <Lymee> `karma+ test 00:24:34 <HackEgo> test has 1 karma. 00:24:38 <Lymee> `run echo abcd > karma/test 00:24:39 <HackEgo> No output. 00:24:41 <Lymee> `karma+ test 00:24:43 <HackEgo> test has 1 karma. 00:24:50 <Lymee> `rm karma/tet 00:24:51 <Lymee> `rm karma/test 00:24:51 <HackEgo> rm: cannot remove `karma/tet': No such file or directory 00:24:52 <HackEgo> No output. 00:30:12 <elliott> `? shachaf 00:30:14 <HackEgo> shachaf mad 00:30:20 <elliott> Indeed, HackEgo. Indeed. 00:33:25 <elliott> Gregor: So what were you actually doing :P 00:34:47 <elliott> `log mad 00:34:50 <HackEgo> 2009-10-22.txt:07:54:39: <Oranjer> I must now reread your previous comments, madbrain, with that in mind 00:35:05 <elliott> `log \bmad\b 00:35:09 <HackEgo> 2007-11-21.txt:18:28:58: <Slereah-> "The barbarian messenger spoke: "You profane! You are all mad!" Replied Leonidas: "We are mad? WE ARE SPARTA."" 00:35:39 <itidus20> `log doing 00:35:42 <HackEgo> 2006-10-21.txt:01:11:47: <pikhq> jix: And why do you need an infinite loop that's doing no calculation? 00:35:48 <elliott> `log \bmad\b 00:35:52 <HackEgo> 2010-08-03.txt:03:49:52: <SgeoN1> My dad has been paranoid about mad cow disease 00:36:49 <itidus20> `log eiffel 00:36:52 <HackEgo> 2008-08-03.txt:19:13:23: <Deewiant> tusho: eiffel is from the USA 00:36:55 <Lymee> `log rabies 00:36:58 <HackEgo> 2010-10-24.txt:18:01:42: <elliott> Gregor: Also you have rabies. 00:37:16 <elliott> `log Lymee 00:37:19 <HackEgo> 2011-09-13.txt:03:16:33: <Lymee> That explains why every time I try to unbreak my system via sysrq nothing happens 00:37:26 <itidus20> `log \b^_^\b 00:37:30 <HackEgo> No output. 00:37:35 <elliott> `log \b\^_\^\b 00:37:39 <HackEgo> 2008-01-27.txt:21:49:49: -!- Asztal^_^_ has joined #esoteric. 00:37:44 <Lymee> `log \^___\^ 00:37:47 <HackEgo> 2007-10-24.txt:02:41:29: <Fa1r> hum... sounds like useful one ^___^ 00:37:56 <itidus20> `log \b\^_\^\b 00:37:59 <HackEgo> 2011-09-15.txt:00:37:39: <HackEgo> 2008-01-27.txt:21:49:49: -!- Asztal^_^_ has joined #esoteric. 00:38:06 <elliott> `log \b\^_\^\b 00:38:06 <itidus20> hahahah 00:38:06 <elliott> `log \b\^_\^\b 00:38:07 <elliott> `log \b\^_\^\b 00:38:07 <elliott> `log \b\^_\^\b 00:38:12 <HackEgo> 2009-05-29.txt:14:26:50: <Gracenotes> lereah_: O^_^O 00:38:12 <HackEgo> 2006-08-25.txt:23:57:49: <ihope> ^_^_^_^_^? 00:38:12 <HackEgo> 2008-01-27.txt:22:16:37: -!- Asztal^_^_ is now known as Asztal. 00:38:13 <HackEgo> 2011-09-15.txt:00:37:59: <HackEgo> 2011-09-15.txt:00:37:39: <HackEgo> 2008-01-27.txt:21:49:49: -!- Asztal^_^_ has joined #esoteric. 00:38:21 <Lymee> `log \^_\^ 00:38:24 <HackEgo> 2006-01-16.txt:00:59:08: <GregorR-L> Figured, short lesson ^_^ 00:38:28 <Lymee> `log \^\^ 00:38:30 <elliott> `log \ \^_\^\ 00:38:31 <HackEgo> egrep: Trailing backslash 00:38:32 <HackEgo> 2008-06-25.txt:11:46:02: <KingOfKarlsruhe> its a 10 minutes program ^^ 00:38:33 <elliott> `log \ \^_\^ 00:38:37 <HackEgo> 2010-02-01.txt:00:10:40: <bsmntbombdood> wouldn't like me use the quadratic formula ^_^ 00:38:43 <Lymee> `log hugs 00:38:46 <HackEgo> 2009-04-30.txt:18:54:38: * oerjan hugs fungot 00:38:51 <Lymee> `log hugs 00:38:54 <HackEgo> 2007-03-29.txt:18:31:11: <oerjan> it's that in Hugs at least 00:39:19 <Gregor> ?elliott 00:39:19 <itidus20> `log hugs 00:39:19 <lambdabot> Unknown command, try @list 00:39:21 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things? 00:39:23 <HackEgo> 2010-10-28.txt:19:34:01: * Gregor hugs HackEgo 00:39:25 <Gregor> ... 00:39:35 <Gregor> elliott: That good idea seems to be a bad idea :P 00:39:36 <elliott> Gregor: Dude 00:39:38 <elliott> oerjan just said 00:39:42 <elliott> that ? was the lambdabot prefix :P 00:39:46 <Gregor> elliott: I've been implementin', not readin' 00:39:50 <elliott> Gregor: I propose "\w+\?" 00:39:58 <Gregor> >_O 00:39:59 <elliott> Then people asking "brainfuck?" might actually get a useful result, even :P 00:40:03 <elliott> COME ON YOU KNOW IT'S THE BEST. 00:40:09 <Gregor> So ... a postfix :P 00:40:11 <elliott> Yes 00:40:17 <itidus20> `log karma 00:40:18 <Gregor> That ... is wonderful. 00:40:18 <elliott> It's less spammy than fungot ;D 00:40:21 <HackEgo> 2009-01-13.txt:05:41:32: <bsmntbombdood> <3 job karma 00:40:26 <elliott> Gregor: ARE YOU BEING SARCASTIC 00:40:43 <elliott> poop++ 00:40:45 <elliott> `karma poop 00:40:46 <HackEgo> poop has 0 karma. 00:40:54 <elliott> rip poop domed to krama 00:41:08 <itidus20> `log krama 00:41:11 <HackEgo> 2011-09-15.txt:00:41:08: <itidus20> `log krama 00:41:54 <Gregor> elliott: The only problem is that it would give output for all one-word questions, at least in the simplest mode :P 00:42:00 <elliott> Gregor: That's the POINT :P 00:42:01 <itidus20> `log gobshite 00:42:04 <elliott> brainfuck? 00:42:04 <HackEgo> 2011-09-15.txt:00:42:01: <itidus20> `log gobshite 00:42:08 <elliott> <HackEgo> Brainfuck HAS ENOUGH DERIVATIVES 00:42:13 <elliott> what? 00:42:13 <Gregor> elliott: Gobbledywtflol? 00:42:16 <elliott> <HackEgo> [something witty] 00:42:17 <Gregor> Or "what?" 00:42:23 <Lymee> `log cuddles 00:42:24 <elliott> Gregor: What? 00:42:25 <HackEgo> 2009-07-01.txt:00:53:25: * Zuu cuddles ehird ^^ 00:42:28 <elliott> Gregor: You have ceased to make sense :P 00:42:51 <elliott> There is literally no way that answering to all one-word questions is the wrong decision... especially since come on they aren't THAT common. 00:42:55 <elliott> You can make an exception for "what" :P 00:42:58 <Gregor> lol 00:42:59 <monqy> ?karma poop 00:42:59 <lambdabot> poop has a karma of 1 00:43:01 <Gregor> Huh? 00:43:07 <elliott> ? 00:43:13 <Gregor> ¿Qué? 00:43:15 <elliott> ? 00:43:17 <elliott> Oh :P 00:43:21 <itidus20> `log poop 00:43:22 <Gregor> lol? 00:43:23 <elliott> Gregor: OK fine, huh and what get exceptions :P 00:43:24 <HackEgo> 2006-10-14.txt:22:29:02: <Razor-X> Of course, every other girl loves biology. I mean, who doesen't find pooping, mating, sleeping, and eating interesting? 00:43:28 <elliott> "lol?" is hardly common. 00:43:30 <Gregor> Why? 00:43:33 <elliott> OK 00:43:34 <elliott> huh 00:43:34 <elliott> what 00:43:35 <elliott> and 00:43:35 <elliott> what 00:43:36 <elliott> erm 00:43:46 <elliott> Gregor: huh, what, why, when, who, whom, where 00:43:46 <Gregor> Who? 00:43:48 <Gregor> Or is it whom? 00:43:49 <elliott> THERE 00:43:50 <Gregor> Aw damn :P 00:44:00 <elliott> THOSE EXCEPTIONS NONE OTHER 00:44:42 <monqy> my tendencies will trigger the bot a lot, but I do not care 00:45:04 <elliott> Gregor: And then just make it not say anything if the exit code is one 00:45:04 <itidus20> `log whom 00:45:08 <HackEgo> 2010-12-21.txt:20:05:08: <fizzie> "Noun, sense 1. An affectionate synonym for 'vagina'. See also gash. Noun, sense 2. Someone with whom you basically just get drunk and/or high and have sex, usually on a short term basis. Compare to "your girl" or "a ho", both are higher on the intimacy ladder." (Urban Dictionary.) 00:45:14 <elliott> Gregor: To avoid it going HUH WHAT to anything it doesn't know about. :P 00:45:23 <elliott> If you can't check exit code 00:45:24 <elliott> `? jfkljlsdfjksdf 00:45:26 <HackEgo> jfkljlsdfjksdf? ¯\(°_o)/¯ 00:45:30 <elliott> just grep for the helpful i dunno lol. 00:46:47 <elliott> shachaf? 00:46:51 <elliott> (This is my implementation test.) 00:47:30 <itidus20> http://i.imgur.com/WNTDy.png 00:47:58 <elliott> Wasn't that on /r/,inecraft like a year ago :P 00:48:00 <elliott> s/,/m/ 00:55:34 <itidus20> i found it in the log. fizzie was describing the word notch 00:56:10 <elliott> fizzie. 00:59:50 <shachaf> elliott: ? 00:59:51 * shachaf return 01:00:02 -!- sllide has joined. 01:00:28 <elliott> shachaf: Yes. 01:00:35 <elliott> shachaf? 01:00:39 <elliott> Gregor: I mad. 01:01:54 * shachaf isn't sure what's going on. 01:03:09 <elliott> shachaf: I mad. 01:03:25 <shachaf> u mad? 01:04:17 <Gregor> elliott: ... bro? 01:04:19 <Gregor> :P 01:04:22 <elliott> Gregor: Bro. 01:04:24 <elliott> shachaf? 01:04:26 <elliott> Gregor: Madness remains. 01:04:35 <Gregor> Yeah, I'mma not deal with that today :P 01:04:38 <Gregor> 'cuz lazy 01:04:48 <elliott> `log u mad 01:04:51 <HackEgo> 2010-12-06.txt:17:44:08: <ais523> some of those can't happen with the usage used in cat, e.g. EPIPE wouldn't happen as you use the default SIGPIPE handler, EINVAL wouldn't happen if you made sure you used valid arguments 01:04:56 <elliott> `log \bu mad 01:04:59 <HackEgo> 2010-12-27.txt:17:25:49: <Quadrescence> elliott: u mad 01:05:00 <elliott> Bu mad. 01:05:03 <elliott> Ugh. 01:05:07 <elliott> `log \bu mad 01:05:10 <HackEgo> 2011-09-15.txt:00:14:40: <shachaf> u mad kmc? 01:05:10 <elliott> This time give me a non-horrible person. 01:05:15 <elliott> No. 01:05:17 <elliott> I said non-horrible. 01:05:19 <elliott> `log \bu mad 01:05:22 <HackEgo> 2011-09-14.txt:23:31:27: <elliott> `learn shachaf heard u mad, so i put all the things in your things so u can mad while u mad? 01:05:26 <elliott> Ah. 01:05:28 <elliott> There we go. 01:05:37 <shachaf> Stop highlighting kmc's name. 01:05:41 <shachaf> He did nothing to deserve this. 01:05:42 <shachaf> Oops. 01:06:06 <elliott> Sorry kmc. 01:07:46 <itidus20> http://ko.wikipedia.org/wiki/HQ9%2B 01:08:56 <elliott> exceedingly notable 01:09:00 <elliott> david morgan-mar 01:09:01 <elliott> erm 01:09:03 <elliott> davia morgan-mar 01:10:14 <itidus20> http://ru.wikipedia.org/wiki/Feckfeck 01:10:36 <elliott> `log arse 01:10:39 <HackEgo> 2010-03-07.txt:11:42:25: <AnMaster> olsner, the use case is async threaded funge. And specifically it's funge space. Assuming we have (part of it) implemented as a static non-sparse array, and the rest of it as a tree structure or hash table, then it should be possible I think to only require locking for the the non-static part 01:11:09 <itidus20> feckfeck is notable in russia 01:12:27 <itidus20> and in discussion "Why do I write this article, if it did not understand? Wikipedia - the free encyclopedia, not a handbook for kulturschiny. Either be normal people, and make a story that she was for all, or be assholes, and mess up or delete the article." 01:14:05 <elliott> `log 01:14:06 <HackEgo> 2004-06-24.txt:06:22:05: -!- deltab has quit (sterling.freenode.net irc.freenode.net). 01:14:11 <elliott> `log 01:14:13 <HackEgo> 2007-02-04.txt:14:05:02: -!- ihope_ has joined #esoteric. 01:14:22 <elliott> `log 01:14:23 <HackEgo> 2007-07-15.txt:02:32:03: <Figs> or linguine! 01:14:57 <elliott> `log 01:14:59 <HackEgo> 2010-11-21.txt:20:34:24: <elliott> Phantom_Hoover: so? 01:15:16 <elliott> `log 01:15:17 <HackEgo> 2009-04-12.txt:00:33:15: <psygnisfive> WHAT IS LOVE 01:15:27 <elliott> tru 01:16:21 <monqy> `quote 01:16:22 <HackEgo> 612) <Gregor> ANOTHER THUNDERSTORM, INDIANA? <Gregor> That's three today. <elliott> Gregor: It FEELS like it should be a really simple fix :P 01:18:51 <elliott> `log 01:18:52 <HackEgo> 2010-08-06.txt:17:45:55: <alise> cpressey: In that it doesn't do deep sequencing? 01:20:08 <elliott> `log Obey Newton's laws or face elongation 01:20:11 <HackEgo> 2007-08-12.txt:00:05:15: <sp3tt> Obey Newton's laws or face elongation! 01:22:19 <Gregor> Ooh yeah, sequence me deep. 01:32:29 <elliott> `log 01:32:31 <HackEgo> 2009-09-09.txt:23:08:43: <Rugxulo> ah, out of memory 01:32:33 <elliott> `log 01:32:35 <HackEgo> 2007-03-08.txt:19:32:27: -!- ShadowHntr has joined #esoteric. 01:32:37 -!- sllide has quit (Read error: Connection reset by peer). 01:32:43 <elliott> ?Gregor 01:32:43 <lambdabot> Unknown command, try @list 01:32:49 <elliott> Gregor: You removed it D: 01:34:10 <Gregor> 'course I did :P 01:34:28 <elliott> `rm bin/.bashrc 01:34:30 <HackEgo> No output. 01:34:41 <elliott> `wl en poop 01:34:44 <HackEgo> Traceback (most recent call last): \ File "/hackenv/bin/wl", line 52, in <module> \ q = query(continue_id) \ File "/hackenv/bin/wl", line 44, in query \ response = urllib2.urlopen(url).read() \ File "/opt/python27/lib/python2.7/urllib2.py", line 126, in urlopen \ return _opener.open(url, data, 01:34:49 <Gregor> lol 01:34:51 <elliott> Gregor what did you do 01:35:07 <elliott> `wl io Herono 01:35:10 <HackEgo> Traceback (most recent call last): \ File "/hackenv/bin/wl", line 52, in <module> \ q = query(continue_id) \ File "/hackenv/bin/wl", line 44, in query \ response = urllib2.urlopen(url).read() \ File "/opt/python27/lib/python2.7/urllib2.py", line 126, in urlopen \ return _opener.open(url, data, 01:35:17 <elliott> Gregor.....fix it.... 01:35:26 <Gregor> elliott: Waaaaaaaaah 01:35:52 <elliott> it...worked....before... 01:35:53 <elliott> you... 01:35:54 <elliott> BROKE 01:35:54 <elliott> IT 01:35:57 <elliott> .:((((((((((((((99 01:39:09 -!- zzo38 has joined. 01:39:28 <elliott> Tart is designed to be easy to learn, but its also designed to be “expert-friendly”. Like a musical instrument, Tart enables a true master to create “virtuoso performances” of excellence and creative power. 01:39:33 <elliott> ahahahahahah 01:40:06 <Gregor> elliott: ? 01:40:32 <elliott> Gregor: ? 01:40:44 <Gregor> elliott: ‽ 01:40:51 <elliott> Gregor: ‽ 01:41:10 <monqy> whats tart is it a progragmeing langauge 01:41:14 <monqy> is it baAaad 01:41:42 <Gregor> monqy put that much better than I could have. 01:41:45 <elliott> im comment only on that paragraph 01:41:49 <elliott> but http://code.google.com/p/tart/ 01:42:19 <monqy> it was a good paragraph 01:42:21 <elliott> zzo38: Can you write a one-line biography of yourself? 01:43:17 <Gregor> zzo38: And furthermore can you assure that that one-line biography begins with "zzo38 ", then prefix "`learn " to it and write that to the channel? :P 01:43:54 <zzo38> elliot, Gregor: I don't know. I don't think so, though. 01:44:12 <elliott> If you don't write one, you'll get an even worse one than you'd write, written by me. 01:44:18 <elliott> And that would be awful. 01:45:10 <Gregor> `learn augur took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible. 01:45:12 <HackEgo> I knew that. 01:45:56 <elliott> `forget augur 01:45:58 <HackEgo> Forget what? 01:46:02 <elliott> Gregor you are so irresponsible. 01:46:11 <Gregor> :( 01:47:02 <elliott> So 01:47:03 <elliott> Irresponsible 01:47:08 <Gregor> :'( 01:47:28 <augur> Gregor: :| 01:47:34 <augur> i took no cakes 01:48:17 <Gregor> LIES 01:48:56 <elliott> `learn augur took no cakes. 01:48:57 <HackEgo> I knew that. 01:49:06 <augur> lol 01:49:13 <augur> hows `learn work 01:49:16 <augur> what does `learn do 01:49:23 <monqy> `? augur 01:49:24 <HackEgo> augur took no cakes. 01:49:38 <monqy> `? elliott 01:49:39 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things? 01:49:44 * Sgeo__ is bored and wants to use VirtualBox for something fun 01:49:46 <monqy> oh right that entry 01:49:48 <monqy> `? sgeo 01:49:50 <HackEgo> sgeo? ¯\(°_o)/¯ 01:49:57 <monqy> `? itidus20 01:49:58 <HackEgo> itidus20? ¯\(°_o)/¯ 01:50:12 <Sgeo__> `learn add Sgeo hi 01:50:14 <HackEgo> I knew that. 01:50:17 <Sgeo__> ..? 01:50:21 <monqy> `? Sgeo 01:50:22 <HackEgo> Sgeo? ¯\(°_o)/¯ 01:50:23 <Lymee> `? HackEgo 01:50:24 <Sgeo__> `? add 01:50:25 <HackEgo> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. 01:50:26 <HackEgo> add Sgeo hi 01:50:45 <monqy> lets just leave that there 01:51:42 <elliott> Sgeo__: What on earth made you think that was the syntax 01:51:52 <elliott> `karma- Sgeo 01:51:54 <HackEgo> Sgeo has 0 karma. 01:51:57 <elliott> GAH 01:51:58 <elliott> `karma- Sgeo 01:52:00 <HackEgo> Sgeo has 0 karma. 01:52:01 <Sgeo__> Having vague recollections of Rodney 01:52:02 <elliott> I must fix that :P 01:52:12 <elliott> `cat bin/karma- 01:52:13 <HackEgo> ​#!/bin/sh \ lib/adjustkarma "$1" -1 \ 01:52:22 <elliott> `cat lib/adjustkarma 01:52:24 <HackEgo> ​#!/bin/sh \ thing=$(echo "$1" | tr A-Z a-z) \ newkarma=$(($(cat "karma/$thing" 2>/dev/null) $2)) \ if [ $newkarma -eq 0 ]; then \ rm "karma/$thing" 2>/dev/null \ else \ echo $newkarma >"karma/$thing" \ fi \ karma "$1" \ 01:52:28 <elliott> Hey Gregor, fix it 01:52:40 <itidus20> `learn will demonstrate to sgeo the syntax. 01:52:42 <HackEgo> I knew that. 01:52:42 <elliott> `run echo $(($(cat /dev/null) -1)) 01:52:43 <HackEgo> ​-1 01:52:45 <itidus20> `? will 01:52:46 <HackEgo> will demonstrate to sgeo the syntax. 01:52:49 <elliott> `forget will 01:52:51 <HackEgo> Forget what? 01:53:06 <elliott> Oh hmm 01:53:06 <Sgeo__> itidus20, it wasn't exactly hard to figure out after `? add 01:53:16 <elliott> `run [ -1 -eq 0 ]; echo $? 01:53:18 <HackEgo> 1 01:53:23 <elliott> Hmm 01:53:27 <elliott> `cat karma/Sgeo 01:53:28 <HackEgo> cat: karma/Sgeo: No such file or directory 01:53:29 <elliott> `cat karma/sgeo 01:53:30 <HackEgo> ​-2 01:53:33 <itidus20> `learn easy is figuring out the syntax of the learn command. 01:53:34 <elliott> `karma+ sgeo 01:53:34 <HackEgo> I knew that. 01:53:35 <elliott> shrug 01:53:36 <HackEgo> sgeo has -1 karma. 01:53:43 <elliott> `forget easy 01:53:45 <HackEgo> Forget what? 01:53:53 <elliott> `ls karma 01:53:54 -!- augur has quit (Remote host closed the connection). 01:53:54 <HackEgo> sgeo 01:53:59 <elliott> `ls wisdom 01:54:01 <HackEgo> add \ augur \ c \ elliott \ everyone \ finland \ friendship \ gregor \ hackego \ haskell \ intercal \ monad \ monads \ monqy \ oerjan \ qdb \ qdbformat \ shachaf \ u \ vorpal \ welcome \ wiki 01:54:06 <monqy> `run echo what > karma/monqy 01:54:07 <HackEgo> No output. 01:54:09 <monqy> `karma monqy 01:54:10 <HackEgo> monqy has what karma. 01:54:15 <elliott> `rm karma/monqy 01:54:16 <HackEgo> No output. 01:54:44 <itidus20> `? everyone 01:54:45 <HackEgo> Everyone in here is mad. 01:54:48 <Sgeo__> `run echo stolen elliotts karma >> karma/sgeo 01:54:49 <HackEgo> No output. 01:54:55 <Sgeo__> `karma sgeo 01:54:56 <HackEgo> sgeo has -1 \ stolen elliotts karma karma. 01:55:10 <Sgeo__> derp 01:55:15 <itidus20> `forget everyone 01:55:16 <HackEgo> Forget what? 01:55:37 <shachaf> `cat wisom/shachaf 01:55:38 <HackEgo> cat: wisom/shachaf: No such file or directory 01:55:43 <Gregor> Wow 01:55:44 <Sgeo__> wisom 01:55:53 <elliott> `rm karma/sgeo 01:55:55 <HackEgo> No output. 01:56:00 <elliott> `karma- sgeo 01:56:01 <Sgeo__> Woo! 0 karma again! 01:56:01 <elliott> Gregor: Wow what 01:56:01 <HackEgo> sgeo has -1 karma. 01:56:02 <Sgeo__> Damgit 01:56:12 <elliott> `learn Everyone in here is mad. 01:56:13 <HackEgo> I knew that. 01:57:02 <itidus20> `learn ievan is basically http://www.youtube.com/watch?v=4om1rQKPijI 01:57:04 <HackEgo> I knew that. 01:57:20 <elliott> Can we mark all entries itidus20 adds somehow? 01:57:29 <itidus20> sorry 01:57:37 <itidus20> i can just not add entries 01:57:42 <itidus20> i can do that 01:57:54 <itidus20> i have the self control 01:58:09 <Sgeo__> itidus20, thank you for that video 01:58:20 <elliott> Sgeo__: what 01:58:23 <elliott> itidus20: no they are good entries 01:58:26 <elliott> they just need marking or something 01:58:52 <itidus20> they're not meant to be good really 01:58:52 * Sgeo__ wonders where that old video went 01:59:50 <itidus20> `log itidus `learn 01:59:53 <HackEgo> 2011-09-15.txt:01:59:50: <itidus20> `log itidus `learn 02:00:07 <itidus20> ok.. closer.. 02:00:20 <itidus20> `log <itidus20> `learn 02:00:23 <HackEgo> 2011-09-15.txt:01:52:40: <itidus20> `learn will demonstrate to sgeo the syntax. 02:00:29 <itidus20> `log <itidus20> `learn 02:00:32 <HackEgo> 2011-09-15.txt:01:57:02: <itidus20> `learn ievan is basically http://www.youtube.com/watch?v=4om1rQKPijI 02:00:34 <itidus20> `log <itidus20> `learn 02:00:37 <HackEgo> 2011-09-15.txt:02:00:29: <itidus20> `log <itidus20> `learn 02:00:39 <itidus20> `log <itidus20> `learn 02:00:40 -!- Jafet has quit (Quit: Leaving.). 02:00:42 <HackEgo> 2011-09-15.txt:02:00:39: <itidus20> `log <itidus20> `learn 02:00:44 <itidus20> `log <itidus20> `learn 02:00:48 <HackEgo> 2011-09-14.txt:23:01:30: <itidus20> `learn Esoteric is an abbreviation for Esoteric Programming Languages as contrasted with Esoteric languages such as lojban and klingon and contrasted with the occult, however those topics may well be compatible with each other .. according to itidus20 02:00:59 <itidus20> `log <itidus20> `learn 02:01:02 <HackEgo> 2011-09-15.txt:02:00:44: <itidus20> `log <itidus20> `learn 02:01:05 <itidus20> `log <itidus20> `learn 02:01:08 <HackEgo> 2011-09-15.txt:02:00:39: <itidus20> `log <itidus20> `learn 02:01:24 <itidus20> `pastelogs <itidus20> `learn 02:01:28 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.8173 02:01:54 <itidus20> but 'everyone' was someone elses words 02:02:56 <itidus20> i forgot esoteric because of: 02:03:02 <itidus20> `pastelogs esperanto 02:03:06 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19927 02:05:37 <elliott> `log friend 02:05:40 <HackEgo> 2011-09-13.txt:20:28:48: <Taneb> One of my friends lives there 02:06:22 -!- Jafet has joined. 02:07:06 <itidus20> i don't know why i even made that post 02:08:35 <elliott> `run mv canary pigeon 02:08:36 <HackEgo> No output. 02:13:26 <itidus20> i wonder if foreign music is more enjoyable _because_ of not knowing what the words mean 02:15:32 <Gregor> itidus20: I can tell you that English opera is about the worst thing. 02:15:38 <Gregor> itidus20: But also that Italians like Italian opera. 02:15:38 <elliott> s/English // 02:15:46 <Gregor> Sooooooooo I think that English is just terrible. 02:15:53 <itidus20> yeah 02:16:07 <itidus20> and the language is terrible too 02:17:18 <itidus20> it's this new english that's the problem 02:17:24 <oklopol> have you heard french? now there's a language made of poop 02:17:39 <oklopol> american english is beautiful 02:18:12 <itidus20> hmm 02:19:03 <oklopol> italian is nice enough 02:19:40 <itidus20> theres definitely politics in languages 02:21:22 -!- augur has joined. 02:21:34 <itidus20> like a history told through where parts of the language have been borrowed or stolen 02:31:56 <elliott> oklopol: one line biography of you plz 02:32:41 <pikhq> <oklopol> \n 02:32:48 <Gregor> pikhq: YOU TOO 02:33:07 <elliott> no pikhq is uninteresting only oklopol needs biographising 02:33:19 <Gregor> `learn pikhq took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible. 02:33:21 <HackEgo> I knew that. 02:33:31 <pikhq> :D 02:33:41 <elliott> `forget pikhq 02:33:42 <HackEgo> Forget what? 02:33:44 * pikhq takes forty cakes. 02:33:46 <elliott> `learn Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible. 02:33:48 <HackEgo> I knew that. 02:33:56 * Sgeo__ ponders doing the Maybe monad in .NET via reflection 02:33:57 <Sgeo__> >.> 02:33:57 <Gregor> I find this 100% acceptable. 02:34:02 <pikhq> I'm taking 40 cakes. That's as many as four tens. And that's terrible. 02:34:06 <Sgeo__> Or, well, not sure if it would actually be nice and monadic 02:35:30 <Gregor> pikhq: Sorry, he erased that TRUISM from history. 02:35:52 <elliott> oklopol 02:35:52 <elliott> biographise 02:36:44 <oklopol> as if i'd write my own biography 02:37:27 <oklopol> now that would just be douchy. i'm gonna pay someone to do it for me. 02:37:31 <Gregor> `learn oklopol okokoko okloklokoko kokoko oko kook 02:37:32 <HackEgo> I knew that. 02:37:57 <oklopol> Gregor: how much do you charge? 02:38:11 <Gregor> oklopol: Sexual favors are my only accepted form of payment. 02:38:27 <oklopol> Gregor: i'll get back to you later 02:38:28 <elliott> `learn oklopol is one of the two citizens of Finland. He doesn't drive the bus. 02:38:30 <HackEgo> I knew that. 02:39:03 <Sgeo__> http://gbracha.blogspot.com/2011/01/maybe-monads-might-not-matter.html I'm starting to wonder if I should lose a bit of faith in Bracha 02:39:41 <aspect> he doesn't even mention burritos! 02:39:43 <Sgeo__> Or I should just read his replies to the criticism instead 02:40:34 <elliott> "The most important practical contribution of monads in programming is, I believe, the fact that they provide a mechanism to interface pure functional programming to the impure dysfunctional world." 02:40:35 <elliott> ahahaha 02:41:31 <Sgeo__> When criticised for that in the comments, he re-emphasizes practical 02:42:02 <elliott> if you think that makes that statement make any more sense 02:42:08 <elliott> then you're as ignorant as him 02:43:12 <elliott> wow, lot of high-profile folks in the comments telling him he's wrong there 02:43:30 <elliott> sigfpe, tony morris, someone who i assume is lennart augustsson 02:43:48 <pikhq> Funny, I always felt that monadic IO was almost tangential to the niceness of the abstraction. 02:43:56 <elliott> kmett... it's like #haskell descended at once :D 02:44:12 <elliott> oh i suspect chris smith is cdsmith 02:44:27 <oklopol> i had a dream that i showered. now i have to shower again. 02:44:30 <oklopol> fuck 02:44:51 <elliott> Carl said... 02:44:51 <elliott> Some researchers put forth the thesis that monads could help with concurrency. At this point, it looks like their thesis has failed. 02:44:51 <elliott> The Actor model (e.g. see ActorScript(TM) extension of C sharp (TM), Java(TM), and Objective C(TM)) is a better foundation for concurrency than monads. 02:44:52 <elliott> (TM) 02:44:55 <elliott> (TM) (TM) (TM) 02:45:31 <pikhq> What the what? 02:45:47 <Gregor> ™™™™™™™ 02:45:48 <elliott> (TM) 02:45:49 <elliott> (TM) (TM) (TM) 02:45:49 <pikhq> I'm pretty sure actors are monadic. 02:46:01 <oklopol> but that is irrelevant, they say 02:46:19 <Gregor> Actors™ are Mo®onic. 02:46:30 <Sgeo__> This is the first I'm learning of an actor-monad connection 02:46:32 <Sgeo__> I don't get it 02:46:51 <aspect> it starts like this: Actors like burritos ... 02:47:06 <elliott> Actors honestly have to be the stupidest idea in computing yet. 02:47:08 <elliott> Stupider than objects. 02:47:24 <elliott> It takes something special to reinvent functions and claim they solve concurrency. 02:47:40 <aspect> no, that's Agents 02:47:44 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 02:48:17 <elliott> aspect: Well, OK, CS. 02:49:18 <aspect> ok I'll give you that 02:49:35 <aspect> "the stupidest idea in CS" is a pretty high accolade though 02:50:04 <aspect> it's not as though the field has experienced a shortage of stupid ideas for the past 30 years 02:51:41 -!- DH____ has quit (Read error: Connection reset by peer). 02:52:18 <elliott> aspect: Well, OK, stupidest idea that more than a hundred people have taken really seriously. :p 02:52:35 <elliott> Can I not even make bold statements on IRC without being challenged any more?!?!?! 02:52:48 <Gregor> See: STM 02:53:21 <elliott> Gregor: What's that meant to mean :P 02:53:37 <elliott> STM is a reinvention of functions? 02:54:00 <Gregor> No 02:54:10 <Gregor> STM is also way up there for worst possible ideas :P 02:54:21 <elliott> Whyso 02:54:36 -!- Jafet has quit (Quit: Leaving.). 02:54:42 <elliott> Obviously it doesn't work very well in languages with mutability and the like, but in functional languages it works pretty great for shared-state concurrency 02:55:18 <elliott> Certainly it seems to work fine for most people in Haskell 02:57:46 <elliott> Gregor: I see :P 02:58:13 * Gregor reappears. 02:58:35 <itidus20> ok i see what i need to research next] 02:58:49 <Gregor> So, it only works in places that get around the fact that it's hilariously, untenably slow by not using it much :P 02:59:16 <itidus20> Historically, some mathematicians can be regarded as having foreseen and come close to a modern formulation of the concept of function. Among them is Oresme (13231382) . . . In his theory, some general ideas about independent and dependent variable quantities seem to be present. 02:59:20 <elliott> Gregor: What makes you say it slow; I know the worst-case is pretty bad, but to my knowledge GHC's implementation performs pretty great in practice 02:59:33 <elliott> And people use algorithms with terrible worst-cases all day with no problems 02:59:47 <elliott> s/it/it's/ 03:00:21 <itidus20> As a mathematical term, "function" was coined by Gottfried Leibniz, .. ok so thats the etymology 03:02:35 <itidus20> i can see this is not something wikipedia will answer for me 03:04:31 <elliott> Gregor: Hokay :P 03:06:01 <itidus20> "Descartes (1596-1650) clearly stated that an equation in two variables, geometrically represented by a curve, indicates a dependence between variable quantities." good for him, the showoff 03:07:33 <elliott> Gregor's IRC client uses STM, that's why his typing is so slow. 03:07:57 <Sgeo__> How do I misread a book that badly? Failing to notice that a character was in her bedroom, and thinking she fell asleep on the bus 03:09:58 <Gregor> Why do these C students think that if they just email us the code for their homework, we'll fix it for them and send it back >_< 03:09:59 <Gregor> WHYYYY 03:10:25 <elliott> Gregor: Should I stop waiting for a reply? :p 03:10:30 <Gregor> Now then, elliott: The "best case" for STM is not accessing any shared state, in which case it's effectively free, but the overhead of accessing any state at all is huge (it has to log everything) 03:11:02 <elliott> Sure, it has to log it, that's kind of the whole point. That's very different from a demonstration that STM is slow in practice. 03:11:15 <Gregor> Oy vey. 03:11:33 <Gregor> OK, let me go drag out a giant friggin' benchmark suite and compare it to hell knows what :P 03:11:36 <elliott> Plenty of things "sound" slow but work just fine in practice. 03:12:09 <elliott> But seriously, if STM was fundamentally unworkably slow, I think all the people working on and using GHC STM over the years would have noticed :P 03:12:40 <Gregor> So, show me the Haskell benchmarks where they implemented something (non-stupidly) with locks and with STM, and STM was faster *shrugs* 03:12:53 <Gregor> (Obviously you could serialize everything and go "Look! STM is faster!") 03:13:06 <elliott> Dunno of any; if I were the snarky type, I would say that everyone was too busy using them to bother :P 03:13:13 <elliott> Gregor: But no, I never claimed STM was faster than locking. 03:13:19 <itidus20> so it seems to me a nand gate could be implemented by defining 1 as a closed valve, and 0 as an open valve 03:13:44 <itidus20> err wait no that doesn't 03:13:52 <itidus20> d'oh 03:14:06 <Gregor> elliott: In every benchmark in languages that you have invalidated for having too much shared state anyway (a valid concern), the overhead has been lolhuge. 03:14:08 <itidus20> actually yeah 03:14:28 <elliott> Gregor: I don't consider locking concurrency to even be an option, it's just not a viable way to program. Certainly a locking program will generally be faster in general, but it's about balancing "humans can actually use this shit" and "it performs well". 03:14:48 <elliott> Gregor: And yeah, that's the exact reason I discounted languages with traditional state models :P 03:15:53 <elliott> I haven't used STM myself so certainly I'm not gonna claim to be any kind of expert. 03:16:08 <Gregor> But that being said, STM for Haskell isn't fundamentally different from STM for anything else except insofar as Haskell has so little state that you'd barely touch the STM. Which is to say, you may very well be getting 500% slowdown but never know it because that 500% is in the 2% of code that actually touches state. That is, until you run it on 100 cores. 03:16:09 <elliott> But certainly lots of things on Hackage use STM and I haven't seen any whining about it. 03:16:33 <elliott> Gregor: "Haskell has so little state" -- well this is bullshit. 03:16:39 <Gregor> *shared state 03:16:55 <elliott> Yes, but the WHOLE POINT of STM is to manage shared state :P 03:17:02 <elliott> Like, if you have unnecessary shared state in another language... that's just a bug. 03:17:11 <elliott> The amount of state you need to share is independent of language. 03:17:18 <Gregor> In other languages, you have state that it doesn't know is not shared. 03:17:24 <Gregor> So it has to log it, 'cuz wtf does it know. 03:17:35 -!- copumpkin has joined. 03:17:40 <Gregor> (As a slight generalization :P ) 03:18:00 <elliott> Gregor: So what you're saying is, "if your program is entirely made out of modifications to a huge gob of shared state, STM will be slower than locks". 03:18:19 <elliott> But seriously, how many programs are like that? 03:18:24 <elliott> And how many of them actually benefit from concurrency? 03:18:28 <Gregor> Why are you so fucking argh 03:18:30 <elliott> The kind of locking you'd have to do anyway would be hellish. 03:18:38 <Gregor> No, what I'm saying is, if STM considers your heap to be shared state, which it usually does, then STM will have to log all sorts of ridiculous shit. 03:19:05 <Gregor> But since it DOESN'T in Haskell, due to the nature of state being so defined there anyway, it can get away with much more cleverness. 03:19:06 <elliott> Yeah, well, that's just a criticism of implementing STM idiotically. 03:19:17 <elliott> What I was trying to say is -- 03:19:24 <Gregor> HOWEVER even that cleverness won't help you when you get to enough cores that that sharing is all bunched together again. 03:19:27 <elliott> "STM is slow but maybe it doesn't show up because you don't have much shared state." 03:19:46 <elliott> is an entirely worthless comment, since it doesn't matter how slow it is to run a bajillion STM operations if you don't NEED a bajillion STM operations. 03:19:49 <Gregor> Yes, that's what I'm saying, but with the giant friggin' caveat that how much it shows up scales with the number of cores. 03:20:20 <elliott> Gregor: I kind of have my doubts that locks will scale up to a hundred cores either... 03:20:44 <elliott> Once your computation is made trivial by the amount of iron you have, by definition you're spending all your time doing busywork bookeeping. 03:20:50 <elliott> s/bookeeping/bookkeeping/ 03:21:57 -!- MDude has changed nick to MSleep. 03:22:28 <Gregor> STM works under the assumption that conflicts are rare. When conflicts occur, sadness (very bad performance and serialized execution) happens. As you scale up your cores, your chance of conflicts scales up, but the amount of time to fix a conflict does not scale down. 03:22:54 <Gregor> Eventually you're at 100% conflicts, and sequentializing everything, because you have too many cores. 03:22:57 <elliott> Gregor: Locks work under the assumption that conflicts are rare. When conflicts occur, sadness happens. Blah blah blah. 03:23:03 <elliott> I mean, sure, I agree. 03:23:03 <Gregor> Wrong. 03:23:18 <Gregor> The sadness of lock contention at least scales considerably better. 03:23:51 <Gregor> Classically, when STM conflicts occur, it retries. But this causes livelock in approximately 100% of all systems ever. So instead, when conflicts occur, it explicitly sequentializes them. 03:23:51 <elliott> This is basically just the "worst case O(n), real-world n=not many" thing again :P 03:24:09 <elliott> I think GHC actually retries. 03:24:12 <elliott> Don't quote me on that. 03:24:27 <Gregor> Oh, so even better, as cores scales up, chances of livelock approaches 100% :P 03:24:49 <elliott> Pretty sure someone will have thought about that at some point in time :P 03:25:01 <Gregor> Yes, they have. That's why they sequentialize when things fail. 03:25:09 <elliott> I mean someone=GHC developers. 03:25:27 <Gregor> OK, then it sequentializes when things fail :P. Maybe not on first failure, but eventually. 03:25:46 <elliott> Well, I'm definitely not gonna claim STM scales to a hundred cores. 03:25:50 <elliott> But I don't think locks will either. 03:26:12 <elliott> I don't know what will. But I'm also gonna claim that most concurrent programs are not run on a hundred cores today, or within four years :P 03:26:20 <itidus20> "<itidus20> so it seems to me a nand gate could be implemented by defining 1 as a closed valve, and 0 as an open valve" i drew a picture http://oi51.tinypic.com/315zlp2.jpg 03:26:23 <Gregor> Welllllll, my belief is that our current status w.r.t. concurrency is "we're so fucked" 03:26:46 <Gregor> However, the speedup curve of locks should at least be monotonic. 03:26:59 <Gregor> Just ... plateauy. 03:27:01 <elliott> Gregor: Yeah, but humans can't program lock-based systems, so it's kind of irrelevant. 03:27:18 <elliott> I mean, we can sometimes make it work now, but when you actually have a hundred cores going, our chances of getting it right are approximately 0. 03:27:25 <Gregor> That's also true :) 03:27:44 <Gregor> OK, I'll revise my former statement as such: 03:27:47 <Gregor> See: concurrency 03:27:52 <Gregor> Hahaha *stabs self* 03:28:03 <elliott> I concur :P 03:29:29 <elliott> Here's a wild, unjustified prediction: RAM is getting really cheap. Soon, our computers will have so much RAM that the best concurrency strategy involves treating the computer like a mini-internet, and just having each thread keep its own copy of the state, with explicit "database server" threads handling merging of state whenever an outside entity wants to query the current relevant state. 03:29:29 <itidus20> what wirth failed to understand in his comment the other day is that things operate on multiple levels 03:29:38 <itidus20> order can operate above a level of chaos 03:30:02 <elliott> That obviously doesn't work when you have a bunch of threads reading the writes of other threads as they happen, but I don't think that's a very common situation. Also this is a wild, unjustified prediction, so I don't have to care about that. 03:30:09 <itidus20> software operates on hardware 03:30:17 <Gregor> elliott: Sooooooooooooo ... ACTORS? 03:30:20 <itidus20> stateless operates above state 03:30:34 <elliott> Gregor: Har har har :P 03:30:51 <elliott> Gregor: It's... not quite the same thing. I mean, sure, you could implement that with actors. 03:31:04 <elliott> But the point is that on some level shared state fundamentally doesn't scale. 03:31:30 <elliott> But the internet does seems to scale, and it's based on tons of systems with their own private state that synchronise it explicitly when necessary. 03:31:33 <Gregor> A level described by Amdahl :P 03:31:45 <Gregor> The Internet is not a computation. 03:31:50 <itidus20> i am of course thinking of the tcp stack 03:31:54 <Gregor> (I'm gonna regret saying that) 03:31:58 <elliott> Gregor: It's a substrate on which plenty of computations take place. 03:32:02 <elliott> So are operating systems. 03:32:04 <itidus20> Gregor: maybe it is? 03:32:11 <itidus20> :)) 03:32:27 <elliott> Gregor: The basic problem with all this is that you end up with literally thousands of copies of the same basic state with only small parts changed :P 03:32:32 <itidus20> says aloud "no how can it be" 03:32:39 <elliott> And you can't make it copy-on-write, because that reintroduces ALL THE SAME LOCKING PROBLEMS that you just got rid of. 03:32:47 <elliott> (OR DOES IT???? Yeah it probably does.) 03:33:04 <Gregor> Naw, it has considerably less locking problems, but is also nasty. 03:33:08 <elliott> But hey, if you have a hundred gigs of ram, maybe it all works out. 03:33:13 <elliott> God I hope it does. 03:33:25 <elliott> Gregor: OK, here's an idea. 03:33:30 <elliott> How about we all switch to smartphones with one core. 03:33:35 <elliott> And forget threads ever existed. 03:33:39 <elliott> Let's just... pretend. 03:33:43 <Gregor> SOUNDS GOOD 03:33:47 <itidus20> what about positioning stateless programming in the computer architecture? 03:33:53 <elliott> THEN IT'S SORTED 03:33:56 <elliott> itidus20: Reduceron 03:34:01 <elliott> Reduceron reduceron reduceron reduceron 03:34:35 <itidus20> i think by the time you get to 4th generation apps like sql (?) the path is lost 03:34:43 <itidus20> but maybe it fits in somewhere 03:35:25 <itidus20> hehdiuewhudiehwui 03:35:35 <elliott> Gregor: Wow I hate you, I had gone whole days without thinking about concurrency. 03:35:38 <itidus20> what do i know.. that topic is too hard 03:36:17 <itidus20> elliott: what about minecraft being played by the elderly 03:36:21 <oklopol> so i hear these blogs are getting popular, people like writing about their lives and shit. on this thing called the internet which is like a neural network only really stupid. 03:36:25 <elliott> itidus20: wat 03:36:27 <Gregor> elliott: TEEHEE 03:36:43 <itidus20> its an attempt to distract you 03:36:58 <oklopol> i tried too 03:37:07 <elliott> ?learn oklopol "so i hear these blogs are getting popular, people like writing about their lives and shit. on this thing called the internet which is like a neural network only really stupid." 03:37:07 <lambdabot> http://www.haskell.org/learning.html 03:37:08 <oklopol> this was all too complicated for me 03:37:09 <itidus20> horny 60 year olds having cybersex in minecraft 03:37:12 <elliott> `learn oklopol "so i hear these blogs are getting popular, people like writing about their lives and shit. on this thing called the internet which is like a neural network only really stupid." 03:37:14 <HackEgo> I knew that. 03:37:19 <elliott> `? itidus20 03:37:21 <HackEgo> itidus20? ¯\(°_o)/¯ 03:37:27 <elliott> `learn itidus20 is horny 60 year olds having cybersex in minecraft 03:37:29 <HackEgo> I knew that. 03:37:32 <elliott> I hope you like your new biographies 03:37:37 <itidus20> i do 03:37:48 <oklopol> i am 03:37:54 <elliott> Gregor: Say... isn't HackEgo's concurrency mechanism kinda like STM? :D 03:37:58 <itidus20> i uhh 03:38:00 <elliott> (Note: KIND OF.) 03:38:16 <itidus20> elliott: "<itidus20> so it seems to me a nand gate could be implemented by defining 1 as a closed valve, and 0 as an open valve" i drew a picture http://oi51.tinypic.com/315zlp2.jpg 03:38:28 <elliott> It logs the changes all the threads make, then cancels the vast majority of them :P 03:38:30 <itidus20> distraction #2 03:38:38 <elliott> itidus20: It is beautiful. 03:38:55 <Gregor> elliott: Nope, it's more like COW. 03:39:02 <itidus20> i can't quite see it as a complete system though 03:39:24 <elliott> Gregor: Why didn't you want to make HackEgo locking-based, again? 03:39:28 <itidus20> like i wouldn't know how to take those pieces and make a computer 03:39:45 <Gregor> elliott: Because it was never a question of concurrency, it was a question of atomicity. 03:40:03 <elliott> Gregor: Okay, now pretend I'm three years old. 03:40:24 <Gregor> elliott: I hear Barney! Barney's on the tellie! Hooray! 03:40:35 <elliott> Gregor: WHY WON'T YOU MAKE HACKEGO SEQUENTIAL 03:40:53 <Gregor> So that people can't DoS it just by 03:40:55 <Gregor> `sleep 29 03:41:11 <elliott> Gregor: `kill :P 03:41:25 <Gregor> Ew 03:41:25 <HackEgo> No output. 03:41:35 <elliott> Gregor: You mean like EgoBot used to have? :P 03:42:02 <elliott> You could hook in to open() and have it block if there's a conflict. 03:42:04 <elliott> And still run them concurrently. 03:42:09 <elliott> That's probably a pain with UMLBox though :P 03:42:16 <Gregor> That's a pain any which way. 03:42:34 <elliott> Not really with LD_PRELOAD. 03:42:53 <Gregor> I mean implementation :P 03:42:59 <Sgeo__> GIVE ME AN ESOTERIC OPERATING SYSTEM TO RUN IN VIRTUALBOX 03:43:06 <elliott> Gregor: Weeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeell 03:43:06 <Gregor> Sgeo__: ... ... ReactOS? 03:43:09 <itidus20> what is an esoteric operating system? 03:43:10 <elliott> It's not that hard, you just need some shared state :P 03:43:16 <elliott> It would be nice though. 03:43:23 <elliott> If I implement it will you add it? :P 03:44:35 <Gregor> If it's nonterrible. 03:44:42 <Gregor> But I am the sole judge of nonterrible. 03:44:45 <elliott> Sgeo__: I have vague plans for one but I am so lazy. 03:44:48 <elliott> Sgeo__: @ :P 03:44:54 <elliott> (Not the one I have plans for.) 03:45:09 <elliott> Gregor: How do you even implement the current system? Copying the whole state before running anything? 03:45:37 <Sgeo__> elliott, if it was implemented in such a way that I could download it, I would 03:45:37 <Gregor> hg clone 03:45:40 <Sgeo__> In a heartbeat 03:45:43 <itidus20> Gregor: directnet is a good idea. 03:45:49 <elliott> Sgeo__: What, @? 03:45:51 <Gregor> itidus20: It /was/ a good idea! :P 03:45:54 <elliott> Gregor: So, yes, it copies the whole state first :P 03:45:54 <Sgeo__> Yes 03:46:06 <Gregor> elliott: Yeah, I was just being specific in the means by which it does this. 03:46:31 <Gregor> elliott: I believe, by the way, that UML has a COW hostfs option, which I've considered adding support for to UMLBox. 03:46:33 <itidus20> i was in another chatroom the other day arguing that internets made entirely of wifi routers should be built 03:46:50 <elliott> Gregor: It really is a pain to do this and still keep the hg history stuff, isn't it >_> 03:46:58 <Gregor> itidus20: Add the word "rogue" and it'll become a good plan. 03:47:05 <itidus20> considered the farmer problem though 03:47:05 <Gregor> elliott: Why yeeeeeeeeeeeees! 03:47:12 <elliott> Gregor: OH WAIT 03:47:14 <itidus20> a farmer's wifi router is too remote 03:47:21 <elliott> Gregor: It's actually quite easy, because hg and git use the same terrible history-blind model. 03:47:41 <itidus20> and uh.. someone mentioned mesh-nets which i hadn't heard of before 03:47:58 <Sgeo__> As is, say, a British router from a router in, say, anywhere on the East Coast of the US 03:48:12 <Sgeo__> Which means I would no longer be a participant in this channel... 03:48:14 <Sgeo__> Oh crud 03:48:21 <elliott> Gregor: On open(): Consult the global table. If there's already this filename open in another thread, block until it's closed. Then, insert this thread into the table as having the file open. Then, /copy the file/ from that thread's FS to this one, and go on to the usual open() path. 03:48:33 <itidus20> but the problem that you can see a list of people with your wifi antenna but not communicate with them trivially is a tough one.. is it bad for privacy or good for society 03:48:34 <elliott> Sgeo__: What? 03:48:48 <Sgeo__> You lot would prefer that 03:48:54 <elliott> I have no idea what you are talking about. 03:48:55 <itidus20> im raambling aye aye 03:49:18 <Sgeo__> elliott, if I couldn't get to this channel 03:49:22 <elliott> Gregor: The only problem there is handling other FS operations like moving and unlink and the like :P 03:49:26 <elliott> But that handles open() perfectly, I think. 03:49:42 <elliott> And doesn't wait for the entire other command to finish or anything. 03:49:49 <Sgeo__> Due to separate Eurasian and American internets 03:50:21 <Gregor> elliott: If you don't wait for the other command to finish, you've gotten rid of atomicity. Which, frankly, is fine for this, but there are much simpler solutions that get rid of atomicity. 03:50:40 <elliott> The concurrency primitive you need is just... oh, it's just a box with a value in it; all you need is f(box,nevwal): block until this box is empty, insert newval into the box, and return the old value in the box. 03:50:56 <elliott> Gregor: What's a simpler solution that gets rid of atomicity? 03:51:02 <elliott> And really, it would be fine to block until the other revision changed too. 03:51:10 <elliott> It would only cause thirty-second waits in really pathological cases. 03:51:57 <Gregor> elliott: Copy-on-open. 03:52:15 <Gregor> (And don't copy while a commit is occurring) 03:52:16 * Sgeo__ opens ReactOS 03:52:18 <itidus20> elliott: as they asked ron gilbert when he was making maniac mansion... does he really need to use the word shithead? they sent him off to think about it 03:52:26 <itidus20> he came back and settled on the word tunahead 03:52:38 <Sgeo__> Text on buttons is very broken 03:52:41 * Sgeo__ boggles 03:52:47 <elliott> Gregor: That still leads to e.g. two addquotes at the same time causing an hg conflict. 03:53:03 <itidus20> now what i am thinking is you need to consider will you really enjoy hackbot more if the proposed changes are implemented? 03:53:15 <elliott> itidus20: Yes. 03:53:18 <Gregor> itidus20: elliott will :P 03:53:24 <elliott> It's really annoying having the conflicts. 03:53:33 <Gregor> elliott: Oh you're right. Both are nonatomic, but yours is atomic over individual files *shrugs* 03:53:52 <itidus20> oops hackego 03:53:55 <elliott> Gregor: But yeah OK, here's a simpler, atomic system: 03:54:22 <Lymee> `run echo *hugs elliott* 03:54:24 <HackEgo> ​*hugs elliott* 03:54:37 <elliott> Gregor: On open(): Consult the global table. If there's already this filename open in another thread, block until that thread completes, then restart this command starting from that new revision. 03:54:40 <elliott> Gregor: ...oh my god, it's STM. 03:54:46 <elliott> That was completely unintentional :P 03:54:59 <elliott> And s/already this filename open/this filename was open ever in another thread/ 03:55:04 <elliott> But w/e, I understand it in my head :P 03:55:11 <Gregor> Thou shalt not STM :P 03:55:32 <elliott> Gregor: This is actually a good system though >_> 03:55:45 <elliott> Gregor: It's basically "do things sequentially whenever there's a conflict, otherwise be fully concurrent". 03:55:50 <elliott> And that actually works for HackEgo :P 03:57:07 * Sgeo__ cannot imagine anything like Active Worlds running well on ReactO 03:57:09 <Sgeo__> ReactOS 03:57:14 <elliott> Sgeo__: it's just wine: the os 03:57:26 <oklopol> how about multicore concurrency where only one processor works at a time and the others just like stretch and shit so they'll be faster when their turn comes 03:57:27 <elliott> Gregor: So how non-terrible is that eh eh eh :P 03:57:31 <elliott> oklopol: good 03:58:02 <itidus20> so my system would be good for implementing N-ary NAND gates 03:58:23 <pikhq> Sgeo__: It is quite literally WINE with a kernel. 03:58:37 <oklopol> itidus20: cool, i think that's actually an open problem 03:58:49 <itidus20> oklopol: http://oi51.tinypic.com/315zlp2.jpg 03:58:50 <Gregor> pikhq, Sgeo__: Only, with worse software support. 03:58:54 <itidus20> this is what i am talking about 03:58:57 <Sgeo__> Well, the version of WINE that the latest ReactOS is based off of has trouble displaying text 03:59:00 <elliott> Gregor: Eh eh eh eh eh eh eh eh :P 03:59:10 <elliott> I honestly will implement this given approval, I'm sick and tired of conflicts :p 03:59:32 <Sgeo__> "It is now safe to turn off your computer" 03:59:35 <oklopol> are you making a liquid computer? 03:59:49 <itidus20> oklopol: it is just an idea... i am wondering how far it could go 03:59:58 <elliott> Hmm, there's /one/ bad feature of it: If you send off two delquotes, one request will go through properly, and the other one will delete a quote off by one from the one you were trying to delete. 04:00:06 <elliott> The merge case actually handles that correctly, usually. 04:00:08 * Sgeo__ vaguely ponders whether VirtualBox Tools (I don't remember the real name) will help any 04:00:09 <elliott> But ehhhhhh nobody does that 04:00:13 <Gregor> elliott: You haven't actually seen HackEgo's code, have you :) 04:00:20 <elliott> Gregor: Try me :P 04:00:22 <pikhq> Gregor: Well, I think they had to do a manual reimplementation of e.g. user32.dll. 04:00:25 <Gregor> elliott: It's bash. 04:00:38 <elliott> Gregor: I thought it was C. 04:00:45 <Gregor> Only the IRC interface is. 04:00:47 <Gregor> It's multibot. 04:00:53 <elliott> `info 04:00:54 <HackEgo> info: Writing node (dir)Top... \ info: Done. \ File: dir.Node: Top.This is the top of the INFO tree \ This (the Directory node) gives a menu of major topics. \. Typing "q" exits, "?" lists all Info commands, "d" returns here, \ "mCoreutils<Return>" visits Coreutils topic, etc. \ Or click mouse button 2 on a 04:00:57 <elliott> ... 04:00:58 <Gregor> lol 04:01:02 <elliott> `help 04:01:03 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 04:01:12 <Gregor> Remove "fs" from there for hackbot itself. 04:01:21 <elliott> http://codu.org/projects/hackbot/hg/index.cgi/file/6a36bc81753b/multibot_cmds/PRIVMSG/tr_3F.cmd 04:01:24 <elliott> What the fuck is this shit. 04:01:25 <itidus20> oklopol: well i remembered "any gate can be built from nand" so i went to wikipedia, looked at the truth table, and envisioned the picture 04:01:39 <itidus20> but i forget why i did it to begin with 04:01:47 <Gregor> elliott: multibot is an IRC bot that just translates inputs into "run this command kthx" 04:01:59 <elliott> Yeah but what the fuck is this shit :P 04:02:03 <elliott> ?commands 04:02:03 <lambdabot> Unknown command, try @list 04:02:08 <elliott> HmmmmmmmmmmMMMMMMmmmmmmmmmmmmmmmm 04:02:13 <elliott> http://codu.org/projects/hackbot/hg/index.cgi/file/6a36bc81753b/multibot_cmds/PRIVMSG/tr_60.cmd 04:02:15 <elliott> Wow this is awful. 04:02:20 <Gregor> elliott: When it receives a line that starts with `, it tries PRIVMSG/tr_60.cmd 04:02:25 <Gregor> elliott: Because ` = hex 60 04:02:32 <elliott> Gregor: I hate that system and I hate you. 04:02:39 <Gregor> (Failing that, it also tries PRIVMSG.cmd) 04:02:53 <Gregor> elliott: It's very versatile :) 04:02:59 <elliott> Also: awful. 04:03:12 <elliott> BTW did you ever install gmp. 04:03:16 <Gregor> You misspelled awesome. 04:03:42 <Gregor> Wasn't I only asked to so that you could go on a ridiculous foolhearted quest to build GHC? 04:04:15 <elliott> Gregor: No, you installed ghc. 04:04:16 <elliott> `ghc 04:04:21 <HackEgo> ghc: no input files \ Usage: For basic information, try the `--help' option. 04:04:23 <elliott> Uh 04:04:24 <elliott> `ghci 04:04:27 <HackEgo> GHCi, version 7.2.1: http://www.haskell.org/ghc/ :? for help \ Loading package ghc-prim ... linking ... done. \ Loading package integer-gmp ... <command line>: can't load .so/.DLL for: libgmp.so (libgmp.so: cannot open shared object file: No such file or directory) 04:04:28 <elliott> Gregor: But the point is, ghc needs gmp :P 04:04:30 <elliott> And you ain't got gmp. 04:04:36 <Gregor> Oh 04:04:41 <elliott> So it's kind of useless :P 04:04:42 <Gregor> I don't recall that request :P 04:04:59 <elliott> 134 # Now commit the changes (make multiple attempts in case things fail) 04:05:00 <elliott> wjw 04:05:30 <pikhq> Gregor: So, I could actually add another escape sequence to HackEgo? 04:05:46 <Gregor> pikhq: multibot_cmds is not part of the environment it exposes to users :P 04:05:48 <elliott> Gregor: I like the part where lib/interp is terrible 04:05:52 <pikhq> elliott: So, the name is appropriate? 04:06:00 <elliott> So, ? 04:06:12 <elliott> Gregor: Sooooooooo will LD_PRELOAD work with umlbox X-D 04:06:13 <pikhq> Gregor: Okay, "Trivially if I had commit access", then. 04:06:23 <elliott> Also do you even use slox here. 04:06:42 <Gregor> elliott: It ought to. 04:06:47 <Gregor> elliott: Nope :) 04:06:54 <pikhq> Gregor: It'd be totally awesome if it were that hackable. 04:07:08 <pikhq> If also probably a bad idea to stick on an IRC channel long-term. 04:07:08 <elliott> Gregor: It ought to? But I thought UML was like... a totally separate system. :x 04:07:31 <Gregor> elliott: It ought to as in it ought to work ... 04:07:49 <Gregor> pikhq: Yes, trivially if you had commit access. I've considered making it that hackable, but decided that the ability to make it barf something to the channel after /every line/ is bad. 04:07:51 <elliott> Gregor: I'M JUST ASKING WHYYYYYY 04:08:04 <Gregor> elliott: ... UML is just a program ... 04:08:16 <elliott> Gregor: OK, let me rephrase. 04:08:23 <pikhq> Gregor: He wants it working inside the sandbox. 04:08:26 <elliott> Gregor: Can I use LD_PRELOAD to override the libc /the program running UNDER UMLBox uses/? 04:08:28 <pikhq> Not *on* the sandbox. 04:08:36 <Gregor> Oh. Sure, of course, why not? 04:08:53 <elliott> Because why would an entirely separate Linux instance use the host libc? 04:09:11 <Gregor> Because /lib is just a hostfs mount of the host's /lib. 04:09:23 <elliott> That's not the same thing as an environment variable :P 04:09:44 <Gregor> I don't see the relevance ... if you set LD_PRELOAD in the child, it will preload. 04:09:58 <pikhq> Is there a way to? 04:10:03 <elliott> OK, I conclude that I can add proper atomic mergeless transactions to HackEgo, but I'm too tired to do it today. 04:10:15 <elliott> pikhq: A way to what? 04:10:32 <Gregor> pikhq: The very file he was complaining about (lib/interp) adds environment variables to the guest :P 04:10:42 <pikhq> Gregor: Okay, then. 04:10:55 <Gregor> Also, excluding comments and blank lines, that file is 6 lines long :P 04:11:04 -!- Zuu has quit (Read error: Connection reset by peer). 04:12:46 <elliott> OK, here's the basic plan: 04:13:35 <elliott> LD_PRELOAD a library which, for every filesystem operation, checks to see if the "dirty files" table (file/whatever) contains the filename mentioned; if so, write out a note "need to restart this command" and kill the process. Otherwise, add it to the dirty files list, and continue as normal. 04:14:16 <elliott> In the bot: After all threads terminate, run all the commands that need to be restarted with the latest hg tree each time, sequentially. 04:14:22 <elliott> Then clear the dirty files list. 04:14:25 <elliott> Tadaaaaaaaaa 04:14:28 <itidus20> elliott, oklopol: here is the improved MK2 model.. actually becoming potentially useful: http://oi56.tinypic.com/kbq1di.jpg 04:14:41 <elliott> Note: Image is NSFW 04:15:16 <itidus20> it still doesn't quite make sense to me but it seems like a good idea 04:15:19 <oklopol> i don't get how that's a nand 04:15:38 <itidus20> my earlier post before you were here was worded thus 04:15:59 <itidus20> "<itidus20> so it seems to me a nand gate could be implemented by defining 1 as a closed valve, and 0 as an open valve" 04:16:01 -!- Zuu has joined. 04:16:42 <itidus20> maybe thats not how it works though.. it might be better to base this on NOR 04:16:53 <itidus20> i have certainly not thought this through and very unlikely that i ever will 04:18:22 <itidus20> yeah.. actually its best forgotten 04:20:11 <itidus20> one element missing from the diagram though is that 2 valves would flow through some kind of funnel onto one pipe-shaped thing 04:20:35 <itidus20> ugh.. time for mk3 04:25:45 <elliott> `log now consider that do-stuff might use a gc'd language 04:25:46 <HackEgo> ​/hackenv/bin/log: line 1: hr.1: command not found \ /hackenv/bin/log: command substitution: line 6: syntax error near unexpected token `.^.P./KD.J{.' \ /hackenv/bin/log: command substitution: line 6: `.v e.f0+HGm{g1;xz7j(.^.P./KD.J{.(r..N(&؈0y}|y.u#T.. 04:25:55 <elliott> Gregor: ... 04:26:17 <Gregor> That's pretty good. 04:26:26 <elliott> ................. 04:26:56 <elliott> ..........??????????????????????? 04:27:03 <elliott> Gregor: ????????????/ 04:27:12 <Gregor> I honestly have no answer for you at all :P 04:27:15 <Gregor> `log that was wtfy 04:27:17 <HackEgo> ​/hackenv/bin/log: line 1: hr.1: command not found \ /hackenv/bin/log: command substitution: line 6: syntax error near unexpected token `.^.P./KD.J{.' \ /hackenv/bin/log: command substitution: line 6: `.v e.f0+HGm{g1;xz7j(.^.P./KD.J{.(r..N(&؈0y}|y.u#T.. 04:27:20 <Gregor> Hmm 04:27:25 <elliott> `cat bin/log 04:27:27 <HackEgo> ​hr.1 \ "R ;WER{n{̍p.s@#.g.\ws.#e-:..m._'m.b.&.A.Y'3U..Dh7R1..`.v e.f0+HGm{g 04:27:29 <Gregor> Hm 04:27:32 <elliott> wow 04:27:37 <elliott> `help 04:27:37 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 04:27:46 <elliott> Sigh 04:27:47 <elliott> Lymee: Fuck off 04:27:54 <elliott> `revert 405 04:27:55 <HackEgo> Done. 04:27:56 <elliott> `log test 04:28:07 <Gregor> `shred --help 04:28:09 <HackEgo> Usage: shred [OPTIONS] FILE [...] \ Overwrite the specified FILE(s) repeatedly, in order to make it harder \ for even very expensive hardware probing to recover the data. \ \ Mandatory arguments to long options are mandatory for short options too. \ -f, --force change permissions to allow writing if necessary \ -n, 04:28:11 <aspect> itidus20: http://www.blikstein.com/paulo/projects/project_water.html 04:28:15 <HackEgo> 2010-05-29.txt:17:04:22: <Mathnerd314> !c printf("test") 04:28:18 <Gregor> ... huh. 04:28:21 <elliott> Gregor: Seriously, please remove Lymee's bot access, she has not once done a single thing to the bots that wasn't abusive 04:28:35 <elliott> And that was in /msg so god knows how long it could have been before someone noticed. 04:28:39 <elliott> It's really irritating. 04:28:51 <Gregor> Fair 'nuff 04:29:15 -!- Zuu has quit (Ping timeout: 244 seconds). 04:30:21 <Gregor> `echo hi 04:30:21 <HackEgo> Mmmmm .... no. 04:30:30 <Gregor> `echo hi 04:30:32 <HackEgo> hi 04:30:32 <Gregor> Done 04:31:05 <elliott> X-D 04:31:07 <itidus20> aspect: before i click i just had to finish off this third diagram: http://oi55.tinypic.com/1231e2b.jpg 04:31:14 <elliott> Gregor: Bug report: Ellipses have three, not four dots 04:31:57 <aspect> I still have no idea how that's a nand 04:32:05 <Gregor> elliott: Fixt. 04:32:44 <itidus20> the theory being that the weight of the water could open the valves 04:33:02 <Gregor> elliott: I'm disappointed that you're not running any commands :P 04:33:03 <elliott> Gregor: Sweeeet 04:33:09 <elliott> `log I know what this will do. 04:33:09 <HackEgo> Mmmm ......................................... no. 04:33:19 <elliott> I guessed correctly. 04:33:22 <Gregor> :P 04:33:29 <elliott> `rm bin/EVERYTHING I WROTE 04:33:31 <HackEgo> rm: cannot remove `bin/EVERYTHING I WROTE': No such file or directory 04:33:40 <elliott> Gregor: Is it just random? X-D 04:33:53 <Gregor> No, I removed you from the blocklist :P 04:34:30 <elliott> :') 04:35:25 <itidus20> aspect: thanks for the link 04:36:03 * Sgeo__ ponders using TinyCore as a desktop 04:36:15 <pikhq> `echo hi 04:36:16 <HackEgo> hi 04:36:22 <elliott> Sgeo__: But how will you run Active Worlds? 04:37:00 <pikhq> elliott: Obviously he'll get a circa '96 Windows machine and a dialup line. 04:44:40 <itidus20> ok final version after spamming the room with it... behold my NAND gate http://oi55.tinypic.com/23sg2ki.jpg 04:46:04 <elliott> !bf_txtgen oklopol 04:46:08 <EgoBot> ​57 ++++++++++[>+++++++++++>+>><<<<-]>+.----.+.+++.+.-.---.>. [319] 04:46:16 <elliott> oerjan got it waaaaaaaaaaaaaaaaaaay lower 04:46:17 <elliott> 10:03:57: <oerjan> ^bf --[>-<-------]>+.----.+.+++.+.-.---. 04:47:19 <itidus20> what a useless thing i have depicted.. 04:50:25 <pikhq> Looks like oerjan just massaged the loop a little bit. 04:50:50 <monqy> itidus20: how is that nand 04:51:15 <itidus20> monqy: well.. a stream of water represents a '0' 04:51:34 <monqy> oh 04:51:44 <itidus20> the stream of water hits the cup and opens the valve.. 04:51:50 <pikhq> Or just did stringout "oklopol" in PEBBLE. 04:51:53 <itidus20> and thus creates another stream 04:51:58 <aspect> where does the water go? 04:52:19 <itidus20> i think there are certain aspects i am overlooking in this design 04:52:31 <itidus20> the water just leaks onto the floor 04:52:32 <pikhq> source ^stdcons.bfm;@ a;@ b;stringout "oklopol" : b a ;# gets that output. 04:52:34 <monqy> it still doesn't look quite like nand to me 04:52:43 <monqy> maybe im confused but 04:52:52 <aspect> it looks more like and to me 04:53:00 <itidus20> maybe 04:53:07 <itidus20> >.< 04:53:22 <itidus20> but well .. 04:54:03 <aspect> or perhaps nor 04:54:04 <itidus20> ignoring 0 and 1 it can be described this way 04:54:25 <monqy> can it? 04:54:26 <aspect> oh cool a logic gate that can be described without reference to 0 or 1 04:54:30 <monqy> what does ignoring 0 and 1 mean 04:54:35 * aspect gets some popcorn 04:54:45 <itidus20> if A recieves water, the gate outputs water. if B recieves water, the gate outputs water. if A and B recieve water, the gate outputs water. if neither A nor B recieve water then the gate does not output water. 04:55:00 <itidus20> ^that is the idea 04:55:07 <monqy> that's the same as 0 and 1 04:55:09 <monqy> with different names 04:55:29 <aspect> you need tiny perforations in the bottom of the tobacco-pipe-shaped-things 04:55:35 <aspect> so the gates don't latch 04:55:36 <Sgeo__> Would there be anything too wrong with using TinyCore as a preferred distro? 04:55:54 <Sgeo__> Why did I hate Puppy Linux, I forget 04:56:30 <elliott> It would be immoral. 04:56:37 <elliott> And you'd be contributing to global poverty. 04:56:39 <monqy> itidus20: anyway, with your device: 0, 0 -> 0; 0, 1 -> 0; 1, 0 -> 0; 1, 1 -> 1. looks like and to me 04:56:39 <elliott> But apart from that, no. 04:56:53 <itidus20> ok 04:57:22 <itidus20> well.. its food for thought at least 04:57:27 <monqy> itidus20: given 21:51:50 < itidus20> monqy: well.. a stream of water represents a '0' 04:57:49 <itidus20> monqy: i gave up on knowing what represents what :D 04:57:59 <Patashu> I thought a stream of water was a 1 04:58:06 <itidus20> i guess it has to be 04:58:13 <monqy> if a stream is 1 it's or 04:58:31 <monqy> still not anything really powerful 04:58:37 <itidus20> darn 04:58:56 <itidus20> it has to be 1 cos if there was a device at the end where the water turned on a switch 04:59:09 <monqy> you'll also have to deal with gravity porblems if you want to make interesting things 04:59:14 <Patashu> you could always have a device somewhere that emits water while not being given water 04:59:30 <itidus20> like it might have one of those cups complete a circuit for a lightbulb 05:00:09 <elliott> Patashu: i think africa would like one of those 05:00:18 <Patashu> XD 05:00:55 <itidus20> well it is very absurd thing i have drawn. 05:01:07 <Lymee> Dwarven physics is more practical. 05:03:20 <itidus20> Lymee: *nods* 05:05:02 <elliott> hi hi hi hi hi ih hiihi hi ih ihih 05:14:27 <Gregor> Man, when did I become such a GC fanatic. 05:15:09 <Gregor> More to the point: Why are there languages that aren't GC'd, and also aren't at the same level as C? 05:15:22 <Gregor> Ohwait, there aren't :P 05:16:41 <itidus20> back 05:17:21 <itidus20> Patashu: one benefit is i can use salt water (except machine will degrade one way or another 05:18:00 <pikhq> Gregor: Python isn't GC'd 05:19:27 <elliott> Gregor: http://codu.org/ugly.html this is beautiful 05:20:07 <elliott> Also, lol@anyone who thinks manual memory management is a good idea in any circumstance ever 05:20:14 <elliott> (Except maybe writing a memory manager :P) 05:20:16 <elliott> (Or embedded systems) 05:20:27 <pikhq> elliott: It's a wonderful idea in certain contexts. 05:20:52 <pikhq> Those contexts are either comically old or implementation details. 05:22:45 <Gregor> pikhq: Actually it is now, it has a GC as a backup for its wow-whotf-thinks-refcounting-is-good. 05:23:03 <Gregor> elliott: That's my desktop wallpaper at work. 05:23:08 <Patashu> python has had a gc for ages I thought 05:23:11 <elliott> Gregor: Seriously? X-D 05:23:18 <Gregor> elliott: Really an truly. 05:23:33 <elliott> Refcounting is utterly great, it combines all the slowness of manual memory management with all the accuracy of manual memory management. 05:23:36 <Gregor> Patashu: "now" doesn't mean "recently" :P 05:23:50 <pikhq> Patashu: As a cyclic-reference breaker. 05:23:51 <elliott> Gregor: It's been your wallpaper for three years, how are you still alive? 05:23:54 <Gregor> elliott: Actually it's slower and less accurate. 05:24:01 <elliott> Gregor: Well, yes :P 05:24:10 <Gregor> elliott: Lots of fullscreen windows. 05:24:23 <elliott> Gregor: ugly.html or just ugly.png? 05:24:27 <elliott> Oh 05:24:28 <elliott> Wait 05:24:31 <elliott> That's tiled?? 05:24:37 <elliott> It PERFECTLY shows up my TFT's imperfections. 05:24:42 <pikhq> So it combines all the slowness of manual memory management with all the accuracy of manual memory management with all the implementation burden of automatic memory management. 05:24:45 <elliott> It's a gradient-ish thing here. 05:25:24 <Gregor> elliott: lul 05:25:31 <elliott> Gregor: http://wellnowwhat.net/trippy.html Make this your background 05:25:46 <Gregor> elliott: That wonderful combination was a non-match given by my color matcher, btw :P 05:26:01 <elliott> I know, I'm reading the log :P 05:26:09 <elliott> God trippy.html is hot. 05:26:18 <Gregor> elliott: Also a good wallpaper: http://codu.org/spinners.png 05:26:25 <elliott> Heh 05:26:37 <elliott> Nobody ever made my perfect wallpaper :( 05:27:29 <pikhq> Gray? 05:27:58 <Gregor> *Grey 05:28:15 <pikhq> Both are correct. 05:28:26 <Gregor> Mine is better. 05:28:47 <elliott> No my perfect 05:28:48 <elliott> wallpaper is 05:28:48 <Gregor> 9/10 dentists agree that "grey" is the superior spelling for their patients who chew gum. 05:28:55 <elliott> Imagine an infinite plane of lines. 05:28:56 <elliott> Specfiically 05:29:00 <elliott> Black background 05:29:02 <elliott> Zebra-style 05:29:07 <elliott> Black/white/black/white lines vertically 05:29:09 <elliott> Tiling the whole plane 05:29:13 <elliott> Now imagine rotating this place 05:29:14 <elliott> erm 05:29:15 <elliott> Now imagine rotating this plane 05:29:28 <elliott> Now imagine taking a screen-sized section of that rotating, animated plane 05:29:32 <elliott> And making it your desktop background. 05:29:34 <elliott> Discuss. 05:30:08 <itidus20> would make me dizzy i think 05:30:27 <Sgeo__> Eh? 05:30:32 <Sgeo__> How is reference counting slow? 05:30:35 <Sgeo__> I get the inaccurate part 05:31:24 <elliott> Sgeo__: One, 05:31:28 <Gregor> Sgeo__: It promotes stack writes into heap writes. It also promotes local heap writes into distant heap writes. Basically, it promotes all writes into "oh and also let's fuck up my cache just for fun". 05:31:30 <elliott> Because it's basically just like malloc()/free(). 05:31:31 <pikhq> Memory access is slower than you think. No, slower still. 05:31:31 <elliott> Two, 05:31:41 <elliott> Because you branch on every ref--. 05:32:14 <elliott> Also what Gregor said :P 05:32:17 <Gregor> Heh. I focused on caching, elliott focused on branching, and pikhq focused on overutilization. 05:32:25 <Gregor> I think we've covered all the important bases :P 05:32:28 <elliott> Reference counting: literally the worst possible system. 05:33:09 <Sgeo__> Can it be modified to be accurate? 05:33:11 <elliott> Here's a better system than reference counting: free() is never called. Occasionally the interpreter just exits and your service manager restarts your server. 05:33:21 <Gregor> Sgeo__: Yes. It's called a mark and sweep garbage collector. 05:33:32 <pikhq> elliott: Win. 05:33:38 <elliott> Sgeo__: It's possible to do cyclic reference counting I think, but it's even slower. 05:33:45 <elliott> And a GC is better in every way. 05:33:58 <pikhq> Heck, manual memory management is better in most every way. 05:34:03 <Gregor> elliott: Every claim to that effect I've seen have been "delayed reference counting", which is a pseudonym for mark and sweep. 05:34:20 <pikhq> Gregor: Delayed reference counting? Lawl. 05:34:24 <elliott> Gregor: Heh 05:34:37 <elliott> Gregor: You could replace the reference integer with a list of referencing objects. 05:34:37 <Gregor> Yes. I have seen those words. 05:34:40 <Sgeo__> Is mark and sweep decent? 05:34:42 <elliott> And keep a "seen" list or... 05:34:50 <elliott> Gregor: What I'm saying is, you COULD do it without mark and sweep :P 05:34:57 <elliott> In the same way that eightebed disproved your claim. 05:35:01 <pikhq> Sgeo__: Not state of the art, but it definitely works. 05:35:05 <elliott> Sgeo__: It's pretty okay 05:35:24 <Sgeo__> Do I have a chance in hell of successfully implementing it myself? 05:35:25 <Gregor> elliott: ARGH. That. ARGH. We never defined "GC" precisely enough, it was all of a GC except for actual reclamation :P 05:35:39 <pikhq> Yes, actually. Though you'll probably want to read up on memory management. 05:35:40 <monqy> what is sgeo doing 05:35:45 <monqy> is it a bad 05:35:45 <elliott> Sgeo__: Here's mark and sweep: Start from the current closure. Traverse every pointer you see, set its "mark" bit. 05:35:45 <monqy> thing 05:35:56 <elliott> Sgeo__: Then, go through every object in the system, and free() every object without its mark bit set. 05:36:03 <elliott> And clear the mark bit on every object with a mark bit set. 05:36:04 <pikhq> monqy: No, he's merely inquiring about generalities. 05:36:10 <Gregor> Incidentally, all modern mark-and-sweep collectors have an O(1) sweep :P 05:36:15 <Sgeo__> Well, I do have a plan in mind... 05:36:16 <monqy> 22:35:59 < Sgeo__> Do I have a chance in hell of successfully implementing it myself? 05:36:21 <Sgeo__> WRT Second Life stuff 05:36:24 <elliott> I'm pretty sure this is the Active Wo- 05:36:25 <elliott> Same thing. 05:36:27 <elliott> Same goddamn thing. 05:36:28 <monqy> hehehehehehe 05:36:32 <elliott> Sgeo__: you should port gggggc to second life 05:36:37 <elliott> Gregor: Please tell him how easy this will be 05:36:42 <Gregor> elliott: TOO MANY GEES 05:36:44 <pikhq> You'd probably have an even easier time doing a copying GC. Which are pretty silly. 05:36:53 <elliott> Gregor: OGC 05:37:12 <Sgeo__> OGC has a meaning other than that logo? 05:37:56 <elliott> Oligarchical Gregor Collector 05:38:08 <pikhq> Here's copying collection: Start from the current closure. Traverse every pointer you see, copy that object into a new heap, making sure to not copy objects multiple times. 05:38:29 <Sgeo__> https://github.com/wvanbergen/ogc 05:38:51 * Sgeo__ is a little dizzy trying to follow that readme 05:39:04 <pikhq> Oh, yeah, and you'll probably want a pointer rewrite step there, XD 05:39:22 <elliott> pikhq: It's Second-Life; he'll already need heap-relative pointers. 05:39:26 <elliott> Not like they give you C. 05:39:30 <pikhq> Ah, right. 05:39:53 <Sgeo__> I should start actually thinking this through at some point 05:39:54 <elliott> Sgeo__: Does Second Life run on Linux? I think you need adult supervision trying to implement a VM. 05:40:01 <pikhq> elliott: Yes, it does. 05:40:12 <elliott> pikhq: Then the burden falls onto me to be a responsible guardian. 05:40:22 <elliott> http://secondlife.com/_img/pix.gif 05:40:26 <elliott> Can you get married if you upgrade to Premium. 05:40:28 <elliott> Is that what Premium is. 05:40:30 <elliott> Please say yes. 05:40:35 <elliott> Oh my god this Flash advert. 05:40:47 <elliott> http://secondlife.com/_img/pix.gif 05:40:49 <elliott> styling 05:40:49 <elliott> oh 05:40:50 <elliott> its 05:40:53 <elliott> not the real url of the pix 05:40:53 <elliott> :'( 05:40:56 <monqy> :'( 05:41:01 <elliott> monqy: http://secondlife.com/destination/911-memorial 05:41:08 <pikhq> And it running on Linux even predated them open-sourcing it. 05:41:08 <monqy> oh god what 05:41:10 <elliott> 911 victims....... looking ghostly 05:41:33 <pikhq> Incidentally, Second Life is horribly written. 05:41:35 <elliott> its the least classiest marble ive ever seen 05:41:49 <monqy> they also have a world trade centre memorial. and a rainbow gardens pet memorial centre 05:41:54 <elliott> http://secondlife.com/destination/lost-lovers-dancing-club---live-events 05:41:55 <monqy> http://secondlife.com/destination/rainbow-gardens-pet-memorial-center 05:42:00 <elliott> lost lovers dancing club 05:42:11 <elliott> monqy: oh sweet jesus 05:42:13 <Gregor> A VIRTUAL memorial: Worst memorial ever? 05:42:15 <monqy> http://secondlife.com/destination/club-graffiti 05:42:22 <elliott> Gregor: http://common-flash-secondlife-com.s3.amazonaws.com//new/destinations/en/_img/fullsize/5917.jpg 05:42:23 <elliott> Best. 05:42:24 <monqy> club graffiti 05:42:49 <elliott> Second Life is like... real life, modelled by people who've READ about real life, you know, in books. 05:43:00 <pikhq> elliott++ 05:43:01 <Gregor> `addquote <elliott> Second Life is like... real life, modelled by people who've READ about real life, you know, in books. 05:43:02 <HackEgo> 666) <elliott> Second Life is like... real life, modelled by people who've READ about real life, you know, in books. 05:43:06 <elliott> "Club re:noize bills itself as "a distorted eargasm for noize-minded souls" and we don't disagree." 05:43:09 <Gregor> OH GOD IT'S SATAN'S QUOTE 05:43:14 <elliott> I don't either, but only because I have no idea what that means. 05:43:28 <pikhq> I understand it could be put to somewhat more interesting use, but holy fuck most of it is boring. 05:44:14 <elliott> I'd like to note we're all hypocrites who play a game that offers all the fun of mining with none of the real-world benefits :P 05:44:25 <Gregor> X-D 05:44:32 <elliott> OK, with slightly less risk, admittedly. 05:44:33 <elliott> Slightly. 05:44:42 <Gregor> Much greater obesity risk. 05:44:54 <pikhq> elliott: My criticism comes from first-hand experience. 05:44:59 <monqy> bad person risk 05:45:08 -!- CakeProphet has joined. 05:45:08 -!- CakeProphet has quit (Changing host). 05:45:08 -!- CakeProphet has joined. 05:45:16 <monqy> speak of the devil 05:45:19 <itidus20> elliott: well it certainly suggests a new way of thinking about mining in general 05:45:22 <elliott> Step into the grid and get lost in one of the many cyberpunk places in Second Life. 05:45:29 <elliott> This homage to classic computer games and cyberpunk culture places you "on the grid." Amidst bouncing balls and other surreal experiments, explore the multi-leveled displays — be bold and fly up. Hang out here and you may spot a Torley at work in its digital habitat! 05:45:43 <itidus20> mine trees! mine dirt! 05:45:44 <Gregor> "Cyberpunk" 05:45:46 <elliott> Spirituality & Belief (26) 05:45:51 <elliott> YES THIS IS GOING TO BE THE BEST CATEGORY 05:45:56 <elliott> Suicide City 05:45:56 <elliott> What terrors await you in this rain-swept, creepy town? Explore the horrors, but bring a friend — you might not be able to make it out alive! 05:45:58 <elliott> SUICIDE 05:45:58 <elliott> CITY 05:46:00 <Gregor> Most people who have used that word need a cyberpunch in the face. 05:46:09 <elliott> Gregor: At least it's not steampunk. 05:46:14 <monqy> steampunch in the face 05:46:21 <elliott> "Technology... but with COGS!" 05:46:23 <itidus20> :-? 05:46:25 <Gregor> elliott: I suspect a steampunch in the face would hurt considerably more. 05:46:39 <itidus20> ahh steam power 05:46:44 <elliott> I have to admit, I was hoping the "Cyber" category would be something else. 05:46:47 <CakeProphet> What's wrong with cyberpunk and steampunk? 05:46:48 <Gregor> I mean, let's face it, "cyber"technology isn't much on moving parts. 05:46:52 <elliott> By hoping, I mean for purely comedic purposes. 05:47:04 <elliott> Visit Duran Duran Universe, the official Second Life presence of the popular band. 05:47:06 <elliott> I...................... 05:47:13 <elliott> Duran Duran — Secret Rehearsal Rooms 05:47:13 <elliott> Practice your musical skills in one of the many secret rehearsal rooms at Duran Duran Universe. 05:47:15 <elliott> .......................................... 05:47:19 <CakeProphet> lol 05:47:23 <elliott> I am completely devoid of words. 05:47:29 <itidus20> i personally think the steampunk world looks the most fun 05:47:31 <CakeProphet> I have only laughter. 05:47:40 <pikhq> elliott: Linden doesn't much like SL sex, so they make efforts to make it hard to find. 05:47:41 <CakeProphet> everything is more fun when steam powered. 05:47:44 <itidus20> given the choice between this world, the cyberpunk one, and the steam one 05:47:46 <elliott> Mud wrestling, arm wrestling and pillow fights. Anything can happen at The Skin Dive in Duran Duran Universe. 05:47:47 <pikhq> From what I understand, this doesn't do much. 05:48:00 <elliott> how do you even have a pillow fight in sl that has to be like 05:48:03 <elliott> the most awkward thing ever 05:48:11 <monqy> more awkward than sl sex 05:48:13 <monqy> more awkward than metaplace sex 05:48:21 <pikhq> Yes, all physical actions are awkward. 05:48:21 <elliott> `? Sgeo 05:48:22 <HackEgo> Sgeo? ¯\(°_o)/¯ 05:48:23 <CakeProphet> "wow this scripting sure is neat!" "yeah!" 05:48:27 <elliott> `learn Sgeo invented Metaplace sex. 05:48:27 <pikhq> Except, like, walking. 05:48:29 <HackEgo> I knew that. 05:48:29 <itidus20> i think steampunk is kinda soft-anarcho-primitivism 05:48:37 <elliott> A good biography. 05:48:48 <Gregor> itidus20: I thought we were an anarchosyndicalist commune. 05:49:01 <Sgeo__> CakeProphet, that's kind of my main draw to SL >.> 05:49:03 <itidus20> i dont even know what that means`` yet 05:49:10 <Sgeo__> Or part of it 05:49:17 <CakeProphet> itidus20: is that kind of like rocktronicelectronintendowavecore? 05:49:24 <elliott> Duran Duran - TIon Love Chapel 05:49:25 <elliott> Get hitched at the TIon Love Chapel in Duran Duran Universe. 05:49:27 <elliott> DURAN DURAN LOVE CHAPEL 05:49:30 <pikhq> CakeProphet: Best thing? 05:49:38 <elliott> "LGBT Friendly" 05:49:44 <elliott> So are the other locations in Second Life not LGBT friendly? 05:49:48 <itidus20> CakeProphet: soft- is being used in the sense of "not taken to extremes, or allowing some room for vairance and exceptions" 05:49:52 <elliott> Set in the present-day urban Southern California, Rejectz immerses you in a bad part of town where anything can happen. This grungy role-playing area is a place for gay males to meet and play. 05:49:57 <elliott> jesus christ 05:50:09 <elliott> Learn more information about LGBT civil rights worldwide at the Brokeback Gay Civil Rights Center. This area, which is accessible to age-verified adult residents, also features a club, cathedral, art gallery, memorial park and "Drama Queen Theater." 05:50:16 <elliott> brokeback gay 05:50:16 <pikhq> Welp, found the sex. 05:50:19 <CakeProphet> itidus20: oh okay so it's soft punk fusion neo-grime 05:50:26 <elliott> pikhq: where da straight sex at 05:50:31 <pikhq> Beats me. 05:50:38 <elliott> Connect with your community and meet new friends at Gay Archipelago, an international LGBT-friendly cluster of 147 sims in Second Life. 05:50:38 <pikhq> I've not cared enough. 05:50:41 <elliott> garchypelago 05:50:53 <pikhq> "So... It's like porn, but badly animated?" "Yup." "Fuck that." 05:51:06 <itidus20> CakeProphet: i like the idea of human knowledge increasing but technology being more moderate 05:51:12 <elliott> oh no 05:51:15 <elliott> theres a steampunk category 05:51:16 * Sgeo__ needs to go eat 05:51:18 <elliott> There are no destinations in this category with the maturity rating of Any. 05:51:22 <coppro> hahaha 05:51:24 <elliott> are they all steampunk sex worlds 05:51:28 <coppro> yes 05:51:30 <elliott> amazing 05:51:31 <pikhq> YES 05:51:35 <itidus20> i guess its all the same in the end 05:51:36 <pikhq> YEEESS 05:51:41 <elliott> Vampire (18) 05:51:42 <elliott> oh no 05:51:46 <elliott> There are no destinations in this category with the maturity rating of Any. 05:51:48 <CakeProphet> itidus20: oh so you're more into abstract glitch-hop fusion? 05:51:49 <myndzi> didn't LGBT get some extra letters? 05:51:57 <elliott> LITERALLY ALL OF THESE "ROLEPLAYING COMMUNITIES" ARE SEX-BASED 05:52:02 <myndzi> why don't they just say EVERYTHINGEXCEPTNORMALPEOPLE 05:52:12 <myndzi> we can shorten it to N- 05:52:12 <itidus20> im not really thinking things out 05:52:14 <myndzi> :P 05:52:27 <CakeProphet> dude there's no like, pen and paper SL worlds? 05:52:45 <pikhq> myndzi: Some variants add "allies" to the mix. 05:52:48 <elliott> What is it with those blacks and, like, hispanics. Can't we just say normal people, and freaks? 05:52:54 <pikhq> Which leaves you including everyone except jerks. 05:52:57 <elliott> And those asians too. It's too many to remember. 05:53:05 <myndzi> i'm pretty sure i remember one with like 7 letters lol 05:53:10 <itidus20> CakeProphet: there is a problem that if you change the system to give everyone what they want, they will adjust their desires again 05:53:21 <elliott> monqy: there's a haunted category 05:53:22 <elliott> looking ghostly 05:53:34 <elliott> oh my god 05:53:35 <monqy> im spouked 05:53:40 <elliott> http://common-flash-secondlife-com.s3.amazonaws.com//new/destinations/en/_img/fullsize/6664.jpg 05:53:44 <elliott> just 05:53:45 <myndzi> LOLOL 05:53:45 <elliott> http://common-flash-secondlife-com.s3.amazonaws.com//new/destinations/en/_img/fullsize/6664.jpg 05:53:47 <myndzi> quiltbag 05:53:54 <myndzi> you know it's getting bad when you have to make mnemonics 05:54:03 <CakeProphet> itidus20: yeah that's the problem with genres like alternative, where the desire is to be something that isn't mainstream. So you give everyone what they want and then they want something alternative again. 05:54:03 <elliott> http://common-flash-secondlife-com.s3.amazonaws.com//new/destinations/en/_img/fullsize/6664.jpg 05:54:05 <elliott> monqy: guy inthe middle 05:54:07 <elliott> looking ghostly 05:54:08 <elliott> (because) 05:54:09 <elliott> (he is dead) 05:54:22 <CakeProphet> itidus20: that's why house is nice because everyone just likes the same four to the floor for hours and hours. 05:54:24 <monqy> sl murder 05:54:32 <elliott> Sgeo__: can you kill in sl 05:54:38 <pikhq> CakeProphet: Or you just go so far off the beaten path you're never mainstream ever. 05:54:44 <CakeProphet> noise. 05:54:52 <CakeProphet> is never mainstream. 05:55:02 <elliott> The Corn Field is a region of mythological status where once naughty avatars were sent to think about what they had done. Read more here: http://bit.ly/kmL0EF 05:55:06 <Sgeo__> elliott, "legally", in certain places, I think. And not so allowed, there is griefing 05:55:31 <quintopia> the corn field? is that a reference to "It's A Good Life"? 05:55:37 <elliott> quintopia: apparently 05:55:45 <CakeProphet> dark ambient music such as Voice of Eye: http://www.youtube.com/watch?v=jZ_fUZDeNQo 05:55:46 <quintopia> neat 05:55:46 <elliott> http://secondlife.com/destination/cyrus-apollo-s-giant-bears 05:55:47 <elliott> augh 05:55:47 <Sgeo__> There used to be devices that could send people up billions of meters against their will 05:55:49 <CakeProphet> is great. 05:55:50 <CakeProphet> everyone should like it. 05:55:57 <elliott> monqy: click 05:55:58 <elliott> that 05:56:00 <elliott> its augh 05:56:12 <monqy> augh 05:56:15 <monqy> who did that 05:56:17 <monqy> who 05:56:18 <monqy> would do that 05:56:21 <elliott> cyrus apollo i 05:56:23 <elliott> guess 05:56:23 <monqy> (a genouse) 05:56:25 <elliott> based on 05:56:26 <elliott> url 05:56:27 <monqy> (geniouse) 05:56:31 <Sgeo__> I mostly stick to the sandboxes 05:56:55 <monqy> https://d1yjxggot69855.cloudfront.net/images/3/3c/The_Corn_Field.jpg corn field 05:56:59 <Sgeo__> Oh huh, the place with the bears is apparently near a small sandbox 05:57:32 <elliott> Romantic Spots (47) 05:57:39 <elliott> awwww ye 05:58:06 <elliott> http://common-flash-secondlife-com.s3.amazonaws.com//new/destinations/en/_img/fullsize/5452.jpg 05:58:12 <elliott> i question the anatomy depicted in this picture 05:59:09 <elliott> Sgeo__: this is really bad good god 05:59:09 <monqy> good anatomy 05:59:25 <elliott> Strange & Mysterious (37) 05:59:31 <CakeProphet> Third Life community: have fun playing Third Life with your Second Life personas! 05:59:35 <elliott> Catalan Institute of Nanotechnology 05:59:35 <elliott> Don't let the name fool you — this ain't a sterile research facility. As you explore this forest of pulsating shapes and shifting structures, the wild textures you see were supposedly derived from actual nanoparticles. 05:59:45 <elliott> im sterile 05:59:55 <Sgeo__> I mostly don't get involved with that stuff. Except one of the sandboxes I _used_ to like was a furry sandbox 05:59:57 <CakeProphet> ACTUAL NANOPARTICLES? 06:00:01 <elliott> Visit this recreation of Robert A. Heinlein's "Crooked House" by Seifert Surface. Explore the interconnected rooms of the house, which is modeled on a four-dimensional hypercube. Learn more about the story behind the house's creation at http://pdx.be/efe8. 06:00:02 <elliott> ok that's cool 06:00:07 <elliott> that is the single cool thing i have seen so far 06:00:54 <Sgeo__> I don't see how that's possible in Second Life. 06:00:58 <Sgeo__> Worlds.com sure, but SL? 06:01:00 <elliott> http://nwn.blogs.com/nwn/2006/06/_and_he_rezzed_.html 06:01:15 <elliott> http://nwn.blogs.com/wja_hamlet_thumbnail.jpg 06:01:28 <Sgeo__> YouTube video not working for me 06:01:55 <elliott> I note there's no furry category in this thing 06:01:57 <elliott> OPPRESION 06:02:01 <Sgeo__> Oh, that sort of thing 06:02:11 <monqy> fursecution 06:02:14 <Sgeo__> Saw something like it before 06:02:18 <CakeProphet> @HOOGLE furry 06:02:18 <lambdabot> Unknown command, try @list 06:02:24 <CakeProphet> @hoogle furry 06:02:24 <lambdabot> No results found 06:02:27 <CakeProphet> WHAT? 06:02:38 <elliott> where the furry furry bondage girls at 06:03:04 <monqy> zzo made something called furryscript right what is that 06:03:27 <Sgeo__> I was banned from a furry sandbox 06:03:35 <elliott> did you try and have metaplace sex 06:03:48 <Sgeo__> I dropped a cube. 06:03:51 <monqy> oh 06:04:00 <elliott> NOOOOOOOOOOOOOOOOoooooooooooooo 06:04:03 <CakeProphet> Sgeo__: accidental bestiality? 06:04:05 <monqy> is that furspeak for fuck you 06:04:06 <CakeProphet> oh. 06:04:12 <elliott> he "dropped" 06:04:13 <elliott> a "cube" 06:04:16 <elliott> if you "know" 06:04:18 <elliott> what I "mean" 06:04:30 <monqy> dropped a fat beat 06:04:36 <elliott> dropped a bat feet 06:04:43 <CakeProphet> elliott just "dropped" some "knowledge" on these "bitches" 06:04:46 <Gregor> To elucidate: That's a euphemism for expressing anything short of a desire for immediate and ongoing bestiality. 06:04:55 <Sgeo__> Well, the script in the cube may have violated TOS, as well as being a physical cube that caused some lag 06:04:59 <elliott> Important: The Google Image Search API has been officially deprecated as of May 26, 2011. It will continue to work as per our deprecation policy, but the number of requests you may make per day may be limited. 06:05:09 <Sgeo__> (It was a chat transmitter thing) 06:05:17 <elliott> Gregor: Is there a successor API, I guess you know these things 06:05:20 <elliott> I suppose I should just screen-scrape??? 06:05:28 <monqy> <sgeo> i dropped a chat transmitter thing 06:05:31 <Gregor> elliott: There will almost assuredly not be. 06:05:42 <elliott> Gregor: Google sure like being a closed system, don't they 06:05:49 <Gregor> elliott: They drop APIs whenever they feel it's important enough to their business that exposing it by any non-ad-laden means is bad. 06:06:14 <elliott> Google business model: You give us all your data --> We use it to profit forever --> The end 06:06:23 <elliott> --> So much money 06:06:31 <monqy> --> so mcuch 06:06:47 <elliott> Oh well, screen-scraping is easy 06:06:56 <elliott> Stonehenge Rebuilt 06:06:56 <elliott> This reconstruction of the Neolithic site of Stonehenge attempts to explain its lithology and show how it must have appeared in ancient times. It demonstrates how rays of sun passed between the megaliths during the summer solstice. 06:07:08 <elliott> oh my god 06:07:09 <elliott> http://common-flash-secondlife-com.s3.amazonaws.com/new/destinations/en/_img/fullsize/2944.jpg 06:07:18 <monqy> megaliths reminded me of beedaweeda help 06:07:22 <elliott> http://common-flash-secondlife-com.s3.amazonaws.com/new/destinations/en/_img/fullsize/2944.jpg 06:07:30 <monqy> wirdiculous 06:07:34 <monqy> that smile god damn 06:07:45 <elliott> oh my god 06:07:54 <elliott> Looking for a sexy shape for your avatar? Adult Second Shapes features a wide variety of attractive shapes, including curvy and realistic body shapes that will get you noticed. 06:07:54 <monqy> it would be staring into my soul but instead it is staring into its snout's soul 06:07:58 <elliott> they literally sell new skins 06:08:00 <monqy> maybe it has crosseye problems 06:08:29 <elliott> AKERUKA Italian Creations offers high quality skins for men and women along with shapes created and styled with perfection to suit different types looks, cultures and ages. 06:08:29 <Sgeo__> skin != shape 06:08:31 <elliott> so fuckin' classy 06:09:10 <elliott> http://common-flash-secondlife-com.s3.amazonaws.com/new/destinations/en/_img/fullsize/4188.jpg 06:09:15 <Sgeo__> Maybe I shouldn't comment on the fact that my current avatar is mostly just a skin 06:09:18 <elliott> those faces to the right are so disturbing 06:09:56 <zzo38> monqy: Yes I did make something called FurryScript. Someone asked me to type in esolang wiki so I made a user subpage explaining it a bit 06:09:58 <elliott> its really painful how hard this is trying to emulate consumer culture 06:10:02 <Sgeo__> (+invisible hair +shape +i forgot the last necessity) 06:10:10 <elliott> the pain is intense 06:10:40 <Sgeo__> It kind of is consumer culture, I think 06:10:43 <monqy> does your avatar have clothes, sgeo 06:10:43 <Sgeo__> People pay for these things 06:10:52 <Sgeo__> monqy, no. But the skin isn't human skin 06:11:00 <zzo38> Specifically this document http://esolangs.org/wiki/User:Zzo38/FurryScript 06:11:35 <elliott> Sgeo__: are you a cube 06:11:43 <Sgeo__> N 06:11:45 <Sgeo__> no 06:11:48 <elliott> are you two cubes 06:12:04 <elliott> i see no denial 06:12:13 <Sgeo__> I'll get a pic 06:12:18 <elliott> oh no 06:12:24 <Sgeo__> No, that's not my current av 06:12:24 <monqy> the cube sgeo dropped was his naughty bits 06:12:50 <monqy> this is why he got banned 06:12:53 <Sgeo__> https://marketplace.secondlife.com/p/Editing-Appearance-HUD/219015 06:13:09 <Sgeo__> I think that's considered SFW 06:13:19 <monqy> it's gross 06:14:33 <monqy> so what is it you want to do again 06:14:35 <monqy> calculate sl gravity 06:14:49 <elliott> more like sl poop 06:14:51 <Sgeo__> That's a separate project 06:14:51 <itidus20> http://jyte.com/cl/i-have-used-at-least-10-different-programming-languages zzo38 has used at least 10 06:15:06 <elliott> itidus20: are you stalking everyone from this channel or sth :P 06:15:16 <itidus20> i actually searched for furryscript 06:15:21 <elliott> oh 06:15:29 <itidus20> so indirect stalking 06:15:35 <elliott> indiralking 06:15:44 <Sgeo__> Dear SL Marketplace: I'd appreciate it if you emailed me when I get reviews, like you used to 06:16:38 <Sgeo__> https://marketplace.secondlife.com/p/Antiposeball-5-SAVE-PRIMS-ON-FURNITURE/219014 I haven't updated this thing since 2007 06:16:40 <zzo38> itidus20: If you want FurryScript please look at article I linked to 06:17:07 <Sgeo__> "This is good if you only want avs to use ONE position for sitting. I wanted to add a variety and well..that just didnt happen with this, for some reason the instructions to use commas in between names just wasnt enough. Ah well. Not for me , but if you only need a single sit then this is very easy to use and recommended. =)P" 06:17:16 <Sgeo__> I've been intending to remove those instructions 06:17:16 <itidus20> i was trying to figure out if it was something you made or if it was something you merely documented 06:17:45 <itidus20> and just curious what this furryscript is used for. heh 06:18:06 <zzo38> itidus20: It is something I made. To see some of its use, look at external resources 06:18:07 <elliott> `? monq 06:18:08 <elliott> `? monqy 06:18:09 <HackEgo> monq? ¯\(°_o)/¯ 06:18:10 <HackEgo> monqy dead :( 06:18:15 <elliott> tru 06:18:47 <zzo38> I used Haskell too since I typed on that Jyte page so I added it now 06:21:27 <itidus20> zzo38: im guessing that furryscript is too useful to be a regular topic :D 06:22:16 <itidus20> it's as if there is a one-to-one correspondancy between source code ascii text and outputted text... 06:22:17 <zzo38> itidus20: Sort of. That is one reason why it is user subpage. It does, however, have a few features which might be considered a bit strange. But, it works well for what it is trying to do, I think. 06:22:23 <itidus20> ^sickening 06:22:56 -!- Zuu has joined. 06:23:09 <itidus20> you can't just write an ascii character in source code and repeat that ascii character as program output!?! what do you think this is 06:23:14 <itidus20> some kind of joke 06:24:07 <itidus20> ahem.. sorry a bit cranky this afternoon 06:24:49 <zzo38> All script are included in here http://zzo38computer.cjb.net/furry/scripts/ If you write your own script, please tell me by writing on [[User talk:Zzo38/FurryScript]] 06:25:47 <itidus20> there is this kind of category of programming languages which doesn't really have much of a good name 06:26:17 <itidus20> that is not esoteric, not mainstream, not done in a university, possibly only a handful of users 06:26:40 <CakeProphet> post-rock indie programming languages. 06:26:55 <itidus20> punklangs? 06:26:55 <zzo38> TV PLOT is something I found in a very old book but I updated it with more choices 06:27:08 <itidus20> just kidding....! 06:27:35 <itidus20> yeah when programming language categories start to resemble music categories there is great danger 06:27:59 <itidus20> now i must lie down half awake 06:28:01 <zzo38> Or when you categorise chess variants by color 06:28:17 <CakeProphet> extreme thrash-step bebopcore metal. 06:28:48 <CakeProphet> dude... 06:28:51 <CakeProphet> so what if I made a program 06:28:55 <CakeProphet> that randomly generated genres. 06:29:26 <elliott> "Retry execution of the current memory transaction because it has seen values in TVars which mean that it should not continue (e.g. the TVars represent a shared buffer that is now empty). The implementation may block the thread until one of the TVars that it has read from has been udpated. (GHC only)" 06:29:32 <elliott> Gregor: Aww yeah, GHC STM has UDPATED 06:29:40 <elliott> I guess that's like an update... across UDP. 06:29:45 <zzo38> FurryScript can randomly generate stuff by templates; that was its original use. But it has other features too. 06:30:57 <zzo38> You can see stuff I made in Jyte by viewing the profile http://jyte.com/profile/zzo38computer.cjb.net In case it interest you; to login you simply need OpenID (there is other form to fill, but it is optional; OpenID is sufficient) 06:36:40 <zzo38> What does "The bigger the wheel, the ranger the forest." means? 06:37:07 <monqy> I've never heard it 06:37:53 <CakeProphet> itidus20: so you're more into Baroque industrial grimehouse? 06:40:58 <zzo38> Has there ever been a chess game properly notated "12. 0-0-0!!" ? 06:41:25 <CakeProphet> No but I bet someone's been like "12. !!!???!?!?" 06:44:16 <zzo38> CakeProphet: What is that? 06:44:24 <fizzie> "12. !!!???!?!? *throws table, pieces fly everywhere*" 06:45:34 <CakeProphet> I thought maybe I could combine programming language categories to make nonsense ones, but then I realized, sadly, that most of them make some sort of sense. 06:46:03 <CakeProphet> non-strict functional dataflow language. 06:46:05 <monqy> chess variant: in alternate universes, each of your pieces which can move to a given spot does so. the goal is to win in more universes than your opponent 06:46:45 <monqy> does this exist? 06:47:18 <CakeProphet> I think you'd just tie probably? 06:48:03 <monqy> what makes you think this? 06:48:09 <Patashu> http://i.imgur.com/lqcjm.png minesweeper is pretty hard 06:48:29 <CakeProphet> well you'd each have the same number of choices. 06:48:34 <Patashu> monqy: if you mean you elect a spot and branch universes into it 06:48:35 <elliott> Patashu: hot 06:48:46 <monqy> Patashu: yes 06:48:47 <Patashu> hmm 06:48:49 <elliott> are those non-grid boards playable 06:48:50 <elliott> or just the grid one 06:48:51 <elliott> s 06:48:54 <Patashu> I know of a variant where you elect to make branches however you like 06:49:02 <Patashu> apparently you could force a win as player 1 trivially in it 06:49:03 <Patashu> :( 06:49:10 <monqy> what? :( 06:49:15 <Patashu> let me see if I can find it 06:49:23 <CakeProphet> oh right, maybe white would win. 06:49:32 <Patashu> and elliott: every board is playable if you register it 06:49:45 <elliott> Patashu: including those non-grid ones? 06:49:49 <elliott> hot hot hot pirate it immediately 06:49:55 <Patashu> http://www.chessvariants.com/large.dir/contest/manyworlds.html http://www.chessvariants.org/index/listcomments.php?itemid=ManyWorldsChess 06:50:24 <itidus20> CakeProphet: i dunno what im into musically 06:50:52 <Patashu> elliott, you can download the trial version and see all the boards available, and have autoplay solve them for you http://www.software3d.com/Mines3D/download.php 06:51:14 <elliott> pirate pirate pirate then make youtube videos thanks 06:51:52 <monqy> Boards do not remember which player moved last; there is no rule preventing you from making a move on a given board even if you were the player whose move created the board. 06:52:00 <monqy> and the goal is to capture the king on any board 06:52:10 <monqy> so I guess to win as player 1 you just repeatedly move until you get the king? 06:52:28 <Patashu> read the comments 06:52:35 <Patashu> they explain how to mate in 4 as player 1 06:52:35 <monqy> oh where's that oh there 06:52:39 <Patashu> so your variant should make sure it isn't possible 06:53:24 <itidus20> A ship has crashed on the border between two kingdoms. You must decide where to bury the survivors. -- lol 06:53:32 <monqy> oh i guess you can only move on one board at a time 06:54:52 <itidus20> THIS REPORT IS ABOUT A INTELLIGENT FAERIE WHO IS A FLOP AT CHESS AND WHO OPPOSES THE GOVERNMENT 06:55:44 <Patashu> btw, if you want some crazy but cool chess variants from a master, look at Ralph Betza's http://www.chessvariants.org/index/mainquery.php?type=Any&orderby=Type&displayauthor=1&displayinventor=1&authorid=RalphBetza&usethisheading=Items+Authored+by+Ralph++Betza 06:55:53 <Patashu> The Game for the Trees and The Game of Nemoroth in particular are great 06:56:25 <Patashu> The Game of Nemoroth has its own -lore- and its own alternate universe chess rules. That's pretty cool 06:56:55 <itidus20> haha halflings 06:57:06 <Vorpal> <itidus20> A ship has crashed on the border between two kingdoms. You must decide where to bury the survivors. -- lol <-- where is that from? 06:57:25 <zzo38> It is from one of the files I have for FurryScript 06:57:33 <zzo38> (It is not part of FurryScript itself) 06:57:53 <zzo38> However, that in turn was taken from somewhere else which in turn from somewhere else and so on. 06:59:14 <Vorpal> Ad infinitum? 06:59:28 <itidus20> `log godzilla 06:59:31 <zzo38> No, I don't think so 06:59:35 <Vorpal> oh well 06:59:40 <itidus20> oh that bot is not about 06:59:48 <HackEgo> 2010-12-07.txt:21:06:31: <HackEgo> I&#39;m Godzilla coming! I want to die! 06:59:54 <itidus20> oh there he is 07:00:20 <Vorpal> I think the script needs to convert back from HTML escapes 07:00:22 <Vorpal> elliott: ^ 07:00:32 <itidus20> `pastelogs godzilla 07:00:35 <elliott> Vorpal: What? 07:00:42 <Vorpal> <HackEgo> 2010-12-07.txt:21:06:31: <HackEgo> I&#39;m Godzilla coming! I want to die! 07:00:45 <Vorpal> that looks wrong 07:00:46 <elliott> The script does not make any HTTP requests. 07:00:53 <elliott> The logs are accurate. 07:00:53 <Vorpal> elliott: well was it like that in the original? 07:00:55 <Vorpal> ah 07:01:06 <HackEgo> No output. 07:01:17 <elliott> `? Vorpal 07:01:18 <itidus20> i will just let hackego rest 07:01:21 <HackEgo> Vorpal is really boring. Seriously, you have no idea. 07:01:23 <elliott> (I forgot what your biography is.) 07:01:26 <itidus20> he seems sleepy 07:01:39 <Vorpal> ^run type '?' 07:01:45 <Vorpal> `run type '?' 07:01:48 <HackEgo> ​? is /hackenv/bin/? 07:01:56 <Vorpal> `run file /hackenv/bin/? 07:01:57 <elliott> `pastewisdom 07:01:58 <HackEgo> ​/hackenv/bin/?: POSIX shell script text executable \ /hackenv/bin/k: POSIX shell script text executable 07:01:59 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22337 07:02:10 <elliott> `forget add 07:02:12 <HackEgo> Forget what? 07:02:34 <itidus20> `pastelogs monster 07:02:40 <monqy> "��V�>WIד�.��" - c 07:02:47 <Vorpal> what was the command to get the url of a file? 07:02:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30032 07:03:01 <Vorpal> `url /hackenv/bin/? 07:03:02 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip//hackenv/bin/? 07:03:05 <Vorpal> ah yes 07:03:06 <elliott> `url bin/? 07:03:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/? 07:03:11 <elliott> Except that won't work. 07:03:12 <Vorpal> `url bin/? 07:03:13 <elliott> Obviously 07:03:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/? 07:03:17 <elliott> `run paste bin/'?' 07:03:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.25005 07:03:19 <elliott> That will though. 07:03:28 <elliott> Except it gets the encoding wrong. 07:03:39 <monqy> as always 07:03:40 <Vorpal> "elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things?" 07:03:40 <Vorpal> eh 07:03:42 <Vorpal> elliott: what db? 07:03:49 <elliott> Vorpal: the one you're looking at. 07:03:52 <Vorpal> it seems like plaintext 07:03:55 <itidus20> `pastelogs godzilla 07:03:55 <elliott> Gregor wrote that bio, anyway. 07:04:03 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.840 07:04:07 <Vorpal> elliott: right 07:04:15 <monqy> `? our 07:04:16 <elliott> Vorpal: So what's new that isn't you not understanding the definition of database? 07:04:17 <HackEgo> our? ¯\(°_o)/¯ 07:04:18 <elliott> Data-base. 07:04:19 <elliott> Base of data. 07:04:22 <monqy> `? wiki 07:04:24 <HackEgo> The wiki is at http://esolangs.org/wiki 07:04:26 <monqy> `? the 07:04:27 <HackEgo> the? ¯\(°_o)/¯ 07:04:36 <elliott> `cat wisdom/wiki 07:04:37 <HackEgo> The wiki is at http://esolangs.org/wiki 07:04:40 <Vorpal> elliott: well okay, yes a flatfile is a db, true. 07:04:42 <elliott> It... bends the rules a bit. 07:04:57 <itidus20> `pastelogs zombie 07:05:01 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.8534 07:05:37 <Vorpal> elliott: anyway you should use sqlite, it is better tested than flatfiles. 07:05:43 <monqy> `? .doorstop 07:05:44 <HackEgo> You do not have the clearance necessary to view this entry. 07:06:12 <elliott> `karma- Vorpal 07:06:14 <HackEgo> Vorpal has 0 karma. 07:06:21 <elliott> `karma Vorpal 07:06:22 <monqy> vorpal had karma? 07:06:23 <HackEgo> Vorpal has 0 karma. 07:06:25 <elliott> Gah, what _is_ it with that bug. 07:06:27 <elliott> `karma- Vorpal 07:06:28 <Vorpal> elliott: do you think I care about karma? 07:06:29 <HackEgo> Vorpal has 0 karma. 07:06:31 <elliott> `karma Vorpal 07:06:33 <HackEgo> Vorpal has 0 karma. 07:06:36 <elliott> Come on. 07:06:38 <elliott> `karma+ Vorpal 07:06:40 <HackEgo> Vorpal has 0 karma. 07:06:42 <elliott> `karma- Vorpal 07:06:44 <HackEgo> Vorpal has 0 karma. 07:06:48 <Vorpal> elliott: well it seems broken whatever it is 07:06:49 <elliott> Dear god. 07:06:54 <Vorpal> elliott: and I don't really care about karma. 07:06:56 <elliott> Vorpal: it's a bug I can't figure out. 07:06:57 <elliott> `karma+ Vorpal 07:06:59 <elliott> `karma+ Vorpal 07:07:00 <HackEgo> Vorpal has 0 karma. 07:07:00 <elliott> `karma+ Vorpal 07:07:01 <HackEgo> Vorpal has 0 karma. 07:07:02 <Vorpal> elliott: so that isnt' going to stop me 07:07:02 <HackEgo> Vorpal has 0 karma. 07:07:04 <elliott> `karma- Vorpal 07:07:04 <elliott> `karma- Vorpal 07:07:05 <elliott> `karma- Vorpal 07:07:05 <elliott> `karma- Vorpal 07:07:06 <Vorpal> isn't* 07:07:08 <HackEgo> Vorpal has 0 karma. 07:07:08 <HackEgo> Vorpal has 0 karma. 07:07:08 <HackEgo> Vorpal has 0 karma. 07:07:08 <HackEgo> Vorpal has 0 karma. 07:07:17 <Vorpal> elliott: stop spamming me with highlights though 07:07:20 <monqy> @karma- vorpal 07:07:20 <lambdabot> vorpal's karma lowered to -1. 07:07:26 <elliott> @karma- Vorpal 07:07:26 <lambdabot> Vorpal's karma lowered to -2. 07:07:28 <elliott> I find this acceptable. 07:07:36 <itidus20> @karma++ Vorpal 07:07:36 <lambdabot> Vorpal's karma raised to -1. 07:07:39 <zzo38> @karma+ Vorpal 07:07:39 <lambdabot> Vorpal's karma raised to 0. 07:07:41 <elliott> @karma- Vorpal 07:07:41 <lambdabot> Vorpal's karma lowered to -1. 07:07:43 <elliott> You are all traitors. 07:07:44 <itidus20> @karma+ Vorpal 07:07:44 <lambdabot> Vorpal's karma raised to 0. 07:07:45 <elliott> You are all traitors. 07:07:46 <elliott> @karma- Vorpal 07:07:46 <lambdabot> Vorpal's karma lowered to -1. 07:07:49 <Deewiant> @karma- elliott 07:07:49 <lambdabot> elliott's karma lowered to 2. 07:07:53 <elliott> @karma+ elliott 07:07:53 <lambdabot> You can't change your own karma, silly. 07:07:57 <Deewiant> Silly. 07:08:01 -!- elliott has changed nick to fthepolice. 07:08:03 <fthepolice> @karma+ elliott 07:08:04 <lambdabot> elliott's karma raised to 3. 07:08:06 -!- fthepolice has changed nick to elliott. 07:08:08 <Vorpal> stop the highlight spam though. 07:08:08 <elliott> @karma- Deewiant 07:08:08 <lambdabot> Deewiant's karma lowered to -2. 07:08:16 <fizzie> "Silly" applies to the whole thing above. 07:08:17 <zzo38> O, I thought of that but thought you have to PART first 07:08:18 <monqy> `echo "a lot of" > karma/monqy 07:08:19 <HackEgo> ​"a lot of" > karma/monqy 07:08:20 <monqy> `karma monqy 07:08:20 -!- itidus20 has changed nick to itidus21. 07:08:21 <HackEgo> monqy has 0 karma. 07:08:23 <monqy> oops 07:08:24 <Vorpal> fizzie: agreed. 07:08:26 <monqy> `run echo "a lot of" > karma/monqy 07:08:27 <HackEgo> No output. 07:08:28 <monqy> `karma monqy 07:08:30 <HackEgo> monqy has 0 karma. 07:08:32 <monqy> oh nooo 07:08:33 <itidus21> `karma+ itidus20 07:08:35 <HackEgo> itidus20 has 1 karma. 07:08:41 -!- itidus21 has changed nick to itidus20. 07:09:09 <elliott> @karma- Vorpal 07:09:09 <lambdabot> Vorpal's karma lowered to -28. 07:09:10 -!- itidus20 has changed nick to itidus21. 07:09:17 <monqy> oh 07:09:20 <Vorpal> elliott: messing in /msg too. *shrug* 07:09:26 <elliott> No. 07:09:29 <elliott> That was just a really strong -. 07:09:34 -!- itidus21 has changed nick to itidus20. 07:09:36 <monqy> how do i get a lot of karma 07:09:42 <monqy> "a lot of" as my karma number 07:09:42 <elliott> @karma+ monqy 07:09:43 <lambdabot> monqy's karma raised to 1. 07:09:44 <elliott> @karma+ monqy 07:09:44 <lambdabot> monqy's karma raised to 2. 07:09:44 <Vorpal> elliott: as I said I don't care about it. I'm just annoyed at the highlight spam. 07:09:44 <elliott> @karma+ monqy 07:09:44 <lambdabot> monqy's karma raised to 3. 07:09:52 <elliott> Vorpal: Sorry, I'll fix the karma. 07:09:53 <monqy> i do not want numbers i want a lot of 07:09:54 <elliott> @karma+ Vorpal 07:09:54 <lambdabot> Vorpal's karma raised to -27. 07:09:55 <elliott> @karma+ Vorpal 07:09:55 <lambdabot> Vorpal's karma raised to -26. 07:09:55 <elliott> @karma+ Vorpal 07:09:55 <elliott> @karma+ Vorpal 07:09:55 <lambdabot> Vorpal's karma raised to -25. 07:09:55 <lambdabot> Vorpal's karma raised to -24. 07:09:56 <elliott> @karma+ Vorpal 07:09:56 <lambdabot> Vorpal's karma raised to -23. 07:09:58 <elliott> @karma+ Vorpal 07:09:58 <lambdabot> Vorpal's karma raised to -22. 07:09:59 <Vorpal> ... 07:10:00 <elliott> @karma+ Vorpal 07:10:00 <lambdabot> Vorpal's karma raised to -21. 07:10:04 <elliott> @karma+ Vorpal 07:10:04 <lambdabot> Vorpal's karma raised to -20. 07:10:06 <elliott> @karma+ Vorpal 07:10:06 <lambdabot> Vorpal's karma raised to -19. 07:10:08 <elliott> @karma+ Vorpal 07:10:08 <lambdabot> Vorpal's karma raised to -18. 07:10:09 <Vorpal> glad you like me at least 07:10:10 <elliott> friendship karma 07:10:30 <Deewiant> ?karma-all 07:10:31 <lambdabot> "pmichaud" 1018 07:10:31 <lambdabot> "moritz" 955 07:10:31 <lambdabot> "c/c" 650 07:10:32 <lambdabot> "jnthn" 607 07:10:34 <lambdabot> "lwall" 530 07:10:36 <lambdabot> [3660 @more lines] 07:10:37 <elliott> Oh dear god. 07:10:45 <coppro> hahaha 07:10:46 <elliott> @more 07:10:46 <lambdabot> "masak" 457 07:10:46 <lambdabot> "pmurias" 404 07:10:46 <lambdabot> "g" 400 07:10:46 <lambdabot> "Weed" 334 07:10:46 <lambdabot> "(" 286 07:10:47 <Deewiant> Wow, it really does what it says on the tin 07:10:48 <lambdabot> [3655 @more lines] 07:10:49 <elliott> @more 07:10:50 <lambdabot> "+" 257 07:10:52 <lambdabot> "br1" 182 07:10:54 <lambdabot> "colomon" 175 07:10:56 <lambdabot> "ruoso" 164 07:10:56 <elliott> We can do this, folks. 07:10:58 <fizzie> "+" is well-liked. 07:10:58 <lambdabot> "azawawi" 149 07:11:00 <elliott> We can do this. 07:11:00 <lambdabot> [3650 @more lines] 07:11:02 <elliott> @more 07:11:03 <lambdabot> "moritz_" 147 07:11:04 <lambdabot> "##c" 146 07:11:06 <lambdabot> "putter" 144 07:11:08 <lambdabot> "Tinned_Tuna" 143 07:11:09 <elliott> fizzie: You don't mind me doing this, right? 07:11:10 <lambdabot> "diakopter" 135 07:11:12 <Vorpal> ... 07:11:12 <lambdabot> [3645 @more lines] 07:11:14 <elliott> @more 07:11:14 <lambdabot> "erg0t" 130 07:11:16 <lambdabot> "tizoc" 108 07:11:18 <lambdabot> "kyle" 107 07:11:20 <Vorpal> this is absurd 07:11:20 <lambdabot> "jonathan" 102 07:11:22 <elliott> @more 07:11:22 <lambdabot> "TimToady" 95 07:11:24 <lambdabot> [3640 @more lines] 07:11:26 <elliott> Gotta get through them all 07:11:26 <lambdabot> "elpolilla" 91 07:11:28 <lambdabot> "mberends" 88 07:11:30 <lambdabot> "bonnie" 87 07:11:32 <lambdabot> "carlin" 85 07:11:34 <lambdabot> "Notepad" 81 07:11:36 <lambdabot> [3635 @more lines] 07:11:38 <elliott> @more 07:11:38 <lambdabot> "hinrik" 76 07:11:40 <lambdabot> "libstdc" 75 07:11:42 <lambdabot> "szabgab" 75 07:11:43 <itidus20> lmao @ notepad 07:11:44 <Vorpal> > a+4; 07:11:44 <lambdabot> "\"C" 74 07:11:46 <elliott> This should only take a few hours 07:11:46 <lambdabot> "Tene" 70 07:11:48 <lambdabot> <no location info>: parse error on input `;' 07:11:49 <elliott> <lambdabot> "\"C" 74 07:11:50 <elliott> wat 07:11:50 <lambdabot> [3630 @more lines] 07:11:53 <elliott> @more 07:11:56 <coppro> elliott: make a script 07:11:58 <elliott> Vorpal: YOU BROKE IT 07:12:02 <Vorpal> elliott: :D 07:12:05 <elliott> coppro: No need for a script, I can just 07:12:07 <elliott> @karma-all 07:12:08 <lambdabot> "pmichaud" 1018 07:12:08 <lambdabot> "moritz" 955 07:12:08 <lambdabot> "c/c" 650 07:12:08 <lambdabot> "jnthn" 607 07:12:08 <lambdabot> "lwall" 530 07:12:09 <elliott> @more 07:12:09 <elliott> @more 07:12:10 <lambdabot> [3660 @more lines] 07:12:10 <elliott> @more 07:12:10 <elliott> @more 07:12:10 <elliott> @more 07:12:10 <elliott> @more 07:12:11 <lambdabot> "masak" 457 07:12:12 <elliott> @more 07:12:13 <Vorpal> > a+4; 07:12:14 <lambdabot> "pmurias" 404 07:12:14 <elliott> @more 07:12:16 <lambdabot> "g" 400 07:12:16 <quintopia> :( 07:12:16 <elliott> @more 07:12:18 <lambdabot> <no location info>: parse error on input `;' 07:12:18 <elliott> @more 07:12:19 <lambdabot> "Weed" 334 07:12:20 <elliott> @more 07:12:20 <coppro> elliott: rate-limiting 07:12:22 <lambdabot> "(" 286 07:12:22 <elliott> @more 07:12:23 <lambdabot> [3655 @more lines] 07:12:24 <elliott> @more 07:12:26 <elliott> @more 07:12:28 <elliott> @more 07:12:30 <elliott> Oh dear. 07:12:32 <Vorpal> ... 07:12:34 <elliott> Aw. 07:12:50 <Vorpal> well I'll be off soon, someone else have to deal with it. 07:12:59 <elliott> There's something to deal with? 07:13:04 <elliott> There's something to deal with that you would be capable of dealing with? 07:13:17 <Vorpal> yes and yes 07:13:24 <elliott> What would that be? 07:13:49 <itidus20> the blackjack dealer 07:14:42 -!- sllide has joined. 07:14:54 <CakeProphet> itidus20: so something like 12-bar nano-stochastic lumberjack's swing. 07:15:24 <itidus20> it's a joke because of the word dealer used in another sense , and because of the implication that going off to gamble is a sign of not dealing with things very well 07:18:17 <Patashu> oh man you know what would be so awesome? 07:18:23 <zzo38> The various pictures I have sent to Jyte are missing there now. However, I still have copies of it in my computer 07:18:24 <Patashu> 3d minesweeper with a projection that lets you see every surface at once 07:18:26 <Patashu> like on maps of the world 07:19:07 <CakeProphet> wouldn't that be mostly like normal minesweeper but with a different shape? 07:19:24 <Patashu> 'different shape' changes a lot about how you play minesweeper 07:19:48 <fizzie> Different shape and presumably some wraparounding. 07:19:54 <Patashu> if a cell can have 7 or 9 or 11 adjacent to it instead of 8 you need new rules 07:20:15 <CakeProphet> still, saying it's a projection of a 3d surface doesn't really make it anything more than a different shape. 07:20:30 <itidus20> Patashu: ahh so like a continuous minesweeper surface.. some sort of torus? 07:20:34 <CakeProphet> Patashu: well if cells are squares then they would still have 8 adjacent ones... 07:20:42 <Patashu> http://www.software3d.com/Mines3D/index.php 07:20:43 <Patashu> This game 07:20:45 <Patashu> But change the perspective 07:21:02 <Patashu> CakeProphet, consider a cell in the corner of a cube and count the cells adjacent to it. I count 7, you? 07:21:29 <itidus20> Patashu: following your idea, what about minepsweeper played on a game of life that wraps around horizontally and vertically 07:21:35 <Patashu> been done too 07:21:42 <CakeProphet> Patashu: ah okay. 07:21:49 <Patashu> http://www.youtube.com/watch?v=7kVEdHSCwmg 07:23:45 <Patashu> the other thing I'd like for that program is, for the boards that have a hole in the middle, a hotkey to move your camera to the center looking outward 07:24:48 <CakeProphet> why does that when you could play a never-ending game of sierpinski's triangle minecraft. 07:27:57 <CakeProphet> surely someone has made minesweeper in minecraft... 07:28:25 <Patashu> http://www.youtube.com/results?search_query=minesweeper+minecraft&aq=f apparently so 07:28:38 -!- sllide has quit (Read error: Connection reset by peer). 07:29:20 <itidus20> can i assume you have all seen the minesweeper movie trailer 07:29:28 <Patashu> I have 07:29:34 <itidus20> right on 07:32:34 <itidus20> Why are you really here? 07:32:38 <elliott> dunno 07:32:40 <itidus20> I want to make this land safe! 07:32:42 <elliott> what 07:32:52 <itidus20> Why are you here soldier? 07:32:56 <itidus20> Because I'm bored! 07:33:01 <itidus20> Don't you ever forget that. 07:33:23 -!- aspect has left. 07:35:15 <elliott> you scared away aspect 07:35:27 <itidus20> http://www.youtube.com/watch?v=LHY8NKj3RKs 07:35:57 <CakeProphet> itidus20: so it's kind of like folk noise pop? 07:36:22 <itidus20> i'm fond of nirvana 07:36:38 <CakeProphet> that's not folk noise pop. 07:37:03 <itidus20> i like the music in the film pulp fiction 07:37:14 <itidus20> i don't know if that is the same thing as it's soundtrack 07:37:29 <CakeProphet> well the intro is surfer rock. 07:37:41 <CakeProphet> dude 07:37:42 <CakeProphet> surf metal 07:37:47 <CakeProphet> I'm going to start a surf metal band. 07:38:00 <itidus20> psha 07:38:04 <monqy> sour cereal band 07:38:58 <itidus20> i like ievan polkka 07:39:26 <CakeProphet> *distorted latin-influenced guitar licks with double bass pedals tapping out 32nd notes- GRRRRRRRRRRROOOOOOAAAAAAR. 07:39:28 <itidus20> oh uhmm 07:40:02 <itidus20> http://www.youtube.com/watch?v=CVAiGf-fku0 07:40:23 <itidus20> chances of anyone who clicks actually enjoying it are minimal. 07:43:17 <CakeProphet> *plays rapid palm muted licks while bending his vibrato arm while plugged into a maxed-out tremolo effect pedal* FEEEEEEL THE WAAAAVES ON YOUR SKIIIIIN. FEEEEEL THE SURF BLOOD IN YOUR VEEEEINS. UGH. 07:43:33 <CakeProphet> I have three arms. 07:45:56 <CakeProphet> all surf metal guitarists need a minimum of three hands. 07:46:20 <CakeProphet> it is suggested that drummers use all 8 limbs. 07:50:58 <elliott> fizzie: You never told me how awful Google markup is. :/ 07:55:54 <elliott> ?hoogle Maybe a -> [a] 07:55:54 <lambdabot> Data.Maybe maybeToList :: Maybe a -> [a] 07:55:54 <lambdabot> Data.Foldable toList :: Foldable t => t a -> [a] 07:55:54 <lambdabot> Data.Maybe catMaybes :: [Maybe a] -> [a] 07:59:06 <elliott> fizzie: I suppose your Perl script used gd? :p 08:08:00 <fizzie> Yes, it did. 08:08:28 <fizzie> I anallllized only the thumbnail images, incidentally. 08:11:08 <elliott> *Main> head `fmap` (getSearchPage "hello world" >>= getThumbnails) 08:11:08 <elliott> [152,152,152,255] 08:11:12 <elliott> That looks a bit small, even for a thumbnail. :/ 08:11:38 <elliott> I suppose I may have fucked up the parsing. 08:12:30 <elliott> How does one force wget to succeed? I want to see if what I'm getting back is an error pag.e 08:12:31 <elliott> page. 08:12:59 <elliott> It's going "oh, this is all http forbidden, I'm not downloading the error page". 08:15:43 <fizzie> Hrm; curl fetches the error pages by default, don't know about wget. 08:15:51 <elliott> I'll just use curl then. :p 08:17:33 <elliott> Hrm; it does indeed appear to be the correct search page that's downloaded. 08:18:41 <elliott> Aha, there we go. 08:18:44 <elliott> I just had to flush the file. :p 08:21:25 -!- nooga has joined. 08:23:56 <elliott> http://sprunge.us/BULB 08:23:59 <elliott> This sure is a thing. 08:24:03 <monqy> bulb 08:24:03 <elliott> fizzie: I blame you for this. :p 08:25:09 <elliott> I wonder if you can use the Google chart API to just give an image of a solid colour. 08:25:15 <CakeProphet> man Perl sure would be better for this. 08:25:25 <elliott> It would be nicer than fiddling around with SDL or whatever just to display a solid colour. 08:25:40 <elliott> CakeProphet: I am incredibly sceptical that Perl could do that in significantly fewer lines. 08:25:44 <elliott> Ignoring the imports which are a bit excessive. 08:26:20 -!- zzo38 has quit (Remote host closed the connection). 08:30:16 <CakeProphet> well it would involve either a lot of short regex or some shitty library 08:30:32 <CakeProphet> but would probably be fewer lines of code, I guess. 08:30:34 -!- ineiros has quit (Remote host closed the connection). 08:31:06 <CakeProphet> but I wasn't really talking about lines of code. 08:31:40 <CakeProphet> hmmm, dunno it's probably the same. What you save in terseness with Perl you lose in debugging. 08:32:53 <fizzie> http://chart.apis.google.com/chart?chs=200x200&cht=lc:nda&chf=bg,s,ff00bb <-- that's pretty close to a 200x200 square with that color only. 08:32:54 -!- Jafet has joined. 08:32:57 <elliott> http://chart.googleapis.com/chart?cht=p&chs=200x200&chf=bg,s,EFEFEF 08:33:06 <elliott> fizzie: If you use the pie chart, all the border things go away. :p 08:33:14 <elliott> This MAY be the ugliest hack ever. 08:33:20 <fizzie> So does the :nda suffix to a line chart. 08:33:40 <elliott> =p is fewer bytes. :p 08:36:39 <elliott> readImage :: FilePath -> IL (Array DIM3 Word8)Source 08:36:39 <elliott> Reads an image into an RGBA array. Indices are (row,column,color-channel). 08:36:42 <elliott> Oh, I just realised how horrific that API is. 08:36:48 <elliott> Colour channel as the third dimension. :-| 08:39:20 <fizzie> It sounds typicalish; MATLAB image-reading functions tend to return a [height]x[width]x[samples-per-pixel] 'matrix' too. 08:39:22 <elliott> > showIntAtBase 08:39:23 <lambdabot> Overlapping instances for GHC.Show.Show 08:39:23 <lambdabot> (a 08:39:23 <lambdabot> ... 08:39:25 <elliott> :t showIntAtBase 08:39:26 <lambdabot> forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String 08:39:46 <elliott> Bleh, I just want a padded hex. :/ 08:39:55 <elliott> > ['0'..'F'] 08:39:56 <lambdabot> "0123456789:;<=>?@ABCDEF" 08:40:00 <elliott> D'aww. 08:40:37 <elliott> > showIntAtBase 16 ("0123456789ABCDEF" !!) 99 "" 08:40:38 <lambdabot> "63" 08:40:43 <elliott> > showIntAtBase 16 ("0123456789ABCDEF" !!) 9 "" 08:40:44 <lambdabot> "9" 08:40:49 <fizzie> > showHex 99 08:40:50 <lambdabot> Overlapping instances for GHC.Show.Show 08:40:50 <lambdabot> (GHC.B... 08:40:59 <elliott> :t showHex 08:41:00 <lambdabot> forall a. (Integral a) => a -> String -> String 08:41:03 <elliott> "Oh." 08:41:05 <elliott> > showHex 99 "" 08:41:06 <lambdabot> "63" 08:41:06 <elliott> > showHex 90 "" 08:41:07 <lambdabot> "5a" 08:41:14 <elliott> Very well, then. 08:41:29 <fizzie> Right, it's one of those ShowSeses. Doesn't pad either, of course. 08:43:20 <fizzie> > printf "%02x" 15 :: String 08:43:21 <elliott> hex n = reverse . take 2 . reverse . ("0" ++) $ showHex n "" 08:43:21 <lambdabot> "0f" 08:43:22 <elliott> "Works." 08:43:27 <elliott> fizzie: printf is grosse. 08:43:31 <elliott> So unsafe. :/ 08:43:51 <elliott> > printf "%02x" (print 99) () "hahaha" :: String 08:43:52 <lambdabot> No instances for (Text.Printf.PrintfArg (GHC.Types.IO ()), 08:43:52 <lambdabot> ... 08:44:00 <elliott> OK WELL _THAT_ WOULD FAIL WOULDN'T IT :P 08:44:06 <elliott> > printf "%02x" [99] () "hahaha" :: String 08:44:07 <lambdabot> No instance for (Text.Printf.PrintfArg ()) 08:44:07 <lambdabot> arising from a use of `Text.P... 08:44:12 <elliott> > printf "%02x" [99] 99.999 "hahaha" :: String 08:44:13 <lambdabot> Ambiguous type variable `t' in the constraints: 08:44:13 <lambdabot> `GHC.Num.Num t' 08:44:13 <lambdabot> ari... 08:44:19 <elliott> > printf "%02x" [99::Int] (99.999 :: Float) "hahaha" :: String 08:44:20 <lambdabot> No instance for (Text.Printf.IsChar GHC.Types.Int) 08:44:20 <lambdabot> arising from a use of... 08:44:23 <elliott> Suicide. 08:44:33 <Deewiant> > printf "%02x" "foo" :: String 08:44:34 <lambdabot> "*Exception: Printf.printf: bad argument 08:44:38 <elliott> Thank you, sir. 08:45:48 <elliott> _ <- 08:45:49 <elliott> createProcess $ 08:45:49 <elliott> (Process.proc "xdg-open" [chart ++ hex r ++ hex g ++ hex b]) { 08:45:49 <elliott> std_out = CreatePipe } 08:45:53 <elliott> What an ugly few lines. :/ 08:46:12 <fizzie> > let p :: Int -> String; p = printf "%02x" in p 8 08:46:13 <lambdabot> "08" 08:46:13 <fizzie> > let p :: Int -> String; p = printf "%02x" in p "foo" 08:46:14 <lambdabot> Couldn't match expected type `GHC.Types.Int' 08:46:14 <lambdabot> against inferred type ... 08:46:21 <elliott> fizzie: IT'S NOT RIGHT TO EVEN _IMPORT_ SOMETHING THAT BAD 08:46:26 <Deewiant> You should totally use Pipe dude 08:46:27 <fizzie> Sure, sure. :p 08:46:34 <elliott> Deewiant: Mo dependencies mo problems 08:46:53 <fizzie> 99 problems but a Pipe ain't one. 08:46:59 <elliott> Yes. Exactly. 08:47:20 <Deewiant> It's less than 100 LOC :-P 08:47:56 <elliott> 100 lines of problem 08:48:07 <elliott> 100 lines of i mad. 08:49:26 <Vorpal> elliott: he said *less than* 08:49:42 <elliott> It'll be a hundred within the week. 08:49:47 <Vorpal> oh? 08:50:08 <elliott> I'll start depending on it and then find out it needs tons more features than it has and then eventually break down and write a patch myself. 08:50:14 -!- ineiros has joined. 08:50:47 <Vorpal> elliott: keep it simple and so on 08:50:59 <Vorpal> elliott: btw what are you trying to do? 08:51:10 <elliott> Recreate this thing fizzie had in the logs once. Except it's not quite Perl. 08:51:25 <elliott> Right now I'm at the exciting stage "wow, I totally don't know how HSV works". 08:51:28 <fizzie> Color name → RGB value via Google Image search. 08:51:56 <Vorpal> ah 08:52:54 <Vorpal> elliott: anyway I think I read somewhere that HSV -> RGB can be done with matrices. Or was it XYZ -> RGB maybe 08:53:00 <elliott> It's RGB -> HSV I want to do. :p 08:53:04 <elliott> Well, and the other way around, I suppose. 08:53:12 <elliott> http://hackage.haskell.org/package/colour Oh, this looks nice. 08:53:16 <Vorpal> well if you can do one with matrices then you could do the other I think 08:53:22 <Deewiant> Mo dependencies mo problems? 08:53:26 <elliott> Except it doesn't actually have HSV, oops. 08:53:33 <elliott> Deewiant: Mo having to understand colours mo problems 08:53:39 <Vorpal> elliott: http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB 08:53:39 <elliott> I understand process spawning 08:53:54 <fizzie> It's a bit messy conversion, I wouldn't be sure it's linear. 08:53:59 <Deewiant> http://hackage.haskell.org/packages/archive/colour/2.3.1/doc/html/Data-Colour-RGBSpace-HSV.html 08:54:04 <Deewiant> Is that not HSV? 08:54:06 <CakeProphet> http://www.cs.rit.edu/~ncs/color/t_convert.html 08:54:11 <Vorpal> fizzie: right, could have been XYZ -> HSV then maybe? 08:54:11 <CakeProphet> you're welcome. 08:54:18 <elliott> Deewiant: That might be HSV. 08:54:46 <CakeProphet> I mean, it's icky procedural code but I'm sure you can map it to functional code. 08:55:00 <fizzie> Vorpal: Or XYZ <-> RGB; they're sort of related. 08:55:01 <Vorpal> fizzie: right, it is XYZ<->RGB that is matrices 08:55:02 <Vorpal> yeah 08:55:20 <fizzie> I see the wikipage has the matrix and all. 08:55:36 <Vorpal> matrices are wonderful, there are so many cool things that you can do with them. 08:55:55 <itidus20> theres algos around on how to do RGB -> HSL 08:56:07 <itidus20> sorry i just don't like the term V 08:56:10 <elliott> Mo matrices mo problems. 08:56:18 <CakeProphet> itidus20: hey look I totally linked one 08:56:18 <itidus20> Luminance is so fitting 08:56:37 <fizzie> HSL != HSV, conventionally. 08:56:43 <itidus20> oh.. shit 08:56:53 <fizzie> They're very close though. 08:56:55 <itidus20> thanks for the protip fizzie 08:57:10 <elliott> instance Applicative RGB where 08:57:10 <elliott> pure c = RGB c c c 08:57:10 <elliott> (RGB fr fg fb) <*> (RGB r g b) = RGB (fr r) (fg g) (fb b) 08:57:12 <elliott> The most useful instance 08:57:17 <elliott> I have RGBs with function components ALL THE TIME 08:57:42 <CakeProphet> elliott: I mean... why wouldn't you? 08:58:24 <elliott> Deewiant: I like how it doesn't expose any way to go from RGB->HSV or HSV->RGB. :/ 08:58:33 <elliott> I mean, it has an RGB type, but the only exposed constructor is from HSV. 08:58:34 <CakeProphet> elliott: see link make your own 08:58:42 <Deewiant> elliott: Um 08:58:47 <Deewiant> elliott: hsvView :: Rgb a -> (a,a,a) 08:58:53 <Deewiant> elliott: hsv :: a -> a -> a -> RGB a 08:58:59 <Deewiant> elliott: Modulo spelling and instances 08:59:18 <elliott> Deewiant: Yes, which will be id 08:59:22 <CakeProphet> you guys you can't take the remainder of the division of arbitrary words. 08:59:27 <CakeProphet> MODULO DOESN'T WORK LIKE THAT. 08:59:29 <elliott> Unless hsvView (hsv h s v) /= (h,s,v) which would be insane. 09:00:17 <Deewiant> It might be if they get normalized somehow in between and your initial values aren't 09:00:28 <Deewiant> E.g. your h is 360 instead of 0 or something 09:00:42 <Deewiant> But anyway, those two functions are exactly RGB->HSV and HSV->RGB 09:01:13 <shachaf> elliott: Why is one function using a tuple and the other not? How inconsistent. 09:01:16 <elliott> Deewiant: Yes, but /there are no exposed constructors for RGB/. 09:01:32 <elliott> The ONLY way to get an RGB is by converting it from HSV. The ONLY thing you can get out of an RGB is HSV values. 09:01:47 <CakeProphet> http://www.cs.rit.edu/~ncs/color/t_convert.html 09:01:48 <CakeProphet> http://www.cs.rit.edu/~ncs/color/t_convert.html 09:01:49 <CakeProphet> http://www.cs.rit.edu/~ncs/color/t_convert.html 09:01:54 <elliott> Prelude Data.Colour.RGBSpace.HSV> hsv 99 99 99 09:01:54 <elliott> RGB {channelRed = -6271.65, channelGreen = 99.0, channelBlue = -9702.0} 09:01:54 <elliott> Prelude Data.Colour.RGBSpace.HSV> channelRed (hsv 99 99 99) 09:01:54 <elliott> <interactive>:1:1: Not in scope: `channelRed' 09:02:00 <elliott> I suppose I could extract the data from "show"?????????? 09:02:10 <Deewiant> read "RGB 1 2 3" 09:02:20 <elliott> Oh, that type is exported by Data.Colour.RGBSpace 09:02:21 <shachaf> elliott: Or just impor Data.Colour.RGBSpace? 09:02:21 <CakeProphet> you could just write these two very simple algorithms in Haskell. 09:02:29 <elliott> Which is conveniently not mentioned anywhere, and the module /source/ imports a different module 09:02:38 <elliott> Wooooooooooooooooo /waves a little American flag 09:02:47 <CakeProphet> god bless haskell america 09:03:19 <shachaf> elliott: :i is your friend. 09:03:35 * elliott continues waving a little American flag 09:03:55 <shachaf> You're not allowed to wave an American flag while working with a module named "colour". 09:04:01 <shachaf> I mean wourking. 09:04:15 <elliott> Now let's see if repa can go from (Array DIM3 Word8) to (Array DIM2 RGB) without, like, reallocating everything. (Probably: not.) 09:04:18 <elliott> Actually hmm. 09:04:32 <elliott> I should probably read my copied fizzie quotes on the actual algorithm to figure out whether I should even be doing that. 09:04:40 <CakeProphet> http://www.cs.rit.edu/~ncs/color/t_convert.html 09:04:46 * shachaf >>= undefined 09:04:54 <elliott> CakeProphet: Are you trying to be really irritating? 09:05:03 <elliott> shachaf: Is that, like, suicide? 09:05:03 <Vorpal> elliott: why not just convert it to a spectrum of wavelengths and then to HSV from there? 09:05:07 <elliott> God bless haskell america. 09:05:13 <elliott> Vorpal: A practical solution. 09:05:20 <Vorpal> elliott: absolutely! 09:05:38 <elliott> 22:34:39: <fizzie> GregorR: The statistics part was very very simple: it just converted all pixels to HSV, did separate histograms for H, S and V values, and interpolated the highest peak out of them histograms. 09:05:41 <Vorpal> elliott: anyway why do you need RGB <-> HSV? 09:05:41 <shachaf> elliott: Leaving the Internet for any period of time? Pretty much. 09:05:45 <elliott> Ah, histograms. The solution to every statistical problem. 09:05:53 <elliott> Vorpal: Because it's part of The Algorithm. 09:06:09 <fizzie> You don't really need to follow The Algorithm, though. 09:06:09 <Vorpal> elliott: the algorithm for what? 09:06:18 <elliott> fizzie: The Prophets demand it. 09:06:27 <Vorpal> fizzie: what algorithm? 09:06:35 <elliott> The Algorithm. 09:06:38 <CakeProphet> elliott: histogram = fromListWith (+) . (`zip` repeat 1) 09:06:47 <Vorpal> elliott: implementing some esolang? 09:06:58 <fizzie> Vorpal: The one to convert a set of images into a single RGB triplet. 09:07:05 <fizzie> (In some sort of meaningful way.) 09:07:17 <CakeProphet> elliott: can you do that w ith array thingies? 09:07:23 <Vorpal> fizzie: heh? 09:08:11 <fizzie> Vorpal: See, the whole point is to determine the color of "foo" from a hundred or so Google image search results for the word. So you need some way to classify the "most prominent" color of the whole set. 09:08:20 <Vorpal> ah 09:08:42 <elliott> :t find 09:08:43 <lambdabot> forall a. (a -> Bool) -> [a] -> Maybe a 09:09:16 <Vorpal> fizzie: idea: for each colour, count pixels with that colour, return the colour with most pixels? 09:09:44 <CakeProphet> elliott: hi am I /ignore'd 09:09:51 <Vorpal> sure, #fafafa and #fafafb for example would count as separate, so if you want to avoid that, maybe 09:10:07 <fizzie> Vorpal: That's certainly one way, but the whole 256*256*256-color RGB space will be rather sparsely populated by thumbnail-sized images. 09:10:11 <elliott> CakeProphet: yes 09:10:26 <Vorpal> fizzie: well yes, you could download the originals? 09:11:09 <fizzie> Vorpal: Sure, but that's annoying; it tends to run into all kinds of referer-checks and currently-down servers and whatnot. At least the thumbnails are always available. 09:11:11 <elliott> ?pl \x -> fmap f (g x) 09:11:12 <lambdabot> fmap f . g 09:11:16 <Vorpal> true 09:11:22 <CakeProphet> elliott: I will stop trying to help then. 09:11:24 <CakeProphet> good night. 09:11:30 <Deewiant> f .: g 09:13:27 <fizzie> Vorpal: Anyhow, what I did was to pick the most common H, S and V values for each image separately for each channel, and then take the weighted average over images, with weights derived from the standard deviation of hue, so that "single-colour" images (in some sense) got more weight. 09:15:18 <Vorpal> fizzie: ah 09:15:27 <elliott> fizzie: You lied, that's much more complicated than what you describe in this log. :p 09:15:54 <fizzie> elliott: Possibly I describe only the "color of a single image" case. 09:16:57 <elliott> nextPageURI :: [Tag ByteString] -> Maybe URI 09:16:57 <elliott> nextPageURI = 09:16:57 <elliott> find isNextPageURI >=> 09:16:57 <elliott> URI.parseURI . ("http://www.google.com" ++) . B8.unpack . fromAttrib "href" 09:16:57 <elliott> where isNextPageURI link@(TagOpen _ _) = fromAttrib "id" link == "pnnext" 09:16:57 <elliott> isNextPageURI _ = False 09:16:59 <elliott> This could be prettier. :/ 09:17:08 <fizzie> If you want the details, for a standard deviation of hue (in degrees) of S, the corresponding weight W(S) = { 1 if S < 10; 0.02 if S > 50; linearly interpolated if 10 <= S <= 50 }. (Parameters selected using the Stetson-Harrison method.) 09:17:09 <elliott> fizzie: You literally just say 09:17:09 <elliott> 22:34:39: <fizzie> GregorR: The statistics part was very very simple: it just converted all pixels to HSV, did separate histograms for H, S and V values, and interpolated the highest peak out of them histograms. 09:17:19 <fizzie> Yes, well, that's for one image. 09:17:25 <elliott> Yes. Pah :P 09:17:32 <elliott> Well, I need to concentrate on actually getting a hundred thumbnails first. 09:17:38 <Vorpal> yay histograms 09:19:39 <fizzie> Incidentally, I think the newer MATLAB-dumping code was in order to fine-tune those parameters; I seem to have found a couple of color name lists (rgb.txt and some others), and I vaguely think I was going to use those as known targets to tune the color selection. 09:19:51 <fizzie> Possibly I never got around to it. 09:20:06 <fizzie> The rgb.txt names are somewhat nonsensical anyway. 09:20:58 <Vorpal> fizzie: rgb.txt? 09:21:22 <fizzie> The X11 color name list. 09:21:24 <Vorpal> ah 09:21:58 <Vorpal> yeah those tend to be nonsensical beyond the basic colours iirc. 09:22:32 <fizzie> 0,47,167,international klein blue 09:22:32 <fizzie> 255,79,0,international orange 09:22:36 <fizzie> Heh. 09:22:45 <Vorpal> 190 190 190gray 09:22:45 <Vorpal> 190 190 190grey 09:22:45 <Vorpal> 211 211 211light grey 09:22:45 <Vorpal> 211 211 211LightGrey 09:22:45 <Vorpal> 211 211 211light gray 09:22:46 <Vorpal> 211 211 211LightGray 09:23:01 <fizzie> It also has spelling variants, sure; and those numbered darker variants. 09:23:06 <elliott> 22:37:05: <fizzie> Hahah, I still have a ~/.gcolor/ directory which has 100 megabytes of them thumbnails -- I was trying to make it better by fetching various lists of defined colors (wikipedia color names, X11 rgb.txt) and using that for training data, so I wanted a local cache of the images. 09:23:12 <elliott> An remembering blast from the past courtesy past fizzie. 09:23:15 <Vorpal> 252 252 252 gray99 09:23:15 <Vorpal> 252 252 252 grey99 09:23:15 <Vorpal> 255 255 255 gray100 09:23:15 <Vorpal> 255 255 255 grey100 09:23:33 <fizzie> elliott: Ooh, I seem to have remembered right, then. 09:23:47 <fizzie> ~/.gcolor is gone now, though. 09:24:18 <elliott> http://sprunge.us/KiUL ;; Well, it's progress. 09:24:30 <elliott> It can now get the correct number of thumbnails for a given query, as (RGB) image arrays. :p 09:24:35 <Vorpal> <fizzie> 255,79,0,international orange <-- can't find that, which rgb.txt did you get that from? 09:24:42 <elliott> Oops, except I forgot to s/100/pics/ in one place. 09:25:10 <fizzie> Vorpal: Like I said, there were multiple sources. Those are from "colors.wikipedia.txt", I don't recall how I collected those. 09:25:18 <Vorpal> ah 09:25:26 <fizzie> http://en.wikipedia.org/wiki/List_of_colors maybe? 09:25:33 <fizzie> Yes, probably. 09:25:51 <fizzie> I'm not sure what's so international about that orange. 09:26:16 <fizzie> "Non-photo blue". 09:26:17 <elliott> fizzie: So how long is your Perl stuff? :P 09:26:24 <elliott> The one that actually worked, I mean. 09:26:26 <elliott> Not that MATLAB stuff. 09:26:27 <fizzie> Long. 09:26:46 <elliott> A specific answer indeed. 09:27:12 <fizzie> Almost 300 lines in all. 09:27:29 <elliott> Hokay, so I guess I want (Image -> RGB Word8) now. 09:27:42 -!- derdon has joined. 09:27:43 <elliott> fizzie: Aww, mine might actually end up longer, then. 09:28:30 <elliott> I wonder what I should do with that pesky alpha channel. 09:28:32 <elliott> Probably just ignore it. 09:28:49 -!- augur has quit (Remote host closed the connection). 09:28:51 <Patashu> leave it alone 09:32:11 <Vorpal> elliott: maybe ignore completely transparent pixels at least? Since those probably aren't part of the "image as such". 09:32:59 <elliott> Vorpal: Tooo much work. 09:33:06 <elliott> At least for now. :p 09:34:09 <elliott> No instance for (R.Elt (RGB Word8)) 09:34:09 <elliott> arising from a use of `show' 09:34:10 <elliott> Augh 09:34:17 <elliott> repaaaaaaaaaaaaaaaaaaaaaaaaaaaa 09:35:29 * elliott just stores arrays of triplse instead 09:35:32 <elliott> GHETTO. 09:35:35 <elliott> s/triplse/triples/ 09:39:19 <Vorpal> elliott: store it as (array of R, array of G, array of B) 09:39:46 <elliott> Vorpal: No, that's awful. 09:39:51 <Vorpal> right 09:39:53 <Vorpal> bbiab 09:40:29 <elliott> ?hoogle uncurry3 09:40:30 <lambdabot> No results found 09:40:59 <elliott> imageToHSV :: Image -> HSVImage 09:41:00 <elliott> imageToHSV (Image img) = HSVImage (R.map f img) 09:41:00 <elliott> where f = word . hsvView . (\(r,g,b) -> RGB r g b) . double 09:41:00 <elliott> double :: (Word8,Word8,Word8) -> (Double,Double,Double) 09:41:00 <elliott> double (r,g,b) = (fromIntegral r, fromIntegral g, fromIntegral b) 09:41:00 <elliott> word :: (Double,Double,Double) -> (Word8,Word8,Word8) 09:41:04 <elliott> word (h,s,v) = (round h, round s, round v) 09:41:08 <elliott> fizzie: Behold the ELEGANCE OF HASKELL. 09:43:22 <fizzie> How very. 09:43:23 <elliott> HASKELLEGANCE. 09:44:01 <elliott> I'm kind of way to write the (HSVImage -> RGB Word8) enflattener right now, so it shall SIT AND MATURE. 09:44:14 <elliott> But I shall be back to you very soon, dear code. 09:44:19 <elliott> s/way to/way too lazy to/ 09:47:36 -!- augur has joined. 09:49:58 <Vorpal> elliott: new idea: store it as bitplanes for each colour, like [[(R1,G1,B1),...],[(R2,G2,B2),...],...] 09:51:00 <Vorpal> so the first "bitplane" contains the first bit of each colour, the second "bitplane" the second bit of each colour and so on 09:52:37 <elliott> fizzie: It's too bad the whole thing is so ridiculously IO-bound, or I'd TOTALLY thrash you in the benchmarks. 09:52:52 <elliott> (Also the "actually works with Google's current page" marks, which might be more important depending on your POV.) 10:00:01 <Vorpal> elliott: I guess it would even be pointless to download in the background of processing? 10:00:11 <elliott> Vorpal: Yes. 10:02:23 <elliott> Maybe I should just take the mean H, mean S, and mean V rather than bothering with, you know, all that fizzie magic. (My laziness cannot even be quantified.) 10:02:25 -!- ineiros has quit (Remote host closed the connection). 10:04:30 <Vorpal> not sure mean of those is all that useful though 10:05:14 <fizzie> At least for hue the regular mean is rather senseless, esp. for red images that straddle the 0/360 boundary. 10:06:11 <fizzie> For the other two the mean value could be something reasonable. 10:07:07 <elliott> fizzie can't even BEGIN to comprehend how lazy I am. 10:07:57 <fizzie> You do get a color our of it in any case, so in that sense it could work. 10:09:13 <elliott> [RGB {channelRed = 2.1418661116892126e-2, channelGreen = 2.122740927004503e-2, channelBlue = 2.122735673820327e-2},RGB {channelRed = 1.3108320251177395e-2, channelGreen = 1.2870692910211269e-2, channelBlue = 1.2870641916952748e-2}, 10:09:21 <elliott> I... suspect something is going wrong. 10:10:17 <fizzie> Sounds quite black. 10:10:21 <elliott> Unless "hello world" really is just the blackest concept. 10:10:43 <Vorpal> it is so dark and grim you can't even begin to imagine 10:10:52 <fizzie> GRIMDARK. 10:11:02 <Vorpal> fizzie: where is that from now again? 10:11:13 <Deewiant> WH40K 10:11:17 <Vorpal> ah right 10:11:29 <Vorpal> wasn't there a gamed based on WH40K recently? 10:11:37 <Vorpal> computer game I meant 10:11:45 <Deewiant> Yes, and even more depending on what you mean by "recently" 10:11:57 <Vorpal> Deewiant: like, last 6 months. 10:12:09 <fizzie> One reasonable approach for the image->color case could be to take the mean (possibly in the RGB space, it doesn't have the hue discontinuity problem) of the most likely Gaussian distribution to have yielded the image pixels, considering each pixel as an independent sample. 10:12:30 <Deewiant> I think the second expansion to Dawn of War II came out within the last 6 months 10:12:32 <fizzie> Wait, that'd just be the mean. Never mind. 10:12:39 <Deewiant> Space Marine came out like a few weeks ago 10:12:48 <elliott> In the grim dark hello world there is only black. 10:12:58 <elliott> `addquote <fizzie> One reasonable approach for the image->color case could be to take the mean (possibly in the RGB space, it doesn't have the hue discontinuity problem) of the most likely Gaussian distribution to have yielded the image pixels, considering each pixel as an independent sample. <fizzie> Wait, that'd just be the mean. Never mind. 10:12:58 <Vorpal> Deewiant: ah yes I meant "space marine" 10:13:00 <HackEgo> 667) <fizzie> One reasonable approach for the image->color case could be to take the mean (possibly in the RGB space, it doesn't have the hue discontinuity problem) of the most likely Gaussian distribution to have yielded the image pixels, considering each pixel as an independent sample. <fizzie> Wait, that'd just be the mean. Never mind. 10:13:15 <fizzie> "You slip into the fabled blackdeath trance of the woegothics, quaking all the while in the bloodeldritch throes of the broodfester tongues. You advise the members of your Complacency not to be ala 10:13:15 <fizzie> rmed, as they chronicle the event in tomes bound in the tanned, writhing flesh of a tortured hellscholar, with runes stroked in the black tears bled from the corruption-weary eyes of fifty thousand imaginary occultists. 10:13:17 <elliott> Thank god mathematics exists to give us more and more complicated ways of defining the mean. 10:13:20 <fizzie> But they fail to not be alarmed. 10:13:21 <fizzie> This is because, as is now painfully obvious to anyone with a brain, you have basically gone completely off the deep end in every way. 10:13:25 <fizzie> You have officially gone grimdark." 10:13:30 <elliott> Oh no, I interrupted the quote. 10:13:42 <Deewiant> OH NO 10:13:44 <Vorpal> fizzie: that sounds lovecraftian 10:13:47 <fizzie> I managed to put a newline in the middle of "alarmed", so it was ruined anyhow. 10:14:00 * elliott weeps a tear for the newline. 10:14:03 <elliott> A tear for the newline, wept. 10:14:15 <fizzie> I don't think "as is now painfully obvious to anyone with a brain" sounds especially Lovecraftian. 10:14:39 <elliott> Also "basically gone completely off the deep end in every way". 10:14:48 <elliott> Then this Cthulhu dude came and everyone went WACK. 10:14:59 <elliott> It was, like, totally insane. Freakin' monster. 10:15:31 <Vorpal> fizzie: I meant the bit before 10:15:58 <elliott> I like how Vorpal devoted sixteen hours of his life to reading something he then promptly forgot and never picked up again. 10:16:13 <elliott> Would that we all learned to manage time and memory in such a garbage-collection-friendly manner. 10:16:15 <Vorpal> elliott: what do you refer to? 10:16:28 <fizzie> Vorpal: It's from the stuckhome. 10:16:36 <Vorpal> fizzie: oh right 10:16:47 <Vorpal> anyway, bbl university 10:17:27 <elliott> It occurs to me that maybe my imageToHSV isn't quite right. 10:17:58 <elliott> Specifically 10:18:03 <elliott> where f = word . hsvView . (\(r,g,b) -> RGB r g b) . double 10:18:06 <elliott> That truncation might be a bit iffy. 10:18:11 <fizzie> Anyway, maybe a GMM and then pick the mean of the highest-weight Gaussian, how would that sound like? It's almost like a soft clustering thing then. 10:18:42 <elliott> I should probably learn what HSV values tend to actually look like. 10:18:50 <elliott> I'm not a, you know, colour person. 10:19:24 <fizzie> It's not entirely well-established. The S and L components are often either [0, 1] or [0, 100] or [0, 255], while the H tends to be [0, 360]. 10:19:34 <elliott> I should probably: check. 10:19:39 <fizzie> Or [0, 360) maybe. 10:20:18 <elliott> (126,1,62),(127,1,78),(131,0,119),(131,0,132),(129,1,57),(128,1,82),(126,0,112),(123,1,82),(116,1,97),(112,1,70),(110,1,76),(114,1,64),(126,1,79),(130,1,52),(125,1,46),(120,1,43),(120,1,18),(120,1,36),(112,0,125),(120,1,33),(120,1,51),(122,0,118),(120,1,39),(124,1,42),(126,0,74),(128,1,32),(120,1,8),(120,1,13),(120,1,25),(113,1,98),(117,1,54),(119,1,80),(120,1,67),(120,1,69),(116,1,46),(120,1,20),(106, 10:20:18 <elliott> 1,34),(100,1,54),(120,1,21),(102,1,68),(110,0,96),(120,1,19),(122,1,57),(123,1,100),(116,1,68),(117,0,95),(124,0,86),(120,1,41),(128,0,102),(128,0,106),(120,1,19),(124,1,44),(118,1,42),(120,1,21),(120,1,32),(120,1,16),(120,1,16),(120,1,24),(120,1,18),(120,1,20),(120,1,12),(120,1,22),(120,1,10),(120,1,11),(120,1,9),(120,1,11),(118,1,25),(120,1,11),(120,1,22),(120,1,14),(120,1,16),(120,1,22),(133,1,64),( 10:20:19 <elliott> 130,1,43),(133,0,107),(132,0,100),(127,1,41),(128,1,77),(128,0,92),(122,1,39),(12 10:20:31 <elliott> Uh. 10:20:38 <elliott> Is my S on a different scale to my V? 10:21:05 <fizzie> It certainly looks rather binary. 10:21:05 <elliott> (Also was it HSL or HSV you actually used, anyway? Da Log says HSV, but you know what past you is like.) 10:21:16 <elliott> fizzie: Well, it's post-perhaps-unclever-truncation. 10:21:18 <fizzie> HSV probably, though it doesn't really matter all that much. 10:21:28 * elliott makes HSVImages Double-componente. 10:21:29 * elliott makes HSVImages Double-componented. 10:23:02 <fizzie> It's also possible that your hsvView expects to get an RGB constructed from [0,1]-ranged values, while whatever you use for reading the image returns integers in the [0, 255] range. 10:23:26 <elliott> RGB {channelRed = 12, channelGreen = 57, channelBlue = 16},RGB {channelRed = 123, channelGreen = 122, channelBlue = 78},RGB {channelRed = 71, channelGreen = 95, channelBlue = 100},RGB {channelRed = 225, channelGreen = 227, channelBlue = 207},RGB {channelRed = 73, channelGreen = 181, channelBlue = 154},RGB {channelRed = 128, channelGreen = 123, channelBlue = 120},RGB {channelRed = 168, channelGreen = 17 10:23:26 <elliott> 9, channelBlue = 165},RGB {channelRed = 38, channelGreen = 73, channelBlue = 46},RGB {channelRed = 11, channelGreen = 17, channelBlue = 9},RGB {channelRed = 229, channelGreen = 237, channelBlue = 225},RGB {channelRed = 92, channelGreen = 117, channelBlue = 112},RGB {channelRed = 31, channelGreen = 32, channelBlue = 18},RGB {channelRed = 234, channelGreen = 244, channelBlue = 233},RGB {channelRed = 120, 10:23:27 <elliott> channelGreen = 133, channelBlue = 63} 10:23:34 <elliott> Eliminating the rounding seems to make everything 0kay. 10:23:45 <elliott> Though of course that's still the ridiculous "mean of H, S, V" method. 10:31:50 -!- ais523 has joined. 10:31:56 <elliott> hi ais523 10:32:33 -!- Phantom_Hoover has joined. 10:33:56 <elliott> hi Phantom_Hoover 10:34:52 <ais523> hi people who need hi saying to them 10:35:18 <elliott> hi 10:36:08 <Phantom_Hoover> hi ho, hi ho, 10:36:10 <monqy> hi 10:36:15 <elliott> hi 10:36:37 <Phantom_Hoover> monqy, so when are we doing that staring collaboration. 10:36:46 <fizzie> Hisayers are like a more positive breed of naysayers. 10:37:24 <monqy> all the time 10:37:30 <elliott> it's a lovely word, hi 10:37:31 <elliott> really lovely 10:37:37 <elliott> definitely, one of my top words 10:37:38 <elliott> in terms of 10:37:40 <elliott> words that i like 10:37:51 <monqy> hi is a Good Word 10:38:00 <elliott> hi 10:38:07 <monqy> hi 10:38:53 <elliott> hi 10:42:02 <Phantom_Hoover> elliott, what are other words that you like? 10:42:08 <Phantom_Hoover> 'Rabbit'? 10:44:08 <elliott> hi rabbit 10:52:12 -!- ais523 has quit (Read error: Connection reset by peer). 10:53:02 -!- ais523 has joined. 11:08:29 -!- derdon has quit (Remote host closed the connection). 11:11:42 <Phantom_Hoover> "The safest way through Mogadishu is escorted by Ethiopian and official Somalian troops, or African Union peacekeeping forces;" 11:11:45 <Phantom_Hoover> Best holiday. 11:17:56 <elliott> <ais523> [genuine concern] 11:18:44 <ais523> elliott: at what? 11:18:51 <elliott> <Phantom_Hoover> "The safest way through Mogadishu is escorted by Ethiopian and official Somalian troops, or African Union peacekeeping forces;" 11:18:51 <elliott> <Phantom_Hoover> Best holiday. 11:18:56 <ais523> ah, I see 11:19:24 <elliott> Something along the lines of "please don't go on holiday there". 11:19:55 <elliott> Where's oerjan when you need to complain to him about a deficiency in the Haskell report? 11:22:21 <elliott> ais523: can I have an asterisk? 11:22:34 <Phantom_Hoover> * 11:22:36 <ais523> * 11:22:39 <elliott> thanks 11:22:46 <elliott> would anyone like to buy an asterisk? I have one spare 11:23:01 <fizzie> Here, have three: ⁂ 11:23:33 <fizzie> Any copy-paste systems around that could select a single asterisk of an asterism? 11:23:55 -!- FireFly has joined. 11:23:59 <ais523> probably not 11:26:18 <elliott> darn, I don't think zippers are monads 11:27:29 <elliott> perhaps not even applicatives 11:36:01 <Phantom_Hoover> Zippers are the things that tell you where stuff is, right/ 11:36:28 <elliott> deep 11:36:46 <Phantom_Hoover> Where are we all, man? 11:37:07 <elliott> deep 11:39:29 <Phantom_Hoover> We're all just specks in that great zipper of the universe. 11:39:50 <elliott> What _are_ zippers, really? 11:39:55 <elliott> And what _is_ life? 11:40:17 <Phantom_Hoover> Life is an algebraic data structure, duh. 11:41:05 <elliott> Thanks, Conway. 11:41:36 <monqy> I think I remember reading something about zippers and comonads? I forget what or where it was. 11:41:36 <Phantom_Hoover> Hashlife is the key to existence. 11:41:56 <Phantom_Hoover> Comonads are monads the other way round, then? 11:42:27 <Phantom_Hoover> They are the least confusing thing ever, and tutorials on them are so scarce as to be nearly nonexistent. 11:42:32 <elliott> ?unmtl StaetT s Cont 11:42:32 <lambdabot> StaetT s Cont 11:42:39 <elliott> ?unmtl StateT s Cont 11:42:39 <lambdabot> err: `StateT s Cont' is not applied to enough arguments. 11:42:42 <elliott> ?unmtl StateT s Cont a 11:42:42 <lambdabot> err: `Cont (a, s)' is not applied to enough arguments, giving `/\A. (A -> (a, s)) -> (a, s)' 11:42:46 <elliott> ?unmtl StateT s (Cont r) a 11:42:47 <lambdabot> s -> (a -> s -> r) -> r 11:42:55 <elliott> ?unmtl ContT r (StateT s) a 11:42:55 <lambdabot> err: `StateT s r' is not applied to enough arguments, giving `/\A. s -> r (A, s)' 11:43:01 <elliott> >_< 11:43:03 <elliott> ?unmtl ContT r (State s) a 11:43:03 <lambdabot> (a -> s -> (r, s)) -> s -> (r, s) 11:53:25 * Phantom_Hoover → Ireland 11:53:27 -!- Phantom_Hoover has quit (Quit: Leaving). 11:58:45 -!- oerjan has joined. 11:59:13 <elliott> hi oerjan 11:59:19 <oerjan> hi elliott 11:59:36 <elliott> hi oerjan 11:59:51 * oerjan swats elliott -----### 11:59:56 <elliott> :'( 12:00:01 <oerjan> i mean hi 12:00:28 <elliott> :'( 12:01:28 <elliott> :t M.insertWith 12:01:29 <lambdabot> forall a k. (Ord k) => (a -> a -> a) -> k -> a -> M.Map k a -> M.Map k a 12:01:32 <oerjan> the beatings will continue until morale improves 12:01:39 <elliott> :'( 12:01:45 <elliott> im not going to stop the cry 12:03:16 <oerjan> <elliott> 10:03:57: <oerjan> ^bf --[>-<-------]>+.----.+.+++.+.-.---. 12:03:31 <oerjan> that looks distinctively short for oklopol 12:03:52 <oerjan> !bf --[>-<-------]>+.----.+.+++.+.-.---. 12:03:53 <EgoBot> oklopol 12:04:06 <oerjan> oh hm it's using wrapping 12:04:41 <oerjan> division by 7, bf_txtgen doesn't do that sort of thing 12:06:05 <oerjan> so basically it just starts with the optimal 'o', then adjusts that 12:06:57 -!- ineiros has joined. 12:07:02 <elliott> okokokokok 12:07:04 <elliott> kokokoko 12:07:06 <elliott> kpkps 12:07:09 <elliott> oklopol: im fail 12:09:17 <elliott> primitive ptr_to_int "unsafePtrToInt" :: a -> Int 12:09:17 <elliott> bothtruth2:: Bool -> Bool -> Bool 12:09:17 <elliott> bothtruth2 a b = a `seq` b `seq` (ptr_to_int a - ptr_to_int False) + 12:09:17 <elliott> (ptr_to_int b - ptr_to_int False) == 12:09:17 <elliott> 2*(ptr_to_int True - ptr_to_int False) 12:09:18 <elliott> hi oerjan 12:10:19 <oerjan> <elliott> Where's oerjan when you need to complain to him about a deficiency in the Haskell report? 12:10:22 <oerjan> slepping 12:10:52 <elliott> YOU'RE a slep 12:12:14 <monqy> im a slep 12:12:17 -!- monqy has quit (Quit: hello). 12:12:54 <elliott> rip monqy "a slep" 12:14:45 <elliott> why can't every OS have @'s IO system :( 12:14:59 -!- oerjan has quit (Quit: Help I'm abducted by the reboot mafia). 12:18:18 <elliott> ais523: you missed a spam link 12:18:23 <elliott> in WLaquitaCuevasa 12:18:34 <ais523> go fix it for me, if you want the page around so much 12:18:41 <elliott> I'm doing so 12:18:43 <elliott> I was just letting you know 12:18:58 <elliott> oh, hmm, actually you didn't 12:19:04 <ais523> why do you like the page, btw? because it's almost ontopic? 12:19:14 <elliott> because it's amazing 12:19:19 <elliott> "However, some builders of Python and other languages disrespect PHP developers and deal with us like children of a lesser God. I have previously witnessed some Python developers particularly engaging in dislike speech towards PHP builders, in all probability because they do not have an understanding of why PHP received so well-known." 12:19:28 <elliott> i want to know who wrote this pro-php rant 12:19:44 <elliott> and also, who thought it'd be helpful for spam in any way whatsoever 12:19:49 <ais523> I think it's the same spambot that was spamming Google 12:19:57 <ais523> as in, "Google is a search engine http://google.com" 12:20:01 <ais523> not exactly like that, but close 12:20:04 <elliott> useful information 12:20:35 -!- oerjan has joined. 12:21:53 <elliott> helo oerjan 12:21:59 <oerjan> ehlo elliott 12:22:39 -!- Jafet has quit (Ping timeout: 276 seconds). 12:23:11 <elliott> I should read up on how GHC's event manager thing works, I wonder how similar it is to @ IO 12:24:30 -!- derdon has joined. 12:25:04 <oerjan> that would depend how much you steal from it, i think 12:25:29 <fizzie> oerjan: You might consider only using the EHLO verb if the greeting included the "ESMTP" string, that way you won't hit so many problems with old-fashioned IRCers that don't understand it. 12:25:42 <oerjan> fizzie: ah. 12:26:14 <oerjan> i don't think elliott counts as an old-fashioned IRCer, anyhow 12:26:37 <elliott> hi 12:26:42 <oerjan> de ho 12:26:57 -!- derdon has quit (Remote host closed the connection). 12:27:38 <fizzie> oerjan: Well, he didn't list the extensions he supported after your EHLO. Though I suppose it could be he only implements the mandatory commands. 12:28:07 <oerjan> ic 12:28:28 <elliott> whats a really dumb mail server that doesnt know a lot and forgets messages a lot, im that mails erver 12:29:19 <fizzie> If you were often infested by worms, I'd say Sendmail. 12:29:23 <elliott> o 12:30:42 <fizzie> Maybe "has opinions and is not afraid to share them" qmail could fit. 12:31:04 <ais523> elliott: cat 12:31:13 <ais523> admittedly, it's not very good as a mailserver at all 12:31:26 <ais523> but it succeeds at "really dumb", "doesn't know a lot", and "forgets messages a lot" 12:31:31 <elliott> i like cats 12:31:57 <fizzie> "cat --herd" should do something. 12:32:07 <elliott> implementing lambda without lambda is a difficult :( 12:32:41 <fizzie> Uh, GNU cat accepts the options AbeEnstTuv. That's a lot of options for a cat. 12:32:42 <ais523> elliott: you're getting dangerously close to my current Feather problem there 12:33:12 <elliott> cat --meow 12:33:21 <elliott> ais523: well, I think I've managed to do it 12:33:39 <ais523> what did you implement it in terms of? 12:34:11 <elliott> vau, if, eq?, quote, (), cons, car, cdr, eval 12:35:06 <elliott> hmm... you could eliminate quote if you made () self-evaluating :) 12:35:17 <ais523> what does vau do again? 12:35:19 <oerjan> they should expand to Abel Ernst Tuv so that it sounds like a norwegian name 12:35:59 <elliott> ais523: construct fexprs; they're like functions, but they receive their arguments as code, not evaluated 12:36:09 <elliott> or, in other words, a function is an fexpr that receives all its arguments pre-evaluated 12:36:22 <ais523> aha, so it's a generalisation on top of call by name 12:36:41 <elliott> it's similar; you can't deconstruct the ast of your argument in most call-by-name languages, though :) 12:36:45 <ais523> because as well as evaluating 0, 1 or more times, you can choose to do other things instead 12:36:51 <fizzie> oerjan: Unfortunately it would then be AbeElnrstTuv, because they insist on alphabetical order. 12:36:53 <elliott> and with vau you have to explicitly eval, it's never "implicit" 12:36:57 <elliott> although that's more of a library thing 12:37:00 <oerjan> um call by name preserves scoping, doesn't it, which is more than passing things unevaluated... 12:37:29 <elliott> well, vau is hygienic by default in kernel 12:37:32 <oerjan> aha 12:37:38 <elliott> it gets an environment parameter 12:37:50 <elliott> obviously you can break the hygiene since you can evaluate anything in the environment 12:37:55 <elliott> but it doesn't just throw away the scope 12:38:00 <elliott> I think you can make it unbreakably hygienic 12:38:27 <elliott> but I'm not sure that pays off 12:38:50 <elliott> ais523: wow, the IE in Windows 8 isn't going to support plugins 12:39:10 <ais523> does IE9 in Windows 7 support plugins? IIRC yes but hardly anyone uses them 12:39:13 <elliott> well, the Metro IE, but afaict Microsoft wants absolutely everyone to use Metro (it's that tablet-esque UI) 12:39:27 <elliott> ais523: Yes, absolutely nobody uses Adobe Flash or Acrobat Reader. 12:39:32 <elliott> Oh, wait, sorry, no, everyone does. 12:39:37 <ais523> oh right, that sort of plugin 12:39:42 <ais523> I thought you meant add-on, Firefox-style 12:39:45 <elliott> ah 12:39:59 <ais523> to be fair, Acrobat works just as well outside the browser as inside, and arguably better 12:40:11 <elliott> Acrobat works terribly everywhere, but that's not really the point :P 12:40:13 <ais523> the keyboard controls are much clearer as you don't have two programs competing with each other 12:40:17 * elliott wonders if Microsoft are deliberately trying to annoy as many people as possible 12:40:41 <ais523> the thing that amuses me about Metro is that Microsoft have seen Ubuntu going down the path of a UI everyone hates, and decided to copy it 12:40:42 <elliott> I mean, they just disabled Adobe's two most popular products 12:40:52 <ais523> not completely, but the same sort of idea 12:40:57 <fizzie> Our local Ubuntu installation has changed so that PDFs now open inside the browser; it works for one (1) PDF, after that it only opens a blank window. 12:40:58 <oerjan> it is somewhat annoying that ^W doesn't work inside the reader 12:42:32 <ais523> Flash is mostly used for video nowadays, rather than its original intended purpose 12:42:59 <ais523> so I suppose that replacing that with HTML5 could work, but IIRC Microsoft's implementation of HTML5 video is incompatible with other browsers' due to an argument over standards 12:43:02 <elliott> Damn that PH going off to Ireland, I can't contract him for hire to write my Haskell for me now. 12:43:23 * ais523 vaguely considers a "take that back!" comment 12:43:29 <fizzie> I still see flash-for-navigation-and-content-and-everything sites here and there. 12:43:30 <ais523> but I think we came to an agreement about that already 12:43:33 <elliott> ais523 is going to call this excessive, but it is very much deserved. 12:43:38 <elliott> Aww, too slow. 12:43:48 <elliott> Sorry PH I take it back your damnation is undone. 12:43:54 <elliott> You will instead go to puppy heaven. 12:44:03 <fizzie> Why was my first, immediate thought after "Damn that PH going off to Ireland, I can't contract him for hire to" that "oh, it's about an assassination"? 12:44:04 <ais523> fizzie: I don't, mostly because I literally wouldn't notice 12:44:26 <elliott> fizzie: Well, it /is/ me. 12:44:38 <fizzie> ais523: I've had the occasion to browse websites of hotels; quite many of those are, with no fallbacks. 12:44:42 <ais523> the name "Scots" comes from an Irish tribe 12:44:49 <ais523> fizzie: how bizarre 12:45:13 <ais523> normally when I come across a site like that, I just think "it's broken", and possibly enable JS experimentally if I really care badly about viewing the site 12:46:43 <ais523> I suppose I should make a list of what HTML features I consider as "generally makes a website look nicer/easier to read" and "generally annoys me" 12:46:53 <ais523> I think even <img> is sort-of on the borderline ther 12:46:55 <ais523> *there 12:47:04 <ais523> seeing images is important on many sites, but I don't like the unnecessary overuse of them 12:47:15 <ais523> on most webforums, I use AdBlock Plus to block avatars 12:47:29 -!- MSleep has changed nick to MDude. 12:47:34 <elliott> most forums let you disable display of avatars natively 12:47:50 <ais523> that requires having an account there 12:48:09 <elliott> not necessarily, you could just steal one 12:48:54 <ais523> *that requires being logged in there 12:50:09 -!- DH____ has joined. 12:51:32 <fizzie> I'm tempted to go all "not necessarily, some may stuff options into a permacookie". 12:51:50 <elliott> vacuum has some really terrifying types 12:52:42 <oerjan> but at least there's no pressure to make you use them 12:52:54 <elliott> vacuum :: a -> IntMap HNode 12:52:54 <elliott> Vacuums the entire reachable heap subgraph rooted at the a. 12:52:54 <elliott> vacuumTo :: Int -> a -> IntMap HNode 12:52:54 <elliott> Stop after a given depth. 12:52:54 <elliott> getClosure :: a -> IO Closure 12:52:56 <elliott> getInfoPtr :: a -> Ptr StgInfoTable 12:52:58 <elliott> AHHH YES THANK YOU FOR THE NIGHTMARES 12:53:03 <elliott> at least getClosure is in IO 12:53:09 -!- ais523 has quit (Remote host closed the connection). 12:53:23 -!- ais523 has joined. 12:53:28 <ais523> `log deployment 12:53:33 <HackEgo> 2011-02-02.txt:22:59:14: <fizzie> Ilari: Oh, and there's a set of TeliaSonera "IPv6 Deployment Plans" slides from RIPE-49 (September 2004) that say "We want to have support for IPv6 in all of our IP Networks both Mobile and Fixed within two years". :p 12:53:36 <ais523> `log deployment 12:53:40 <HackEgo> 2007-07-18.txt:05:12:03: <toBogE> #esoteric is a channel on irc.freenode.net. The topic is '+++++++++++++++[>++++++>+++++++>+++++++>++<<<<-]>------.>>-.---.>++.<<.+++++.++++++.>.<--.----.<+++++++++++++.>++++++.>++++.++++++.-.<<.>>--.>.<----.<+.<+.>>>.<--.<------.+++. esoteric programming language design and deployment' 12:53:41 <elliott> `? welcome 12:53:43 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 12:53:53 <ais523> just wanted to make sure I had the wording right 12:54:03 <elliott> for what? 12:54:18 -!- ais523 has set topic: Freudian armchair psycho-babble | It is the 90s and there is time for an international hub for esoteric programming language design and deployment @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!& | http://codu.org/logs/_esoteric/. 12:54:26 <oerjan> !bf +++++++++++++++[>++++++>+++++++>+++++++>++<<<<-]>------.>>-.---.>++.<<.+++++.++++++.>.<--.----.<+++++++++++++.>++++++.>++++.++++++.-.<<.>>--.>.<----.<+.<+.>>>.<--.<------.+++. 12:54:26 <EgoBot> The international hub for 12:54:26 <ais523> the topic had been like that for too long 12:54:57 <ais523> hah, is the 12345678!& bit in the topic for elliott to copy/paste from? 12:55:19 <oerjan> correct 12:55:20 <elliott> maybe 12:55:48 <ais523> !bf_txtgen 1234567*!& 12:55:51 <EgoBot> ​66 ++++++++++[>+++++>++++>+++>+<<<<-]>-.+.+.+.+.+.+.>++.>+++.+++++.>. [838] 12:55:58 <ais523> I wonder what the best algo for bf_txtgenning is 12:56:01 <fizzie> oerjan: Delayed groan. 12:56:05 <ais523> that one definitely isn't it 12:56:15 <oerjan> fizzie: i thought no one got it... 12:56:30 <elliott> ais523: pebble does fairly well, I think 12:56:37 <elliott> there's provably no best algorithm though, I think 12:56:42 <ais523> also, what was toBogE? I've forgotten 12:56:44 <fizzie> (Delay was due to a visiting supervisor.) 12:56:48 <elliott> bad 12:56:58 <fizzie> Seems like an evil clone of EgoBot from the mirror universe. 12:56:59 <elliott> oerjan: i just ignored 12:57:05 <oerjan> O KAY 12:57:33 <ais523> elliott: well, depends on what you mean by "best" 12:57:33 <ais523> but yes, brute-force works up to the point your termination-tester stops working 12:57:37 <elliott> it was immibis, enough said 12:57:37 <ais523> `? <zzo38> 12:57:39 <HackEgo> ​<zzo38>? ¯\(°_o)/¯ 12:57:42 <oerjan> <ais523> I wonder what the best algo for bf_txtgenning is <-- kolmogorob complexity, dude 12:57:45 <oerjan> *v 12:57:51 <ais523> `? <alise> 12:57:52 <HackEgo> ​<alise>? ¯\(°_o)/¯ 12:57:59 <elliott> ais523: what are you doing? 12:58:01 <ais523> oh, is that an error message 12:58:05 <ais523> elliott: trying to get random log lines 12:58:09 <elliott> ais523: with the learndb? 12:58:11 <oerjan> FAIL 12:58:11 <ais523> yep 12:58:14 <ais523> ah, I see 12:58:18 <ais523> `log <alise> 12:58:22 <HackEgo> 2010-08-23.txt:02:17:05: <Vorpal> <alise> and i have 0 interest in windows compatibility <--- wait, didn't you say cfunge was stupid because it didn't support windows at one point 12:58:26 <ais523> `log <zzo38> 12:58:30 <HackEgo> 2010-08-22.txt:02:29:39: <zzo38> I think the fundamental feature is connecting to the IRC server? 12:58:33 <ais523> haha, the one from you wasn't even by you 12:58:39 <ais523> `log <alise> 12:58:42 <HackEgo> 2010-08-31.txt:15:29:35: <alise> std, I think. 12:58:53 <ais523> `log <cpressey> 12:58:56 <HackEgo> 2010-10-25.txt:19:37:58: <cpressey> Mental note: Punxsutawney: avoid. 12:59:08 <fizzie> !bf +++++++++++++++[>++++++>++>+++++++>+++++++>++++++++>+++++++<<<<<<-]>------.>>-.---.<++.>>.+++++.>----.<<.>>--.<.<----.>>++.>.<<+.-.<.>--.<<.>>>>-.<+.<<+.<.>++++.>+++.+++. 12:59:08 <EgoBot> The international hub for 12:59:15 <fizzie> Slightly shorter with "-t 6". 12:59:17 <elliott> `ls wisdom 12:59:18 <HackEgo> augur \ c \ elliott \ everyone \ finland \ friendship \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ monad \ monads \ monqy \ oerjan \ oklopol \ qdb \ qdbformat \ sgeo \ shachaf \ u \ vorpal \ welcome \ wiki 12:59:33 <ais523> `? qdb 12:59:35 <HackEgo> qdb is used like: `quote regexp; `quote id; `addquote ...; `delquote id; `pastequotes regexp; `pastenquotes [n]; see also qdbformat 12:59:35 <elliott> ais523: quick, write yourself a one-line biography 12:59:41 <oerjan> !bf ++++++++[->+>++++++<<]>[->.+<] 12:59:42 <EgoBot> 01234567 12:59:44 <ais523> does it have to be accurate? 12:59:47 <elliott> ais523: no 12:59:49 <oerjan> !bf ++++++++[->+>++++++<<]>[->+.<] 12:59:49 <EgoBot> 12345678 12:59:55 <ais523> and how do you add qdb entries? 12:59:56 <elliott> `learn qdb is used like: `quote; `quote regexp; `quote id; `addquote ...; `delquote id; `pastequotes regexp; `pastenquotes [n]; see also qdbformat 12:59:57 <HackEgo> I knew that. 13:00:02 <elliott> ais523: addquote 13:00:15 <ais523> umm, I meant bio/learndb entries 13:00:24 <ais523> even though that's not what I said 13:00:43 <elliott> there is a hint in the past few lines :P 13:00:56 <elliott> also enlightening: 13:00:58 <elliott> `cat wisdom/wiki 13:00:59 <HackEgo> The wiki is at http://esolangs.org/wiki 13:01:07 <elliott> (note first word differing from topic) 13:01:10 <ais523> ah, hmm, you have to echo the file in by hand? 13:01:15 <elliott> ... 13:01:16 <elliott> <elliott> `learn qdb is used like: `quote; `quote regexp; `quote id; `addquote ...; `delquote id; `pastequotes regexp; `pastenquotes [n]; see also qdbformat 13:01:19 <elliott> you _are_ blind, right? 13:01:24 <ais523> that explains how to use the qdb 13:01:32 <ais523> that's not the same thing as the learndb, is it? 13:01:36 <elliott> /facepalm 13:01:39 <elliott> oerjan: facepalm time 13:01:43 <ais523> oh, the see also 13:01:44 <elliott> synchronised facepalming gogogo 13:01:47 <elliott> ais523: facepalm 13:01:49 <ais523> `? qdbformat 13:01:50 <HackEgo> qdbformat is: <nick> message; * nick action; two spaces between messages; all elisions marked with [...] other than irrelevant intervening messages; for messages separated by elision, one space on each side, not two 13:01:56 <ais523> wait, no 13:01:57 <elliott> you have _no idea_ how hard i am facepalming 13:02:07 <fizzie> Three-hand facepalm time? 13:02:11 <elliott> Yes. 13:02:13 <elliott> Make it happen. 13:02:28 <ais523> elliott: whatever you think the obvious clue is, I can't see it 13:02:40 <fizzie> ais523: The "`learn" part, perhaps? 13:02:43 <ais523> also, there's a subversion of the "two spaces between messages" in there somewhere, I used a sequence of Unicode spaces that added up to two 13:03:02 <ais523> fizzie: well, HackEgo wasn't responding in any useful way 13:03:28 <ais523> `learn ais523 ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented. 13:03:30 <HackEgo> I knew that. 13:03:34 <elliott> fail 13:03:46 <elliott> `? ais523 13:03:48 <HackEgo> ais523 ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented. 13:03:54 <elliott> or is your name "ais523 ais523"? :P 13:04:07 <ais523> wait, that error message is singularily useless 13:04:11 <ais523> given that it happens even on success 13:04:14 <ais523> `learn ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented. 13:04:15 <HackEgo> I knew that. 13:04:18 <elliott> ais523: who says it happens on failure? 13:04:20 <ais523> `? ais523 13:04:22 <HackEgo> ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented. 13:04:26 <ais523> elliott: it looks like a failure message 13:04:40 <elliott> ais523: the bug is your preconceptions :) 13:04:51 <elliott> `forget ais523 13:04:53 <HackEgo> Forget what? 13:04:56 <elliott> `learn ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented. 13:04:58 <HackEgo> I knew that. 13:05:00 <elliott> See, it's very consistent. 13:05:02 <ais523> pretty much every learndb bot I've ever seen has actually given useful messages 13:05:11 <ais523> NO THAT DOES NOT COUNT AS USEFUL 13:05:12 <elliott> ais523: this is #esoteric, we do things differently around here 13:05:59 <ais523> I still don't think it's reasonable to expect me to deduce how the bot works from a sequence of misleading and unhelpful messages 13:07:13 <ais523> I think #nethack's qdb and learndb are both better 13:08:05 <elliott> what's wrong with our qdb? 13:08:22 <oerjan> `learn oerjan, Your future evil overlord, is an expert in lazy computation. 13:08:24 <HackEgo> I knew that. 13:08:27 <oerjan> `? oerjan 13:08:29 <HackEgo> oerjan is just zis guy, you know? 13:08:32 <oerjan> wat 13:08:41 <oerjan> i thought there was a syntax for that 13:08:46 <oerjan> `? oerjan, 13:08:47 <HackEgo> oerjan, Your future evil overlord, is an expert in lazy computation. 13:08:52 <oerjan> `forget oerjan, 13:08:54 <HackEgo> Forget what? 13:08:59 <elliott> oerjan: try echo :P 13:09:11 <elliott> learn is not going to start parsing punctuation to figure out what you mean 13:09:21 <elliott> "`run echo '...' >wisdom/x" works for non-standard usage 13:09:27 <oerjan> elliott: i had somehow got the impression it already did 13:09:38 <elliott> ais523: anyway, what's wrong with our qdb? 13:10:00 <ais523> well, the one for #nethack (and related channels) is http://qdb.rawrnix.com 13:10:05 <ais523> which seems to be running the same software as bash.org 13:10:15 <ais523> so it has things like voting on quotes, etc 13:10:17 <elliott> ais523: that's clearly inferior to an irc-based system for convenience 13:10:27 <ais523> there's an IRC-based system linked to it 13:10:28 <oerjan> `run echo "Your future evil overlord oerjan is an expert in lazy computation." >wisdom/oerjan 13:10:30 <HackEgo> No output. 13:10:37 <oerjan> `? oerjan 13:10:39 <HackEgo> Your future evil overlord oerjan is an expert in lazy computation. 13:10:51 <fizzie> Also "voting", what are we, a democracy? 13:10:53 <elliott> oerjan: I distinctly prefer the older version :P 13:11:03 <oerjan> elliott: KNEEL, SCUM 13:11:08 <ais523> fizzie: well, it's more for identifying which are actually good 13:11:17 <oerjan> or rebel, whatever 13:11:18 <elliott> ais523: we have a system to do that, it's called `delquote 13:11:48 <nooga> oh 13:11:50 <ais523> elliott: but there's more shades of good in quotes than true and false 13:11:50 <nooga> that again 13:11:55 <ais523> `log <nooga> 13:11:58 <HackEgo> 2007-02-22.txt:15:44:55: <nooga> what is V? 13:12:01 <elliott> ais523: we specialise in only the best 13:12:11 <elliott> `pastequotes 13:12:12 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21755 13:12:14 <ais523> but the less good ones that are still good can be fun to read too 13:12:25 <elliott> I wonder if quote one will ever be deleted 13:12:37 <elliott> it's not very funny, but it would feel wrong 13:12:52 <ais523> it's more funny than most of them 13:12:58 <elliott> No it's not. 13:13:04 <ais523> especially the early ones, most aren't very good at all 13:13:14 <elliott> The recent ones have been pretty consistently funny, IMO. 13:13:19 <oerjan> <ais523> I think #nethack's qdb and learndb are both better <-- suddenly ais523 somehow resembles zzo 13:13:32 <elliott> Anyway, adding new good quotes is far superior to decreasing the visibility of bad ones. 13:13:45 <ais523> `quote 109 13:13:46 <fizzie> oerjan: You just reminded me of http://www.ozyandmillie.org/d/20020318.html 13:13:47 <HackEgo> 109) <ais523> let's put that in the HackEgo quotes files, just to completely mystify anyone who looks back along them in the future 13:13:53 <elliott> `quote 13:13:55 <HackEgo> 326) <oklopol> okay see in my head it went, you send from your other number smth like "i'd certainly like to see you in those pink panties again" and she's like "WHAT?!? Sgeo took a pic?!?!?! that FUCKING PIG" 13:13:59 <elliott> `quote 13:14:00 <HackEgo> 113) <Warrigal> I seem to think of coaxial cables as being omnipotent somehow. 13:14:02 <elliott> `quote 13:14:04 <HackEgo> 141) <fungot> AnMaster: to any airbus plane. 3 passengers sadly died the most awesome thing ever. 13:14:11 <elliott> See, a fungot quote in three. 13:14:15 <elliott> That's quality. 13:14:22 <elliott> `quote 13:14:23 <HackEgo> 185) <alise> Phantom_Hoover: Don't be nasty; he's a lunatic, not a murderer. 13:14:27 <elliott> fizzie: Also the fungot; where is it. 13:14:28 <ais523> it's not as good as most of the other fungot quotes in there 13:14:31 <elliott> `quote 13:14:33 <HackEgo> 619) <fizzie> I tend to debase64 with perl -MMIME::Base64 -e 'print decode_base64("...");', because at least PERL stands for "PERL ein't-no ruddy-poo lol-GNU". 13:14:41 <elliott> `quote 13:14:42 <HackEgo> 609) <fizzie> They're (according to current plans/rumours) going to release a grand total of approximately 1.1 MeeGo devices; the N9, plus the N950 "developers only" phone, which I'm counting as 0.1 because (even though it is a MeeGo device) it's not going to actually be released. 13:14:56 <fizzie> It has gone -> RAW >>> :leguin.freenode.net NOTICE fungot :Server Terminating. Received SIGTERM <<< 13:14:57 <elliott> well, /I/ laughed 13:15:08 <elliott> `quote 13:15:09 <ais523> fizzie: that's, umm, bizarre 13:15:10 <HackEgo> 67) <oklopol> hmm, this is hard 13:15:13 <ais523> fungot killed the server? 13:15:14 <elliott> `quote 13:15:16 <HackEgo> 446) <oklopol> so about jacuzzis, do they usually have a way to make it it not heat but freeze the water? 13:15:19 <elliott> `quote 13:15:21 <HackEgo> 615) <zzo38> I think Perl is a programming language too. [...] 13:15:26 <elliott> ais523: we just need to filter out all the old quotes 13:15:31 <elliott> or at least bias heavily against them 13:15:35 <ais523> `quote 135 13:15:37 <HackEgo> 135) <alise> like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English <ais523> alise: that's great filler <alise> ais523: well it contains all the important words in the english language... 13:15:40 <elliott> /or/, add a bunch of new quotes so that we're more likely to get new ones 13:15:40 <ais523> the best quote there 13:15:49 <elliott> ridiculous, there are far better quotes 13:15:50 <fizzie> ais523: Freenode killed the server, I believe. That's a notice from the server to fungot about it. 13:16:08 -!- fungot has joined. 13:16:24 <elliott> `quote arrow 13:16:25 <HackEgo> 663) <Gregor> You know how the arrow pierces your skin, rearranging and randomizing vital internal structure? <Gregor> Monads are like that, only worse. 13:16:38 <ais523> `quote 188 13:16:40 <HackEgo> 188) <alise> "Europe is the national anthem of the Republic of Kosovo." <cpressey> alise: I <cpressey> I was going to say something then your last line floored me 13:16:42 <ais523> I like that too 13:17:48 <elliott> `quote 13:17:49 <HackEgo> 147) <oerjan> alise: mainly it's the fact it blows so hard i cannot avoid hitting the walls of the thing, which completely goes against my basic public toilet hygiene principles 13:17:56 <elliott> also, we need to get cpressey back in here 13:18:01 <fizzie> `quote 208 13:18:02 <HackEgo> 208) <fungot> ais523: my nose feels like a bad heuristic 13:18:03 <elliott> having time to actually do things be damned 13:18:11 <elliott> <ais> take that back 13:18:27 <ais523> daming abstract concepts doesn't really make sense at all 13:18:41 <elliott> daming 13:18:46 <elliott> making them become dames? 13:18:52 <ais523> *damning 13:19:14 <elliott> 602) <monqy> im sampling ultra hip holiday <monqy> hes the boogie woogie santa clause <monqy> switching to oktoberfest <monqy> yes i would love to shop to this 13:19:14 <elliott> See, these are quality quotes. 13:19:22 <ais523> `quote 288 13:19:24 <HackEgo> 288) <zzo38> ais523: Maybe it is better, because I don't think the octopus will live very well in the tree. But the difference is that the Internet is lying and you cannot see such things; you could make modified picture, though, in order to lie more clearly, at least. 13:19:28 <ais523> that's probably the best zzo one 13:19:29 <elliott> As long as monqy is here we will have a guaranteed supply of above-average quotes for the rest of our lifetimes. 13:19:50 <elliott> 606) <Vorpal> elliott_, oh they are people known in the ruby community? <elliott_> Vorpal: Uh... you mean Hannah Montana? <Vorpal> elliott_, yeah. And Zed Shaw. Either they are that or they come from popular culture. 13:19:55 <elliott> Also, as long as Vorpal is here. 13:20:06 <ais523> `quote 300 13:20:08 <HackEgo> 300) <Deewiant> My STRN.G detects runoff strings that haven't been terminated but would hit a zero after wrapping and tries to allocate the 16+-gigabyte-stack required 13:20:13 <ais523> I like that one because of the thought involved 13:20:33 <ais523> just like implementing the + in HQ9+, but more awesome 13:20:38 <elliott> 648) <itidus20> according to physics and maths can we theoretically have a box with infinite cookies inside? 13:20:38 <elliott> Also iti. 13:21:58 <oerjan> itidus20: sadly, no. it would collapse into a black hole. 13:22:22 <elliott> 610) <monqy> game where you flip a coin but it's really really big 13:22:22 <elliott> GOOD. QUOTES. 13:22:44 <coppro> are we sure that the accumulator in HQ9+ is program-specific? 13:22:58 <oerjan> coppro: ooh 13:23:05 <elliott> 574) <Phantom_Hoover> What is it with Cardassians, they're all really nice and then they hit you with a rock. 13:23:06 <elliott> QUALITY 13:23:07 <elliott> QUOTES 13:23:08 <elliott> coppro: oh my 13:23:50 <oerjan> it's all in the "ass" part 13:24:58 <elliott> coppro: I'm trying to think of a suitable substrate to implement global HQ9+ on, now 13:25:28 <elliott> I know there's plenty of substrates that let you insert data immutably and address it by hash globally, but are there any that permit a mutable reference? 13:25:41 <elliott> I mean, that are properly distributed beyond just being "an HTTP server". 13:25:52 <elliott> I don't think freenet or Tor or anything offer that. 13:27:07 -!- Zuu has quit (Ping timeout: 244 seconds). 13:27:23 <elliott> V. disappointed that you're not all looking into this for me. 13:28:23 <ais523> just write it in Network Headache? 13:28:47 <ais523> (fun question: can an HQ9+ interp be written in Network Headache that always works regardless of what other programs are doing? my guess is no, but I'm not sure) 13:28:55 <elliott> but there isn't a proper Network Headache implementation, either 13:28:58 <elliott> it needs the same sort of substrate 13:30:06 <ais523> just write a self-interp, then push the lack of decentralized control backwards to infinity 13:30:11 <ais523> (note: wouldn't actually work even in Feather) 13:30:47 <ais523> `quote 460 13:30:49 <HackEgo> 460) <ais523_> meanwhile, I've been running a program for over 24 hours (getting close to 48 now) which is calculating digits of pi, in binary <ais523_> so far, it has found four digits <ais523_> I hope it will find the fifth some time this week 13:30:50 <ais523> ah, the nostalgia 13:30:59 <elliott> did it? 13:31:05 <ais523> no, the computer crashed first 13:31:08 <elliott> nice 13:33:16 <ais523> `quote 526 13:33:18 <HackEgo> 526) <Vorpal> ais523, how are we supposed to guess before you tell us unless you give us more hints? 13:33:20 <ais523> secret project reference? 13:33:28 <elliott> yes 13:33:41 <elliott> hmm... I think tahoe-lafs may implement the necessary operations to allow Cloud HQ9+ 13:33:46 <ais523> I need to start working on that again at some point 13:34:02 <ais523> hopefully implementing UNIX sockets will be enough to get pulseaudio to work 13:34:26 <elliott> I'm, umm, not sure there's a "main" tahoe-lafs network nowadays though 13:34:41 <elliott> ISTR the test grid was shut down 13:34:46 <ais523> `quote 549 13:34:48 <HackEgo> 549) <monqy> beautiful summer / fuck fuck fuck fuck fuck fuck fuck / fuck fuck fuck fuck fuck 13:34:50 <ais523> wow, I remember that 13:34:57 <elliott> `log beautiful summer / fuck fuck fuck fuck fuck fuck fuck / fuck fuck fuck fuck fuck 13:35:00 <HackEgo> 2011-09-15.txt:13:34:57: <elliott> `log beautiful summer / fuck fuck fuck fuck fuck fuck fuck / fuck fuck fuck fuck fuck 13:35:01 <elliott> maybe because it was mere weeks ago 13:35:07 <ais523> possibly the best haiku ever mentioned in this channel 13:35:10 <elliott> HackEgo... 13:35:16 <elliott> `log beautiful summer / fuck fuck fuck fuck fuck fuck fuck / fuck fuck fuck fuck fuck 13:35:19 <HackEgo> 2011-09-15.txt:13:34:57: <elliott> `log beautiful summer / fuck fuck fuck fuck fuck fuck fuck / fuck fuck fuck fuck fuck 13:35:23 <elliott> oh for chrissakes 13:35:31 <elliott> `log fuck fuck fuck fuck fuck fuck fuck 13:35:34 <HackEgo> 2011-09-15.txt:13:34:48: <HackEgo> 549) <monqy> beautiful summer / fuck fuck fuck fuck fuck fuck fuck / fuck fuck fuck fuck fuck 13:35:40 <elliott> :'( 13:35:41 <elliott> `log fuck fuck fuck fuck fuck fuck fuck 13:35:44 <HackEgo> 2011-09-15.txt:13:35:41: <elliott> `log fuck fuck fuck fuck fuck fuck fuck 13:35:49 <elliott> oh my god 13:36:06 <ais523> 'quote 590 13:36:09 <ais523> how did that end up there? 13:36:25 <ais523> ^[^`]* fuck fuck fuck fuck fuck fuck 13:36:28 <ais523> `log ^[^`]* fuck fuck fuck fuck fuck fuck 13:36:29 <elliott> `quote 590 13:36:30 <HackEgo> 590) <ais523> (Enigma is two games; one is solving Enigma puzzles, the other is working out how to represent things as Enigma puzzles, preferably with the minimal amount of lua and player-hidden information possible) 13:36:32 <HackEgo> 2011-09-13.txt:18:02:38: <HackEgo> 2010-08-30.txt:16:15:24: <alise> I can fix that! Fuck fuck fuck fuck fuck fuck fuck fuck fuck 13:36:50 <elliott> hmm, tahoe is really complicated :( 13:37:13 <ais523> `quote 600 has got me laughing in real life, even though it's not all that good 13:37:14 <HackEgo> No output. 13:37:21 <ais523> bleh, I can't give it trailing arguments? 13:37:29 <ais523> `quote 600 # has got me laughing in real life, even though it's not all that good 13:37:30 <HackEgo> No output. 13:37:34 <ais523> not even if I comment them out? 13:37:39 <ais523> `quote 600 13:37:41 <HackEgo> 600) <fizzie> That's the stupidest thing I've heard all morning. (Though I did wake up five minutes ago, so I haven't had a chance to hear very much.) <fizzie> The "Why are you still asleep? I told the cat to wake you up." comment does come pretty close, though. 13:37:58 <elliott> I laugh every time I remember it, so I think it's fairly objectively good :P 13:38:25 <ais523> `quote 629 13:38:27 <HackEgo> 629) <CakeProphet> monqy: help how do I use lambdabot to send messages to people. [...around half an hour later...] <CakeProphet> @messages <lambdabot> quicksilver said 1y 2m 18d 19h 54m 29s ago: you use @tell 13:38:36 <ais523> pure awesome there 13:38:54 <elliott> yeah that was pretty much maximum synchronicity 13:38:59 <elliott> all downhill from there 13:41:50 <elliott> ais523: btw, I was going to make the learndb better, but Gregor refused to make HackEgo output multiple lines ever :P 13:41:58 <elliott> so the multiple-entry possibilities were rather limited 13:43:21 <oerjan> `run quote 600 #maybe like this? 13:43:23 <HackEgo> 600) <fizzie> That's the stupidest thing I've heard all morning. (Though I did wake up five minutes ago, so I haven't had a chance to hear very much.) <fizzie> The "Why are you still asleep? I told the cat to wake you up." comment does come pretty close, though. 13:43:54 <elliott> ais523: I have found clear evidence of inferiority of the nethack qdb to ours: http://qdb.rawrnix.com/?357 13:44:01 <ais523> now I'm wondering if fizzie's cat /tried/ to wake him or her up 13:44:07 <elliott> you won't see any anti-acehack propaganda in _this_ qdb! 13:44:16 <ais523> it's a funny statement 13:44:19 * elliott pats himself on the back for a logic well done 13:44:21 <ais523> also, look at who's saying it 13:44:26 <ais523> I'm pretty sure you know Wooble 13:44:29 <elliott> Yes, I have eyes 13:44:36 <elliott> Well, sometimes 13:44:40 <elliott> Sometimes I am just an amorphous blob 13:44:43 <elliott> It depends. 13:44:56 <ais523> sometimes I fly around in a spaceship :> 13:44:56 <oerjan> focus, elliott, focus 13:45:06 <ais523> wait, was it a lowercase i? 13:45:11 <ais523> `log fly around in a spaceship 13:45:12 <elliott> probably 13:45:14 <HackEgo> 2009-03-05.txt:16:10:34: <ais523> FireFly: sometimes I fly around in a spaceship? 13:45:20 <ais523> `log fly around in a spaceship 13:45:23 <HackEgo> 2011-09-15.txt:13:45:11: <ais523> `log fly around in a spaceship 13:45:27 <ais523> `log fly around in a spaceship :> 13:45:30 <HackEgo> 2011-08-26.txt:04:14:24: <elliott> "sometimes i fly around in a spaceship :>" 13:45:32 <oerjan> `cat bin/log 13:45:34 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ if [ "$1" ]; then \ egrep -i -- "$1" ????-??-??.txt | shuf -n 1 \ else \ file=$(shuf -en 1 ????-??-??.txt) \ echo "$file:$(shuf -n 1 $file)" \ fi \ 13:45:34 <ais523> yep, lowercase i 13:45:43 <FireFly> uh-huh 13:45:49 <elliott> hi FireFly 13:45:53 <FireFly> Hello 13:45:57 <FireFly> I can't even remember that line 13:46:00 <ais523> FireFly: the thing about logquoting bots is that they have a tendency to randomly ping people 13:46:05 <FireFly> And I usually remember lines that HL me 13:46:23 <FireFly> 2009 was a while ago though 13:46:48 <ais523> `log <FireFly> 13:46:52 <HackEgo> 2009-07-31.txt:16:01:46: <FireFly> Well, I like my tabs as they are 13:47:01 <ais523> equivalent to eight spaces? 13:47:18 <ais523> (when at a multiple of 8 already) 13:47:38 <ais523> elliott: oh, I found another tab=to-multiple-of-8 source, it's the Google style guide for INTERCAL 13:47:39 <elliott> oerjan: op me so that i can institute a beautiful reign of kicking ais523 whenever he goes on about tabs 13:47:54 <ais523> elliott: but I haven't won this argument yet 13:47:56 <FireFly> I usually go with 4-space tabs, though I prefer actual tab characters to spaces 13:47:59 <FireFly> That's probably what the line refers to 13:48:08 <elliott> ais523: it's quite hard to win an argument that you've already lost, repeatedly, in the past 13:48:17 <ais523> I just haven't won it yet 13:48:20 <ais523> and I have so many sources on my side 13:48:29 <elliott> /ignore ais523 13:52:03 <ais523> p 13:52:04 <ais523> *o 13:52:28 <elliott> wat 13:53:16 <ais523> just randomly oing 13:53:28 <ais523> people don't seem to do that that much any more, not even oklopol 13:53:35 <ais523> but I typoed and randomly ped instead 13:53:43 <fizzie> ais523: If the cat tried, I did not notice. It's not the most reliable person, so I wouldn't be surprised if it just ignored the task it was given. 13:57:49 <elliott> OK, I'm laughing harder at http://qdb.rawrnix.com/?470 than any quote we've had here 13:57:55 <elliott> THIS IS UNACCEPTABLE 14:00:27 <Patashu> wat 14:00:36 <Patashu> oh, nethack 14:00:55 <Patashu> that's surreal humour. it...doesn't quite click but I see how it could 14:01:37 -!- Taneb has joined. 14:02:19 <elliott> Patashu: it's more the idea of someone cutting off their arm in nethack in /anticipation/ of maybe being able to eat it 14:02:34 <Taneb> I just read "armchair" as "slip" in the topic 14:03:20 <Taneb> Also, hello 14:04:34 <elliott> hi 14:05:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:06:44 <Taneb> I never got the hang of nethack 14:08:16 <elliott> ?src ap 14:08:16 <lambdabot> ap = liftM2 id 14:08:20 <elliott> ?src liftM2 14:08:20 <lambdabot> liftM2 f m1 m2 = do { x1 <- m1; x2 <- m2; return (f x1 x2) } 14:09:22 <Taneb> You know that program I wrote in Haskell then everyone helped me improve and fix it? 14:09:32 <elliott> yes 14:09:52 <Taneb> I translated it back into Python for the hell of it 14:09:56 <Patashu> lol 14:10:02 <Taneb> Haskell is much more readable 14:10:27 <Taneb> And also, Python has no equivalent built in to [1..] unless you import itertools 14:10:57 <Taneb> And I have just had a thought to improve the Haskell version 14:11:42 <Taneb> Nevermind, wouldn't have worked 14:13:44 <elliott> oerjan: I wish there was a haskell uninliner :( 14:14:35 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:14:45 <oerjan> that's called refactoring isn't it 14:15:37 <elliott> oerjan: I mean more like, given an explicit implementation of return/(>>=), and an implementation of (<*>) in terms of them (i.e. ap), a pattern-matching definition is spat out 14:15:45 <elliott> preferably a flat one i.e. it's just not literally inlining as nested case clauses 14:16:45 <Taneb> I wonder if ~ATH is suitable for the wiki 14:16:53 <Taneb> I mean, we don't do fictional languages 14:16:54 <Taneb> Much 14:32:26 -!- copumpkin has joined. 14:32:44 <MDude> I could imagine an implementation of it that runs within a virtual world of some sort. 14:33:03 <MDude> Or set of virtual worlds, I suppose. 14:33:34 <elliott> ?pl f <*> pure x 14:33:35 <lambdabot> f <*> pure x 14:33:43 <elliott> oerjan: is there really no name for that? 14:34:36 -!- nooga has quit (Ping timeout: 276 seconds). 14:38:07 <oerjan> @hoogle m (a -> b) -> a -> m b 14:38:08 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 14:38:08 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 14:38:08 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 14:38:29 <elliott> makeZipper' = gfoldl f Done 14:38:29 <elliott> where f r h = 14:38:29 <elliott> case cast h :: Maybe d of 14:38:29 <elliott> Just h' -> Zip h' (ap r . pure . fromMaybe h . fmap (fromJust . cast)) 14:38:29 <elliott> Nothing -> r <*> pure h 14:38:30 <elliott> turns out this doesn't work :P 14:38:48 <elliott> :( 14:38:52 <elliott> hmm 14:39:18 <oerjan> elliott: seems that one is missing yeah 14:39:52 <elliott> *Main> explore (makeZipper' [9,9,9,9] :: Zipper Int [Int]) 14:39:52 <elliott> Current item: 9 14:39:52 <elliott> Insert new item or enter to keep: 99999999 14:39:52 <elliott> [99999999,9,9,9] 14:39:56 <elliott> that is not how it is supposed to work >:( 14:40:01 <oerjan> :t (.) 14:40:02 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 14:40:09 <elliott> hmm, I suppose the problem is that it sees the tail as Just Another Subterm 14:40:15 <elliott> one which happens to not be of type Int 14:40:15 <oerjan> :t flip 14:40:16 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 14:40:28 <elliott> *Main> explore (makeZipper' [9,9,9,9] :: Zipper [Int] [Int]) 14:40:28 <elliott> Current item: [9,9,9] 14:40:28 <elliott> Insert new item or enter to keep: [] 14:40:28 <elliott> [9] 14:40:29 <elliott> heh 14:40:31 <oerjan> elliott: wouldn't you know, it's precisely caleskell's flip :P 14:40:40 <elliott> oerjan: wonderful :P 14:45:54 <Deewiant> ?pl \ff x -> fmap ($x) ff 14:45:54 <lambdabot> flip (fmap . flip id) 14:46:33 -!- MDude has quit (Read error: Connection reset by peer). 14:46:48 <Deewiant> ?pl \ff x -> ff <*> pure x 14:46:48 <lambdabot> (. pure) . (<*>) 14:46:53 <Deewiant> Bah 14:51:00 <elliott> :{ 14:53:09 <Deewiant> ?. hoogle type \f g -> (. g) . f 14:53:10 <lambdabot> Parse error: 14:53:10 <lambdabot> --count=20 "forall a b (f :: * -> *) (f1 :: * -> *). (Functor f, Functor f1) => f1 (a -> b) -> f a -> f1 (f b) 14:53:10 <lambdabot> " 14:53:14 <Deewiant> Bah 14:53:54 <Deewiant> ?. hoogle type \f g -> (Prelude.. g) Prelude.. f 14:53:54 <lambdabot> Parse error: 14:53:55 <lambdabot> --count=20 "forall b c a a1. (a1 -> b -> c) -> (a -> b) -> a1 -> a -> c 14:53:55 <lambdabot> " 14:54:08 <Deewiant> ?hoogle (a1 -> b -> c) -> (a -> b) -> a1 -> a -> c 14:54:08 <lambdabot> Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c 14:54:09 <lambdabot> Data.Data gmapQl :: Data a => (r -> r' -> r) -> r -> (d -> r') -> a -> r 14:54:09 <lambdabot> Data.Data gmapQr :: Data a => (r' -> r -> r) -> r -> (d -> r') -> a -> r 14:54:19 <Deewiant> Bah 14:57:08 <elliott> Deewiant: Pretty sure gmapQr is the thing 14:57:19 <Deewiant> Yeah no 14:57:24 <Deewiant> ?src on 14:57:24 <lambdabot> (*) `on` f = \x y -> f x * f y 14:57:32 <Deewiant> ?ty let (*) `on` f = \x y -> f x * f y in on 14:57:33 <lambdabot> forall t t1 t2. (t -> t -> t1) -> (t2 -> t) -> t2 -> t2 -> t1 14:57:51 <oerjan> :t flip (curry . second) 14:57:52 <lambdabot> forall a b c. a -> (b -> c) -> b -> (a, c) 14:58:03 <oerjan> oops 15:01:29 <oerjan> @djinn (a1 -> b -> c) -> (a -> b) -> a1 -> a -> c 15:01:30 <lambdabot> f a b c d = a c (b d) 15:01:49 <oerjan> @pl f a b c d = a c (b d) 15:01:50 <lambdabot> f = flip . ((.) .) 15:02:24 <oerjan> most readable 15:03:12 <elliott> hmm I would _really_ like serialisation of Haskell functions 15:03:14 <elliott> (not in a portable manner) 15:03:21 <elliott> well, closures 15:06:27 <oerjan> \a b c d -> a c (b d) = flip (\a c b d -> a c (b d)) = flip (\a c b -> a c . b) = flip (\a c -> (.) (a c)) = flip (\a -> (.) . a) = flip ((.) .) 15:06:44 <oerjan> :t Prelude.flip ((.) .) 15:06:44 <lambdabot> forall a b (f :: * -> *) b1. (Functor f) => b1 -> (b1 -> a -> b) -> f a -> f b 15:06:54 <oerjan> :t Prelude.flip ((Prelude..) Prelude..) 15:06:55 <lambdabot> forall b c a b1. b1 -> (b1 -> b -> c) -> (a -> b) -> a -> c 15:06:57 <elliott> Deewiant: Lemme know when you've figured out how to do that 15:07:04 <oerjan> gah 15:07:45 -!- oerjan has quit (Quit: Anyway, later). 15:15:05 <Deewiant> elliott: instance Binary (a -> b) where something# 15:18:42 <elliott> Neat 15:24:57 <Taneb> I wonder if Uniquode, as specified, is Turing-Complete 15:28:45 -!- augur has quit (Remote host closed the connection). 15:50:31 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 16:03:48 <elliott> Deewiant: I don't think that's actually possible... you need to know the types of the stuff in the closure 16:05:02 <Deewiant> instance (Typeable a, Typeable b) => Binary (a -> b) where something# 16:05:19 <elliott> Deewiant: In the closure 16:05:20 <elliott> Consider 16:05:33 <elliott> foo :: SomethingRidiculouslyUnserialisable -> Int -> Int 16:05:37 <elliott> foo x y = y + magic x 16:05:55 <Deewiant> Right 16:05:56 <elliott> (foo x) is (Int -> Int), but its closure carries around a SomethingRidiculouslyUnserialisable that isn't referenced in the type at all 16:07:22 <elliott> So I think you need to explicitly specify the closure types, which involves just trusting whatever's given... so basically you have to make some TH magic to do it for people and tell them not to use anything more direct :P 16:08:33 <Lymee> What kind of Haskell type would be unserialisable? 16:09:01 <elliott> Well, in theory anything is serialisable; in practice something like a file handle is not very 16:09:13 <elliott> For obvious reasons 16:09:41 * tswett doesn't respond to that ping. 16:09:50 <Lymee> A file handle in pure code? 16:10:17 <elliott> Lymee: Eh? 16:10:38 <elliott> I don't THINK a Handle carries around any state you can access outside of IO, but certainly other types might. 16:10:42 <elliott> Consider StableName. 16:10:56 <elliott> http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.0.0/System-Mem-StableName.html 16:11:01 <elliott> No way you're gonna serialise one of those. 16:11:13 <tswett> You can't serialize an Internet connection. 16:11:17 <elliott> And you can hashStableName in pure code. 16:11:21 <tswett> Even in theory. I think. 16:11:33 <elliott> tswett: No, but you can serialise the bits representing the socket 16:11:34 <Lymee> elliott, yeah, good point. 16:11:36 <elliott> It's not just very useful, is all 16:11:52 <elliott> tswett: Also you totally should be able to serialise internet connections. 16:12:00 <tswett> Well, I meant connectivity, not connections. 16:12:01 <cheater> tswett, stateless protocols such as HTTP REST can be serialized. 16:12:20 <elliott> Start a connection, serialise it, destroy the machine on the other end, deserialise it... magically it still works 16:12:56 <tswett> I can't serialize the path that radio waves take when traveling betwen my laptop and the router. 16:13:10 <tswett> I mean, I guess I can. But, like before, it wouldn't be very useful. 16:13:11 <elliott> tswett: All I'm hearing is flaws in the universe. 16:13:26 <cheater> neither can you serialize the copper and nickel that the electrons traverse when going from your cpu to your ram. 16:13:27 <tswett> We should fix those. Quick, donate all your money to the SIAI. 16:34:01 -!- augur has joined. 16:34:01 -!- cheater has quit (Quit: Ex-Chat). 16:35:40 <Taneb> HellO! 16:35:48 <ais523> hi 16:35:55 <elliott> hell o 16:36:01 <Taneb> I liked todays IWC 16:36:28 <elliott> only six until it's over ;D ;D ;D; D 16:36:36 <elliott> my hobby: trolling iwc fans 16:47:03 -!- nooga has joined. 16:55:40 <Taneb> I've got my Gameboy Advance here 16:56:00 <Taneb> Going to play Pokémon 16:56:12 <Taneb> Dammit, Birch! 16:56:27 <Taneb> Nobody ever calls you the POKéMON PROFESSOR 16:57:33 <Taneb> I'm in a Truck 16:57:46 <ais523> Taneb: Ruby, Sapphire, or Emerald? 16:57:59 <Taneb> Emerald 16:58:07 <Taneb> Which, from my POV was the first one 16:58:38 <ais523> it was actually the last third-gen game 16:59:17 <Taneb> It was the first one I got 16:59:26 <Taneb> It was my first Pokémon game 16:59:35 <ais523> it also has the most abusable RNG in third gen, if you're into that sort of thing 17:00:03 <ais523> and it's still the easiest to do RNG abuse calculations for, although the actual abuse itself is easier on Black/White 17:00:08 <Taneb> I play these games for fun 17:00:15 <ais523> so do I 17:00:20 <Deewiant> That doesn't in any way exclude RNG abuse 17:00:28 <Taneb> It does if you're me 17:00:35 <Taneb> But you are not me 17:00:38 <Taneb> So it doesn;t 17:01:39 <Taneb> Apparently I'm Taneb, their new next-door neighbour! 17:10:02 <Taneb> Yay, I get a Pokéman 17:10:08 <Taneb> I will name it Deewiant 17:22:47 -!- sllide has joined. 17:28:25 <Gregor> `find 17:28:26 <HackEgo> ​. \ ./bin \ ./bin/? \ ./bin/addquote \ ./bin/allquotes \ ./bin/define \ ./bin/delquote \ ./bin/etymology \ ./bin/forget \ ./bin/google \ ./bin/json \ ./bin/k \ ./bin/karma \ ./bin/karma+ \ ./bin/karma- \ ./bin/learn \ ./bin/log \ ./bin/logurl \ ./bin/marco \ ./bin/paste \ ./bin/pastekarma \ ./bin/pastelog \ ./bin/pastelogs 17:30:05 <elliott> Gregor: ? 17:30:10 <elliott> hey someone give me a number sign 17:30:35 <ais523> you mean #? 17:30:38 <elliott> yes thanks 17:30:45 <ais523> strange name for it 17:32:33 <fizzie> Yes, it would have been far more obvious to say "give me a sink". 17:33:37 <shachaf> `? shachaf 17:33:38 <HackEgo> shachaf mad 17:33:43 <shachaf> `rm wisdom/shachaf 17:33:44 <HackEgo> No output. 17:36:24 <Taneb> Hello 17:36:42 <Taneb> I'm training ais523 tge Wingull 17:36:55 * ais523 makes Wingull sound 17:37:10 <ais523> (and I know what a Wingull sounds like, too...) 17:37:56 <Taneb> Level 6! 17:39:21 <elliott> waht does wingull sound like :( 17:39:29 <Taneb> eeh-eeh! 17:39:31 <elliott> `learn shachaf mad 17:39:32 <HackEgo> I knew that. 17:39:42 <elliott> Taneb: Congratulations you just described the sound of like half of all the pokemons. 17:39:52 <shachaf> `rm wisdom/shachaf 17:39:53 -!- sliddy has joined. 17:39:53 <HackEgo> No output. 17:39:58 <elliott> `learn shachaf mad 17:40:00 <Taneb> While being completely true 17:40:00 <HackEgo> I knew that. 17:40:01 <elliott> shachaf: u so mad. 17:40:02 <shachaf> elliott: Could you keep it that way, please? 17:40:04 <shachaf> `rm wisdom/shachaf 17:40:05 <HackEgo> No output. 17:40:09 <Taneb> And as accurate as I could 17:40:10 <elliott> The wisdom cannot be erased. 17:40:28 <elliott> The wisdom is Eternal. 17:40:36 <elliott> Eternalsdom. 17:40:39 <elliott> Wisdeternal. 17:41:35 -!- Zuu has joined. 17:41:35 -!- Zuu has quit (Changing host). 17:41:35 -!- Zuu has joined. 17:42:27 -!- sllide has quit (Ping timeout: 276 seconds). 17:45:49 <Taneb> ais523 is now may highest level POKéMON 17:46:07 <elliott> POKéMON 17:46:13 <Gregor> HEY GUYS THERE IS SUCH A THING AS A CAPITAL É 17:46:25 <Taneb> Not in the POKéMON font 17:46:31 <ais523> Gregor: however, the word itself is spelt POKéMON 17:46:36 <Gregor> The correct capitalization is POOKIEMANS 17:46:45 <ais523> writing POKÉMON is like writing Brainfuck 17:47:03 <elliott> ais523: you're lucky ph isn't here or he'd whine at you 17:47:17 <ais523> at what, BF's capitalisation? 17:47:41 <elliott> he's of the firm opinion that BrainFuck is an abomination but anyone who corrects Brainfuck to brainfuck is a pedantic asshole :P 17:48:24 <ais523> I think "Pokémon" is a valid capitalization too as of Black/White 17:48:35 <Taneb> This is Emerald 17:48:47 <Taneb> I may make a language called brianfcuk just to confuse everyone 17:49:02 -!- Jafet has joined. 17:49:38 -!- augur has quit (Remote host closed the connection). 17:51:29 <ais523> I was planning to make a language called brainfuck that was identical to Brainfuck apart from the name 17:51:33 <ais523> as a parody of bad BF derivatives 17:51:37 <Taneb> It will be as different from brainfuck as possible 17:51:48 <ais523> but I'm not sure I could do it in a suitably amusing way 17:51:54 <ais523> umm, swap brainfuck and Brainfuck there 17:52:42 <Taneb> Instead of a tape, have string of Unicode characters 17:53:16 <Taneb> And a character index rather than a pointer 17:53:49 <Sgeo__> What is a good bF derivative? 17:53:53 <Taneb> Ook! 17:54:20 <ais523> Ook! would be a pretty bad derivative if it didn't come early enough that it wasn't cliched 17:54:21 <Taneb> It was original, a reference to Discworld, and by David Morgan-Mar 17:54:34 <ais523> I think PaintFuck was considered a good BF deriv 17:56:27 -!- ive has joined. 17:57:24 <elliott> wow, generic zippers are a pain to make pretty 18:00:10 <Taneb> brianfcuk is too similar to Haskell. 18:00:14 <Taneb> Not esoteric enough 18:01:03 <Taneb> To the LIST OF IDEAS PAGE 18:02:15 <ais523> elliott: you still owe me My Name Is Johny, btw 18:03:07 -!- ais523 has quit (Remote host closed the connection). 18:03:38 <elliott> OR ELSE 18:05:50 -!- augur has joined. 18:21:48 -!- pikhq has quit (Quit: Later). 18:23:31 <Taneb> All my ideas for brianfcuk are lame 18:24:04 <oklopol> did you try renaming the operations 18:24:08 <oklopol> i hear that's cool 18:25:06 -!- oklopol has quit. 18:25:06 <elliott> we need a language called brainf*** 18:25:41 <Taneb> One of my ideas was essentially a minimalistic notation for lambda calculus 18:25:51 <Gregor> ShaFuck iz da bezt. 18:25:53 <Taneb> Where the predeccessor function is \\\34(\\14(24114))(\24)(\14) 18:27:05 <elliott> Taneb: um is that not just de bruijn notation 18:27:29 <Taneb> Bijective base 3 de bruijn notation postpended with fours 18:27:56 <elliott> wow 18:29:25 <Taneb> Told you it was lame 18:30:38 <Taneb> I could use my loadsa combinators 18:30:40 <Taneb> ide 18:30:40 <Taneb> a 18:31:48 <Taneb> Screw this, I'm going to work on Salesman 18:34:21 <Taneb> I don't want to use a stack. I do not like stacks. 18:35:06 <Taneb> I could use an accumulator... 18:36:35 <Taneb> Or two 18:40:22 <Taneb> I do not like green queues and stacks 18:47:44 <Taneb> http://esolangs.org/wiki/User:Taneb/Salesman 18:49:00 <Taneb> The NP-Hard programming language! 18:50:36 -!- ive has quit (Ping timeout: 252 seconds). 18:56:32 <Taneb> Thoughts? 19:00:35 -!- ive has joined. 19:01:58 <elliott> Sorry, I was too busy writing an eloquent defence and analysis of wikispam. 19:02:00 <elliott> http://esolangs.org/wiki/User_talk:WLaquitaCuevasa 19:09:27 <elliott> good lord, I got into HWN /again/ 19:09:29 <elliott> WHEN WILL MY FAME END 19:10:21 <Taneb> Can you check out salesman now? 19:11:59 <elliott> I'm a bit tired, 'mafraid. 19:12:07 <elliott> Perhaps in a minute. 19:16:50 <elliott> TODO: Optimise Shiro's IPLists 19:17:01 <nooga> ffffffuuuuu 19:17:16 <nooga> my USB mouse does not work with macbook pro 19:17:33 <nooga> or rather, macbook pro doesn't work with the mouse 19:17:43 <Taneb> Search for drivers? 19:19:02 <nooga> FOR GODDAMN USB MOUSE? 19:19:19 <Taneb> FOR A GODDAMN MAC BOOK PRO 19:20:15 <nooga> i hate this computer 19:23:42 -!- cheater has joined. 19:26:47 -!- sliddy has quit (Read error: Connection reset by peer). 19:37:13 <elliott> http://ompldr.org/vYWRiZw thanks duckduckgo 19:40:39 -!- oerjan has joined. 19:41:49 <elliott> hi oerjan hi hihi i hi hi oerjan hi 19:44:17 <oerjan> elliott seems very hi today 19:47:12 <itidus20> hmm 19:47:42 <oerjan> hindley-milner-mycroft 19:47:55 <itidus20> Another day anticipates the sunrise relative to the frame of reference of my window. 19:49:31 <oerjan> apparently that may not exist, but hindley-milner and milner-mycroft do 19:49:50 <itidus20> `log entertainment 19:49:55 <HackEgo> 2009-06-21.txt:20:50:59: <ehird> God, I hate people who say "tl;dr". Because your idiotic soundbites and bits of compacted media and entertainment that you love so much has made your brain incapable to read anything more than a paragraph or two lest your now severe ADHD kick in. 19:49:57 <Taneb> Mycroft as in Holmes? 19:50:03 <elliott> oerjan: ziepress are hard :( 19:50:06 <elliott> zierperpzerierps 19:50:08 <elliott> im 19:50:11 <elliott> cant type much 19:50:17 <elliott> its hard to type :'( 19:50:18 <elliott> and to think 19:50:20 -!- MDude has joined. 19:50:26 <elliott> but one thing is easy...... 19:50:27 <elliott> that thing.... 19:50:29 <elliott> is saying hi 19:50:29 <oerjan> elliott: and to read 19:50:32 <elliott> oerjan: hi hi hi hi hi hi hi 19:50:37 <elliott> hi 19:50:38 <elliott> hi hi 19:50:38 <elliott> hi 19:50:45 <oerjan> poor elliott, slowly turning into the winslow 19:51:01 <elliott> hi 19:51:03 <oerjan> it was not how he had envisioned eternal life 19:51:17 <elliott> what if i want to win quickly, what then 19:51:57 <oerjan> Taneb: no, as in the type theorist 19:52:25 <elliott> type theory is so gangsta. just saying 19:52:28 <Taneb> Also, I've done some more work on Salesman 19:53:48 <oerjan> mind you i have not yet any real idea what he's done, although "polymorphic recursion" seems a clue 19:54:22 <elliott> `run echo 'flower. what IS a flower?' >wisdom/flower 19:54:24 <HackEgo> No output. 19:54:49 <elliott> oerjan. what IS an oerjan? 19:54:50 <Deewiant> And yet, elliott's said "tl;dr" 92 times according to my logs (and ehird 41 times) 19:54:53 <oerjan> well he cannot be that important, no wikipedia page >:) 19:54:58 <elliott> hi. hi HI hi hi? 19:55:34 <elliott> Deewiant: wut 19:55:40 <elliott> oerjan: i hear he wrote the haskell nientryeight report..... 19:55:43 <elliott> if we're talking about oerjan 19:55:49 <elliott> which i guess acutally we were talking about that type theorists 19:55:50 <Deewiant> elliott: Re. `log entertainment some 20 lines ago 19:56:00 <elliott> Deewiant: oh i didn't pay attention, was it something about me 19:56:10 <Deewiant> I suppose it could've been something you were quoting 19:56:14 <oerjan> elliott: no i'm trying to find out who mycroft is 19:56:40 <elliott> how old was it, anything more than like eight months and i ain't even know who that guy that was me is 19:56:52 <elliott> well it's eight months right now it's kind of variable 19:56:56 <Deewiant> 2009-06-21 19:57:00 <elliott> maybe i'll decide i'm completely alienated with my five-minutes-ago self 19:57:04 <elliott> that would be uh 19:57:04 <elliott> fun 19:57:12 <elliott> Deewiant: oh well that's like before i even remember breathing. 19:57:33 <Deewiant> In fact, you'd used "tl;dr" several times before that, even. 19:57:55 <elliott> token laxative; dangerous recall 19:58:10 <oerjan> seems he was milner's student 19:58:37 <elliott> did he train in the craft of milnering 19:58:48 <Taneb> Milnercraft 19:58:57 <itidus20> Taneb: beat me to it 19:59:10 <elliott> that's a good kraft 19:59:12 <itidus20> i was about 2 keypresses away 19:59:18 <elliott> i didn't even think of that 19:59:22 <elliott> i remain unsmart 19:59:47 <oerjan> <elliott> what if i want to win quickly, what then <-- i detect insufficient phil foglio exposure 19:59:48 <Taneb> According to Wolfram Alpha, the name Haskell is dying out 19:59:54 <itidus20> elliott: you made the inspiring comment. "craft of milnering" 19:59:59 -!- Gregor has quit (Excess Flood). 20:00:04 -!- Gregor has joined. 20:00:04 <itidus20> you can't self-inspire 20:00:06 <elliott> oerjan: folio 20:00:10 <elliott> Gregor: stop flüd 20:00:31 -!- Gregor has changed nick to Guest53387. 20:00:35 <oerjan> <elliott> oerjan: i hear he wrote the haskell nientryeight report..... <-- well that is _so_ last millennium 20:00:46 <elliott> you need to keep contributing typofixes 20:00:47 <elliott> to stay relevant 20:00:48 <elliott> and hip 20:00:51 <elliott> :\ 20:02:02 <oerjan> die zauberflüd 20:05:14 <itidus20> spellcraft, morecraft, warcraft, starcraft, minecraft, fortresscraft, fishcraft 20:05:38 <elliott> poopcraft 20:05:44 <Taneb> mincecraft 20:05:46 <itidus20> it's not entirely clear to me what -craft means in the context of video games 20:06:03 <itidus20> it has about as much meaning as super- 20:06:15 <Taneb> Supercraft 64 20:06:22 <Taneb> Advance 20:06:45 <fizzie> "Using closest Wolfram|Alpha interpretation: sun in moon" "Input interpretation: [ Moon | volume ] / [ Sun | volume ]" "Result: 1.556 x 10^-8" 20:06:56 <fizzie> I keep feeding it nonsense, but at least sometimes I get nonsense back. 20:07:05 <fizzie> W|A is unable to compute the length of the solar day of the Sun. 20:07:29 <fizzie> "Input interpretation: [ Sun | solar day ]" "Result: (data not available)" 20:07:35 <elliott> fizzie: Is this how you spend your life? 20:07:45 <fizzie> I is a bit tiered at the moment. 20:07:47 <elliott> Because I mean, I approve. 20:08:08 <Taneb> brb 20:08:38 <fizzie> "tiered sun" => "Using closest Wolfram|Alpha interpretation: ranked sun" => "Input interpretation: [ Sun | rank ]" => "Result: 2228th". 20:09:13 <oerjan> you'da thought it'd rank higher than that 20:09:43 <elliott> sad sun :( 20:10:03 <oerjan> fizzie: are you looking for the time the sun takes to rotate around itself? 20:10:09 <MDude> Of course it can't calculate the solar day of the sun. 20:10:13 <fizzie> "floating sun" gives this really complicated "option name: European lookback with floating strike" financial thingamajigger. 20:10:21 <itidus20> there is a band named supercraft 20:10:26 <MDude> What Oerjan jsut said. 20:10:38 <itidus20> ahh.. "SUPERCRAFT - a up 'n coming Norwegian band in synthpop / futurepop." 20:11:09 <fizzie> I like the comparisons, they're always so sensible. 20:11:38 <oerjan> "Solar rotation is able to vary with latitude because the Sun is composed of a gaseous plasma." 20:11:43 <fizzie> [ Sun | rotation frequency ] => 0.03993 rev / day; comparisons as angular velocity: ~ 0.002 ~ 1/600 x mean angular velocity of slow eye drift movements. 20:11:46 <oerjan> http://en.wikipedia.org/wiki/Solar_rotation 20:12:29 <fizzie> Next time you are having a slow eye drift movement, you can console yourself that the sun rotates only at 1/600th of the speed of your eye. 20:12:40 <itidus20> supercraft at elektrostat http://www.youtube.com/watch?v=r1jbycSRyBY 20:13:11 <MDude> "lunar day of sun" is inerpreted as [Moon | [this | Sunday]]. 20:13:29 * oerjan ponders if it would have been better as "superkraft" or not 20:13:51 <oerjan> which incidentally is the norwegian word for superpower 20:14:08 <itidus20> the music is actually good though 20:15:38 <oerjan> i suppose with the c it sounds punny 20:16:11 <itidus20> i can relate to the lyrics a bit (maybe) 20:16:21 <itidus20> `log derealization 20:16:24 <HackEgo> 2011-09-14.txt:00:49:12: <itidus20> monqy: well, theres these feelings of derealization and depersonalization and psychosis which i seem to enter into at times 20:16:42 * oerjan sidles away from itidus20 20:17:08 <MDude> W|A is also unable to compute the solutions for "a ^ b = b ^ a, a != b". 20:17:23 <fizzie> Input interpretation: M_{sun} (solar mass) / housecat typical mass => 3 x 10^29. 20:17:29 <fizzie> That's how many cats there are in the Sun. 20:17:44 <elliott> Yes. 20:18:05 <oerjan> MDude: that's strange, probably doesn't parse the question correctly because mathematica has to have a function for that 20:18:46 <oerjan> b*log a = a*log b, b/log b = a/log a 20:20:40 <MDude> I tried inputing it when I read in Number Freak that and four were the only numbers that could be interchenged like that. 20:20:54 <oerjan> *that two, i assume 20:21:03 <oerjan> and presumably that's integers only 20:21:11 <MDude> Yes. 20:21:30 <oerjan> because clearly if 2,4 are solutions and b/log b is continuous, there have to be others nearby 20:21:48 <elliott> oerjan: have you got serialisation of closures working yet thx 20:22:09 <oerjan> elliott: that seems to be outside my area of expertise, but i hear erlang does that 20:22:34 <oerjan> and also there was a haskell project with a modified ghc iirc 20:22:44 <elliott> maybe that's what that cloud haskell thing does. 20:22:53 <elliott> I _think_ I can do it with vacuum... it'll just be such a huge unimaginable pain 20:22:55 <oerjan> that sounds about right 20:23:17 <oerjan> yes, vacuum is pretty painful i guess 20:24:44 <elliott> is that a pun 20:24:52 <oerjan> but of course 20:25:00 <elliott> :( 20:25:05 <fizzie> Plain "a^b = b^a" gives a ContourPlot[a^b == b^a, {a, 0.36, 6.3}, {b, 0.36, 6.3}] followed by a solution for b; b = -a W(-log(a) / a) / log(a), where W(z) is ProductLog[z], the principal solution for w in z = w e^w. 20:25:29 -!- itidus21 has joined. 20:25:52 <elliott> oerjan: did you like my analysis of wikispam. 20:26:13 <elliott> it is beautiful. 20:26:17 <oerjan> if you graph log b / b it is probably obvious that there are only finitely many options 20:26:32 <oerjan> elliott: i haven't got to that tab yet 20:26:39 <oerjan> -> 20:27:15 <elliott> oerjan: is that you moving tabs 20:28:52 -!- itidus20 has quit (Ping timeout: 276 seconds). 20:31:38 -!- itidus21 has quit (Quit: Leaving). 20:32:21 -!- itidus20 has joined. 20:34:17 -!- itidus20 has quit (Client Quit). 20:34:58 <elliott> `? oerjan 20:34:59 <HackEgo> Your future evil overlord oerjan is an expert in lazy computation. 20:35:04 <elliott> ok 20:43:50 -!- itidus20 has joined. 20:46:37 -!- itidus20 has quit (Client Quit). 20:50:26 -!- itidus21 has joined. 20:50:50 <Sgeo__> `? add 20:50:52 <HackEgo> add? ¯\(°_o)/¯ 20:50:55 <Sgeo__> `? Sgeo 20:50:57 <HackEgo> Sgeo invented Metaplace sex. 20:51:31 <Sgeo__> ಠ_ಠ 20:51:51 <Taneb> `? What's all this then? 20:51:52 <HackEgo> What's all this then?? ¯\(°_o)/¯ 20:52:36 <Taneb> Also, goodnight 20:52:40 -!- Taneb has quit (Quit: TTFN). 21:00:35 <elliott> https://github.com/xonatius/linux/commit/bdb25f1ee3bae85433d94e9192f8a18a880b28ac 21:00:37 <elliott> how not to patch 21:01:09 <elliott> oh my god people actually started spamming torvalds/linux pull request comments yelling at him for not liking them.......... 21:05:55 -!- nooga has quit (Ping timeout: 260 seconds). 21:06:20 <Sgeo__> elliott, where are those comments 21:06:34 <elliott> https://github.com/torvalds/linux/pull/11 21:13:56 -!- sllide has joined. 21:25:27 -!- monqy has joined. 21:27:24 <elliott> ah, the friendship monqy 21:28:48 <elliott> oerjan: impart wisdom 21:28:50 <monqy> hi 21:32:09 <oerjan> `run echo "The friendship monqy is an ancient Chinese mystery; ask itidus21 for details." >wisdom/monqy 21:32:11 <HackEgo> No output. 21:32:26 <oerjan> `? monqy 21:32:28 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details. 21:32:36 <itidus21> :-s 21:33:14 <oerjan> elliott: like that? 21:33:18 <itidus21> i do have an extensive collection of english-translated ancient chinese books and ebooks... but i don't know much about it 21:33:57 <itidus21> and my memory is hopeless 21:34:25 <oerjan> although better than your joke detector 21:34:25 -!- augur has quit (Remote host closed the connection). 21:35:39 <elliott> oerjan: you keep ruining all the 21:35:40 <oerjan> (ok so there may be an oblique reference to the journey to the west in there) 21:35:40 <elliott> quotes :'( 21:35:42 <elliott> erm 21:35:44 <elliott> s/quotes/wisdoms/ 21:35:45 <elliott> it was 21:35:46 <elliott> so wisdom before 21:35:47 <elliott> it was 21:35:50 <elliott> monqy dead :'( 21:35:55 <elliott> also 21:35:59 <elliott> you have anxetraneous 21:36:01 <elliott> space 21:36:03 <elliott> :'( 21:36:03 <elliott> im 21:36:03 <elliott> cry 21:36:08 <elliott> `run echo "The friendship monqy is an ancient Chinese mystery; ask itidus21 for details." >wisdom/monqy 21:36:10 <HackEgo> No output. 21:36:14 <elliott> is itidus20 21:36:18 <elliott> not suitable for asking 21:36:23 <elliott> must we only ask the upgraded 21:36:26 <elliott> version 21:36:34 <elliott> ???? 21:37:39 <elliott> oerjan: ??? 21:38:19 <oerjan> a complicated question. is his memory getting worse or better with time? 21:38:48 <elliott> help 21:39:11 <oerjan> is itidus21 using mystery to reverse entropy? 21:39:42 <elliott> looking ghostly 21:40:44 <itidus21> i don't know the stuff seriously 21:41:11 <itidus21> i do know that leibniz was curious about the i ching 21:41:35 <itidus21> and wolframalpha says that yin yang is like mathematical monad 21:42:17 * elliott logreadnotes to self 21:42:19 <elliott> -- 21:42:19 <elliott> -- TODO: Shorten this and other functions by using (~==) from TagSoup, 21:42:19 <elliott> -- see e.g. http://neilmitchell.blogspot.com/search/label/tagsoup 21:42:19 <elliott> -- 21:42:43 <elliott> (for my fizzie-clone :P) 21:43:34 <oerjan> fizzie: what do you feel about being cloned? 21:44:08 <itidus21> oerjan: if you clone your enemy can you find his weaknesses? 21:44:40 <oerjan> some of them, maybe 21:45:00 <itidus21> perhaps having a dna sample of your enemy could give insight into their weaknesses 21:45:13 <itidus21> im not meaning that this is a good thing.. 21:45:23 <itidus21> but seems like an inevitable military application 21:45:50 <itidus21> you could discover allergies they don't know they have 21:46:23 <itidus21> but on the topic of allergies i have heard it might not be genetic.. i dunno 21:47:59 -!- Zuu has quit (Ping timeout: 260 seconds). 21:53:07 <itidus21> back. a topic i am interested in is definitions of difficult and easy 21:54:00 <itidus21> for me easy to difficult is a continuum, easy being involuntary, difficult being impossible 21:54:48 <elliott> impossible is nothing 21:56:01 <itidus21> i think a task moves towards impossible as the ratio of required materials, time, kilojoules moves away from the available materials, time, kilojoules 21:56:38 <itidus21> but also the capacity to bridge the gap between the required and available affects it 21:57:32 <elliott> oerjan: are you learning, im learning 21:57:53 <itidus21> you just don't like the word difficult 21:58:05 <itidus21> noone seems to 21:58:43 <itidus21> impossible to me is if any chatter here is not dead within 130 years 21:59:03 <itidus21> i don't believe any amount of science will manage it 21:59:19 <itidus21> because for one thing science requires money 21:59:25 <itidus21> and money is a finite resource 22:00:33 <itidus21> so this time constraint of 130 years may just make it unworkable 22:01:08 <itidus21> sure if you remove constraints then things become possible 22:02:34 -!- DH____ has quit (Ping timeout: 260 seconds). 22:02:56 <itidus21> impossible is also if i held up fingers anyone being able to count them.. 22:03:34 -!- DH____ has joined. 22:04:13 <itidus21> although there is a possibility that someone really does have a camera in place to count them, it is not a real possibility 22:05:07 <itidus21> ok ill go chill out 22:05:10 -!- itidus21 has left ("Leaving"). 22:06:47 -!- itidus21 has joined. 22:07:44 -!- itidus21 has left ("Leaving"). 22:10:09 -!- sllide has quit (Ping timeout: 260 seconds). 22:10:50 -!- itidus21 has joined. 22:12:04 <itidus21> lagging bad 22:12:10 <itidus21> maybe impossible is a limit 22:12:24 <itidus21> which you can only approach,kind of like infinity 22:15:03 <itidus21> ^not that i want to be here in 130 years 22:17:04 <itidus21> `log shenanigan 22:17:09 <HackEgo> 2011-08-16.txt:12:46:24: <fizzie> For a piece of real hardware, BytePusher's screen is particularly anemic. No sprites, no hardware scroll, no programmable palette, no mid-frame interrupts to do shenanigans, just in general no help from the hardware at all. 22:18:07 <itidus21> `log random 22:18:11 <HackEgo> 2008-10-31.txt:22:36:45: <ehird> h = randomColorScheme(h, ...) 22:18:37 <itidus21> `log impossible 22:18:41 <HackEgo> 2009-07-25.txt:00:36:02: <ehird> that's impossible 22:18:48 <monqy> good log 22:19:42 <itidus21> `log world 22:19:45 <HackEgo> 2008-08-08.txt:12:10:10: <tusho> optbot: you wanna be on #worlddomination too right? 22:20:00 <itidus21> `log world 22:20:04 <HackEgo> 2011-02-04.txt:22:36:46: <elliott> Man, I woke up in a strange new world where "poop" is a swear word. 22:20:40 <itidus21> `log dwarf 22:20:41 -!- elliott has quit (Ping timeout: 252 seconds). 22:20:43 <HackEgo> 2011-02-01.txt:21:00:17: <ais523> elliott: I'm trying to make a comment on Dwarf Fortress' astonishing CPU usage 22:20:51 <oerjan> `log hid the body 22:20:54 <HackEgo> 2011-09-15.txt:22:20:51: <oerjan> `log hid the body 22:21:02 <monqy> `log hide the body 22:21:05 <HackEgo> 2011-09-15.txt:22:21:02: <monqy> `log hide the body 22:21:16 <itidus21> `log the body 22:21:19 <HackEgo> 2011-03-21.txt:15:30:31: <Gregor> Does the body actually have a "drowning" reflex per se? 22:21:23 <oerjan> darn, my attempt to use the logs to solve crime, thwarted 22:21:24 <olsner> `log the log 22:21:27 <HackEgo> 2011-01-21.txt:23:03:59: <ais523> set it to remember the login 22:21:45 <itidus21> @gregor, yeah.. the reflex is discussed on wiki page of common misconceptions 22:24:03 <itidus21> impossible = talking someone out of doing something malicious to you 22:24:51 <olsner> sounds quite useless to have a drowning reflex, I can see the use for a non-drowning reflex though 22:25:20 <itidus21> basically the drowning reflex is not social 22:25:29 <itidus21> its not designed to draw others attention 22:25:34 -!- FireFly has quit (Quit: FireFly). 22:25:42 <itidus21> all energy becomes concentrated on survival 22:25:52 <itidus21> unfortunately its quite useless 22:26:37 <itidus21> if drowning reflex worked you wouldn't need bodyguards 22:26:44 <itidus21> ^lifeguards 22:29:47 -!- Patashu has joined. 22:34:28 <Guest53387> itidus21: You're responding to RANDOM LINES FROM THE LOG?!?! 22:35:05 <monqy> hi Guest53387 22:35:42 <itidus21> Guest53387: yeah, except, i must add that it migt be a social thing.. but the point is the drowning reflex is something you could be 5 feet away from someone and not know they're drowning 22:35:50 <itidus21> unless you know what to look for 22:36:26 <monqy> I'm going to try this responding to random lines from the log thing 22:36:27 <monqy> `log 22:36:29 <HackEgo> 2007-05-03.txt:15:29:14: -!- crathman has joined #esoteric. 22:36:34 <monqy> hi crathman 22:36:36 <monqy> `log 22:36:38 <HackEgo> 2006-10-13.txt:23:38:47: <ihope> RodgerTheGreat: wait, writing all this on the alphasmart thing? 22:36:45 <itidus21> human body is not good at a few things "rotting teeth"... "drowning" 22:36:55 <Guest53387> HALLO I AM GUEST 22:37:02 <olsner> human body is bad at many things 22:37:20 <monqy> `log 22:37:20 <Guest53387> SHALL WE WORSHIP THE GREAT OVERSEER NOW? 22:37:21 <HackEgo> 2007-11-19.txt:23:09:02: <oklopol> unfortunately people don't seem to be able to learn an alphabet no matter how many memory pegs you give them 22:37:28 <itidus21> i mean we need a dentist industry to avoid chronic tooth pain? its really that bad? 22:37:43 <itidus21> evolution fucked up on the teeth department 22:37:52 <monqy> :'( 22:38:14 -!- Guest53387 has changed nick to Gregor. 22:38:27 <DH____> Pfft. You're just being picky... 22:38:41 <monqy> `log 22:38:43 <HackEgo> 2005-01-25.txt:05:06:25: -!- calamari has joined #esoteric. 22:38:50 <monqy> hi calamari 22:38:54 <oerjan> itidus21: evolution may not have foreseen industrial sugar 22:38:57 <itidus21> well i feel bad about my rant before 22:39:12 <itidus21> so im overcompensating :) 22:39:24 <DH____> As long as you don't care what you look like you rarely need to go to a dentist... 22:39:43 <itidus21> but a toothache won't just stop 22:39:44 <Gregor> To be fair, evolution has no interest. 22:40:05 <Gregor> Evolution cares only enough about you to make sure you get laid. 22:40:11 <Gregor> After that, it leaves you on the curb. 22:40:18 <itidus21> dh_ ok you're right 22:40:21 <Gregor> Evolution is the ultimate wham-bam-thank-you-{ma'am,sir} 22:41:00 -!- ive has quit (Ping timeout: 260 seconds). 22:41:10 <oerjan> Gregor: there _is_ a theory that humans have evolved the ability to be grandparents, you know 22:41:44 <Gregor> oerjan: OK, OK, it's more like "until children are weaned", but basically its influence drops quite fast after your kids are likely to have kids. 22:41:46 * oerjan does suspect Gregor is not entirely serious 22:41:50 <monqy> I've even heard myths of great grandparents 22:42:07 <oerjan> i think i met my great grandfather once 22:42:24 <oerjan> but i was quite small 22:42:26 <itidus21> :o 22:42:36 <itidus21> ability to be grandparents 22:42:42 <itidus21> thats pretty intense 22:42:45 <monqy> it's like a superpower 22:42:48 <olsner> woah, GRANDparents 22:43:00 <itidus21> most animals don't become grandparents? 22:43:31 <oerjan> erm, i mean ability to have a _role_ as grandparents, as opposed to just generally existing (or not) 22:43:50 <itidus21> `log sandwich 22:43:53 <HackEgo> 2009-02-28.txt:20:19:26: <GregorR> People need to replace the term "GLBT" with "GBLT". Support your local gay bacon lettuce and tomato sandwich. 22:44:03 <olsner> `log sammich 22:44:06 <HackEgo> 2009-05-28.txt:21:28:38: <GregorR-L> !bfjoust make_me_a_sammich (>)*10+>->+[[-]>+] 22:44:19 <itidus21> `log bread 22:44:20 <oerjan> perhaps some other very social animals do too 22:44:23 <HackEgo> 2007-04-09.txt:00:51:29: <SevenInchBread> but I'm assuming that's what they exist for. 22:44:31 <itidus21> `log toast 22:44:31 <olsner> Gregor's spelling of sandwich is inconsistent :/ 22:44:34 <HackEgo> 2010-12-17.txt:19:31:42: <Deewiant> elliott: No, but my toaster is. 22:44:48 <itidus21> `log crossaint 22:44:52 <HackEgo> 2011-09-15.txt:22:44:48: <itidus21> `log crossaint 22:44:53 <monqy> samwich, sandmich 22:45:06 <olsner> `log burrito 22:45:09 <HackEgo> 2011-03-20.txt:22:26:31: <myndzi> aw, i put a burrito in the microwave on defrost and it burst 22:45:18 <monqy> that happens to me too 22:45:20 <itidus21> `log sandwich 22:45:24 <HackEgo> 2010-01-17.txt:00:13:34: <Gregor> I am eating a turkey sandwich made with it /right now/. 22:45:24 <oerjan> olsner: not every sandwitch raises to the quality needed to be a sammitch. or so i hear. 22:45:32 <oerjan> *sandwich 22:45:35 <itidus21> `log sandwich 22:45:37 <Gregor> I believe 22:45:39 <HackEgo> 2010-12-09.txt:19:07:39: <fizzie> Phantom_Hoover: Or lightly-garnished sandwiches. 22:45:40 <Gregor> That the "it" there 22:45:43 <olsner> oerjan: so you hear, so you hear 22:45:43 <Gregor> Was BACONNAISE 22:45:47 <monqy> sandwhich 22:46:03 <itidus21> `log sammich 22:46:06 <HackEgo> 2009-11-13.txt:20:03:58: <zzo38> I found a page on the wiki called [[Sammich]] but it seems it so far is only a example program, do you think anything should be done with that? 22:46:46 <monqy> sammich is a bad wiki page 22:48:09 <oerjan> sammizdat 22:49:30 -!- nooga has joined. 22:52:19 <itidus21> http://blog.progopedia.com/2011/jul/31/gourmet-programming/ 23:04:06 <itidus21> ok so i was thinking and reading, 23:04:29 <itidus21> it has occured to me that chessboard does not contain an encoding of the rules of chess within itself 23:04:38 <Patashu> yup 23:04:45 <itidus21> this is a terrible situation 23:05:15 <itidus21> so i thought of a possible solution 23:05:50 <oerjan> the quineboard! 23:07:52 <DH____> Not a cheeseboard for gourmet programming? 23:08:07 <Patashu> There are chess variants about food 23:08:44 <itidus21> i was reading hither and thither 23:09:49 <itidus21> ok this is the general idea http://oi53.tinypic.com/21jtzs5.jpg 23:10:31 <itidus21> someone in here once mentioned to me that some game where each piece was a chessboard of its own 23:11:09 <itidus21> but the idea i am looking at here is each piece is an address of some program section which defines it 23:11:35 * oerjan suddenly is reminded of titan 23:12:03 <oerjan> oh, also shogun 23:12:27 <itidus21> so the chessboard itself i am trying to see as being just a part of a program 23:12:39 <oerjan> although that wasn't every piece, just a smaller board for battles 23:12:55 <Patashu> there are plenty of chess programs 23:13:34 <itidus21> humm.. so how would it work.. it would be 23:14:22 <itidus21> well firstly you might have a data structure representing a chess piece 23:15:08 <itidus21> and each class of chess piece could be some numbers plugged into that data structure 23:16:01 <itidus21> and, so, you could, say each piece was a pointer to a chess piece data structure 23:16:23 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:18:00 <itidus21> ok Betza defines a pawn as "mfWcfFimfW2" and Parlett defines a pawn as "o1>, c1X>, io2>" 23:18:20 <itidus21> so you could store "mfWcfFimfW2" at say, address 100 23:18:50 <itidus21> and your row of pawns would then all be pointers to address 100 23:19:50 <itidus21> now if a piece could break out of the board.. and tamper with the definition of a pawn 23:20:03 <itidus21> it could start getting quite interesting 23:23:15 -!- nooga has quit (Ping timeout: 240 seconds). 23:29:39 -!- Jafet has quit (Quit: Leaving.). 23:29:44 <itidus21> Patashu: so the program becomes the board.. and pieces are presumably tracked by some kind of array or list 23:34:36 <itidus21> so when it is your turn you would select a cell from those available in your list of cells, and a desired place to move it, and it would look up the instructions of the piece by following its address 23:34:39 -!- augur has joined. 23:35:05 <itidus21> for example pawns might be described at address 100, and then, if your move is possible it would be made 23:37:05 -!- ive has joined. 23:52:03 <CakeProphet> itidus21: there is no fenestrated wall in programs. 23:53:11 <CakeProphet> ^style europarl 23:53:11 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006) 23:53:14 <CakeProphet> fungot: you make me fun 23:53:15 <fungot> CakeProphet: mr president, as a result of this position, which is the accelerated procedure allowing the implementation of the civil aspects of the euro is not just thought about young people we should recognise that we must not allow ourselves to create a specialized, centralized courts in all our countries are going to guarantee the democratic legitimacy of the european union 23:53:30 <CakeProphet> fungot: you make me fun 23:53:31 <fungot> CakeProphet: mr president, i should like to start by thanking mr salafranca snchez-neyra has said, i have to say. because development cooperation has been placing increasing emphasis on development by integration into the market of genetically-modified maize modified by fnord, the parameters of the berlin wall, which amounts to resigning itself to a structural reform of its organisation and is asking the commission to consult 23:56:46 <oerjan> there should be a fenestrated wall in programs, so that you can have a defenestrate command. 23:57:58 -!- fungot has quit (Ping timeout: 244 seconds). 23:59:11 <oerjan> ouch 2011-09-16: 00:00:46 <monqy> oh no 00:01:12 -!- Jafet has joined. 00:05:32 <CakeProphet> itidus21: meaning that anything in the program that goes "outside the bounds" of the system has either been designed as part of the system, or is most likely a bug/segfault. 00:05:46 <Lymee> http://i55.tinypic.com/15gwgwh.png < Pretty? :3 00:10:56 -!- Gregor has changed nick to Guest53387. 00:11:32 -!- Guest53387 has changed nick to Gregor. 00:11:40 <Gregor> Argh 00:12:29 <itidus21> CakeProphet: yeah.. 00:13:11 <itidus21> a properly implemented chessboard and chess rules will never bring about a situation where the pieces can leave the board 00:13:36 <itidus21> leaving board has to be by design or by hacking/bugs 00:15:30 <itidus21> theres this problem that a game doesn't necessarily become better by being larger or more complicated 00:18:18 <monqy> how is that a problem 00:19:00 <itidus21> like it can be a memory test[eg the game memory], a reflex test[arcade/action games], a calculation test[puzzle/strategy games], a strength test[punching bag style games/some sports], a stamina test[some sports] 00:19:40 <itidus21> also.. it can be a test of how much time and money you have 00:20:41 <itidus21> the idlerpg game is like a test of how long you can maintain an irc connection 00:21:55 <itidus21> some games where you can buy items or priviliges with real world money show that off... and being able to afford better internet connections or living in country with good internet can improve that 00:22:01 -!- augur has quit (Remote host closed the connection). 00:22:05 <Sgeo__> How about the game where you lose if someone else starts playing within a certain time? 00:23:00 <itidus21> also games can be a test of the ability to cheat or hacking it 00:24:31 <itidus21> monqy: because i want to think up a cool game.. and it would be easy if all i had to do was say "bigger! more complicated!" 00:25:15 <itidus21> the trick is that a game does not infact prove superiority of one over another.. it is an illusion of the ego 00:29:49 <itidus21> so, another way i try to look at it is the value of art 00:30:01 -!- ive has quit (Ping timeout: 276 seconds). 00:31:03 <itidus21> poetry, novels, drawings, paintings, musical compositions, sculptures, garden arrangements, house decoration 00:31:15 <itidus21> ^film 00:31:17 -!- copumpkin has joined. 00:31:54 <itidus21> theater plays, operas, orchestras, concerts, puppet shows, circuses 00:32:45 <itidus21> singing, dancing 00:33:58 <itidus21> origami, martial arts, fashion 00:34:34 <itidus21> cooking 00:35:06 <oerjan> bonsai kittens 00:35:52 * oerjan waits for itidus21 to run away screaming 00:36:46 <itidus21> now whether science, mathematics, physics, electronics, engineering, philosophy, religion, programming etc, fits in with that first list i am not sure 00:37:08 <Jafet> Sex. 00:42:25 <itidus21> now these things difficult to classify religion, business, politics, law, military, sales, marketing, tourism, psychology(could be science) 00:42:37 -!- CakeProphet has quit (Ping timeout: 252 seconds). 00:43:08 <itidus21> the last ones seem to be a category of things which are particularly social in nature 00:44:01 -!- oerjan has quit (Quit: Good night). 00:44:17 <itidus21> so, i am left wondering where gaming fits in to all this 00:45:11 <itidus21> is it a drug.. is it a shallow consumable.. 00:45:21 <itidus21> is it an artform 00:45:30 <itidus21> is it a science 00:47:02 <itidus21> perhaps a game can be enjoyed or not enjoyed in just the same way as everything else 00:47:57 -!- qnix has joined. 00:48:23 <itidus21> upon a stable basis of friendly people wanting to interact a game can perform it's magic 01:03:46 <itidus21> so drawing my attention now to how games are played. chess tables in a park. gambling in wild west saloons. casinos. basketball courts. football fields. olympic stadiums. racing tracks. slot car racing venues. golf courses. arcade game places. 01:04:07 <itidus21> billiads/pool halls. 01:04:25 <itidus21> ^bulliards 01:07:02 <itidus21> on a phone. bedroom PC. a lan cafe. lan parties. family tv with console attached. tabletop games like board games, military sims, role playing games 01:07:59 <itidus21> marble games often played outdoors 01:09:31 <itidus21> i spy, charades, travel versions of some board games 01:09:51 <itidus21> newspaper puzzles, magazine puzzles, 01:10:13 <itidus21> live action role playing games(LARP) 01:11:13 <itidus21> hop scotch. tennis ball bouncing games, such as bouncing in squares of pavement or bouncing off a wall 01:11:48 <itidus21> easter egg hunts 01:13:28 <itidus21> some games seems to be played for entertainment, some played for profit.. 01:14:25 <itidus21> some for .. i don't know.. i can't really understand mathematicians or why they play mathematical games 01:15:50 <itidus21> perhaps those are also entertaining, but there is certainly some educational value to some games too 01:16:37 <itidus21> however, education of course is a means and not an end, and yet we hope that we never stop learning 01:17:59 * itidus21 walks off in the twilight among the chirps of crickets, satisfied. 01:21:00 -!- HolyBlood has joined. 01:28:02 -!- HolyBlood has quit. 01:30:02 -!- CakeProphet has joined. 01:30:24 <CakeProphet> sex with bonsai kittens? 01:32:36 <monqy> ew 01:33:43 <CakeProphet> !kill monqy 01:36:04 -!- kmc has quit (Ping timeout: 260 seconds). 01:36:12 <monqy> hi 01:36:25 <Jafet> And I thought the psycho-babble thing was a joke 01:36:32 <CakeProphet> nope. 01:36:39 <CakeProphet> it is most definitely not a joke. 01:36:43 <CakeProphet> it is our tpic. 01:37:00 <Jafet> Shit just god Freudian 01:37:10 <Jafet> gott, even 01:37:17 <CakeProphet> Freudian slip. 01:37:33 <CakeProphet> hmmmm 01:38:01 <CakeProphet> so I have: caramel frappucino, banana foster, pumpkin spice, and fuzzy peach 01:38:07 <CakeProphet> which flavors should I mix into my hookah bowl? 01:43:55 <CakeProphet> !haskell import System.Random;import Control.Monad; main = print =<< pick (filterM (const [True, False]) ["cf, "bf", "ps", "fp"]) where pick ls = randomRIO (0, length ls) >>= (ls!!) 01:44:54 <CakeProphet> !haskell import System.Random;import Control.Monad; main = print =<< pick (filterM (const [True, False]) ["cf", "bf", "ps", "fp"]) where pick ls = randomRIO (0, length ls) >>= (ls!!) 01:46:02 <CakeProphet> oh... 01:46:30 <CakeProphet> !haskell import System.Random;import Control.Monad; main = print =<< pick (filterM (const [True, False]) ["cf", "bf", "ps", "fp"]) where pick ls = randomRIO (0, length ls) >>= (return.(ls!!)) 01:46:31 <monqy> I see a few problems with that 01:46:35 <EgoBot> ​["bf","ps","fp"] 01:46:41 <CakeProphet> I NOW SEE NONE 01:46:53 <CakeProphet> that is actually a good combination.. 01:47:22 <CakeProphet> I could just use fmap instead of >>= in pick 01:47:51 <CakeProphet> !haskell import System.Random;import Control.Monad; main = print =<< pick (filterM (const [True, False]) ["cf", "bf", "ps", "fp"]) where pick ls = (ls!!) <$> randomRIO (0, length ls) 01:48:08 <monqy> hheheheh 01:48:15 <CakeProphet> !haskell import System.Random;import Control.Monad; main = print =<< pick (filterM (const [True, False]) ["cf", "bf", "ps", "fp"]) where pick ls = (ls!!) `fmap` randomRIO (0, length ls) 01:48:19 <CakeProphet> monqy: shush 01:48:20 <EgoBot> ​["ps"] 01:48:22 <monqy> hheheheh 01:48:26 <CakeProphet> what? :P 01:48:29 -!- kmc has joined. 01:48:34 <monqy> what a boring mix 01:48:38 <monqy> at least you didn't get the empty list 01:48:41 <monqy> that would have been dreadful 01:48:42 <CakeProphet> well, one flavor alone is delicious. 01:49:07 <CakeProphet> why is <$> in Control.Applicative anyways. 01:49:09 <CakeProphet> it should be with fmap. 01:52:05 <CakeProphet> I wonder if there's a better way to do pick without using both length and !! 01:52:21 <CakeProphet> seems like you need the length to calculate the probability either way. 01:52:34 <CakeProphet> if you wanted it to be evenly distributed. 01:53:58 <CakeProphet> @pl pick ls = (ls!!) `fmap` randomRIO (0, length ls) 01:53:59 <monqy> you could also do it differently 01:53:59 <lambdabot> pick = liftM2 fmap (!!) (randomRIO . (,) 0 . length) 01:54:17 <CakeProphet> monqy: right that's basically the question I was asking. "I wonder if I could do it differently" 01:54:21 <monqy> hehehe 01:54:28 <monqy> I'm going to do it differently now 01:55:33 <CakeProphet> ah I know how you could do it differently. 01:55:41 <CakeProphet> .5 probability for each element. 01:55:47 <monqy> yes that's what i was going to do 01:55:48 <CakeProphet> basically skip the power set. 01:56:12 <CakeProphet> perhaps the power set is never the best way to do anything. :P 01:56:29 <monqy> getting the power set is a good way to get the power set 01:56:37 <CakeProphet> true enough. 01:56:56 <CakeProphet> it seems like most of the algorithms involving a power set can be reduced to something more efficient that is essentially equivalent. 01:58:14 -!- Jafet has quit (Quit: Leaving.). 01:58:53 <CakeProphet> !haskell import System.Random;import Control.Monad; main = print =<< filterM (randomRIO (False,True)) ["cf", "bf", "ps", "fp"] 01:59:01 <CakeProphet> bah 01:59:52 <CakeProphet> :t const <$> (undefined :: IO Bool) 01:59:53 <lambdabot> forall b. IO (b -> Bool) 02:00:00 <CakeProphet> :t const (undefined :: IO Bool) 02:00:00 <lambdabot> forall b. b -> IO Bool 02:00:10 <CakeProphet> !haskell import System.Random;import Control.Monad; main = print =<< filterM (const $ randomRIO (False,True)) ["cf", "bf", "ps", "fp"] 02:00:15 <EgoBot> ​["cf","bf"] 02:01:03 <CakeProphet> I think I'll try that one actually 02:01:06 <CakeProphet> sounds like a good combo. 02:02:30 <monqy> > unsafeCoerce (const Nothing :: a -> Maybe a) :: Int 02:02:31 <lambdabot> Not in scope: `unsafeCoerce' 02:02:38 <monqy> > Unsafe.Coerce.unsafeCoerce (const Nothing :: a -> Maybe a) :: Int 02:02:39 <lambdabot> Not in scope: `Unsafe.Coerce.unsafeCoerce' 02:02:39 <CakeProphet> also, today I learned this: 02:02:41 <monqy> oops 02:02:44 <CakeProphet> :t ap const const 02:02:45 <lambdabot> forall b. b -> b 02:03:05 <monqy> SKK 02:03:09 <CakeProphet> yes, is I 02:03:13 <monqy> yes 02:03:19 <monqy> isn't it common knowledge? 02:03:37 <CakeProphet> ....uh, you have a strange definition of "common knowledge" 02:04:29 <monqy> common knowledge amongst those who know anything about the ski combinator calculus 02:04:38 <CakeProphet> oh, well yes. 02:04:54 <CakeProphet> I'm not very good SKI though 02:04:56 <CakeProphet> or lambda calculus 02:04:58 <CakeProphet> or anything of that nature. 02:05:04 <CakeProphet> I just know what they are. 02:05:54 <CakeProphet> and then I learned: 02:05:57 <CakeProphet> let's see if I can remember it... 02:06:08 <CakeProphet> :t ap (const ap) const 02:06:09 <lambdabot> forall a b b1. (a -> b) -> (b1 -> a) -> b1 -> b 02:07:37 <CakeProphet> though I should have already known that one. 02:08:36 <CakeProphet> because it's B in BCKW 02:10:05 <CakeProphet> :t ap (const (ap id id )) (ap (ap (const ap) const) (const (ap id id))) 02:10:06 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> b 02:10:06 <lambdabot> Probable cause: `id' is applied to too few arguments 02:10:06 <lambdabot> In the second argument of `ap', namely `id' 02:10:31 <monqy> (ap id id) is a bad idea 02:10:45 <CakeProphet> well, that would be Y... but Haskell doesn't allow that to type. 02:10:49 <monqy> i mean 02:12:10 <monqy> i guess i meant what i said oops 02:12:11 -!- augur has joined. 02:13:02 <CakeProphet> :t ap (id id) 02:13:03 <lambdabot> forall a b. ((a -> b) -> a) -> (a -> b) -> b 02:13:09 <CakeProphet> :t ap id id 02:13:09 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> b 02:13:10 <lambdabot> Probable cause: `id' is applied to too few arguments 02:13:10 <lambdabot> In the second argument of `ap', namely `id' 02:13:14 -!- DH____ has quit (Read error: Connection reset by peer). 02:13:17 <CakeProphet> :t ap id 02:13:18 <lambdabot> forall a b. ((a -> b) -> a) -> (a -> b) -> b 02:13:28 -!- Jafet has joined. 02:13:34 -!- DH____ has joined. 02:13:50 <CakeProphet> @hoogle (a -> b) -> a 02:13:50 <lambdabot> Data.Function fix :: (a -> a) -> a 02:13:50 <lambdabot> Control.Monad.Fix fix :: (a -> a) -> a 02:13:50 <lambdabot> Data.Generics.Schemes everywhere :: (a -> a) -> a -> a 02:13:59 <CakeProphet> bah 02:15:15 <CakeProphet> !haskell :t id 02:15:17 <EgoBot> id :: a -> a 02:15:38 <CakeProphet> hmmm, but I can't import stuff. 02:16:21 <CakeProphet> oh well I'll find out what happens. 02:17:12 -!- DH____ has quit (Read error: Connection reset by peer). 02:18:21 <CakeProphet> !haskell import Unsafe.Coerce; import Control.Monad; main = print $ fix (1:) where fix = ap (const (ap id (unsafeCoerce id :: (a -> b) -> a))) (ap (ap (const ap) const) (const (ap id (unsafeCoerce id :: (a -> b) -> a)))) 02:18:48 <CakeProphet> :P 02:20:58 <CakeProphet> not sure where the error is. it just says "compilation errors 02:21:00 <CakeProphet> " 02:21:43 <monqy> nice 02:22:25 <CakeProphet> obviously if I just tell the type system everything is okay then it'll work perfectly. 02:24:09 <CakeProphet> hmmm maybe... 02:24:41 <CakeProphet> !haskell import Unsafe.Coerce; import Control.Monad; main = print $ fix (1:) where fix = ap (const (ap id unsafeCoerce)) (ap (ap (const ap) const) (const (ap id unsafeCoerce))) 02:25:03 <CakeProphet> ah 02:25:44 <CakeProphet> !haskell import Unsafe.Coerce; import Control.Monad; import Control.Monad.Instances; main = print $ fix (1:) where fix = ap (const (ap id unsafeCoerce)) (ap (ap (const ap) const) (const (ap id unsafeCoerce))) 02:26:06 <CakeProphet> .....uh, no compilation errors I think. 02:26:11 <CakeProphet> so it just crashes I guess. 02:31:29 * Sgeo__ decides no one here wants to hear about what happened today. 02:31:35 <Sgeo__> And even if someone did: It's private. 02:32:04 <Sgeo__> I guess the fact that something happened that I deem private isn't private, though 02:32:32 <itidus21> yeah, we can take the burden of knowing something happened without knowing what it was 02:40:59 <Sgeo__> ?` Sgeo 02:40:59 <lambdabot> Maybe you meant: . ? @ v 02:41:04 <Sgeo__> `? Sgeo 02:41:06 <HackEgo> Sgeo invented Metaplace sex. 02:42:01 <CakeProphet> wow skype is incredibly shitty 02:42:07 <monqy> yep 02:43:28 <Sgeo__> Is there anything better than skype? 02:44:31 <CakeProphet> any IM client, for text conversations 02:44:33 <CakeProphet> or IRC 02:44:45 <Sgeo__> What about for video chat? 02:45:42 <CakeProphet> no idea. 02:45:55 <CakeProphet> wow 02:46:01 <CakeProphet> skype is completely unusuable right now. 02:46:04 <CakeProphet> how terrible. 02:46:11 * Sgeo__ highly doubts that ooVoo counts as better 02:46:21 <Sgeo__> Although it was working earlier 02:51:04 <CakeProphet> fungot: help you are gone. 02:53:15 <monqy> ;_; 03:02:56 <itidus21> `log smeg 03:03:00 <HackEgo> 2010-07-28.txt:00:05:30: * cpressey wonders who the smeg Casey & Andy are and why they've been mentioned three times in here today 03:03:22 <itidus21> `log smeg 03:03:25 <HackEgo> 2011-09-16.txt:03:03:00: <HackEgo> 2010-07-28.txt:00:05:30: * cpressey wonders who the smeg Casey & Andy are and why they've been mentioned three times in here today 03:03:31 <itidus21> o.o 03:04:12 <itidus21> `log loller 03:04:15 <HackEgo> 2005-09-07.txt:14:04:35: <kipple_> Aardwolf: are you the designer of Brainloller? 03:04:48 <itidus21> `log fuck 03:04:52 <HackEgo> 2008-08-12.txt:09:27:27: <AnMaster> asiekierka, you could make almost anything, after all brainfuck is turing complete 03:05:10 <itidus21> `log fuck 03:05:13 <HackEgo> 2010-10-16.txt:19:35:33: <pikhq> Well, it does fuck with your credit score a lot. 03:05:18 <itidus21> `log fuck 03:05:21 <HackEgo> 2011-09-15.txt:04:27:47: <elliott> Lymee: Fuck off 03:05:37 <itidus21> `log unusable 03:05:40 <HackEgo> 2010-10-21.txt:15:28:25: <Gregor> FURTHER DISCOVERY: document.elementFromPoint is effectively unusable. 03:06:30 <itidus21> `log mario 03:06:33 <HackEgo> 2011-08-11.txt:02:43:06: <Vorpal> ais523, btw I think you should be able to run around floating eyes to kill them. (Note: only makes sense if you played Mario64 I think) 03:06:49 <itidus21> `log #jesus 03:06:52 <HackEgo> 2011-08-09.txt:23:36:02: <Patashu> screw #jesus, terraria 1.0.6 is finally out http://www.terrariaonline.com/threads/1-0-6-changelog.50278/ 03:07:32 <itidus21> `log http 03:07:36 <HackEgo> 2006-02-26.txt:17:26:59: <Keymaker> http://koti.mbnet.fi/yiap/stuff/antdata.txt 03:08:08 <itidus21> `log norris 03:08:11 <HackEgo> 2008-04-05.txt:03:27:07: <Slereah> Chuck Norris. Ninjas. Objectivist propaganda. 03:12:45 -!- Sgeo__ has changed nick to Sgeo. 03:13:27 <monqy> itidus21: hi 03:15:10 <Gregor> `url bin/log 03:15:11 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/log 03:17:32 <Gregor> `fetch http://sprunge.us/JMhe 03:17:33 <HackEgo> 2011-09-16 03:17:32 URL:http://sprunge.us/JMhe [223] -> "JMhe" [1] 03:17:42 <Gregor> `run mv JMhe bin/log && chmod 0755 bin/log 03:17:44 <HackEgo> No output. 03:17:47 <Gregor> `log 03:17:49 <HackEgo> 2010-03-02.txt:01:01:26: <Gre​gor> ... 03:19:19 <Gregor> `log this log search feature sucks 03:19:21 <HackEgo> 2011-09-16.txt:03:19:19: <Gregor> `log this log search feature sucks 03:28:05 <itidus21> `log just using log to maintain some modicum of relaxation 03:28:07 <HackEgo> 2011-09-16.txt:03:28:05: <itidus21> `log just using log to maintain some modicum of relaxation 03:35:18 <qnix> any one extremely good with md5 collision and brainfuck language pm me ? :) 03:36:24 <shachaf> No one is good with MD5 coll... Oops, sorry, just got out of my time machine. 03:45:28 <itidus21> my theory that mondrian's style was already existant in flag designs 03:45:41 <itidus21> but not formalized 03:50:12 <CakeProphet> my flags are the best. 03:50:40 <CakeProphet> `celebrate 03:50:42 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: celebrate: not found 03:50:44 <CakeProphet> !celebrate 03:50:47 <CakeProphet> halp 03:50:53 <CakeProphet> @celebrate 03:50:53 <lambdabot> Unknown command, try @list 03:50:56 <CakeProphet> ?celebrate 03:50:56 <lambdabot> Unknown command, try @list 03:50:57 <CakeProphet> haaalp 03:51:15 <CakeProphet> ^celebrate 03:51:19 <CakeProphet> NO FUNGOT 03:51:24 <CakeProphet> fizzie: no fungot 03:51:36 <CakeProphet> > cycle "no fungot" --fizzie 03:51:37 <lambdabot> "no fungotno fungotno fungotno fungotno fungotno fungotno fungotno fungotno... 03:52:51 <CakeProphet> !haskell import System.Random;import Control.Monad; main = print =<< filterM (const $ randomRIO (False,True)) ["cf", "bf", "ps", "fp"] 03:52:56 <EgoBot> ​["cf","bf","ps"] 03:53:54 <CakeProphet> :t filterM 03:53:55 <lambdabot> forall a (m :: * -> *). (Monad m) => (a -> m Bool) -> [a] -> m [a] 03:55:38 <CakeProphet> !addinterp cpick haskell import System.Random;import Control.Monad; main = print =<< filterM (const $ randomRIO (False,True)) =<< words <$> getContents 03:55:38 <EgoBot> ​Interpreter cpick installed. 03:55:45 <CakeProphet> !cpick apples oranges bananas 03:55:57 <CakeProphet> NOOOO 03:56:24 <CakeProphet> !addinterp cpick haskell import System.Random;import Control.Monad; main = print =<< filterM (const $ randomRIO (False,True)) =<< fmap words getContents 03:56:24 <EgoBot> ​There is already an interpreter for cpick! 03:56:28 <CakeProphet> !delinterp cpick 03:56:28 <EgoBot> ​Interpreter cpick deleted. 03:56:30 <CakeProphet> !addinterp cpick haskell import System.Random;import Control.Monad; main = print =<< filterM (const $ randomRIO (False,True)) =<< fmap words getContents 03:56:30 <EgoBot> ​Interpreter cpick installed. 03:56:37 <CakeProphet> !cpick apples oranges bananas 03:56:42 <EgoBot> ​["apples"] 03:56:44 <CakeProphet> !cpick apples oranges bananas 03:56:49 <EgoBot> ​["oranges","bananas"] 03:59:16 <CakeProphet> :t unwords 03:59:17 <lambdabot> [String] -> String 04:00:29 <CakeProphet> !delinterp 04:00:29 <EgoBot> ​ is not a user interpreter. 04:00:58 <CakeProphet> !addinterp cpick haskell import System.Random;import Control.Monad; main = print . unwords =<< filterM (const $ randomRIO (False,True)) =<< fmap words getContents 04:00:58 <EgoBot> ​There is already an interpreter for cpick! 04:01:02 <CakeProphet> !delinterp pick 04:01:02 <EgoBot> ​That interpreter doesn't exist! 04:01:03 <CakeProphet> !addinterp cpick haskell import System.Random;import Control.Monad; main = print . unwords =<< filterM (const $ randomRIO (False,True)) =<< fmap words getContents 04:01:03 <EgoBot> ​There is already an interpreter for cpick! 04:01:06 <CakeProphet> ejrwhwer 04:01:09 <CakeProphet> !delinterp cpick 04:01:09 <EgoBot> ​Interpreter cpick deleted. 04:01:11 <CakeProphet> !addinterp cpick haskell import System.Random;import Control.Monad; main = print . unwords =<< filterM (const $ randomRIO (False,True)) =<< fmap words getContents 04:01:11 <EgoBot> ​Interpreter cpick installed. 04:01:20 <CakeProphet> !cpick apples oranges bananas 04:01:25 <EgoBot> ​"apples bananas" 04:01:49 <CakeProphet> oh... 04:01:53 <CakeProphet> !delinterp 04:01:53 <EgoBot> ​ is not a user interpreter. 04:01:57 <CakeProphet> !delinterp cpick 04:01:58 <EgoBot> ​Interpreter cpick deleted. 04:02:08 <CakeProphet> !addinterp cpick haskell import System.Random;import Control.Monad; main = putStrLn . unwords =<< filterM (const $ randomRIO (False,True)) =<< fmap words getContents 04:02:08 <EgoBot> ​Interpreter cpick installed. 04:02:13 <CakeProphet> !cpick apples oranges bananas 04:02:18 <EgoBot> apples oranges 04:07:01 <Sgeo> calamari 04:07:04 <Sgeo> No ping :( 04:08:43 <CakeProphet> the equivalent Perl would be: $,=" "; print grep {int(rand(2))} split " " for <>; 04:12:18 <CakeProphet> I wish Haskell syntax avoided parens more often. $ is pretty nice though 04:14:09 <CakeProphet> !perl $,=" "; print "test", "test"; print "test"; 04:14:10 <EgoBot> test testtest 04:14:15 <CakeProphet> !perl $,=" "; print "test", "test",; print "test"; 04:14:15 <EgoBot> test testtest 04:14:19 <CakeProphet> !perl $,=" "; print "test", "test",; print ,"test"; 04:14:20 <EgoBot> test test 04:14:23 <CakeProphet> :( 04:14:50 <monqy> test? test test 04:14:55 <monqy> test test test 04:15:14 <CakeProphet> > words "test\ntest" 04:15:15 <lambdabot> ["test","test"] 04:15:37 <CakeProphet> > unwords . words $ "test\ntest" 04:15:38 <lambdabot> "test test" 04:15:41 <CakeProphet> SHAME ON YOU HASKELL 04:15:44 <CakeProphet> THEY ARE NOT INVERSES. 04:15:49 <CakeProphet> baaaawwww 04:15:57 <monqy> did it ever claim they were 04:16:03 <CakeProphet> no 04:16:05 <CakeProphet> >_> 04:16:21 <CakeProphet> maybe by using un- 04:19:48 <CakeProphet> !perl $,=" "; print "test", "test"; print "","test"; 04:19:48 <EgoBot> test test test 04:19:50 <CakeProphet> beautiful code 04:30:20 <CakeProphet> so uh 04:30:35 <CakeProphet> what's the different between <file.h> and <cfile> in C++? 04:30:47 <CakeProphet> cstdio vs stdio.h for example 04:31:23 <CakeProphet> I'm afraid C++ is still a huge baffling mystery to me. 04:32:10 <Sgeo> CakeProphet, I think one does one thing and one does another, not sure 04:32:21 <CakeProphet> ...ah 04:32:39 <CakeProphet> I'm inclined to think stdio.h is the C header and cstdio is the C++ header 04:32:43 <CakeProphet> but maybe they're the same. 04:32:50 <Sgeo> They're almost the same, iirc 04:33:31 <Sgeo> Same functions, but cwhatever puts the functions in std::, while whatever.h leaves them global 04:33:42 <Sgeo> Note that this is for the standard library only, probably 04:33:57 <CakeProphet> right 04:33:58 <Sgeo> http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html 04:34:43 <CakeProphet> cool so I can skip a using line. :P 04:35:26 * Sgeo shoots CakeProphet 04:36:34 <CakeProphet> what? it also means that my code will be C basically 04:36:37 <CakeProphet> which is immensely better. 04:37:07 <Sgeo> Then why not write in C? 04:37:22 <CakeProphet> I basically am at this point. 04:37:41 <Sgeo> As in, why are you using a C++ compiler? 04:38:03 <Sgeo> Also, best practices differ with some things between C and C++ 04:38:44 <Sgeo> iirc, C++ forces you to cast malloc() to a void*, while in C, that's a rather bad idea 04:39:11 <Sgeo> Oh, erm, not casting to a void*, I think 04:39:15 <Sgeo> hmm, not sure 04:39:38 <Sgeo> http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc 04:39:54 <Sgeo> (The answer is "No" for C, and "You have to" for C++) 04:40:19 <monqy> answeR: why are you using c++ 04:41:14 <CakeProphet> don't worry about it. 04:41:38 <Sgeo> Compile C with a C compiler, compile C++ with a C++ compiler. 04:41:59 <Sgeo> Although page I linked has a useful macro for if you must compile new C code with a C++ compiler 04:48:54 -!- fungot has joined. 04:49:01 <fizzie> There. 04:49:30 <fizzie> fungot: Maybe one day you should learn to restart yourself or something. 04:49:31 <fungot> fizzie: slowly a char at a time, if you're interested. seriously. especially if you're asking about 04:54:07 <CakeProphet> ^celebrate 04:54:08 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 04:54:08 <myndzi> | | | `\o/´ | | | `\o/´ | | | 04:54:09 <myndzi> /< >\ /< | /`\ /| |\ | /< /< |\ 04:54:09 <myndzi> /`\ /'¯|_) 04:54:09 <myndzi> (_| |_) (_| 04:56:12 <shachaf> Those \m/ \m/ things are are prisoners hanging from a wall, right? 04:56:12 <myndzi> `\o/´ 04:56:13 <myndzi> | 04:56:13 <myndzi> /'\ 04:56:13 <myndzi> (_| |_) 04:59:44 <CakeProphet> I think it's someone jumping in the air with their fists up. 04:59:57 <CakeProphet> and out 04:59:58 <itidus21> \o/ 04:59:58 <myndzi> | 04:59:58 <myndzi> /´\ 05:00:31 <itidus21> shachaf: well their arms have to be up because basically 05:00:42 <itidus21> o 05:00:46 <itidus21> /|\ 05:00:52 <itidus21> / \ 05:01:01 <itidus21> is not possible to indicate :D 05:01:07 <shachaf> \m/ \m/ # prisoner on a rack 05:01:41 <itidus21> shachaf: ohh i see 05:02:14 <shachaf> No, that's a different thing. 05:02:25 <itidus21> had to fix my font 05:02:37 <itidus21> \m/ \m/ 05:02:37 <myndzi> `\o/´ 05:02:37 <myndzi> | 05:02:37 <myndzi> (_|¯´¯|_) 05:02:42 * shachaf was thinking of the cliché of... Not sure how to find a picture of it. 05:02:47 <itidus21> guh.. i aligned him wrong 05:03:16 <itidus21> keep on truckin? 05:03:38 <itidus21> nah just kidding it aint the truckin' guy :-? 05:03:55 <CakeProphet> my webcam is apparently semi-broken. 05:04:49 * itidus21 discovered just how poor i was this year when i couldn't have a digital camera even though i had the money for it on my birthday 05:06:17 * Sgeo 's webcam seems to be functional 05:07:43 <itidus21> (\webcam.webcam's cam is working) sgeo 05:08:06 <itidus21> ^ (\webcam.webcam's cam is working) (sgeo) 05:08:12 <CakeProphet> mine occasionally shows a completely green picture with black outlines 05:08:19 <CakeProphet> or will sometimes "freeze" 05:08:29 <itidus21> is that a bastardiation of LC right there? :D 05:08:38 <CakeProphet> but I can fix it by apply pressure to the top of the back of my laptop case 05:09:00 <CakeProphet> yes a terrible bastardization. whatever that means. 05:09:36 <CakeProphet> :t M.fromListWith 05:09:37 <lambdabot> forall a k. (Ord k) => (a -> a -> a) -> [(k, a)] -> M.Map k a 05:09:48 <itidus21> (\w.the cam of w is functional) (sgeo) 05:10:12 <CakeProphet> > M.fromListWith (+) . (`zip` repeat 1) $ "What is love? Baby don't hurt me." 05:10:13 <lambdabot> fromList [(' ',6),('\'',1),('.',1),('?',1),('B',1),('W',1),('a',2),('b',1),... 05:10:26 <Sgeo> M? 05:10:33 <CakeProphet> it's short for Data.Map 05:10:42 <CakeProphet> lambdabot shorthand stuff. 05:10:51 <CakeProphet> BS is bytestring and S is set I believe. 05:11:10 <itidus21> the plan of course is that (\w.the cam of w is functional) (sgeo) becomes the cam of (sgeo) is functional 05:11:51 <CakeProphet> > sortBy (compare `on` snd) . M.fromListWith (+) . (`zip` repeat 1) $ "What is love? Baby don't hurt me." 05:11:51 <lambdabot> Couldn't match expected type `[(a, b)]' 05:11:51 <lambdabot> against inferred type `Data... 05:12:22 <CakeProphet> > sortBy (compare `on` snd) . toList . M.fromListWith (+) . (`zip` repeat 1) $ "What is love? Baby don't hurt me." 05:12:23 <lambdabot> Not in scope: `toList' 05:12:29 <CakeProphet> > sortBy (compare `on` snd) . M.toList . M.fromListWith (+) . (`zip` repeat 1) $ "What is love? Baby don't hurt me." 05:12:31 <lambdabot> [('\'',1),('.',1),('?',1),('B',1),('W',1),('b',1),('d',1),('i',1),('l',1),(... 05:12:41 <itidus21> (\wx.the x of w is functional) (sgeo) (webcam) 05:12:58 <monqy> what 05:13:06 <CakeProphet> > sortBy (flip compare `on` snd) . M.toList . M.fromListWith (+) . (`zip` repeat 1) $ "What is love? Baby don't hurt me." 05:13:08 <lambdabot> [(' ',6),('t',3),('a',2),('e',2),('h',2),('o',2),('\'',1),('.',1),('?',1),(... 05:13:10 <itidus21> you know what it means, it's perfectly valid :> 05:13:24 <Sgeo> itidus21, is as addicted to pseudolambdacalculus as I am to [censored] 05:13:44 <monqy> a good summary 05:13:50 <monqy> description 05:13:51 <monqy> thing 05:13:52 <CakeProphet> s/\[censored]/cocaine/ 05:13:57 <monqy> metaplace sex 05:14:21 <itidus21> it is only a coincedence that the variables s g e and o happen to spell out sgeo 05:14:34 <CakeProphet> is there anything in Haskell that lets you specify a secondary thing to sort by... 05:15:00 <CakeProphet> like, a quick pointfree way to say "if this comparison is EQ then try this one" 05:16:06 <CakeProphet> I guess you would just use if' 05:16:45 <CakeProphet> or write your own. 05:17:14 <CakeProphet> @hoogle or 05:17:14 <lambdabot> Prelude or :: [Bool] -> Bool 05:17:15 <lambdabot> Data.Foldable or :: Foldable t => t Bool -> Bool 05:17:15 <lambdabot> Data.List or :: [Bool] -> Bool 05:17:18 <Jafet> > (LT `mappend` GT, EQ `mappend` GT) 05:17:19 <lambdabot> (LT,GT) 05:17:24 <monqy> Yes there is: a Monoid instance for Ordering. I dunno if it's standard though. 05:17:26 <monqy> yes that thing 05:17:34 <monqy> the one Jafet used 05:17:39 <itidus21> (\wx.the x of w is functional) (sgeo) (webcam) is suggestive of my shameful limitations 05:17:44 <CakeProphet> > LT `mappend` EQ 05:17:44 <lambdabot> LT 05:17:48 <CakeProphet> > EQ `mappend` EQ 05:17:49 <lambdabot> EQ 05:17:50 <CakeProphet> > EQ `mappend` GT 05:17:51 <lambdabot> GT 05:17:52 <CakeProphet> > EQ `mappend` LT 05:17:52 <lambdabot> LT 05:18:07 <Jafet> > liftM2 mappend [LT..GT] [LT..GT] 05:18:07 <lambdabot> A section must be enclosed in parentheses thus: (`LT..` GT)Not in scope: `L... 05:18:15 <CakeProphet> > mappend <$> [LT..GT] <*> [LT..GT] 05:18:15 <lambdabot> A section must be enclosed in parentheses thus: (`LT..` GT)Not in scope: `L... 05:18:18 <CakeProphet> you beat me to it... 05:18:18 <Jafet> > liftM2 mappend [LT .. GT] [LT .. GT] 05:18:19 <lambdabot> [LT,LT,LT,LT,EQ,GT,GT,GT,GT] 05:18:37 <CakeProphet> hmmm, okay. 05:18:41 <CakeProphet> that's cool. 05:18:56 <monqy> you know how to use Ordering right 05:19:07 <CakeProphet> ...how could I not know how to use Ordering? 05:19:17 <monqy> by being sgeo? i dunno 05:19:21 <monqy> does sgeo know how to use Ordering 05:19:43 -!- MDude has changed nick to MSleep. 05:20:31 <CakeProphet> monqy: no really what do you mean. 05:20:47 <monqy> what do i mean by what 05:21:08 <CakeProphet> I just don't really understand why you asked that. 05:21:29 <monqy> oh 05:21:37 <itidus21> what surprised me i suppose about #esoteric is the sheer intelligence found heer 05:21:44 <monqy> because you seemed not to know what to do??? 05:21:57 <CakeProphet> I'm just bad at Haskell. :P 05:22:41 <CakeProphet> @hoogle Comparing -> Comparing -> Comparing 05:22:41 <lambdabot> Warning: Unknown type Comparing 05:22:41 <lambdabot> Prelude asTypeOf :: a -> a -> a 05:22:41 <lambdabot> Network.BufferType buf_append :: BufferOp a -> a -> a -> a 05:22:47 <CakeProphet> er 05:22:52 <itidus21> i think i expected to just find half-baked versions of BASIC 05:22:54 <CakeProphet> @hoogle Ordering -> Ordering -> Ordering 05:22:54 <lambdabot> Prelude max :: Ord a => a -> a -> a 05:22:54 <lambdabot> Prelude min :: Ord a => a -> a -> a 05:22:55 <lambdabot> Data.Ord max :: Ord a => a -> a -> a 05:23:05 <CakeProphet> ....Ordering is not Ord hoogle 05:23:27 <CakeProphet> @hoogle Ordering -> Ordering 05:23:28 <lambdabot> Prelude pred :: Enum a => a -> a 05:23:28 <lambdabot> Prelude succ :: Enum a => a -> a 05:23:28 <lambdabot> Prelude id :: a -> a 05:23:41 <CakeProphet> @src comparing 05:23:41 <lambdabot> Source not found. Listen, broccoli brains, I don't have time to listen to this trash. 05:25:05 <monqy> I'm guessing comparing f = compare `on` f 05:25:24 <CakeProphet> yeah except it doesn't use on 05:25:27 <CakeProphet> but same thing. 05:25:30 * CakeProphet just looked it up. 05:26:22 <CakeProphet> > let comparingD = flip compare `on` f in sortBy (comparingD snd `mappend` comparingD fst) . M.toList . M.fromListWith (+) . (`zip` repeat 1) $ "What is love? Baby don't hurt me." 05:26:23 <lambdabot> Couldn't match expected type `((a, a) -> a) 05:26:23 <lambdabot> ... 05:26:43 <CakeProphet> > let comparingD = (flip compare `on`) in sortBy (comparingD snd `mappend` comparingD fst) . M.toList . M.fromListWith (+) . (`zip` repeat 1) $ "What is love? Baby don't hurt me." 05:26:44 <lambdabot> [(' ',6),('t',3),('o',2),('h',2),('e',2),('a',2),('y',1),('v',1),('u',1),('... 05:27:31 <CakeProphet> there should really be something like an Ordering negation. LT -> GT, GT -> LT, EQ -> EQ 05:27:58 <CakeProphet> but maybe that wouldn't do what you'd expect for partial orders? 05:28:04 * CakeProphet doesn't understand partial orders very well. 05:30:04 <CakeProphet> but still the existing combinators make complex sorts not very terrible. 05:30:11 <CakeProphet> would be nice if it were ++ instead of mappend. 05:30:51 <monqy> pull a caleskell 05:32:19 <CakeProphet> I think we could collective improve the standard lib a bit. 05:32:31 <CakeProphet> also our Prelude should definitely be called Overture. :P 05:32:59 -!- RFKorolev has joined. 05:37:34 <RFKorolev> Good time =) 05:37:46 <monqy> hi 05:41:08 <RFKorolev> Дарова всем=) 05:41:38 <monqy> nope 05:42:59 <RFKorolev> ??? 05:43:53 <monqy> help 05:47:12 <RFKorolev> you need help?=) 05:47:59 <monqy> I do not understand you. This is the area in which I need help. 05:58:44 -!- Jafet has quit (Quit: Leaving.). 06:02:48 -!- RFKorolev has left. 06:02:54 <monqy> bye 06:10:53 -!- Jafet has joined. 06:12:23 <CakeProphet> hmmm, I'm not really sure why the dictionary is necessary. 06:12:43 <CakeProphet> couldn't you compile typeclasses down into a large number of specific functions, and then use those where appropriate? 06:13:12 <CakeProphet> the only exception I can think of is existentials / rank-n types 06:13:26 -!- Gregor has quit (Ping timeout: 260 seconds). 06:15:48 -!- Gregor has joined. 06:16:15 -!- Gregor has changed nick to Guest79464. 06:18:53 <Sgeo> ! 06:30:36 <CakeProphet> ! 06:30:45 <shachaf> ¡ 06:33:03 <Patashu> I know about the permutations, combinations, combinations with repetitions and so on. But how do I calculate the possible combinations of a state machine whos possible states in each slot depend on the previous slot? e.g. slot can be lit only if slot before it was not lit 06:34:47 <fizzie> ‼ 06:41:01 <CakeProphet> Patashu: basically you have to do each one as a special case, and then add each case together. 06:41:39 <monqy> CakeProphet: oh? 06:41:44 <Patashu> I mean a closed formular 06:41:48 <Patashu> like how there's a closed formula for fibbonaci 06:42:27 <Patashu> http://pastebin.com/QS6YHr67 here's an example 06:42:32 <Patashu> I sooort of have a closed formula 06:42:45 <fizzie> For any sequence, just compute the first 5-10 numbers by hand and feed them to OEIS. Never fails. 06:43:02 <Patashu> hahaha 06:44:14 <fizzie> (It works slightly less well when you have two parameters to vary, though.) 06:44:32 <CakeProphet> yeah no sure I understand. 06:44:34 <CakeProphet> *not 06:45:39 <CakeProphet> okay so each slot has two states and there's no adjacent ons? 06:45:43 <Patashu> yes 06:45:45 <Patashu> find combinations 06:45:57 <Patashu> it looks kiiind of like the real combinations function. but not quite 06:46:09 <CakeProphet> uh... lets see. 06:46:15 <CakeProphet> I have a feeling it will involve a lot of addition. 06:46:21 <Patashu> e.g. compare to http://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Combinations_with_repetition%3B_5_multichoose_3.svg/370px-Combinations_with_repetition%3B_5_multichoose_3.svg.png 06:46:29 <CakeProphet> but maybe you can compress it into something more succinct. 06:46:45 <Patashu> hmm... 06:46:53 <CakeProphet> is there a finite number of slots? 06:47:05 <CakeProphet> ....I would assume so. 06:47:09 <Patashu> it's like a staggered version of the combination function. each extra stage with more lights enters one slot later and has one slot less than the previous one 06:47:10 <Patashu> or so 06:47:10 <CakeProphet> difficult to count combinations otherwise. 06:47:19 <Patashu> yeah, we define it over s finite slots 06:48:07 <CakeProphet> ...that's pretty complicated. :P 06:48:14 <Patashu> another function I'd like is: how many ways can I draw n distinct (separated by a gap of one or more off tiles) groups on a row of m tiles 06:49:21 <Patashu> hmm... I bet something in here will help: http://en.wikipedia.org/wiki/List_of_permutation_topics if I only knew what to read first... 06:50:22 -!- Jafet has quit (Ping timeout: 252 seconds). 06:52:14 -!- Jafet has joined. 06:58:44 <fizzie> If I hand-counted the first few right (and understood the thing), it starts with 2,3,5,8,13,20,34,55..., and curiously there are no such sequences in OEIS. 06:59:05 <Patashu> if you start it with 1 (for s = 0) 06:59:08 <Patashu> it looks like fibonacci briefly 06:59:09 <Patashu> then diverges 06:59:50 <Sgeo> Patashu, hmm, was going to say similar, but was not familiar enough with Fib to immediately recognize the divergance 07:00:13 <Patashu> wait... 07:00:17 <Patashu> I don't think you hand counted them right 07:00:18 <Patashu> let me try 07:00:30 <fizzie> "Question 3 (30): If n and k are any naturals, define h(n,k) to be the number of subsets of the set {1,...,n} of size k that do not contain two adjacent numbers. For example, h(4,2) = 3 because the relevant sets are {1,3}, {1,4}, and {2,4}. The other three subsets of size 2 contain two adjacent numbers." 07:00:48 <fizzie> It has been a question on some "CMPSCI 250: Introduction to Computation" course. 07:01:20 <fizzie> (I was just going by that example paste here.) 07:01:24 <Patashu> oh, cool 07:01:36 <Patashu> but is that something you write a program to solve? 07:01:43 <Patashu> or something you write a closed formula for? 07:01:56 <fizzie> "(c,15) Prove that h(n,k) = (n choose 2k-1) for all n and k. (Hint: Define and justify a bijection from the no-adjacent element sets of size k and all the sets of size 2k-1.) " 07:02:01 <fizzie> With solutions, http://www.cs.umass.edu/~barring/cs250f04/exams/3pracsol.html 07:02:33 <Patashu> 1 1 1 1 1 1 1 1 1 1 07:02:33 <Patashu> 1 2 3 4 5 6 7 8 9 07:02:33 <Patashu> 1 3 6 10 15 21 28 07:02:33 <Patashu> 1 4 10 20 35 07:02:51 <Patashu> looks like it goes 1 2 3 5 8 12 21 33 50 73 07:03:26 <Patashu> ty, fizzie 07:03:43 <Jafet> > let cnt n = length $ filter (all (\(x,y) -> x/=y)) $ map (ap tail zip) $ subsequences [1..n] in map cnt [1..9] 07:03:44 <lambdabot> Couldn't match expected type `a -> b' against inferred type `[a1]' 07:04:04 <fizzie> 1+5+6+1 != 12. 07:04:11 <Patashu> oh yeah, 13 07:04:11 <Patashu> derp 07:05:46 <CakeProphet> Jafet: precedence error with $ I believe. 07:05:49 <Jafet> > let cnt n = length $ filter (all (\(x,y) -> x/=y)) $ map (ap zip tail) $ subsequences [1..n] in map cnt [1..9] 07:05:50 <lambdabot> [2,4,8,16,32,64,128,256,512] 07:06:09 <Jafet> Okay, that's probably not correct. 07:06:32 <fizzie> As for the 33, are you sure that shouldn't be 34? There's one more row there, it'd be 1+7+15+10+1. 07:06:48 <Jafet> > let cnt n k = length $ filter (all (\(x,y) -> x/=y)) $ map (ap zip tail) $ filter ((==k).length) $ subsequences [1..n] in [ [ cnt n k | k <- [1..n] ] | n <- [1..8] ] 07:06:50 <lambdabot> [[1],[2,1],[3,3,1],[4,6,4,1],[5,10,10,5,1],[6,15,20,15,6,1],[7,21,35,35,21,... 07:07:12 <Jafet> Proof by lambdabot 07:07:49 <fizzie> http://oeis.org/A000045 <- Fibonacci numbers, aka "F(n+2) = number of binary sequences of length n that have no consecutive 0's. F(n+2) = number of subsets of {1,2,...,n} that contain no consecutive integers." 07:08:44 <CakeProphet> oh neat. 07:08:55 <CakeProphet> an application for fibonacci numbers. :D 07:09:05 <Patashu> woah. now THAT's cool 07:09:16 -!- Jafet has quit (Quit: Leaving.). 07:09:28 <fizzie> Good old fib: it's everywhere. 07:09:46 <Patashu> I didn't realize it was just plain old fibby 07:09:48 <Patashu> XD 07:09:51 <Patashu> crazy 07:12:05 <CakeProphet> > let count = (fibs !!) . (+2); fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in count 7 07:12:06 <lambdabot> 34 07:14:21 <CakeProphet> > let count = (fibs !!) . (+2); fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in drop 2 fibs 07:14:22 <lambdabot> [1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,177... 07:15:06 <CakeProphet> the number of permutations grows fibonaccically. :P 07:15:12 <CakeProphet> (totally a real term) 07:16:59 <Patashu> fib is exponential I believe 07:17:15 <Patashu> yeah, exponential, since it grows as fast as it is big 07:17:23 <Patashu> O(2^n) ftw! 07:17:34 <fizzie> > let count = fib . (+2); fib = floor . (+0.5) . (/ (sqrt 5)) . (phi^); phi = (1 + (sqrt 5)) / 2 in count 7 07:17:35 <lambdabot> 34 07:17:54 <fizzie> Oh noes, it was longer than the fibs !!. 07:18:08 <CakeProphet> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in zipWith (-) (map (2^) [0..]) (drop 2 fibs) 07:18:09 <lambdabot> [0,0,1,3,8,19,43,94,201,423,880,1815,3719,7582,15397,31171,62952,126891,255... 07:18:16 <Patashu> that's a fail fib function 07:18:44 <fizzie> > [1,2,3] ‼ 1 -- can you do the unicode thing 07:18:45 <lambdabot> Not in scope: ` 07:18:47 <fizzie> Aw. 07:18:48 <CakeProphet> difference in number of binary total strings vs strings with no consecutive 0's 07:19:14 <CakeProphet> Patashu: what's wrong with it? 07:19:37 <fizzie> > let l ‼ i = l !! i in [1,2,3] ‼ 1 07:19:38 <lambdabot> 2 07:20:11 <monqy> > let (‼) = (!) in [1,2,3] ‼ 1 07:20:12 <lambdabot> Couldn't match expected type `GHC.Arr.Array i e' 07:20:12 <lambdabot> against inferred t... 07:20:17 <monqy> oh oops 07:20:20 <monqy> > let (‼) = (!!) in [1,2,3] ‼ 1 07:20:20 <lambdabot> 2 07:20:22 <monqy> there all better 07:21:18 <Patashu> 1+3 = 8? 07:21:33 <CakeProphet> ...uh, no? :P 07:21:39 <Patashu> hmm 07:21:46 <Patashu> oh, I see 07:21:49 <CakeProphet> ...yeah. 07:22:03 <CakeProphet> I am counting the difference 07:22:12 <CakeProphet> how many are not possible. 07:24:12 <CakeProphet> it helps to actually read code before you criticize it. kthx :P 07:24:32 <Patashu> I still can't read haskell 07:24:35 <Patashu> especially people making fibs in haskell 07:24:44 <Patashu> I know why it works, I just can't read it 07:24:46 <Patashu> it's some arcane trickery 07:24:52 <CakeProphet> 0 : 1 : zipWith fibs (tail fibs) is beautiful and easy. 07:25:33 <Patashu> I see what it's meant to do 07:25:36 <Patashu> But I try and work through it in my head 07:25:38 <Patashu> And stack overflow 07:26:28 <CakeProphet> > let fibs = 0 : 1 : zipWith fibs (tail fibs) in fibs 07:26:28 <lambdabot> Couldn't match expected type `[a]' 07:26:28 <lambdabot> against inferred type `a -> b ->... 07:26:34 <Patashu> forgot (+) 07:26:38 <Patashu> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs 07:26:38 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946... 07:26:41 <CakeProphet> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs 07:26:41 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946... 07:26:43 <CakeProphet> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in tail fibs 07:26:44 <lambdabot> [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,1... 07:27:26 <CakeProphet> you have 0 : 1 : *thunk* and 1 : *thunk 07:27:29 <CakeProphet> to start with 07:27:35 <Patashu> so when I want an element of fibs I ask it if it has this element. for the first two it says yes. for the third it has to run zipwith on itself. it asks for the first and second element and gets it, delivering the third. when I ask it for the fourth, it runs it on the second and third... 07:27:37 <Patashu> I think I get it 07:27:49 <CakeProphet> yep. 07:28:00 <CakeProphet> it's laziness magic. 07:28:57 <CakeProphet> > filterM (const [True, False]) "abc" 07:28:57 <lambdabot> ["abc","ab","ac","a","bc","b","c",""] 07:29:00 <CakeProphet> do you know how this one works? 07:29:07 <Patashu> so, what you were finding is how much faster it grows than 2^ 07:29:11 <Patashu> one second 07:29:13 <Patashu> I want to try something 07:29:17 <CakeProphet> how slower it grows 07:29:20 <Patashu> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in zipWith (-) (map (3^) [0..]) (drop 2 fibs) 07:29:21 <lambdabot> [0,1,6,22,73,230,708,2153,6506,19594,58905,176914,531064,1593713,4781982,14... 07:29:31 <CakeProphet> 2^length == total number of binary strings of length 07:29:38 <Patashu> so 3^ grows faster than fibs? 07:29:42 <CakeProphet> yes. 07:29:47 <CakeProphet> 2^ grows faster than fibs. 07:29:48 <Patashu> right, I was thinking about it backwards 07:29:54 <Patashu> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in zipWith (-) (map (1.5^) [0..]) (drop 2 fibs) 07:29:55 <lambdabot> [0.0,-0.5,-0.75,-1.625,-2.9375,-5.40625,-9.609375,-16.9140625,-29.37109375,... 07:30:01 <Patashu> so it's between 2 and 1.5, ey? 07:30:05 <Patashu> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in zipWith (-) (map (1.618^) [0..]) (drop 2 fibs) 07:30:06 <lambdabot> [0.0,-0.3819999999999999,-0.38207599999999964,-0.7641989679999988,-1.146473... 07:30:13 <Patashu> yeah, about 1.618 07:30:20 <CakeProphet> and in combinatorics to get the number of possibilities in which some condition doesn't occur, you can subtract the total number by the number in which the event does occur 07:30:23 <fizzie> About phi. 07:30:26 <Patashu> ya 07:31:17 <CakeProphet> I wonder why it's Fib(n+2) 07:31:23 <CakeProphet> the +2, specifically 07:31:34 <Patashu> I don't think it needs to be? 07:31:38 <Patashu> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in zipWith (-) (map (1.618^) [0..]) (fibs) 07:31:39 <lambdabot> [1.0,0.6180000000000001,1.6179240000000004,2.2358010320000012,3.85352606977... 07:31:45 <Patashu> ooo 07:31:46 <Patashu> now that's cool 07:31:48 <CakeProphet> ...er, you misunderstand. 07:31:52 <Patashu> phi^2 = phi+1, did you know? 07:31:53 <Patashu> oh 07:32:07 <CakeProphet> sure did. 07:32:11 <Patashu> okay, explain away 07:32:47 <CakeProphet> I was wondering why the number of binary strings of length n with no consecutive 0's is Fib(n+2). Specifically why you add two to the length. 07:33:07 <Patashu> it must be a consequence of numbering them differently, is all 07:33:10 <Patashu> like gamma and factorial 07:33:33 <CakeProphet> yeah I have a vague intuitive idea but I don't really know how to work it out. 07:34:56 <Patashu> Well, I mean in the sense that you can start fib as 0, 1, 1, 2 or as 1, 1, 2 or as 1, 2 07:35:03 <Patashu> Depending on what scenario it arises from 07:35:12 <Patashu> After all, the two starting values of fib are given 07:35:14 <CakeProphet> I don't think starting with 1, 2 is common. 07:35:17 <Patashu> So do you give 0,1 1,1 or 1,2? 07:35:30 <Patashu> Well, in this case apparently you start with 1,2 :O) 07:35:38 <CakeProphet> ah, yeah I see. 07:35:50 <CakeProphet> because the first two cases are 1, 2 2 :P 07:35:52 <CakeProphet> -2 07:36:58 <CakeProphet> which is kind of obvious since that's what the fibonacci sequence does... 07:37:23 <fizzie> As for "why fib", there's the obvious intuitive explanation of "to generate all suitable binary strings of length N, take either '1' followed by a string of length N-1, or '01' followed by a string of length N-2". 07:37:49 <CakeProphet> ah yes 07:37:58 <CakeProphet> and the previous strings have to follow the same rule. 07:37:59 <fizzie> (I do wonder why it's "no consecutive 0s" as opposed to "no consecutive 1s", though.) 07:38:06 <CakeProphet> makes no difference though. 07:38:09 <Patashu> no difference 07:38:21 <CakeProphet> I guess they just picked one. :P 07:38:35 <Patashu> thanks fizzie 07:40:06 <CakeProphet> combinatorics is one of those fields of math that I enjoy learning about, but don't really have a talent for. 07:40:23 <CakeProphet> it's very useful. 07:41:20 <CakeProphet> hmmm I wonder if you can extend that to strings with an arbitrary number of symbols. 07:41:43 <CakeProphet> yeah.. 07:41:44 <CakeProphet> you can. 07:42:36 <CakeProphet> > let f = 0 : 3 : zipWith (+) f (tail f) in f 07:42:36 <lambdabot> [0,3,3,6,9,15,24,39,63,102,165,267,432,699,1131,1830,2961,4791,7752,12543,2... 07:42:48 <CakeProphet> I think this is ternary. 07:42:50 <CakeProphet> I think. 07:43:13 <CakeProphet> with no consecutive 0's (or whatever symbol you want) 07:43:38 <CakeProphet> hmmm, no 07:43:51 -!- Jafet has joined. 07:43:58 <Patashu> that's just fib with different start 07:44:02 <Patashu> hmm 07:44:12 <CakeProphet> there would be more than 3 for the case of length 2. You'd have 01, 10, 11, 12, 21, ... 07:44:14 <Patashu> yeah, that's not right 07:44:50 <CakeProphet> it's no consecutive 0's or 1's 07:44:52 <Patashu> recursively, you can have 1 then N-1, 2 then N-1, 01 then N-2 or 02 then N-2 07:44:54 <CakeProphet> or whichever 2 symbols you want. 07:44:55 <Patashu> oh? 07:44:56 <Patashu> hmmm 07:45:11 <Patashu> so 2 then N-1, 02 then N-2 or 12 then N-2 07:45:39 <CakeProphet> it's not f(n+2) here just f(n) I believe. 07:46:05 <CakeProphet> > let f = 0 : 1 : zipWith (+) f (tail f) in f 07:46:06 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946... 07:46:14 <CakeProphet> ah no. 07:46:28 <CakeProphet> > let f = 1 : 3 : zipWith (+) f (tail f) in f 07:46:29 <lambdabot> [1,3,4,7,11,18,29,47,76,123,199,322,521,843,1364,2207,3571,5778,9349,15127,... 07:47:30 <CakeProphet> > replicateM 2 "012" 07:47:31 <lambdabot> ["00","01","02","10","11","12","20","21","22"] 07:47:40 <CakeProphet> nah 07:55:36 <CakeProphet> > let f = 1 : 3 : 8 : zipWith3 (+) f (tail f) (tail (tail f)) in f 07:55:37 <lambdabot> Occurs check: cannot construct the infinite type: c = c -> t 07:56:47 <CakeProphet> @pl (\x y z -> x+y+z) 07:56:47 <lambdabot> ((+) .) . (+) 07:57:00 <CakeProphet> > let f = 1 : 3 : 8 : zipWith3 ((+) :. (+)) f (tail f) (tail (tail f)) in f 07:57:01 <lambdabot> Not in scope: data constructor `:.' 07:57:07 <CakeProphet> > let f = 1 : 3 : 8 : zipWith3 ((+) .: (+)) f (tail f) (tail (tail f)) in f 07:57:08 <lambdabot> [1,3,8,12,23,43,78,144,265,487,896,1648,3031,5575,10254,18860,34689,63803,1... 07:57:33 <CakeProphet> ? 07:58:01 <CakeProphet> > replicateM 3 "abc" 07:58:01 <lambdabot> ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b... 07:58:06 <CakeProphet> > replicateM 3 "012" 07:58:06 <lambdabot> ["000","001","002","010","011","012","020","021","022","100","101","102","1... 07:58:41 <CakeProphet> > drop 8 $ replicateM 3 "012" 07:58:41 <lambdabot> ["022","100","101","102","110","111","112","120","121","122","200","201","2... 07:58:47 <CakeProphet> > drop 7 $ replicateM 3 "012" 07:58:48 <lambdabot> ["021","022","100","101","102","110","111","112","120","121","122","200","2... 07:58:51 <CakeProphet> > drop 6 $ replicateM 3 "012" 07:58:52 <lambdabot> ["020","021","022","100","101","102","110","111","112","120","121","122","2... 07:59:38 <CakeProphet> > drop 11 $ replicateM 3 "012" 07:59:39 <lambdabot> ["102","110","111","112","120","121","122","200","201","202","210","211","2... 08:03:31 <CakeProphet> yeah I can't figure out how to do that. 08:08:01 <CakeProphet> the first numbers in the sequence are 1, 3, 8 08:10:17 <fizzie> For an alphabet of K symbols with a single "no consecutive 0s", you could construct all the N-length valid strings f(N) = "X".f(N-1) | "0X".f(N-1) where X is one out of the K-1 non-'0' symbols; so the count n(N) = (K-1)*n(N-1) + (K-1)*n(N-2) = (K-1)*(n(N-1) + n(N-2)). 08:10:27 <fizzie> In this case, 8 = 2*(1+3). 08:10:42 <CakeProphet> ah 08:11:19 <fizzie> http://oeis.org/A028859 08:11:25 <fizzie> "Number of words of length n without adjacent 0's from the alphabet {0,1,2}." 08:13:52 <Patashu> wow, cool 08:14:04 <CakeProphet> > let f k = 1 : k : zipWith ((+) `on` (*(k-1))) (f k) (tail (f k)) in f 3 08:14:08 <lambdabot> mueval-core: Time limit exceeded 08:14:10 <CakeProphet> erm 08:15:16 <CakeProphet> > let f k = let a = 1 : k : zipWith ((+) `on` (*(k-1))) a (tail a) in a in f 3 08:15:17 <lambdabot> [1,3,8,22,60,164,448,1224,3344,9136,24960,68192,186304,508992,1390592,37991... 08:15:29 <CakeProphet> > let f k = let a = 1 : k : zipWith ((+) `on` (*(k-1))) a (tail a) in a in f 4 08:15:30 <lambdabot> [1,4,15,57,216,819,3105,11772,44631,169209,641520,2432187,9221121,34959924,... 08:15:32 <CakeProphet> > let f k = let a = 1 : k : zipWith ((+) `on` (*(k-1))) a (tail a) in a in f 5 08:15:33 <lambdabot> [1,5,24,116,560,2704,13056,63040,304384,1469696,7096320,34264064,165441536,... 08:15:33 <CakeProphet> > let f k = let a = 1 : k : zipWith ((+) `on` (*(k-1))) a (tail a) in a in f 6 08:15:34 <lambdabot> [1,6,35,205,1200,7025,41125,240750,1409375,8250625,48300000,282753125,16552... 08:15:35 <CakeProphet> > let f k = let a = 1 : k : zipWith ((+) `on` (*(k-1))) a (tail a) in a in f 7 08:15:36 <lambdabot> [1,7,48,330,2268,15588,107136,736344,5060880,34783344,239065344,1643092128,... 08:16:08 <CakeProphet> wheeee 08:17:04 <CakeProphet> > let f k = let a = 1 : k : zipWith ((+) `on` (*(k-1))) a (tail a) in a in f 127 08:17:05 <lambdabot> [1,127,16128,2048130,260096508,33030224388,4194580432896,532678942817784,67... 08:17:25 <fizzie> http://oeis.org/A125145 "Number of aa-avoiding words of length n on the alphabet {a,b,c,d}." http://oeis.org/A086347 "Number of aa-avoiding words of length n on alphabet {a,b,c,d,e}." 08:18:01 <CakeProphet> so yeah, looks to be correct. 08:19:10 <fizzie> And http://oeis.org/A180033 is for 6, except it's not listed in the comments; but it's "a(n) = f*a(n-1) + 5*a(n-2) with a(0) = 1 and a(1) = 6". (The official description is "eight white queens and one red queen on a 3 X 3 chessboard".) 08:19:49 <CakeProphet> f*a(n-1)? 08:19:52 <CakeProphet> what is f? 08:20:00 <fizzie> 5. Sorry. Didn't copy-pasta. 08:20:03 <CakeProphet> ah 08:20:30 <CakeProphet> quick let's do something interesting with this knowledge. 08:20:55 <fizzie> In general, the generating function seems to be (1+x)/(1 - (k-1)x - (k-1)x^2) for all of these. I'm sure a real combinatricist could immediately tell why's that. 08:24:33 -!- itidus21 has left ("Leaving"). 08:52:31 <CakeProphet> hookahzeit 08:53:01 <CakeProphet> a programming language with word-compounding would be interesting. 08:56:02 <monqy> eh? 08:56:20 <CakeProphet> monqy: ALWAYS SO CONFUSED 08:56:21 <CakeProphet> WHY 08:56:25 <monqy> why 08:57:34 <CakeProphet> !addinterp monqy haskell import Data.Char;import Control.Monad putStrLn =<< mapM toLower getContents 08:57:34 <EgoBot> ​Interpreter monqy installed. 08:57:38 <CakeProphet> !monqy WHY 08:57:40 -!- cheater has quit (Ping timeout: 260 seconds). 08:58:20 <monqy> why 08:58:23 <CakeProphet> :t mapM 08:58:24 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b] 08:58:29 <CakeProphet> oh.. 08:58:38 <CakeProphet> !addinterp monqy haskell import Data.Char;import Control.Monad putStrLn =<< fmap toLower getContents 08:58:38 <EgoBot> ​There is already an interpreter for monqy! 08:58:41 <CakeProphet> !delinterp monqy 08:58:41 <EgoBot> ​Interpreter monqy deleted. 08:58:41 <CakeProphet> !addinterp monqy haskell import Data.Char;import Control.Monad putStrLn =<< fmap toLower getContents 08:58:41 <EgoBot> ​Interpreter monqy installed. 08:58:48 <CakeProphet> !monqy WHY 08:58:57 <monqy> you want fmap.fmap i think 08:59:14 <CakeProphet> !delinterp monqy 08:59:14 <EgoBot> ​Interpreter monqy deleted. 08:59:26 <monqy> fmap (fmap toLower) getContents is the idea 08:59:36 <CakeProphet> !addinterp monqy perl print lc while <> 08:59:36 <EgoBot> ​Interpreter monqy installed. 08:59:40 <CakeProphet> !monqy WHY 08:59:40 <EgoBot> why 08:59:42 <monqy> ;_; 08:59:48 <monqy> besides 09:00:04 <monqy> lowercasing everything isn't quite an accurate representation, especially when I uppercase 09:00:16 <monqy> sometimes I remove puntuation, sometimes I retain it, what now?????? 09:00:22 <CakeProphet> right but it's an interpreter to help you with your need to lowercase things. 09:00:30 <monqy> i do not require it 09:00:35 <CakeProphet> well it's to help me with it 09:00:47 <CakeProphet> !monqy SO THERE 09:00:48 <EgoBot> so there 09:00:52 <monqy> so there 09:01:29 <CakeProphet> as it turns out bananas foster and caramel frappucino are an excellent combination. 09:01:49 -!- kmc has quit (Quit: Leaving). 09:01:53 <CakeProphet> monqy: perhaps later it can be extended to randomly select one of multiple common cases. 09:02:06 <monqy> it will never work 09:02:18 <monqy> if the channel were not +c I'd be making extensive use of bold and underline as well 09:02:29 <CakeProphet> evil. 09:02:32 <CakeProphet> __evil__ 09:02:35 <CakeProphet> _evil_ 09:02:44 <CakeProphet> irssi underlines _evil_ 09:02:55 <monqy> _not if there are multiple words_ 09:02:55 <CakeProphet> *evil* 09:02:59 <CakeProphet> right 09:03:03 <monqy> also it's ugly 09:03:11 <CakeProphet> _a_b_ 09:03:14 <CakeProphet> _a_ _b_ 09:03:19 <CakeProphet> _fuck_ _you_ 09:03:41 <monqy> :( 09:04:39 <CakeProphet> !addinterp irssi perl print s/\b/_/r while <> 09:04:39 <EgoBot> ​Interpreter irssi installed. 09:04:42 <CakeProphet> !irssi fuck you 09:04:43 <EgoBot> Bareword found where operator expected at /tmp/input.5480 line 1, near "s/\b/_/r" 09:04:58 <CakeProphet> um 09:05:03 <monqy> ~perl~ 09:05:12 <monqy> in all its glory 09:06:56 <CakeProphet> ...I don't really understand the error. 09:07:07 <CakeProphet> ... /r is totally a thing. 09:08:08 <CakeProphet> !delinterp irssi 09:08:08 <EgoBot> ​Interpreter irssi deleted. 09:08:16 <CakeProphet> !addinterp irssi perl print $_ =~ s/\b/_/r while <> 09:08:16 <EgoBot> ​Interpreter irssi installed. 09:08:20 <CakeProphet> !irssi fuck you 09:08:20 <EgoBot> Bareword found where operator expected at /tmp/input.5834 line 1, near "s/\b/_/r" 09:08:23 <CakeProphet> ...wat 09:08:25 <CakeProphet> lies. 09:08:29 -!- nooga has joined. 09:08:30 <CakeProphet> !delinterp irssi 09:08:30 <EgoBot> ​Interpreter irssi deleted. 09:09:09 <CakeProphet> !addinterp irssi perl print ($_ =~ s/\b/_/r) while <> 09:09:09 <EgoBot> ​Interpreter irssi installed. 09:09:12 <CakeProphet> !irssi aerhiwurhuiwer weoirjiouwehr 09:09:13 <EgoBot> Bareword found where operator expected at /tmp/input.6108 line 1, near "s/\b/_/r" 09:09:20 <CakeProphet> !delinterp irssi 09:09:20 <EgoBot> ​Interpreter irssi deleted. 09:09:40 <CakeProphet> !perl $_="what?"; print s/what?/???/r 09:09:40 <EgoBot> Bareword found where operator expected at /tmp/input.6342 line 1, near "s/what?/???/r" 09:09:42 <Deewiant> CakeProphet: It doesn't like the /r 09:09:45 <CakeProphet> yes I understand 09:09:48 <CakeProphet> but... not why. 09:10:40 <CakeProphet> /r is a non-destructive substitute. 09:11:34 <fizzie> It was also added in some post-5.10 version, wasn't it? 09:11:39 <Deewiant> Added in what version? 09:11:40 <Deewiant> Right 09:12:28 <fizzie> 5.14, I think. 09:13:00 <fizzie> 5.12 manual says "s/PATTERN/REPLACEMENT/msixpogce"; 5.14 manual says "s/PATTERN/REPLACEMENT/msixpodualgcer". 09:13:07 <fizzie> (That's quite a list of modes.) 09:13:36 <Deewiant> 5.8.4 manual says s/PATTERN/REPLACEMENT/egimosx 09:13:55 <CakeProphet> !perl use 5.12; $_="what?"; print s/what?/???/r 09:13:55 <EgoBot> Perl v5.120.0 required (did you mean v5.12.0?)--this is only v5.10.1, stopped at /tmp/input.6650 line 1. 09:14:13 <fizzie> 5.12 won't help if it was introduced in 5.14. 09:14:23 <CakeProphet> right I was just checking the version. 09:14:49 <CakeProphet> use 5.12 is a version check not a "magically use this version instead". 09:14:55 <CakeProphet> even though that's kind of what it suggests that it would do. 09:15:36 <fizzie> Well, sure, but I would have thought it'd make more sense to check for 5.14 directly. But w/e. 09:15:58 <CakeProphet> yeah I just glanced up to get a version number but didn't check which one was right. :P 09:16:54 <CakeProphet> I'd imagine there's some version variable somewhere 09:17:05 <CakeProphet> !perl print __VERSION__ 09:17:21 <fizzie> !perl print $^V 09:17:21 <nooga> perl 09:17:21 <EgoBot> v5.10.1 09:17:27 <CakeProphet> ah 09:17:47 <CakeProphet> yeah one day I'm going to go memorize all of those global variables. 09:17:50 <fizzie> (Also $PERL_VERSION, but $^V is definitely more perly.) 09:17:51 <CakeProphet> (Note: not really) 09:17:57 <fizzie> !perl print $] 09:17:57 <EgoBot> 5.010001 09:18:02 <fizzie> Yes, that's also better. 09:18:08 <fizzie> At least it's punctuation-only. 09:18:11 <CakeProphet> what, why ] 09:18:30 <fizzie> "Mnemonic: Is this version of perl in the right bracket?" 09:18:36 <fizzie> Of course. 09:18:45 <CakeProphet> !perl $[=100; print (1,2,3)[101] 09:18:46 <EgoBot> syntax error at /tmp/input.7119 line 1, near ")[" 09:18:51 <CakeProphet> !perl $[=100; print ((1,2,3)[101]) 09:18:52 <EgoBot> 2 09:18:54 <CakeProphet> bah stupid stupid stupid 09:18:58 <Deewiant> Of those, only $] works in my 5.8.4 09:19:11 <CakeProphet> I hate that it cannot parse list_literal[index] 09:19:15 <fizzie> Deewiant: Weird; the $] docs say "Deprecated in Perl 5.6". 09:19:17 <CakeProphet> without () around the whole thing 09:19:44 <fizzie> "This variable [$^V] first appeared in perl 5.6.0; earlier versions of perl will see an undefined value. Before perl 5.10.0 $^V was represented as a v-string." 09:20:10 <CakeProphet> sounds like checking versions without the use pragma is kind of a pain. 09:21:06 <fizzie> Perl 5.12 deprecates $[, incidentally. 09:21:15 <CakeProphet> it is kind of terrible, yes. 09:21:27 <Deewiant> Oh no, it works 09:21:31 <Deewiant> It just prints in binary 09:21:38 <Deewiant> 0x05 0x08 0x04 09:21:50 <fizzie> Deewiant: Yes, well, it's a v-string pre-5.10, like the above says. 09:22:04 <Deewiant> As if I should know what a v-string is. 09:22:05 <CakeProphet> $[ is a nice feature, but ends up breaking things that aren't coded to use it (read: most code out there) 09:22:23 <fizzie> (s)printf's "%vd" conversion can make a string out of it. 09:22:52 <CakeProphet> I believe s?printf is a bit more perly. :P 09:22:53 <fizzie> !perl printf "%vd\n", v5.8.4 09:22:53 <EgoBot> 5.8.4 09:22:54 <Deewiant> So it can. 09:24:28 <fizzie> "Note that since Perl 5.8.1 the single-number v-strings (like v65) are not v-strings before the => operator (which is usually used to separate a hash key from a hash value); instead they are interpreted as literal strings ('v65'). They were v-strings from Perl 5.6.0 to Perl 5.8.0, but that caused more confusion and breakage than good. Multi-number v-strings like v65.66 and 65.66.67 continue to be v-strings always." 09:24:32 <fizzie> Perl. <3 09:24:50 <CakeProphet> when people write array-handling code they usually just put explicit zeroes instead of $[ thus... $[ would tend to break code 09:24:53 <CakeProphet> if anyone actually used it. 09:27:39 -!- sebbu has quit (Read error: Connection reset by peer). 09:28:03 <CakeProphet> I find it kind of hilarious that things like $[ and $/ and $\ are variable names... 09:28:05 -!- sebbu has joined. 09:28:05 -!- sebbu has quit (Changing host). 09:28:05 -!- sebbu has joined. 09:28:56 <CakeProphet> !perl print ($2mice = "2 mice") 09:28:56 <EgoBot> Bareword found where operator expected at /tmp/input.7994 line 1, near "$2mice" 09:29:03 <CakeProphet> waaaah 09:29:28 <CakeProphet> that is totally parseable. 09:29:33 <fizzie> !perl $; = " - "; %h = (); $h{"the", "best", "way", "to", "join", "strings", "with", "a", "delimiter?"} = 42; print keys %h; 09:29:33 <EgoBot> the - best - way - to - join - strings - with - a - delimiter? 09:29:54 <fizzie> "Mnemonic: comma (the syntactic subscript separator) is a semi-semicolon." 09:30:14 <CakeProphet> ...wat 09:30:17 <CakeProphet> lol 09:30:24 <CakeProphet> what a weird thing to have. 09:30:58 <CakeProphet> perl is definitely an esolang. 09:31:21 <fizzie> It's the multidimensional array fakery thing before you could conveniently make arrays-of-arrayrefs things. 09:31:38 <CakeProphet> oh right, that used to be a thing that perl couldn't do. 09:32:15 <Patashu> did you guys ever figure out the answer for no aa or bb on {abc}? 09:33:05 <fizzie> $< and $> are the UID and EUID of the process, and you can do "$< = $>;" to set uid to euid, or "($<,$>) = ($>,$<);" to swap uid/euid. 09:33:09 <CakeProphet> I would remember $; as "the other comma thing that isn't $," 09:34:28 <CakeProphet> !perl print $^O 09:34:28 <EgoBot> linux 09:34:36 <CakeProphet> helpful 09:35:20 <CakeProphet> !perl $^O = "Win32"; print $^O 09:35:21 <EgoBot> Win32 09:35:33 <CakeProphet> hey look guys perl is a Windows emulator. 09:38:23 <fizzie> Strings S(L) of length L with no aa or bb on {abc} you could make as "a[bc]".S(L-2) | "b[ac]".S(L-2) | "c".S(L-1); so n(L) = 4*n(L-2) + n(L-1), n(0) = 1, n(1) = 3. That gives 1,3,7,19,47,123,311,803,2047,5259,13447,... seeming to match A026581. 09:38:46 <fizzie> Or no, that's not exactly right; it needs more complication for "ab". 09:39:20 <CakeProphet> hmmm what's this notation you're using. 09:39:31 <fizzie> Nothing official. 09:39:36 <CakeProphet> oh. 09:39:42 <fizzie> It would be clumsy to write as proper sets. 09:40:06 <CakeProphet> so it's like pseudo-regexp? 09:40:24 <fizzie> Pseudo-regexp-cfg, maybe. 09:40:28 <fizzie> With the | thing. 09:40:39 <fizzie> Well, I guess that's still regex. 09:40:45 <fizzie> (Too.) 09:41:06 <CakeProphet> I've got a partially written spec for a programming language that kind of resembles that notation is why I ask. 09:41:20 <CakeProphet> except things in "" match literals and not regexp 09:41:51 <CakeProphet> it's a regexp programming language of sorts. 09:43:58 <CakeProphet> all of the expressions have return values based on the input string. So you write captures as variable assignments. x = "a"* 09:45:03 -!- derdon has joined. 09:45:08 <CakeProphet> * concatenates the string result of its operand and sums the numeric results, which works out nicely. 09:46:00 <CakeProphet> it's the way perl regex should work. :D 09:47:28 <CakeProphet> I just need to a) finish the other details b) write an interpreter c) eventually try to compile it and make it efficient 09:48:32 <Patashu> I figured out that it's start 1,3,7 and then fib(n-1)+2*fib(n-2)+fib(n-3) 09:48:35 <Patashu> for no aa, bb in abc 09:48:38 <Patashu> I don't know WHY though 09:48:43 <Patashu> length 0: (1) 09:48:44 <Patashu> length 1: a, b, c (3) 09:48:44 <Patashu> length 2: ab, ba, ac, ca, bc, cb, cc (7) 09:48:44 <Patashu> length 3: c before all lengths of 2 or (ac or bc) before all lengths of 1 or ??? before all lengths of 0 09:48:44 <Patashu> what is ??? 09:48:53 <fizzie> S(L) = "c".S(L-1) | "ac".S(L-2) | "bc".S(L-2) | "ab".S_a(L-2) | "ba".S_b(L-2); S_a(L) = "b".S_b(L-1) | "c".S(L-1); S_b(L) = "a".S_a(L-1) | "c".S(L-1); n(L) = n(L-1) + 2*n(L-2) + 2*n'(L-2); n'(L) = n'(L-1)+n(L-1). 09:49:00 <fizzie> > let n 0 = 1; n 1 = 3; n l = n (l-1) + (2 * (n (l-2))) + (2 * (n' (l-2))); n' 0 = 1; n' 1 = 2; n' l = n' (l-1) + n (l-1) in take 20 $ n <$> [0..] 09:49:01 <lambdabot> [1,3,7,17,41,99,239,577,1393,3363,8119,19601,47321,114243,275807,665857,160... 09:49:07 <fizzie> I may have easily screwed that up. 09:49:31 <Patashu> that's wrong 09:49:37 <Patashu> it goes 1 3 7 14 31 09:50:27 <Patashu> hmm ,wait, no 09:50:30 <Patashu> I'm mixing two sequences up now 09:51:10 <Patashu> XD 09:52:12 <Patashu> I either want to find out no aa, bb in abc OR groups(X,n) which tells you how many ways you can make X separated lines of on bulbs in n off bulbs, which I could then do *2^X on for all the possible ways of starting alternating strings 09:52:38 <Patashu> sum X from 0 to inf of groups(X,n) is that sequence 1 3 7 14 31 09:52:44 <Patashu> no aa, bb in abc will be different 09:53:14 <Patashu> a specific groups(X,n) is a specific function in the triangular number series - tri, tetra, four-d triangle, etc etc, each staggered by 2 09:53:19 <CakeProphet> > let f n = length . filter (all ((a,b) a /= b) . ap zip tail) $ replicateM n "abc" in map f [0..] 09:53:20 <lambdabot> Couldn't match expected type `t -> a' 09:53:20 <lambdabot> against inferred type `(Simpl... 09:53:30 <CakeProphet> > let f n = length . filter (all ((a,b) -> a /= b) . ap zip tail) $ replicateM n "abc" in map f [0..] 09:53:31 <lambdabot> Pattern syntax in expression context: (a, b) -> a /= b 09:53:35 <CakeProphet> bah 09:53:39 <CakeProphet> > let f n = length . filter (all (\(a,b) -> a /= b) . ap zip tail) $ replicateM n "abc" in map f [0..] 09:53:43 <lambdabot> mueval-core: Time limit exceeded 09:54:00 <CakeProphet> > let f n = length . filter (not . any (\(a,b) -> a == b) . ap zip tail) $ replicateM n "abc" in map f [0..] 09:54:04 <lambdabot> mueval-core: Time limit exceeded 09:54:23 <fizzie> abab abac abca abcb abcc acab acac acba acbc acca accb accc baba babc baca bacb bacc bcab bcac bcba bcbc bcca bccb bccc caba cabc caca cacb cacc cbab cbac cbca cbcb cbcc ccab ccac ccba ccbc ccca cccb cccc; that's quite many already. 09:54:26 <CakeProphet> that's not quite right though. 09:55:59 <Patashu> > let f n = length . filter (not . any (\(a,b) -> a == b) . ap zip tail) $ replicateM n "abc" in f 2 09:56:01 <lambdabot> 6 09:56:12 <Patashu> > let f n = filter (not . any (\(a,b) -> a == b) . ap zip tail) $ replicateM n "abc" in f 2 09:56:13 <lambdabot> ["ab","ac","ba","bc","ca","cb"] 09:56:16 <Patashu> it's missing cc 09:56:20 <Patashu> oh, you know though 09:56:40 <Patashu> > let f n = filter (not . any (\(a,b) -> a == b or a == 'c') . ap zip tail) $ replicateM n "abc" in f 2 09:56:41 <lambdabot> Precedence parsing error 09:56:41 <lambdabot> cannot mix `GHC.Classes.==' [infix 4] and `GH... 09:56:44 <Patashu> > let f n = filter (not . any (\(a,b) -> a == b || a == 'c') . ap zip tail) $ replicateM n "abc" in f 2 09:56:45 <lambdabot> ["ab","ac","ba","bc"] 09:56:51 <Patashu> oh derp 09:56:57 <Patashu> > let f n = filter (not . any (\(a,b) -> a == b && a != 'c') . ap zip tail) $ replicateM n "abc" in f 2 09:56:58 <lambdabot> Not in scope: `!=' 09:57:06 <Patashu> really? 09:57:16 <CakeProphet> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb") . ap zipWith (\x y -> [x,y]) tail) $ replicateM n "abc" in f 4 09:57:16 <lambdabot> <no location info>: parse error on input `in' 09:58:34 <CakeProphet> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb")) . ap zipWith (\x y -> [x,y]) tail) $ replicateM n "abc" in f 4 09:58:35 <lambdabot> The lambda expression `\ x y -> ...' has two arguments, 09:58:35 <lambdabot> but its type `(a -... 09:59:00 <CakeProphet> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (\x y -> [x,y])) tail) $ replicateM n "abc" in f 4 09:59:01 <lambdabot> 41 09:59:03 <CakeProphet> parenthesese hell lol 09:59:07 <CakeProphet> errtyjierjtioj 09:59:11 <Patashu> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (\x y -> [x,y])) tail) $ replicateM n "abc" in f 2 09:59:12 <lambdabot> 7 09:59:13 <Patashu> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (\x y -> [x,y])) tail) $ replicateM n "abc" in f 3 09:59:15 <lambdabot> 17 09:59:18 <Patashu> seems right to me 09:59:26 <Patashu> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (\x y -> [x,y])) tail) $ replicateM n "abc" in map f [0..10] 09:59:28 <lambdabot> [1,3,7,17,41,99,239,577,1393,3363,8119] 09:59:45 <Patashu> ah, my mistake. your earlier creation was right, fizzie 09:59:51 <Patashu> just not for what I was solving 10:00:26 <CakeProphet> @pl (\x y -> [x,y]) 10:00:26 <lambdabot> (. return) . (:) 10:00:44 <Patashu> now, how to prove that... 10:00:59 <fizzie> > let v 0 = [""]; v 1 = ["a","b","c"]; v n = (("c"++) <$> v (n-1)) ++ (("ac"++) <$> v (n-2)) ++ (("bc"++) <$> v (n-2)) ++ (("ab"++) <$> vb (n-2)) ++ (("ba"++) <$> va (n-2)); va 0 = [""]; va n = (("b"++) <$> vb (n-1)) ++ (("c"++) <$> v (n-1)); vb 0 = [""]; vb n = (("a"++) <$> va (n-1)) ++ (("c"++) <$> v (n-1)) in length $ v 4 10:01:01 <lambdabot> 41 10:01:07 <CakeProphet> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (return .: (:)) tail) $ replicateM n "abc" in f 4 10:01:08 <lambdabot> <no location info>: parse error on input `in' 10:01:15 <Patashu> > 17+7*3+3 10:01:16 <lambdabot> 41 10:01:23 <fizzie> (That's the construction directly translated.) 10:01:23 <CakeProphet> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (return .: (:))) tail) $ replicateM n "abc" in f 4 10:01:24 <lambdabot> Couldn't match expected type `GHC.Types.Char' 10:01:24 <lambdabot> against inferred type... 10:01:26 <CakeProphet> kahseiuhwseurhwuerh 10:01:28 <Patashu> > 99+17*3+7 10:01:29 <lambdabot> 157 10:01:32 <Patashu> wait 10:01:35 <CakeProphet> > let f n = length . filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith ((:) .: return)) tail) $ replicateM n "abc" in f 4 10:01:36 <Patashu> > 99+41*3+17 10:01:36 <lambdabot> Couldn't match expected type `[GHC.Types.Char]' 10:01:36 <lambdabot> against inferred ty... 10:01:37 <lambdabot> 239 10:01:43 <Patashu> yeah, that's the spot 10:01:43 <Patashu> :) 10:02:11 <CakeProphet> Patashu: oh btw != is /= 10:02:14 <Patashu> ah ty 10:02:16 <CakeProphet> maybe you caught that. 10:02:16 <CakeProphet> oh 10:02:17 <CakeProphet> okay. 10:02:26 <CakeProphet> yeah it threw me off for a while. 10:03:49 <CakeProphet> fizzie: also that code is crazy. 10:05:01 <Patashu> Initial conditions: 10:05:01 <Patashu> length 0: (1) 10:05:01 <Patashu> length 1: a b or c (3) 10:05:01 <Patashu> length 2: ab, ba, ac, ca, bc, cb, cc (7) 10:05:01 <Patashu> Recurrence is f(n-1)+f(n-2)*3+f(n-3): 10:05:02 <Patashu> length 3: c + string of length 2 (7) or ac or bc or ?? + string of length 1 (3*3 = 9) or ??? + string of length 0 (1) (= 17) 10:05:05 <Patashu> help me - what are ?? and ??? 10:05:28 <CakeProphet> !wacro 10:05:29 <EgoBot> HIORTCAD 10:05:33 <monqy> bad 10:05:37 <CakeProphet> Patashu: HIORTCAD 10:05:40 <Patashu> oh 10:05:40 <monqy> bad 10:05:48 <fizzie> I don't know what you're looking for here. 10:05:56 <CakeProphet> monqy just stalks around and waits for me to use !wacro 10:05:58 <monqy> hiortcad is better than most though 10:05:59 <CakeProphet> I think he has it set to ping. 10:06:01 <Patashu> I'm trying to construct the reasoning behind the recurrence relationship 10:06:02 <Patashu> like when you said 10:06:05 <Patashu> Proof: For a length m, we can either add a 0 before all all lengths of m-1 or a 10 before all lengths of m-2. 10:06:10 <Patashu> I want the Proof: for no aa no bb in abc 10:07:19 <Patashu> > let f n = filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (\x y -> [x,y])) tail) $ replicateM n "abc" in f 3 10:07:20 <lambdabot> ["aba","abc","aca","acb","acc","bab","bac","bca","bcb","bcc","cab","cac","c... 10:07:35 <Patashu> > let f n = filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (\x y -> [x,y])) tail) $ replicateM n "abc" in take 10 f 3 10:07:35 <lambdabot> Couldn't match expected type `[a]' 10:07:36 <lambdabot> against inferred type `GHC.Types... 10:07:43 <Patashu> > let f n = filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (\x y -> [x,y])) tail) $ replicateM n "abc" in take 10 (f 3) 10:07:44 <lambdabot> ["aba","abc","aca","acb","acc","bab","bac","bca","bcb","bcc"] 10:07:48 <Patashu> > let f n = filter (all (\x -> not (x == "aa" || x == "bb")) . ap (zipWith (\x y -> [x,y])) tail) $ replicateM n "abc" in drop 10 (f 3) 10:07:49 <lambdabot> ["cab","cac","cba","cbc","cca","ccb","ccc"] 10:08:19 <CakeProphet> could reduce the condition to its && and /= version FOR GREATER CLARITY OF EXPRESSION 10:08:29 <Patashu> lol 10:08:35 <CakeProphet> and (return .) . (:) 10:08:39 <CakeProphet> for the zipWith argument 10:08:57 <CakeProphet> :t return .: (:) 10:08:58 <lambdabot> forall (m :: * -> *) a. (Monad m) => a -> [a] -> m [a] 10:09:04 <CakeProphet> or that one 10:10:09 <CakeProphet> it would be neat to have an operator that was $ but with greater precedence than spaces. 10:10:31 <CakeProphet> I'll call it... $$ 10:11:06 <CakeProphet> well, no that wouldn't help. 10:11:25 <fizzie> > let f1 0 = 1; f1 1 = 3; f1 2 = 7; f1 n = f1 (n-1) + 3 * f1 (n-2) + f1 (n-3); f2 0 = 1; f2 1 = 3; f2 n = 2 * f2 (n-1) + f2 (n-2) in (f1 &&& f2) <$> [0..9] 10:11:26 <lambdabot> [(1,1),(3,3),(7,7),(17,17),(41,41),(99,99),(239,239),(577,577),(1393,1393),... 10:11:33 <fizzie> Those two certainly seem to be the same thing. 10:11:45 <fizzie> So f(n) = 2f(n-1) + f(n-2). 10:11:46 <monqy> CakeProphet: a fancy circumfix operator i'm naming right now (...) 10:11:59 <CakeProphet> you could say ap zipWith $$ (return .: (:)) tail 10:12:07 <CakeProphet> and it would in no way be horrible. 10:12:15 <monqy> actually it'd be awful 10:12:23 <monqy> ap (zipwith $ return .: (:)) tail 10:12:29 <monqy> beautiful 10:12:31 <monqy> or even better 10:12:37 <monqy> ap (zipwith (return .: (:))) tail 10:12:42 <CakeProphet> I just like avoid () when possible. But I agree that is not the correct way. 10:13:00 <CakeProphet> s/when possible/ when its clearer/ 10:13:04 <monqy> parentheses are the best infix operators are the worst 10:13:05 <Patashu> hmm... 10:13:18 <Patashu> > 7*2+3 10:13:18 <lambdabot> 17 10:13:21 <Patashu> > 17*2+7 10:13:22 <lambdabot> 41 10:13:22 <Patashu> wow 10:13:26 <Patashu> ok, that one works better for me 10:14:21 <CakeProphet> monqy: you must not like Haskell very much then. 10:14:33 <monqy> CakeProphet: what makes you say that? 10:14:39 <CakeProphet> because there is infix everywhere 10:14:53 <monqy> haskell is okay 10:15:08 <monqy> or even good 10:17:52 <fizzie> Patashu: Given the simpler f(n) = 2f(n-1) + f(n-2) you can just substitute in the latter to go: f(n) = 2*(2f(n-2) + f(n-3)) + f(n-2) = 5f(n-2) + 2f(n-3) = 3f(n-2) + f(n-3) + 2f(n-2) + f(n-3) = 3f(n-2) + f(n-3) + f(n-1). 10:18:06 -!- adam__ has joined. 10:18:06 <Patashu> Yeah, I figured something like that 10:18:10 <Patashu> Ok, here's my 'logical' interpretation 10:18:11 <Patashu> Initial conditions: 10:18:11 <Patashu> length 0: (1) 10:18:11 <Patashu> length 1: a b or c (3) 10:18:11 <Patashu> Recurrence is 2*f(n-1)+f(n-2): 10:18:11 <Patashu> length 2: opposite two letters (ab before c, ac before b, bc before a) before all strings of length 1 (3*2) OR cc before strings of length 0 (1) (=7) (ab, ac, ba, bc, ca, cb, cc) 10:18:12 <Patashu> length 3: opposite two letters before all strings of length 2 (7*2) OR cc before strings of length 1 (3) (=17) 10:18:12 <Patashu> length 4: opposite two letters before all strings of length 3 (17*2) OR cc before strings of length 2 (7) (=41) 10:18:13 <Patashu> etc 10:18:13 <Patashu> The recurrence covers all 'safe' ways before something that might have an unsafe letter, and then does all ccs by itself looking two back. 10:18:23 <adam__> why is there no postfix Haskell translator thing. 10:18:50 -!- CakeProphet has quit (Disconnected by services). 10:18:55 -!- adam__ has changed nick to CakeProphet. 10:18:59 <CakeProphet> EGADS MY REAL NAME HAS BEEN EXPOSED. 10:19:11 <CakeProphet> !delinterp monqy 10:19:12 <EgoBot> ​Interpreter monqy deleted. 10:19:24 <monqy> "exposed"? it's been your username forever hasn't it 10:19:28 <CakeProphet> no 10:19:31 <fizzie> Patashu: "opposite two letters before all strings of length 2" does not directly work, because you can't have "ab" before "ba". 10:19:31 <CakeProphet> no such thing. 10:19:45 <monqy> 03:20:43 [freenode] -!- CakeProphet [~adam@h222.0.18.98.dynamic.ip.windstream.net] 10:19:48 <monqy> 03:20:43 [freenode] -!- ircname : adam 10:19:53 <monqy> ~adam@... 10:19:53 <CakeProphet> lies, fabricated documents. 10:19:57 <monqy> real name: adam 10:20:29 <CakeProphet> there is no such thing as username it is a Freenode contrivance 10:20:45 <CakeProphet> Freenode hacked all RFCs to show it in the IRC protocol 10:20:52 <CakeProphet> again, a figment of nothingness. 10:21:16 -!- CakeProp1et has joined. 10:21:21 <monqy> hi 10:21:22 -!- CakeProp1et has quit (Client Quit). 10:21:32 <CakeProphet> bah 10:21:34 -!- CakeProphet has quit (Client Quit). 10:21:51 -!- CakeProphet has joined. 10:23:08 <CakeProphet> I bet a function called contrive in Haskell would do something neat. 10:29:23 <Patashu> fizzie, opposite two letters means a/c before b, a/b before c, b/c before a 10:29:24 <Patashu> it works 10:29:24 <Patashu> so 10:29:31 <fizzie> Yes, I realizezed it later. 10:29:51 <fizzie> The "ab before c" thing was just confusingly put; it didn't immediately read as "a or b before c". 10:31:24 -!- copumpkin has quit (Ping timeout: 258 seconds). 10:31:49 -!- copumpkin has joined. 10:33:27 <fizzie> The corresponding OEIS A001333 is commented as being "Number of n-words from the alphabet A={0,1,2} which two neighbors differ by at most 1"; that's pretty much the same thing, except it avoids the 'ac' and 'ca' substrings as opposed to 'aa' and 'bb'. 10:33:55 <Patashu> hm! 10:33:58 <Patashu> interesting 10:34:32 -!- DH____ has joined. 10:43:19 -!- DH____ has quit (Read error: Connection reset by peer). 10:43:23 -!- DHeadshot has joined. 11:16:45 <Patashu> http://www.chessvariants.org/other.dir/captain-spalding.html chess where you can find an elephant in your pajamas 11:28:06 -!- oerjan has joined. 11:29:33 <CakeProphet> Patashu: wow that looks fun I'll have to play that with some friends. 11:29:47 <Patashu> play this one too http://www.chessvariants.org/other.dir/nemoroth.html 11:34:46 <oerjan> > let f = 1:3:8:map(sum.take 3)(tails f) in f 11:34:48 <lambdabot> [1,3,8,12,23,43,78,144,265,487,896,1648,3031,5575,10254,18860,34689,63803,1... 11:35:02 <Patashu> > let f = 1:3:7:map(sum.take 3)(tails f) in f 11:35:04 <lambdabot> [1,3,7,11,21,39,71,131,241,443,815,1499,2757,5071,9327,17155,31553,58035,10... 11:39:49 <oerjan> <CakeProphet> !addinterp monqy haskell import Data.Char;import Control.Monad putStrLn =<< fmap toLower getContents 11:39:53 <oerjan> i sense a missing ; 11:40:20 <oerjan> if EgoBot's version of ghci even supports import 11:40:54 <CakeProphet> ...oh 11:41:00 <CakeProphet> so I just came up with an awesome chess variant. 11:41:05 <CakeProphet> which I will not write down. 11:41:09 <Patashu> why not 11:41:12 <CakeProphet> er 11:41:13 <CakeProphet> will now 11:41:15 <CakeProphet> write down 11:41:20 <Patashu> that's a better idea 11:41:21 <Patashu> hmmm 11:41:29 <Patashu> esolangs should have an esoteric chess variants/esoteric games variants page 11:41:31 <oerjan> Patashu: freudian sex day 11:41:34 <oerjan> *slip 11:41:59 <CakeProphet> Patashu: it will have a two piece-generators kind of like captain spalding 11:42:16 <CakeProphet> and any pieces adjacent to the piece-generator can be swapped with pieces that are adjacent to the other generator. 11:43:18 <Patashu> example of esoteric chess http://www.chessvariants.org/diffmove.dir/oomost-chess.html 11:43:28 <CakeProphet> also, there are cannons that shoot projectiles. it's a two turn process. The projectile is spawned adjacent to the cannon, and then at the END of your next turn it fires "forward" and captures any pieces in its path 11:43:45 <Patashu> shooting pieces are quite powerful 11:43:47 <Patashu> make sure they're balanced 11:43:56 <CakeProphet> unless it hits a barrier (knight) which redirects the projectile path, based on the direction that the knight's nose is pointing. 11:44:00 <CakeProphet> the two turn thing makes it more balanced. 11:44:19 <CakeProphet> a knight can spend a turn to reorient its nose. 11:44:38 <CakeProphet> also the projectile might stop once it captures a single piece 11:44:44 <CakeProphet> instead of like... clearing everything in its path. 11:44:48 <oerjan> <monqy> _not if there are multiple words_ 11:44:54 -!- ais523 has joined. 11:44:54 <oerjan> actually mine does 11:44:59 <monqy> huh 11:45:03 <oerjan> (i set an option for it) 11:45:09 <monqy> ah 11:45:37 <CakeProphet> but it seems to me that the strategy would basically involve tricking your opponents with barriers and cannons, or using their own pieces against them. 11:45:39 <oerjan> emphasis_multiword 11:45:58 <Patashu> http://www.chessvariants.org/multiplayer.dir/anynumber.html FFA chess 11:46:09 <CakeProphet> and because the projectile is at the end of your next turn and happens as an extra action in your turn, it means you can use the teleporting effect to suddenly change its path.. 11:46:20 <monqy> set; _trying it out now_ 11:46:22 <monqy> seems to work 11:47:03 <CakeProphet> so then a cannon is basically like a rook that doesn't move to capture and requires two turns to capture... minus the whole redirecting bit. 11:47:51 <CakeProphet> also the redirecting effect would be piece neutral meaning you can use opponent barriers (maybe I should call them arrows?) to redirect. 11:48:00 <fizzie> oerjan: What does it do if someone emphasises multiple words _like_this_? 11:48:08 <oerjan> fizzie: nothing, alas 11:48:18 <oerjan> _like_this_ testing 11:48:21 <Jafet> I think you're describing befunge, not chess. 11:48:22 <oerjan> not that either 11:48:30 <Jafet> (Multiplayer befunge!) 11:48:38 <monqy> _who_emphasises_like_this_seriously_ 11:48:51 <CakeProphet> Jafet: kind of I guess. 11:48:57 <CakeProphet> I could add a trampoline just for fun. :P 11:49:20 <oerjan> lemmings chess 11:49:24 <monqy> a trampoline as in that sort or something else 11:49:34 <CakeProphet> but anyways cannons are rooks I guess so there's only two. missiles are bishops because they look like missiles. 11:49:55 <CakeProphet> a trampoline would be like a befunge trampoline in that the projectile won't capture whatever is after the trampoline, and doesn't capture the trampoline either. 11:50:00 <CakeProphet> they're little safety nets. 11:50:15 <oerjan> _what about this_? 11:50:19 <oerjan> that works 11:50:22 <CakeProphet> not for me. 11:50:34 <monqy> works for me 11:50:39 <monqy> set emphasis_multiword 11:50:48 <monqy> (to on) 11:50:51 <fizzie> I think for underlining _doing_it_like_this_ still makes a modicum of sense, but *doing*this*certainly*doesn't*. 11:50:57 <CakeProphet> also a missile can be captured in the turn it's spawned, which makes it not fire next turn obviously. 11:51:35 <CakeProphet> and once it fires it leaves the board... because it's just a projectile thing. 11:52:02 <oerjan> _this then?_ 11:52:07 <oerjan> doesn't 11:52:20 <CakeProphet> _test test_ 11:52:22 <CakeProphet> there we go 11:52:26 <CakeProphet> *bahahahaha 11:52:27 <CakeProphet> *bahahahaha* 11:52:30 <CakeProphet> *bahahahah haa* 11:52:46 <oerjan> oh no, we've made a monster! 11:52:46 <CakeProphet> okay so the cannon thing is pretty central at this point, I need some other ideas. 11:53:58 <CakeProphet> man I wish some other piece had directionality. everything but the knight has top-down radial symmetry. 11:54:24 <fizzie> http://sprunge.us/bhFN?c -- irssi highlighter isn't the prettiest ever. (I remember looking at it earlier too.) 11:54:50 <monqy> :( 11:55:04 <monqy> this sads me 11:55:18 <fizzie> Also I see some tab issues there; shouldn't have displayeded it with unholy four-char tabs. 11:55:34 <monqy> the code itself, not irssi's not being the prettiest ever 11:56:09 <monqy> i like 2-space indentation because i'm a weirdo 11:56:28 <Jafet> You are referring to Stanton pieces? The bishop has radial asymmetry. 11:56:45 <CakeProphet> erm... 11:56:52 <Jafet> The other pieces, well... fix them with a sharpie 11:57:00 <CakeProphet> I don't know? 11:57:19 <Jafet> http://en.wikipedia.org/wiki/Staunton_chess_set 11:57:20 <CakeProphet> most games i've played the bishop is radial. 11:57:28 <Jafet> Chess is supposed to be independent of the piece shapes 11:57:38 <CakeProphet> yeah no notches in my chess sets. 11:57:52 -!- ais523 has quit (Remote host closed the connection). 11:59:09 -!- ais523 has joined. 11:59:40 <CakeProphet> okay so if the projectile passes through the friendly king (an exception to the projectiles-kill-anything-except-arrows rule) then the trampoline (pawn) effect is reversed so that the projectile ONLY captures after a trampoline 12:00:00 <CakeProphet> hmmm, well no 12:00:09 <CakeProphet> it will capture the trampoline. because otherwise they are kind of hard to kill. 12:00:18 <CakeProphet> ???? 12:01:06 <CakeProphet> I dunno if this is a good game yet, lol 12:02:45 <CakeProphet> the queen being a spawner and the queen/king being able to swap pieces that are adjacent to them makes mobility more interesting, as most of the pieces besides the queen are going to be rather slow moving. 12:02:56 <Patashu> http://www.chessvariants.org/d.betza/chessvar/missmark.html lol 12:02:59 <CakeProphet> but I think the two-turn projectile part is an issue because it sounds easy to avoid. 12:03:31 <CakeProphet> especially when you set up your king to reverse the trampoline effect. extra prep time = more obviousness = less fun 12:05:23 <CakeProphet> and it would be trivial for the opponent to just move the trampoline out of the way in the one turn they have to react... unless they have to do something else, but there are fewer situations like that than in chess. 12:05:32 <oerjan> <CakeProphet> EGADS MY REAL NAME HAS BEEN EXPOSED. 12:05:49 <oerjan> i suggest you change your username to your last name so it doesn't happen again. 12:05:55 <CakeProphet> heh 12:06:01 * oerjan whistles innocently 12:06:05 <CakeProphet> well the pawns could just be like... pawns. 12:06:11 <CakeProphet> instead of trampolines 12:06:24 <CakeProphet> so they're just one-time barriers. 12:06:31 <CakeProphet> no, bad idea. 12:06:53 <CakeProphet> opening streategy: surround king in layers of pawns 12:08:42 <CakeProphet> also I think I'll free up the bishop as missile by having pawns be missiles. if a pawn is adjacent to a missile then it gets fired off. 12:09:15 <CakeProphet> obviously now bishops are extra-dimensional portals 12:09:41 <ais523> CakeProphet: this whole concept is rather ridiculously zzoish 12:09:45 <ais523> are you sure you want to go down that route? 12:09:56 <CakeProphet> ....how so? 12:10:28 <oerjan> i understand zzo is a _regular_ contributor to chessvariants.org 12:10:34 <CakeProphet> oh. 12:10:35 <CakeProphet> oh well. 12:10:40 <CakeProphet> chess variants are cool. 12:11:05 <ais523> it's more the whole making a massively complicated variant of something existing thing 12:11:38 <oerjan> extended tic-tac-toe 12:11:43 <CakeProphet> so yeah the bishop is a portal, a projectile goes into its notch and comes out the other bishops notch. teleporting redirecting clusterfuck ensues. 12:12:09 <CakeProphet> I guess some pieces are immortal or something? I don't know. 12:12:30 <ais523> oerjan: that reminded me of the generalised Sudoku I came up with when trying to work out an infinite Sudoku so I could figure out if it was TC or not 12:12:56 <oerjan> one of the pawns is immortal, however this is marked _under_ it so the opponent can only find out which by capturing it. 12:13:07 <oerjan> *trying to capture 12:13:08 <CakeProphet> haha 12:13:18 <CakeProphet> THE IMMORTAL TRAMPOLINE. 12:13:33 <CakeProphet> I dunno if I like the trampoline. 12:13:42 <CakeProphet> maybe pawns should do something else. Something useful and numerous. 12:14:11 <oerjan> ais523: "generalised sudoku is NP-complete" 12:14:22 <oerjan> although that's not infinite 12:14:30 <ais523> oerjan: hmm 12:14:33 <CakeProphet> ...imagine if pawns were prisms, and caused projectiles to split cardinally in three directions. 12:14:45 <ais523> in other puzzles I've seen, normally pspace-complete on finite puzzles generalized to TC on infinite ones 12:14:59 <ais523> although I don't think that's well-defined enough for it to be possible to make a theorem out of it 12:15:22 <CakeProphet> maybe the friendly queen could be a prism. that would be kind of ridiculous. 12:16:00 <oerjan> CakeProphet: that sounds like you get some dangerous exponential blowup 12:16:11 <CakeProphet> well with the pawns yeah. 12:16:32 <CakeProphet> -100 turns of careful setup- -SUDDENLY EVERYTHING DIES- 12:17:21 <oerjan> that's a bit similar to uranium, actually 12:17:26 <CakeProphet> perhaps the bishops will be the teleporters as well as portal-things. they will just be portals. 12:18:02 <CakeProphet> and they can still be captured by shooting them on any of their notchless sides. 12:18:10 <CakeProphet> well, no... 12:18:25 <CakeProphet> well, maybe? you wouldn't have a portal at that point because one of the links would be broken. 12:18:55 <CakeProphet> it would seem that losing any of your major pieces would put you at a huge disadvantage. 12:19:40 -!- sllide has joined. 12:20:51 <oerjan> how shockingly unlike ordinary chess 12:21:05 <CakeProphet> but I think it's more of a disadvantage here 12:21:09 <CakeProphet> because all of your pieces do ridiculous things. 12:21:28 <CakeProphet> like teleport other pieces around.. 12:25:57 <CakeProphet> obviously the solution is to introduce even more complicated rules 12:26:04 <Patashu> obviously 12:26:07 <CakeProphet> so now that when a teleporter or portal becomes unlinked it behaves differently. 12:26:18 <CakeProphet> in a way I have not decided. 12:27:59 <CakeProphet> bahahaha, when you kill a teleporter/portal the other one explodes and takes all adjacent pieces with it. 12:28:20 <CakeProphet> problem solved. 12:28:56 <CakeProphet> in any case I suspect capturing pieces will be incredibly difficult and will rely entirely on convoluted piece setups. 12:29:16 <Patashu> I'm kind of reminded of some roles I designed for the game of mafia, which only produce interesting results with lots of other 'power roles', but such a game requires huge amounts of players to not be ridiculous full of power roles 12:29:25 <Patashu> From all the nonsense I am hearing about here 12:29:55 <CakeProphet> well I can have two different kinds of pawns I realized by placing sharpie marks on some. 12:30:32 <CakeProphet> so I was thinking I could have four arrows which are marked pawns, and then that frees up knights to be portals, and then bishops are teleporters. 12:30:45 <CakeProphet> currently the two rooks are cannons but one could be flipped over to do something else. 12:31:39 <Patashu> have you considered making a chu chu rocket mod instead of a chess mod? 12:31:49 <CakeProphet> wat 12:31:56 <Patashu> it's a dreamcast game 12:32:14 <CakeProphet> really I don't see an issue with everything being over the top as long as it's fun. 12:32:21 <Patashu> hah, yeah 12:33:13 <CakeProphet> I haven't really worked out movement yet. Just the projectile dynamics. 12:33:42 <CakeProphet> cannons will be slow I think. one or two space movers. teleporters should be quick and be able to jump over things. 12:34:37 <CakeProphet> but perhaps with weird movement restrictions. 12:36:11 <CakeProphet> portals could be replaced with something else but they sound like great fun. 12:36:31 <CakeProphet> and teleporters and portals may be merged into one piece so that "walking into a portal" is the teleport effect. 12:37:19 <CakeProphet> also I just realized with four arrows one could make an infinite projectile loop... 12:38:19 <CakeProphet> also with one arrow and two portals you can create the same loop but without the square pattern. 12:38:40 <CakeProphet> I guess these could just set up death walls until the chain is broken... muahahahaha 12:40:21 <CakeProphet> and these death walls could be redirected by arrows or portals (as long as they're facing the right direction otherwise they would be captured) 12:40:31 <CakeProphet> and thus fed into possibly another infinite loop. 12:41:07 <CakeProphet> so basically an arrow in one of these loops would just have to turn a direction to capture something.... 12:41:38 <CakeProphet> thus breaking the loop. 12:42:15 <CakeProphet> wow that's awesome. 12:42:22 <CakeProphet> this is the best rule abuse ever. 12:43:53 <CakeProphet> most pieces at this point don't even get captured by projectiles. 12:44:05 <CakeProphet> thus making it difficult to capture things. 12:45:23 -!- monqy has quit (Quit: hello). 13:14:50 -!- CakeProphet has quit (Ping timeout: 260 seconds). 13:40:12 -!- variable has quit (Ping timeout: 255 seconds). 13:40:16 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:01:09 -!- Guest79464 has changed nick to Gregor. 14:01:38 -!- Gregor has changed nick to Guest16962. 14:10:46 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:36:44 -!- copumpkin has joined. 14:52:31 <ais523> hmm, is writing "more *.txt | cat" a useless use of cat? 14:52:48 <ais523> it's the simplest way I know to tell more to act like it isn't connected to a terminal 14:53:46 <oerjan> sounds like the answer is "no" 14:56:58 -!- azaq23 has joined. 14:57:33 -!- pumpkin has joined. 14:58:03 -!- copumpkin has quit (Ping timeout: 252 seconds). 14:58:22 -!- pumpkin has changed nick to copumpkin. 14:59:20 -!- azaq23 has quit (Client Quit). 15:01:02 -!- Taneb has joined. 15:01:13 <Taneb> Hello! 15:01:33 -!- oerjan has quit (Quit: Goodbye!). 15:06:29 <Sgeo> How are you? 15:06:50 <Taneb> Alright 15:09:24 <Deewiant> Alleft 15:12:39 <Taneb> The world of esoteric programming seems quiet 15:12:50 <Taneb> I blame the awful weather in Hexham 15:12:52 <ais523> Sgeo: a bit ill, but recovering 15:13:15 <Sgeo> o.O, glad you're recovering, feel even better soon 15:15:36 -!- hagb4rd has joined. 15:15:44 <hagb4rd> waidmannsheil 15:16:04 <hagb4rd> sry wrong chan 15:16:11 <Taneb> Why not stay? 15:17:28 <hagb4rd> me? 15:17:32 <Taneb> Yes 15:18:11 <hagb4rd> oh, i'm gonna stay for a while, sure 15:18:18 <hagb4rd> how are things goin? 15:18:30 <Taneb> Just out of curiousity, which channel did you mean to post that in? 15:18:36 <Taneb> "waidmannsheil", that is 15:18:54 <hagb4rd> german-elite.net#gulli 15:19:00 <Taneb> Okay 15:19:33 <hagb4rd> where is elliott? 15:19:45 <Taneb> Relatively close to where I am 15:21:05 <hagb4rd> relativly close yess :) 15:21:16 <Taneb> That sounds disturbing... 15:21:41 <hagb4rd> well it could mean anything at all 15:22:02 <hagb4rd> but that's one of worlds mysteries i guess 15:22:33 -!- FireFly has joined. 15:22:40 <Taneb> What do you think about http://esoteric.voxelperfect.net/wiki/User:Taneb/Salesman ? 15:24:22 <fizzie> ais523: Assuming you're using that to just get per-file headers in there (or does 'more' do something more (no pun intended) when not in terminal), "head -n -0 *.txt" is an alternative (with different-looking file headers). 15:24:50 <hagb4rd> well, does it work? sounds like a pretty fast solution, not goin into details 15:25:02 <hagb4rd> is that kind of a*? 15:25:04 <fizzie> s/nal/nal?/ 15:32:05 <Deewiant> Alas, that head invocation is not as portable as more. 15:32:40 <Deewiant> The Solaris man page for head(1) suggests head -9999. 15:34:51 -!- variable has joined. 15:37:40 -!- calamari has joined. 15:42:43 <Guest16962> ARGH 15:42:56 -!- Guest16962 has changed nick to Gregor. 15:43:08 <Sgeo> Oh, so that wasn't deliberate. 15:43:40 <Gregor> My bouncer doesn't identify for me. 15:45:10 <Sgeo> Ah 15:53:05 -!- calamari has quit (Quit: Leaving). 15:55:26 <Taneb> flip (flip id (+1)) 0 15:56:03 <Deewiant> No instance for (Show (((a0 -> a0) -> b0 -> c0) -> c0)) 15:56:24 <Taneb> > flip (flip id (+1)) 0 (const id) 15:56:26 <lambdabot> 0 15:56:39 <Taneb> flip (flip id (+1)) 0 id 15:56:53 <Deewiant> 1 15:57:07 <Taneb> I bet there is a shorter way of writing that 15:57:18 <Deewiant> Yes: 1 15:57:29 <Taneb> \x->x(+1)0 15:57:51 <Deewiant> ?pl \x->x(+1)0 15:57:51 <lambdabot> flip ($ (1 +)) 0 15:59:26 <Taneb> ?pl \x->\y->x y y 15:59:26 <lambdabot> join 16:01:37 <Taneb> ?pl \x -> \y -> \z -> x z (y z) 16:01:37 <lambdabot> ap 16:03:54 <Taneb> > flip ($ (1+)) 0 (ap (.) (join (.))) 16:03:56 <lambdabot> 3 16:04:19 <Taneb> ?pl ap (.) $ join (.) 16:04:19 <lambdabot> ap (.) (join (.)) 16:04:34 <Deewiant> ?. pl unpl ap (.) $ join (.) 16:04:34 <lambdabot> (join (.) >>=) . (return .) =<< (.) 16:04:56 <Taneb> brb 16:06:57 <Taneb> Right, I've been delivered a box 16:07:02 <Taneb> I can't get into the box 16:07:09 <Taneb> It may contain my laptop 16:07:29 <Taneb> But, according to the latest theories in Quantum Mechanics, I can't tell until I open it 16:07:43 <Taneb> Found some scissors 16:10:12 <Taneb> It's my laptop! 16:10:27 <Taneb> Sans battery 16:13:42 <Taneb> They've uninstalled ubuntu 16:14:32 <Taneb> They've completely wiped it 16:14:41 <Taneb> I thought that they would 16:15:53 <hagb4rd> so now you need some food for your cat, right? 16:15:58 <hagb4rd> or is it dead? 16:16:15 <Taneb> It turned out to be a dog 16:16:18 <hagb4rd> lol 16:19:07 <Taneb> First step: install decent browse 16:19:08 <Taneb> r 16:19:12 <Taneb> BUT WHICH ONE? 16:19:28 <Taneb> Bah, I'll get Firefox, Chrome, AND Opera 16:28:56 <Taneb> I am browsered up 16:28:59 <Taneb> Now to get GHC 16:29:05 <coppro> Taneb: don't forget IE 16:29:15 <fizzie> Try to whip up some sort of a thing that uses all the browsers simultaneously. 16:29:20 <Taneb> Installed by default 16:29:21 <Sgeo> Why would you leave the HD in? 16:29:53 <Sgeo> Or was it a software issue 16:30:23 <Taneb> The HD was where the problem was 16:30:48 <Sgeo> Oh 16:31:00 -!- elliott has joined. 16:31:43 <elliott> sup 16:32:05 <Taneb> Hey! 16:32:16 <Taneb> Weather's miserable, isn't it? 16:32:46 <elliott> no i live in latvia and as such have no idea what you are talking about 16:33:00 <elliott> facts 16:33:39 <fizzie> Hexham, Latvia. 16:34:22 -!- Gregor has changed nick to Guest16962. 16:34:50 <elliott> yes 16:43:45 <Taneb> Finally installing Haskell Platform 16:43:53 <Taneb> Next: Minecraft and Dwarf Fortress 16:44:42 <elliott> how many computers do you use exactly 16:46:34 <Taneb> 2-5, depending how you count it 16:46:54 <Taneb> Including the ones at school, anything up to about 30 16:48:20 <Deewiant> ?hoogle Applicative f => f (a -> b) -> (b -> c) -> f (a -> c) 16:48:20 <lambdabot> Data.Generics.Schemes everywhereBut :: GenericQ Bool -> GenericT -> GenericT 16:48:30 <elliott> Deewiant: Oh god what are you doing. 16:48:57 <Deewiant> Trying to save a pair of parentheses in f <*> (g <$> x) 16:48:59 -!- ive has joined. 16:49:38 <elliott> Deewiant: ap f $ g <$> x 16:49:52 <elliott> Or even ap f $ fmap g x 16:50:12 <Taneb> Installing Minecraft and Dwarf Fortress 16:50:13 <Deewiant> But ap isn't for Applicatives :-/ 16:50:30 <Deewiant> I've managed to avoid importing Control.Monad 16:50:47 <elliott> Deewiant: ap = (<*>) 16:50:52 <Deewiant> ?ty ap 16:50:53 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b 16:50:59 <elliott> Deewiant: I'm telling you to define it locally :P 16:51:05 <elliott> (At module scope) 16:51:12 <Deewiant> Meh 16:51:20 <elliott> :t (<$>) 16:51:21 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 16:51:23 <elliott> I swear it used to be Applicative 16:51:28 <elliott> Deewiant: Uh wait 16:51:33 <elliott> Deewiant: f <*> fmap g x 16:51:34 <elliott> Duh 16:52:23 <Deewiant> That'd need to be fmap g $ x and I can't do that because of cannot mix `$' [infixr 0] and `<?>' [infix 0] in the same infix expression 16:52:38 <elliott> 22:44:34: <HackEgo> 2010-12-17.txt:19:31:42: <Deewiant> elliott: No, but my toaster is. 16:52:38 <elliott> Me too 16:52:53 <elliott> Deewiant: Can I see your expression, I'd like to tell you how much I dislike you for writing it 16:53:05 <elliott> Also how much it needs parentheses 16:53:24 <elliott> Also: I wonder if trifecta's <?> has better precedence :-) 16:53:48 <Deewiant> punctuator = here PPPunctuator <*> (fromJust.punctuatorFromString <$> 16:53:49 <Deewiant> (choice $ map string 16:53:49 <Deewiant> [ "->", "++", "--", "<<=", ">>=", "<=", ">=", "==", "!=" 16:53:49 <Deewiant> , "&&", "||", "...", "*=", "/=", "%=", "+=", "-=", "<<" 16:53:49 <Deewiant> , ">>", "&=", "^=", "|=", "##", "<:", ":>", "<%", "%>" 16:53:51 <Deewiant> , "%:%:", "%:"] 16:53:53 <Deewiant> ++ [(:[]) <$> satisfy ((`IS.member` punctuatorChars).ord)])) 16:53:56 <Deewiant> <?> "punctuator" 16:54:16 <elliott> "PPPunctuator"? 16:54:17 <Deewiant> Hmm, trifecta 16:54:23 <Deewiant> Hadn't noticed that one 16:54:33 <elliott> It's the hot new thing 16:54:40 <elliott> Gives clang-style diagnostics 16:54:44 <elliott> ANSI and all 16:54:49 <elliott> data Parser e a = Parser 16:54:49 <elliott> { unparser :: forall r. 16:54:49 <elliott> (a -> ErrState e -> ErrLog e -> Bool -> Delta -> ByteString -> It Rope r) -> -- uncommitted ok 16:54:49 <elliott> ( ErrState e -> ErrLog e -> Bool -> Delta -> ByteString -> It Rope r) -> -- uncommitted err 16:54:49 <elliott> (a -> ErrState e -> ErrLog e -> Bool -> Delta -> ByteString -> It Rope r) -> -- committed ok 16:54:50 <elliott> ( ErrState e -> ErrLog e -> Bool -> Delta -> ByteString -> It Rope r) -> -- committed err 16:54:51 <elliott> ErrLog e -> Bool -> Delta -> ByteString -> It Rope r 16:54:53 <elliott> } 16:54:55 <elliott> Nice 16:55:28 <elliott> Deewiant: BTW bugreport "fromJust.punctuatorFromString" 16:55:33 <elliott> Needs spaces 16:55:37 <Deewiant> No it doesn't 16:55:42 <elliott> Additionally ).ord 16:55:50 <elliott> Deewiant: Yeah it does, you couldn't replace fromJust with a constructor there 16:55:52 <Deewiant> . totally doesn't need spaces 16:55:54 <elliott> Which is terrible 16:56:01 <Deewiant> That's Haskell's problem, not mine 16:56:03 <elliott> I think TDNR would also make that invalid but don't quote me on it 16:56:07 <Deewiant> TDNR? 16:56:10 <Deewiant> Oh 16:56:11 <elliott> Type-directed name resolution 16:56:11 <elliott> Deewiant: You're writing Haskell 16:56:24 <elliott> Are you designing your code to be difficult to change? :-P 16:56:40 <elliott> Anyway, my solution is to use the parens and just put the multi-line shit in its own "where"-define 16:58:49 <Deewiant> Then I'll just use the parens and not put the multi-line shit in its own "where"-define 16:58:58 <elliott> Gross 16:59:01 <Taneb> Minecraft and Dwarf Fortess installed 16:59:03 <Deewiant> Does trifecta have lookAhead 16:59:11 <Taneb> Next: some sort of IRC client 16:59:21 <elliott> Deewiant: What does that do again 16:59:23 <Taneb> Any reccomendations for Windows IRC clients? 16:59:34 <Deewiant> elliott: Parse without changing the position, essentially 16:59:37 <elliott> Taneb: Silverex works alright 16:59:40 <Deewiant> I justt need one-character lookahead 16:59:42 <elliott> Deewiant: You mean try? 16:59:45 <Deewiant> No 16:59:47 <elliott> Hmm 16:59:50 <elliott> I see 16:59:53 <Deewiant> I need it to not change the position even when it succeeds 16:59:57 <elliott> Can't you simulate that with try always 17:00:01 <Deewiant> How 17:00:12 <elliott> (try a >> deriv e a) <|> e 17:00:21 <elliott> Where (deriv e a) is e with the a at the front stripped off :P 17:00:37 <elliott> Anyway, I dunno if it does, but it has documentation :P 17:00:44 <elliott> I would assume so 17:00:46 <Deewiant> I need to parse (x *> lookAhead newline) 17:00:52 <Deewiant> Er, <* 17:01:04 <Deewiant> I'm looking for it but can't find it :-P 17:01:10 <elliott> ?hoogle lookAhead 17:01:10 <lambdabot> Text.Parsec.Combinator lookAhead :: Stream s m t => ParsecT s u m a -> ParsecT s u m a 17:01:10 <lambdabot> Text.ParserCombinators.Parsec.Combinator lookAhead :: Stream s m t => ParsecT s u m a -> ParsecT s u m a 17:01:10 <lambdabot> System.IO hLookAhead :: Handle -> IO Char 17:01:16 * elliott tries hayoo 17:01:29 <Deewiant> Hayoo found it 17:01:33 <Deewiant> http://hackage.haskell.org/packages/archive/trifecta/latest/doc/html/Text-Trifecta-Parser-Class.html#v:lookAhead 17:01:53 <Deewiant> No default definition suggests that no, it can't be simulated :-P 17:02:03 <elliott> It can be simulated for any given full parser 17:02:09 <elliott> You need to transform what comes next, is all 17:02:19 <Deewiant> Yeah I don't want to rewrite my whole parser 17:02:21 <elliott> That is, (lookAhead p >> q) can be simulated 17:02:31 <elliott> instance MonadParser m => MonadParser (Yoneda m) where 17:02:38 <elliott> Thank god 17:02:46 <Deewiant> Yoneda is a lot of things 17:02:47 <elliott> I'm sure he actually uses that :P 17:03:02 <elliott> infix 0 <?> 17:03:08 <Deewiant> D'oh 17:03:19 <elliott> Yeah, but hot new thing, how can you not? 17:03:26 <elliott> I like how 17:03:27 <elliott> -- | Lexeme parser |semi| parses the character \';\' and skips any 17:03:27 <elliott> -- trailing white space. Returns the character \';\'. 17:03:29 <elliott> is a primitive 17:03:54 <Deewiant> Where's thattt 17:03:56 <Deewiant> ttttttttttttttttttttttttttt 17:04:17 <elliott> Deewiant: http://hackage.haskell.org/packages/archive/trifecta/0.46/doc/html/Text-Trifecta-Parser-Class.html 17:04:18 <Deewiant> Today is a bad day for my t button 17:04:35 <elliott> Ttttoday 17:04:49 <Deewiant> Yeah, that doesn't seem like something that needs to be in the class :-P 17:05:09 <elliott> Deewiant: It's probably an optimisation 17:05:25 <Deewiant> For semicolons? 17:05:27 <Deewiant> Whyyy 17:05:32 <elliott> Language parsing 17:05:43 <elliott> I'd bet money on it being an optimisation 17:06:16 <elliott> Deewiant: Trifecta also gets you layout parsing in case you're parsing Haskell :-P 17:06:28 <elliott> You MIGHT be! 17:06:48 <Deewiant> Does it have manyTill1 :: Alternative f => f a -> f end -> f ([a], end) 17:07:13 <elliott> No; can't you write that yourself 17:07:28 <Deewiant> Yes, and I have because Parsec doesn't have it 17:07:45 <Deewiant> Just seems like something that would be generically useful :-P 17:07:46 <elliott> manyTill :: (Alternative m, MonadPlus m) => m a -> m end -> m [a] 17:07:46 <elliott> manyTill p end = go where go = ([] <$ end) <|> ((:) <$> p <*> go) 17:07:46 <elliott> That's one readable definition 17:07:51 <Deewiant> Ehm 17:07:52 <Deewiant> p `manyTill1` end = fix $ ((,) [] <$> end <|>) . liftA2 (first . (:)) p 17:08:01 <elliott> How did you make it even more readable 17:08:04 <elliott> I thought it impossible 17:08:10 <Deewiant> I've got skillz 17:08:23 <elliott> Seriously though, I hate you and your code 17:08:29 <Deewiant> That's actually an easy derivation from that manyTill 17:08:37 <elliott> Well that excuses it 17:08:38 <Deewiant> Parsec has an ugly monadic definition 17:08:47 <elliott> It's so ugly I might even understand it first time 17:10:09 <elliott> 02:31:29: * Sgeo__ decides no one here wants to hear about what happened today. 17:10:09 <elliott> 02:31:35: <Sgeo__> And even if someone did: It's private. 17:10:15 <elliott> Sgeo: Unfortunately you are now obligated to tell us all 17:10:18 <elliott> I will weep in the corner 17:11:06 <Taneb> Now I have four browsers, Minecraft, Dwarf Fortress, Haskell, and an IRC Client, it is time to install Ubuntu 17:11:23 <Sgeo> elliott, there may have been some hints further in the log 17:11:25 <Sgeo> <,< 17:11:44 <ais523> Taneb: ? 17:12:19 <Taneb> Got my laptop back with a wiped hard drive 17:12:28 <Taneb> It had BSODed badly 17:13:01 <Taneb> I tend to switch between Ubuntu and Windows, and Windows is preinstalled 17:13:40 <elliott> ais523: helo 17:13:54 <elliott> 03:35:18: <qnix> any one extremely good with md5 collision and brainfuck language pm me ? :) 17:14:02 <elliott> qnix: are you trying to program in shafuck 17:14:02 <elliott> execpt 17:14:04 <elliott> wtih md 17:14:07 <elliott> instead of sha i guess 17:14:34 <ais523> elliott: 250 Hello elliott 17:14:44 <elliott> ais523: help 17:15:24 <ais523> err, I don't make a very good SMTP server 17:15:42 <elliott> help 17:15:50 <Taneb> hlep 17:15:53 <ais523> it took me that long to look up that 250 was the correct number to use for a HELO response 17:16:11 <elliott> Taneb: what is happening outside, did gangs break the weather or something 17:16:16 <elliott> i dont think the sky is normally that colour 17:16:46 <elliott> Deewiant: Also you should use IntSet rather than IS for that qualified import 17:16:51 <elliott> It is the wisdom of zomgm- elliott 17:16:58 <Deewiant> So verbose 17:17:05 <ais523> !help 17:17:05 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>. 17:17:13 <ais523> `help 17:17:14 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 17:17:15 <elliott> Deewiant: I would like to ban you from using Haskell 17:17:18 <elliott> At least I can read CCBI 17:17:18 <Taneb> I see nothing wrong with a yellowy grey sky 17:17:24 <elliott> it's yellowy? 17:17:25 <fizzie> ^help 17:17:25 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 17:17:36 <Taneb> More smurgy 17:17:56 <elliott> is smurgy a word 17:18:11 <Deewiant> elliott: Reading IS.member isn't so hard :-P 17:18:29 <elliott> Deewiant: The rest of it is a bigger problem 17:18:43 <Taneb> It's sort of like lurgy and smoggy 17:20:45 <Taneb> Did anyone look at Salesman? 17:20:59 <Taneb> Also, bye 17:21:21 -!- Taneb has changed nick to Taneb|Hoverpack. 17:22:23 <Deewiant> elliott: Does trifecta treat '\t' as advancing 1 column or more 17:22:38 <elliott> Deewiant: Wait, you actually are doing layout? 17:22:54 <elliott> Also you realise I'm just reading the source to answer these 17:22:55 <Deewiant> No, I just hate error messages that depend on a tab width 17:23:00 <elliott> Oh 17:23:07 <elliott> ais523: 17:23:11 <elliott> Deewiant: Enjoy your trolling 17:23:21 <ais523> elliott: gah, a bot in another channel's gone mad and is doing nick: on everyone when they arrive 17:23:26 <Deewiant> I'm not trolling, dammit 17:23:32 <elliott> Deewiant: No, enjoy ais523's trolling of you 17:23:44 <elliott> ais523: Deewiant just said something that implied that there exists a "tab width" that doesn't necessarily have to have the value eight 17:23:49 <Deewiant> I wouldn't call what he's doing trolling, either 17:23:56 <elliott> It's what he's about to do 17:24:01 <Deewiant> I know what he's about to do 17:24:09 <Deewiant> Or what you want him to do 17:24:13 <Deewiant> And I wouldn't call that trolling 17:24:37 <elliott> http://hackage.haskell.org/packages/archive/trifecta/0.46/doc/html/src/Text-Trifecta-Parser-Prim.html I think this answers your question 17:24:44 <ais523> elliott: it's an esolang, I wouldn't expect them to use standard meanings for tab just like I wouldn't expect them to use standard meanings for space 17:24:48 <ais523> either that, or it isn't an esolang 17:24:55 <ais523> in which case it's probably just wrong 17:24:59 <elliott> ais523: I don't know that it's an esolang 17:25:07 <ais523> well, this is #esoteric 17:25:12 <elliott> Yes, so it probably isn't 17:25:13 <ais523> I assume anything I haven't heard of is an esolang until proven otherwise 17:25:13 <Deewiant> It's just error messages generically 17:25:30 <elliott> Deewiant: Pretty sure it doesn't handle tabs specially 17:25:35 <elliott> There's '\n' casing but no \t 17:25:46 <elliott> Hmm 17:25:48 <elliott> data Delta Source 17:25:48 <elliott> Constructors 17:25:48 <elliott> Columns !Int64 !Int64 17:25:48 <elliott> Tab !Int64 !Int64 !Int64 17:25:48 <elliott> Lines !Int64 !Int64 !Int64 !Int64 17:25:49 <elliott> Directed !ByteString !Int64 !Int64 !Int64 !Int64 17:25:51 <Deewiant> How do I run a Trifecta parser 17:25:56 <Deewiant> Parser** 17:26:01 <elliott> column :: HasDelta t => t -> Int64 17:26:01 <elliott> column t = case delta t of 17:26:01 <elliott> Columns c _ -> c 17:26:01 <elliott> Tab b a _ -> nextTab b + a 17:26:02 <elliott> Lines _ c _ _ -> c 17:26:04 <elliott> Directed _ _ c _ _ -> c 17:26:14 <elliott> Can't find nextTab's definition :P 17:26:14 <elliott> Oh 17:26:15 <elliott> Hmm 17:26:18 <elliott> No, still can't 17:26:23 <elliott> nextTab :: Int64 -> Int64 17:26:23 <elliott> nextTab x = x + (8 - mod x 8) 17:26:27 <elliott> Deewiant: Sorry, it makes assumptions :P 17:26:32 <Guest16962> WTFWTF HOW AM I GUEST 17:26:32 <elliott> But you could write your own Delta functions 17:26:33 -!- Guest16962 has changed nick to Gregor. 17:27:05 <elliott> Deewiant: http://hackage.haskell.org/packages/archive/trifecta/0.46/doc/html/Text-Trifecta-Parser-ByteString.html seems to be the absolute-highest-level interface 17:27:21 <ais523> <elliott> nextTab x = x + (8 - mod x 8) 17:27:23 <Deewiant> I don't have a file 17:27:24 <elliott> Which uses... 17:27:25 <ais523> elliott: I approve of this definition 17:27:33 <elliott> ais523: I'm uninterested in your approval 17:27:42 <elliott> Deewiant: http://hackage.haskell.org/packages/archive/trifecta/0.46/doc/html/src/Text-Trifecta-Parser-ByteString.html#parseFromFileEx 17:27:49 <elliott> There is probably an easier way than that if you don't care about efficiency 17:28:02 <Deewiant> That's what one would hope 17:28:06 <Gregor> Publishing a research paper = apparently the best bug report. 17:28:10 <elliott> I dunno, ask edwardk :P 17:28:14 <Gregor> Opera fixed a bug I mentioned in a paper :P 17:29:05 <Deewiant> I guess parseTest will do for now 17:30:47 <elliott> Hmm, I should write that n-gram stuff 17:31:49 <elliott> 07:26:38: <Patashu> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs 17:31:53 <elliott> oh, patashu isn't here 17:32:00 <elliott> or i'd give a better explanation than cakeprophet's terrible one 17:32:07 <Deewiant> Hmm, is writing a custom Rendering more work than rewriting the 20 lines of Parsec needed to handle tabs more nicely 17:32:28 <elliott> Deewiant: I don't know, let me read the source for you 17:32:43 <Deewiant> I've been reading the source, you don't really need to answer that 17:32:45 -!- DHeadshot has quit (Read error: Connection reset by peer). 17:32:45 <Deewiant> I'm just musing 17:32:52 <elliott> It was a: joke 17:34:27 <elliott> 08:58:38: <CakeProphet> !addinterp monqy haskell import Data.Char;import Control.Monad putStrLn =<< fmap toLower getContents 17:34:28 <elliott> forgot semicolon 17:34:38 <Deewiant> One wonders how many of these instances are necessary 17:34:48 <elliott> !addinterp monqy haskell import Data.Char; main = mapM_ (putChar . toLower) getContents 17:34:48 <EgoBot> ​Interpreter monqy installed. 17:34:52 <elliott> !monqy HELLO WORLD 17:34:56 <elliott> Deewiant: Which ones 17:34:58 <elliott> The Yoneda crap? 17:35:09 <Deewiant> The instances for Diagnostic, Rendering, and Delta 17:35:17 <Deewiant> All of which I'd have to copy and customize 17:35:22 <elliott> !addinterp monqy haskell import Data.Char; main = getConetnts >>= mapM_ (putChar . toLower) 17:35:22 <EgoBot> ​There is already an interpreter for monqy! 17:35:26 <elliott> Deewiant: Probably very few of them are necessary 17:35:39 <elliott> But it wouldn't be an edwardk package without all sorts of ridiculous theory dependencies 17:35:48 <Deewiant> True enough 17:35:52 -!- ais523 has quit (Remote host closed the connection). 17:36:12 <Deewiant> I hate these gratuitous imports :-/ 17:36:18 <Deewiant> hiding is such a misfeature 17:36:29 <elliott> How is hiding a misfeature 17:36:59 <Deewiant> I prefer reading code where one can tell from within the file where all the identifiers are from 17:37:25 <elliott> Deewiant: So how would one use e.g. Control.Category 17:37:30 <elliott> import Prelude (HUGEST LIST EVER)? 17:37:46 <Deewiant> Okay, I suppose Prelude can be excepted 17:38:06 <Deewiant> But import X hiding (Y) where X /= Prelude should totally be an error 17:38:08 <elliott> Deewiant: What about Data.List, it has clashes with superior Foldable/Traversable variants IIRC 17:38:20 <Deewiant> import Data.List (what you need) 17:38:33 <elliott> Deewiant: So import Data.List (HUGEST LIST EVER) then 17:38:47 <Deewiant> Most of Data.List is in Prelude 17:39:05 <elliott> My real response is that special-casing Prelude is uglier than misuse of hiding :P 17:39:09 <Deewiant> This is 378 lines and it uses exactly foldl' 17:39:22 <Deewiant> Yeah, I know 17:39:26 <Deewiant> It still sucks though :-P 17:40:29 <elliott> Deewiant: There were people who would rather "import M" gave an error as well as anything using hiding 17:40:32 <elliott> I think they're mad though 17:40:40 <elliott> (As opposed to explicitly listing every use or importing qualified) 17:40:55 <Deewiant> I wouldn't mind e.g. Hackage enforcing that on upload 17:41:03 <elliott> It increases forwards-compatibility and modularity at the expense of being a huge pain in the arse 17:41:05 <Deewiant> For tinkering convenience making it an error is a bit nasty though 17:41:11 <elliott> Huge pain in the arses are never acceptable 17:42:48 <elliott> import Prelude hiding (catch) 17:42:48 <elliott> import Data.Char 17:42:48 <elliott> import qualified Data.Map as Map 17:42:48 <elliott> import qualified Data.Vector as V 17:42:48 <elliott> import Data.ByteString (ByteString) 17:42:49 <elliott> import Control.Exception 17:42:50 <elliott> import Control.Monad.State.Strict 17:42:52 <elliott> import Control.Applicative 17:42:54 <elliott> import System.IO.Error hiding (catch) 17:42:56 <elliott> Oh noes, Shiro breaks Deewiant's rules 17:43:20 <Deewiant> Well, the Prelude is also too small for comfort ;-) 17:43:40 <elliott> Deewiant: System.IO.Error is the problem there 17:43:56 <Deewiant> Basically everything in my .ghci should be in the Prelude 17:44:05 <Deewiant> :m +Control.Applicative Control.Arrow Control.Monad Control.Monad.Loops Data.Bits Data.Char Data.Either Data.Function Data.Functor Data.List Data.List.Split Data.Maybe Data.Monoid Data.Ord Debug.Trace Numeric Text.Printf 17:44:11 <Deewiant> Except for Debug.Trace 17:44:17 <elliott> I would ragequit haskell if Control.Arrow ended up in the Prelude. 17:44:21 <Deewiant> Why 17:44:27 <elliott> I don't like arrows. 17:44:34 <Deewiant> That's a silly reason 17:44:35 <elliott> I would be fine with its combinators specialised to functions, though 17:44:45 <elliott> No it isn't, I /really/ don't like arrows 17:44:52 <Deewiant> Yeah, really we should have Data.Tuple with equivalents 17:44:55 <Deewiant> (And that in the Prelude) 17:45:07 <elliott> What about +++ and ||| :P 17:45:09 <elliott> I use them literally ALL 17:45:09 <elliott> THE 17:45:10 <elliott> TIME 17:45:12 <elliott> (all the time == never) 17:45:16 <Deewiant> ?ty (+++) 17:45:17 <lambdabot> forall (a :: * -> * -> *) b c b' c'. (ArrowChoice a) => a b c -> a b' c' -> a (Either b b') (Either c c') 17:45:22 <Deewiant> Oh yeah, ArrowChoice 17:45:31 <elliott> Data.Either I guess :P 17:45:36 <elliott> Oh, Text.Printf also should not be in the prelude 17:45:42 <elliott> At all 17:45:49 <Deewiant> Yeah true 17:46:00 <elliott> I would be fine with a properly-typed formatter combinator library though ;-) 17:46:04 <Deewiant> It's only one identifier to import anyway :-P 17:46:15 <elliott> Clearly I should finish mine and propose it be added to base 17:46:44 <elliott> Data.Bits and Control.Monad.Loops I'm not to keen on either 17:46:51 <elliott> Latter should be rolled into Control.Monad though, definitely 17:47:00 <elliott> Data.Bits is really a specialised usecase though 17:47:20 <Deewiant> import Prelude as P 17:47:22 <Deewiant> Gah 17:48:05 <Deewiant> Maybe it is, but when you use one part of it you tend to use all of it, and it's reasonably common 17:48:14 <elliott> So... 17:48:16 <elliott> import Data.Bits 17:48:28 <Deewiant> >_< 17:48:35 <elliott> What 17:48:38 <elliott> It doesn't conflict with anything 17:48:43 <elliott> When you use one part of it you tend to use all of it 17:48:46 <elliott> And it's a specialised usecase 17:48:52 <elliott> So one simple unqualified import line :P 17:49:00 <elliott> I've used Data.Bits in maybe like five files out of hundreds 17:49:27 <Deewiant> Ditto for Data.Monoid, but ++ should still be from there 17:49:39 <elliott> Monoids aren't a "specialised usecase" 17:49:48 <elliott> You use them all the time, see: every "empty" and "append" function used ever 17:50:08 <elliott> You might not define monads all that often either, but that doesn't mean you don't use them in every program that isn't "main = interact f" :P 17:50:11 <Deewiant> import Control.Applicative 17:50:11 <Deewiant> import Control.Comonad 17:50:11 <Deewiant> import Control.Monad.State 17:50:11 <Deewiant> import Data.Array 17:50:11 <Deewiant> import Data.ByteString as B hiding (groupBy, empty, any) 17:50:13 <Deewiant> import Data.Foldable 17:50:16 <Deewiant> import Data.Function (on) 17:50:18 <Deewiant> import Data.Int (Int64) 17:50:21 <Deewiant> import Data.Functor.Bind 17:50:23 <Deewiant> import Data.List (groupBy) 17:50:26 <Deewiant> import Data.Semigroup 17:50:29 <Deewiant> import Data.Semigroup.Foldable 17:50:31 <Deewiant> import Data.Semigroup.Traversable 17:50:34 <Deewiant> import Data.Traversable 17:50:36 <Deewiant> import Text.Trifecta.IntervalMap 17:50:39 <Deewiant> import Prelude as P 17:50:41 <Deewiant> import Prelude hiding (span) 17:50:41 <elliott> import Edward.Kmett.Prelude 17:50:44 <Deewiant> import System.Console.Terminfo.Color 17:50:46 <Deewiant> import System.Console.Terminfo.PrettyPrint 17:50:49 <Deewiant> import Text.PrettyPrint.Free hiding (column) 17:50:51 <Deewiant> import Text.Trifecta.Rope.Bytes 17:50:54 <Deewiant> import Text.Trifecta.Rope.Delta 17:50:56 <Deewiant> import Text.Trifecta.Highlight.Class 17:50:58 <Deewiant> import Text.Trifecta.Highlight.Effects 17:51:01 <Deewiant> import qualified Data.ByteString.UTF8 as UTF8 17:51:04 <Deewiant> Where's <> 17:51:05 <elliott> That would be like six lines with Edward.Kmett.Prelude 17:51:12 <elliott> <> is semigroup I think 17:51:21 <elliott> Or uh semigroupoids 17:51:24 <elliott> What's the difference 17:51:27 <elliott> No, not semigroupoids 17:51:30 <elliott> Semigroups 17:51:33 <elliott> http://hackage.haskell.org/packages/archive/semigroups/0.8/doc/html/Data-Semigroup.html 17:51:42 <copumpkin> wat 17:51:42 <Deewiant> Where's <+> 17:51:54 <elliott> Hmm, <+> is probably... 17:52:04 <elliott> Data.Semigroup.Foldable or Data.Semigroup.Foldable 17:52:14 <Deewiant> Wrong 17:52:21 <elliott> Hmmm 17:52:25 <elliott> Oh, probably Control.Comonad 17:52:27 <Deewiant> Not Data.Semigroup.Traversable either 17:52:29 -!- DH____ has joined. 17:52:37 <Deewiant> Nope, not Comonad 17:52:41 <elliott> xNo wait 17:52:42 <elliott> Data.Functor.Bind 17:52:48 <elliott> Where the hell ist hat on Hackage 17:52:56 <Deewiant> Nope, not there 17:53:04 <elliott> Oh wait 17:53:07 <elliott> I know <+> 17:53:07 <elliott> Duh 17:53:14 <elliott> It's from the spj prettyprinter library thing 17:53:22 <elliott> It'll be the ANSI terminal derivative used there 17:53:26 <Deewiant> Ah 17:53:32 <Deewiant> Text.PrettyPrint.Free, got it 17:53:48 <elliott> Deewiant: In fairness, importing everything used from the prettyprinting library would be a pain 17:53:56 <elliott> copumpkin: wat? 17:54:01 <copumpkin> wat 17:54:05 <elliott> copumpkin: wat? 17:54:05 <copumpkin> thom 17:54:07 -!- Taneb|Hoverpack has changed nick to Taneb. 17:54:12 <elliott> copumpkin: wat? 17:54:16 <copumpkin> http://en.wikipedia.org/wiki/Angkor_Thom 17:54:18 <Deewiant> import Text.PrettyPrint.Free (Pretty(pretty, prettyList), vsep, (<+>), nest, indent, columns, align, hcat) 17:54:22 <Deewiant> Not really 17:54:25 <elliott> copumpkin: wat? 17:54:33 <Deewiant> Where's window 17:54:39 <elliott> Show me the usage 17:54:43 <copumpkin> http://en.wikipedia.org/wiki/Angkor_Wat 17:54:47 <elliott> copumpkin: I'm aware 17:54:48 <Deewiant> (lo, hi) = window (column d) ll (min (max (cols - 2) 30) 200) 17:55:05 <Deewiant> Oh, it's in there 17:55:20 <elliott> Guesses: Text.Trifecta.IntervalMap, Text.Trifecta.Rope.Delta, Text.Trifecta.Highlight.{Class,Effects}, 17:55:28 <elliott> Data.Functor.Bind 17:55:29 <elliott> One of those 17:55:31 <elliott> Oh 17:55:32 <Deewiant> Text.Trifecta.Diagnostic.Rendering.Prim 17:55:35 <elliott> Fuck you :P 17:55:58 <elliott> But seriously, what's Data.Functor.Bind 17:56:04 * elliott hayoos it 17:56:09 <elliott> Oh, it's in semigroupoids 17:56:44 <elliott> "A Monad sans return." 17:56:46 <elliott> The most useful 17:56:56 <elliott> (Okay, it /is/ fairly useful) 17:57:48 <elliott> "Neil Bickford calculated the first 458 million terms for the continued fraction of pi, breaking the previous record of 180 million. He used Mathematica to develop his code and verify his results—which he posted shortly after he turned 13." --Wolfram blog 17:57:52 <elliott> "On October 17th, I calculated approximately 458,000,000 terms of pi in about 3 hours on a 64-bit machine running Windows on a Core 2 Duo @ 3.00 GHz. This was later verified using Mathematica…. The program was coded in C#, has a command-line interface (with menus!), and uses Emil Stefanov’s wrapper of GNU MP for the BigInteger multiplications." --the author of the code 17:58:00 <elliott> "used Mathematica to develop his code" indeed 17:58:52 <Deewiant> The guy also isn't as clever as everybody seems to think 17:59:42 <Deewiant> He essentially did some brute-forcing, hooray? 18:00:06 <Deewiant> Like the sliding puzzle thing 18:00:11 <elliott> http://nbickford.wordpress.com/ seems to be a better argument for his intelligence than calculating a continued fraction :-P 18:00:15 <Deewiant> The toughest puzzle he’s found so far—the one pictured above—takes 132 moves to solve, although Bickford still needs to verify the result. To get the solution, he generated every possible puzzle in Mathematica, and then solved them all in another program. It took 48 days to run, so he’d like to speed up that computation. 18:00:23 <elliott> Not that I've done everything but a bunch page downs 18:00:27 <elliott> s/everything/anything/ 18:01:00 <Deewiant> I mean his not stupid but he's not anything /special/ either, other than that he's atypically young 18:01:03 <Deewiant> he's* 18:01:13 <Deewiant> Damn, I don't think I've ever managed that typo 18:01:54 <elliott> Well, it's more "this doesn't prove he's anything special", not "he's not anything special", no? I mean, bruteforcing something doesn't mean you're not intelligent otherwise 18:02:07 <Deewiant> Yes, of course 18:02:28 <Deewiant> I was speaking only in terms of the info in the Wolfram blog post 18:02:32 <elliott> Right 18:02:48 <elliott> Apparently Gosper tutors him... although my source here is Quadrescence's reddit account so take that with the fewest grains of salt you have in your collection of salt 18:03:51 <elliott> Now I shall prove my superiority to this fucking whippersnapper by writing some Markov chains 18:04:15 -!- DH____ has quit (Ping timeout: 260 seconds). 18:04:57 <elliott> Actually that sounds boring, I'll just stare at this shiro code and watch people on IRC instead 18:05:01 <elliott> This is how you get ahead 18:05:21 <Deewiant> Wow, Data.Sequence use 18:05:26 <elliott> What of it 18:05:29 <Deewiant> I don't think I've ever actually seen anything use it 18:05:40 <elliott> I use it fairly often because oerjan tells me to 18:05:50 <Deewiant> What do you use it for 18:05:54 <elliott> It's used for the ropes in Trifecta IIRC 18:05:58 <elliott> Deewiant: I don't remember my programs 18:06:07 <Deewiant> Meh 18:06:09 -!- boily has quit (Ping timeout: 252 seconds). 18:06:31 <elliott> Deewiant: Data.Sequence is literally just a rope done with finger trees, so ostensibly it should be suitable for just about anything 18:06:46 <Deewiant> Yeah, pretty much 18:06:58 <Deewiant> In practice people seem to just use [] or something very specialized 18:07:03 <elliott> Deewiant: I wouldn't mind [] becoming Seq :-) 18:07:17 <elliott> Although we'd really need pattern synonyms 18:07:19 <elliott> So you could say 18:07:27 <elliott> pattern x:xs = viewl -> x |> xs 18:07:51 <elliott> Hmm, I might have to write Shiro 2 soon; this code is starting to irritate me 18:08:27 -!- nooga_ has joined. 18:08:49 <elliott> I'm not really sure how to optimise it beyond the fungespace at this point 18:09:24 <Deewiant> You'd use pattern guards or view patterns, I guess 18:09:30 <elliott> To optimise Shiro? 18:09:39 <Deewiant> No, instead of pattern synonyms 18:09:47 <Deewiant> If you can optimize Shiro with them I commend you 18:09:52 <elliott> Deewiant: Ehh, I'd rather pattern synonyms just be added 18:10:00 <elliott> she has them, so it's exactly hard to implement :P 18:10:02 <elliott> erm 18:10:04 <elliott> she has them, so it's not exactly hard to implement :P 18:10:20 <Deewiant> Overloading always worries me :-P 18:10:27 <elliott> Deewiant: Overloading howso? 18:10:54 <Deewiant> The : in x:xs 18:10:57 <elliott> Erm, <elliott> pattern x:xs = viewl -> x |> xs should be: 18:11:06 <elliott> pattern x:xs = viewl -> x :< xs 18:11:11 -!- nooga has quit (Ping timeout: 260 seconds). 18:11:20 <elliott> Deewiant: You mean because it can't be used in expressions? 18:11:46 <elliott> I'd require a function definition for every pattern guard, with the obvious isomorphism property being expected of the programmer 18:12:16 <Deewiant> Okay at this point I'm going to state that I don't think I understand what you mean in that pattern x:xs line 18:12:27 <elliott> f (x:xs) = ... 18:12:28 <elliott> --> 18:12:32 <elliott> f (viewl -> x :< xs) = ... 18:12:41 <Deewiant> Isn't that exactly a view pattern? 18:12:51 <elliott> No? The closest you can get is the latter 18:12:57 <elliott> Or equivalently, (uncons -> (x,xs)) 18:13:03 <Deewiant> Yeah, okay 18:13:09 <elliott> In fact, you'd need 18:13:10 <Deewiant> So how is : defined for the above 18:13:13 <elliott> (uncons -> Just (x,xs)) 18:13:20 <elliott> Deewiant: By the pattern 18:13:25 <elliott> You'd do something like 18:13:26 <elliott> (:) :: a -> [a] -> [a] 18:13:26 <elliott> (:) = (|>) 18:13:26 <elliott> pattern x:xs = viewl -> x :< xs 18:13:40 <elliott> Most of the time, the value and pattern definition would be the same 18:13:48 <elliott> So I agree being "able" to define them separately is a wart in some sense 18:13:56 <elliott> But if you restrict them, you can't e.g. do exactly that ;-) 18:14:06 <elliott> Since the first element of a Seq doesn't correspond to a traditional pattern 18:14:10 <Deewiant> The function (:) can't be defined as part of [] as usual? 18:14:20 <Deewiant> Or did you mean [a] = Seq a there 18:14:31 <elliott> Deewiant: Yes, that's what I'm saying; to make [] a Seq, we'd need pattern syonyms 18:14:32 <elliott> synonyms 18:14:38 <elliott> Or they'd be a pain to use 18:14:44 <elliott> (Or a special case in the compiler but ugh) 18:14:52 <Deewiant> So you wouldn't have [] as it is now at all here 18:15:05 <elliott> Data.LinkedList 18:15:16 <Deewiant> Right, that's what tripped me up 18:15:21 <elliott> Right 18:15:43 <elliott> You need pattern synonyms to process any kind of complex AST really 18:15:44 <Deewiant> I thought you'd have (:) as usual in addition to that (:) 18:15:52 <elliott> (Try writing a Language.C program if you don't believe me) 18:16:12 <Deewiant> Language.C? 18:16:16 <elliott> Also for things like Mu-recursive data types to use generic annotations and the like (again an AST being the motivating example 18:16:17 <elliott> ) 18:16:29 <elliott> Deewiant: http://hackage.haskell.org/package/language-c 18:16:37 <elliott> It's a framework for processing/analysing/transforming C99 code 18:16:44 <elliott> It's wonderful but dear god the AST is a pain to match on 18:16:55 <elliott> For instance 18:17:03 <elliott> transformItem :: GCTypeInfo -> CBlockItem -> State (Set String) [CBlockItem] 18:17:03 <elliott> transformItem ti x@(CBlockDecl decl@(CDecl _ decls _)) | relevant decl && loltrace decls = do 18:17:03 <elliott> forM_ decls (\(Just (CDeclr (Just ident) _ _ _ _),_,_) -> modify (Set.insert (identName ident))) 18:17:03 <elliott> return [x, CBlockStmt (CExpr (Just (CCall (CVar (internalIdent "GGC_PUSH") internalNode) [CVar (internalIdent "foo") internalNode] internalNode)) internalNode)] 18:17:03 <elliott> where relevant (CDecl spec _ _) = any interesting spec 18:17:05 <elliott> interesting x@(CTypeSpec (CTypeDef (Ident name _ _) _)) = name `Map.member` ti 18:17:09 <elliott> interesting _ = False 18:17:11 <elliott> ... 18:17:13 <elliott> where yeah x@(CAssign op (CMember (CVar ident@(Ident name _ _) _) field True _) to ni) = do 18:17:15 <elliott> ... 18:17:25 <Deewiant> heh 18:17:26 <elliott> The previous version I had was even more deeply nested and awful 18:17:39 <Deewiant> Well, that's ASTs for you 18:17:45 <elliott> Yeah, which is why we need pattern guards :-P 18:17:46 <Deewiant> They can't really not be nested :-p 18:17:50 <Deewiant> synonyms* 18:18:24 <elliott> where yeah x@(op := (Var ident@(Ident name _ _) :. field)) = ... 18:27:52 -!- Vorpal has joined. 18:28:45 -!- MSleep has quit (Ping timeout: 260 seconds). 18:31:41 <elliott> "Why serve up the orange homage to Szent-Gyorgy today? Guessing the Googlers is a fool's errand but the folks at SearchEngineWatch do note that flu season is right around the bend." --CBS 18:31:44 <elliott> "alt="Albert Szent-Gyorgyi&#39;s 118th Birthday" title="Albert Szent-Gyorgyi&#39;s 118th Birthday"" --Google 18:37:22 <Gregor> lol, that is wildly non-mysterious :P 18:37:30 <Gregor> It's a fool's errand! 18:37:43 <Gregor> "He is credited with discovering vitamin C and the components and reactions of the citric acid cycle." 18:37:45 <Gregor> WHAT COULD IT MEAN 18:38:29 <elliott> Gregor: Well yeah, they do figure that part out in the article :P 18:38:34 <elliott> But then they're like WHY TODAY???????? 18:38:37 <elliott> WHO KNOWS????? 18:39:03 -!- zzo38 has joined. 18:39:22 <Gregor> ... 18:39:23 <Gregor> lol 18:39:42 <zzo38> ... 18:39:54 <elliott> lol 18:41:46 -!- Taneb has quit (Quit: closing). 18:43:23 <zzo38> I have a copy of some of the CGA Collection games, including information about many of them (although not all of the programs) 18:43:57 <zzo38> This is the games: http://zzo38computer.cjb.net/GAMES/cgacoll1.zip 18:45:10 -!- Taneb has joined. 18:46:58 <zzo38> Do you like this games? 18:47:51 <Gregor> Copyright infringement! (Probably?) 18:48:29 <elliott> I'm pretty sure they're zzo's games. 18:48:55 <zzo38> Gregor: It is public domain. 18:49:13 <Gregor> Oh :P 18:49:31 <zzo38> And all of them source-codes available. 18:49:37 <zzo38> All are DOS games. 18:51:31 <Deewiant> Okay I've decided I can't use trifecta due to this tab business 18:52:12 <elliott> Deewiant: Are you srs 18:52:21 <Deewiant> instance Semigroup Delta where 18:52:24 <Deewiant> Tab x y a <> Tab x' y' b = Tab x (nextTab (y + x') + y') (a + b) 18:52:35 <elliott> Yeah, but I don't think Tab is actually used there 18:52:39 <elliott> Maybe it's used in the layout stuff 18:52:42 <Deewiant> It is used 18:52:51 <Deewiant> > parseTest (string "\t" >> string "x") "\ty" 18:52:51 <Deewiant> (interactive):1:9: error: expected: "x" 18:52:51 <lambdabot> Not in scope: `parseTest'Not in scope: `string'Not in scope: `string' 18:52:54 <elliott> Why does it matter so much anyway, considering that no editor on the planet considers tabs to be one column 18:53:09 <Deewiant> Because many editors on the planet consider tabs to be something other than 8 columns 18:53:26 <elliott> Yep, but if you consider them one column, it'll be useful to exactly zero people 18:53:27 <Deewiant> And it helps for the column number to match something that your editor can conveniently tell you :-P 18:53:41 <elliott> My editor can't conveniently tell me that 18:53:43 <Deewiant> Considering them one column gives you the byte offset 18:53:43 <elliott> At least I don't think it can 18:53:48 <Deewiant> Mine can 18:53:49 <elliott> Anyway, since trifecta's diagnostics show the line 18:53:53 <elliott> And draw a little arrow to the relevant part of the line 18:53:58 <elliott> I think the column number is pretty irrelevant :P 18:54:07 <elliott> <Deewiant> Considering them one column gives you the byte offset 18:54:10 <elliott> No, it gives you the codepoint offset 18:54:39 <Deewiant> Or grapheme cluster offset, depending on how Unicodey trifecta is 18:54:55 <elliott> I doubt it's that Unicodey 18:55:03 <elliott> But anyway, 18:55:04 <elliott> <elliott> Anyway, since trifecta's diagnostics show the line 18:55:04 <elliott> <elliott> And draw a little arrow to the relevant part of the line 18:55:04 <elliott> <elliott> I think the column number is pretty irrelevant :P 18:55:06 <Taneb> You what I've just noticed 18:55:12 <Deewiant> In my defence clang reports an error like that as 1:2 not 1:9 18:55:13 <Taneb> The video for Take On Me 18:55:16 <elliott> (OK, so sometimes it even highlights sections of the line rather than just using an arrow.) 18:55:16 <zzo38> Why do you need to parse tabs depending on their number of columns anyways? 18:55:19 <Deewiant> So trifecta isn't very clang-styley! 18:55:24 <elliott> Deewiant: Oh no! 18:55:26 <Taneb> Everything starts going wrong when the comic is put in the bin 18:55:31 <elliott> I don't think clang ever highlights the source code, either. 18:55:37 <Deewiant> Eh? 18:55:46 <elliott> Well, I heard murmurings that trifecta could do that. 18:55:50 <elliott> Something involving HsColour. 18:55:53 <elliott> Maybe I wrong. 18:56:07 <Deewiant> That'd probably involve telling it how to do it for whatever you're parsing 18:56:13 <elliott> Deewiant: trifecta has had two Hackage uploads today 18:56:15 <zzo38> Generally tabs use to separate fields though, such as in tab-separated-values, or in gopher menus. 18:56:20 <elliott> Deewiant: If you complained, I bet you could make that three :-P 18:56:27 <Deewiant> Eh, I doubt it 18:56:29 <zzo38> And if you can set tab stops, then use it to organize columns in anything 18:56:48 <Deewiant> I don't really have the energy to try and convince him, especially if he's like ais 18:57:01 <elliott> I doubt he's like ais, I bet he's just going by what Haskell considers 18:57:03 <elliott> Which is tab = eight spaces 18:57:12 <elliott> Because layout parsing 18:57:16 <Deewiant> And the alternative is making a very deeply-ingrained thing configurable in a small way, breaking probably half the code 18:57:26 <elliott> No it isn't, just put tabWidth in the delta 18:57:46 <zzo38> That is one problem with layout parsing of Haskell programs containing tabs. I suggest either not using tabs or not using layout. 18:57:50 <elliott> Hmm, you'd need to special case tabWidth=one because of modulo 18:57:53 <elliott> But w/e 18:57:58 <Deewiant> I don't even know where he should put tabWidth 18:58:11 <elliott> Delta 18:58:12 <Deewiant> You need to pass it from the top-level parser call methinks 18:58:26 <elliott> Aren't Deltas a monoid 18:58:35 <elliott> In which case you just need to replace wherever mempty is called 18:58:36 <Deewiant> Yes 18:58:36 <elliott> Maybe 18:58:45 <elliott> Assuming all deltas are derived from mempty 18:58:58 <Deewiant> Tab x y a <> Tab x' y' b = Tab x (nextTab (y + x') + y') (a + b) 18:59:01 <Deewiant> nextTab :: Int64 -> Int64 18:59:02 <Deewiant> nextTab x = x + (8 - mod x 8) 18:59:05 <elliott> Dude 18:59:07 <elliott> Tab is a constructor of Delta 18:59:14 <Deewiant> Yes, and 18:59:23 <Deewiant> My point is that there's a lot of Tab-unpacking :-P 18:59:25 <elliott> Tab x y a tw <> Tab x' y' b tw = Tab x (nextTab tw (y + x') + y') (a + b) 18:59:29 <elliott> Deewiant: In the instance? No shit 18:59:44 <elliott> I tend to deconstruct data types a lot from their module 19:00:05 <elliott> Anyway, I still don't think a single person will ever look at the column number if they have an arrow pointing to the relevant character 19:00:29 <Deewiant> Meh 19:00:29 <Deewiant> FINE 19:00:36 <zzo38> When I make preprocessor of Haskell, I can simply solve this problem by not parsing layout at all. 19:01:19 <elliott> Deewiant: I think zzo38 is solving your problem here 19:01:25 <elliott> You should probably implement whatever he's talking about 19:01:28 <Deewiant> No I think he's solving his own 19:01:39 <elliott> Well, aren't zzo38's problems everyone's, in some sense 19:01:44 <zzo38> Deewiant: Yes, I am solving my own 19:01:56 <zzo38> But if it helps you, then you might be able to use it. Otherwise, it don't . 19:02:58 <Deewiant> elliott: Haha, speaking of Hackage uploads today 19:03:04 <Deewiant> The docs have changed in the meanwhile 19:03:06 <Deewiant> Where's lookAhead now/ 19:03:11 <Deewiant> s/\/$/?/ 19:03:14 <elliott> Awesome 19:03:27 <elliott> http://hackage.haskell.org/packages/archive/trifecta/latest/doc/html/Text-Trifecta-Parser-Class.html#v:lookAhead 19:03:30 <elliott> Still where it was? 19:03:35 <Deewiant> Oh, whoops 19:03:40 <Deewiant> cabal update is a good thing to run 19:03:50 <elliott> Oh that wacky Deewiant 19:04:09 <elliott> Aw feck, I have a bunch of global GHC packages now unintentionally 19:04:17 <elliott> Time to trash 'em all 19:04:21 <Deewiant> Why is that a problem 19:04:42 <Deewiant> Whee, building 142 Haskell modules 19:04:43 <elliott> Because cabal-dev 19:04:59 <elliott> The chances of getting broken packages as t goes to infinity are one 19:05:07 <Deewiant> C++ projects are typically faster to compile than Haskell ones because at least they can build in parallel 19:05:12 <elliott> At least with cabal-dev it's easier to get working again 19:05:27 <elliott> Deewiant: You can build Haskell modules in parallel too 19:05:31 <elliott> GHC just doesn't 19:05:49 <Deewiant> If "cabal install" doesn't then I'm going to say you "can't" 19:05:59 <Deewiant> Because the alternative is slower than building serially :-P 19:06:36 <elliott> Time to bootstrap HsColour again 19:06:45 <elliott> Deewiant will now ask me what that means and why I need to do that 19:07:09 <Deewiant> Btw, if cabal-install can install source codes in the local haddock docs, please tell me how 19:07:17 <elliott> Hahaha 19:07:19 <elliott> That's why I need to do that 19:07:26 <Deewiant> It can do that these days? 19:07:31 <elliott> It has always been able to do that 19:07:35 <elliott> OK, sit down, children, and listen 19:07:38 <elliott> Here's a tutorial 19:08:29 <elliott> Deewiant: Wipe your .cabal and .ghc. Download hscolour from Hackage. runhaskell Setup.hs configure --user, build, install, clean, configure --user, build, haddock --hyperlink-source, install. Download cabal-install. Find the configure/build/install lines, and insert after build: 19:08:32 <elliott> ./Setup haddock ${VERBOSE} --hyperlink-source \ 19:08:32 <elliott> || die "Building the ${PKG} package's documentation failed" 19:08:39 <elliott> Re-bootstrap 19:08:41 <elliott> Install 19:09:01 <elliott> I /think/ cabal-install automatically does haddock --hyperlink-source if you have it intsalled 19:09:27 <elliott> It would be nice if I could get highlighted source for the global base packages too, sigh 19:09:28 <Deewiant> Okay so it was more the pain of getting Haddock to work, then 19:09:36 <elliott> Well Haddock works without all that, it's just hscolour 19:09:52 <Deewiant> I have hscolour, but my haddock doesn't recognize --hyperlink-source 19:10:03 <elliott> It's not haddock 19:10:08 <elliott> It's Setup.hs haddock 19:10:13 <Deewiant> But anyway I'll replace "wipe your .cabal and .ghc" with "wait until extra/ghc switches to a new version" 19:10:26 <Deewiant> Setup.hs haddock is haddock 19:10:31 <elliott> Oh hmm 19:10:33 <elliott> You just need to do 19:10:41 <elliott> --haddock-options=--hyperlink-source on every cabal-install call, it seems 19:10:58 <elliott> Heh 19:11:09 <elliott> Maybe there's a ~/.cabal/config option for that 19:11:14 <Deewiant> Probably 19:11:16 <elliott> I guess I never actually checked to see if the source links were being generated 19:12:41 <elliott> Oh well, I'd like to keep with only one cabal-install'd package, anyway 19:12:59 <elliott> (i.e., cabal-dev) 19:13:18 -!- nooga_ has quit (Ping timeout: 260 seconds). 19:13:35 <Deewiant> http://hackage.haskell.org/packages/archive/trifecta/0.46/doc/html/Text-Trifecta-Parser-It.html 19:13:45 <Deewiant> Text.Trifecta.Parser.It 19:13:46 <Deewiant> harder, better, faster, stronger... 19:13:54 <Deewiant> What the hell is this? 19:14:07 <elliott> An internal module with a Daft Punk quote as its only documentation? 19:14:09 <elliott> HTH 19:14:15 <elliott> data It r a 19:14:15 <elliott> = Pure a 19:14:15 <elliott> | It a (r -> It r a) 19:14:15 <Deewiant> It's exported 19:14:19 <elliott> Looks like an iterator of some description 19:14:31 <Deewiant> It's a cofree comonad 19:14:35 <Deewiant> That's its other documentation 19:14:41 <elliott> That's the documentation of the Comonad instance 19:14:46 <elliott> -- | Return the text of the line that contains a given position 19:14:47 <elliott> rewindIt :: Delta -> It Rope (Maybe Strict.ByteString) 19:14:54 <elliott> It's just some kind of iterator 19:18:06 <elliott> Deewiant: BTW, my official recommendation wrt parsers is that you wait until mine is out 19:18:17 -!- Wamanuz2 has quit (Remote host closed the connection). 19:18:18 <Deewiant> That's not a very useful recommendation 19:19:09 <Deewiant> How many instances will I need to make Text trifecta-Parseable, I wonder 19:19:23 <elliott> Don't, just use ByteStrings, it parses UTF-eight 19:19:33 <elliott> Supposedly it's fast 19:19:52 <elliott> Deewiant: Anyhow, don't you /want/ a derivative-based (so it supports any CFG, including left-recursive ones, efficiently in practice) parser combinator library that supports incremental input (like all the fancy libraries do these days) library with hopefully nice diagnostics???? 19:20:28 -!- Taneb has quit (Ping timeout: 240 seconds). 19:20:57 <Deewiant> But Data.Text has toCaseFold, it's all Unicodey 19:21:02 <elliott> s/list of advantages of derivative-based parsers/that list, plus (<|>) being commutative/ 19:21:28 <elliott> Deewiant: If you use it in your parser, why not just create the relevant text for the snippet inside the parser 19:21:31 <zzo38> I used Parsec to make parsing in Haskell 19:21:41 <elliott> OK, that's probably slow :P 19:21:45 <elliott> Well 19:21:47 <elliott> Maybe not that slow 19:21:51 <Deewiant> http://abstrusegoose.com/_007297.htm 19:22:19 <Deewiant> I'm not really tied to any particular string type at this point 19:22:36 <Deewiant> Data.Text just looked like "the hot new thing" 19:22:52 <elliott> Data.Text.Text is my perfectprelude's String 19:23:03 <elliott> (perfectprelude as in what you were saying needs to go into Prelude, not something that actually exists) 19:23:10 <elliott> Well 19:23:11 <Deewiant> It has O(n) cons 19:23:11 <elliott> That's a lie 19:23:16 <Deewiant> That makes it kinda annoying 19:23:17 <elliott> I want all the functions and properties 19:23:20 <elliott> But a better implementation 19:23:24 <elliott> i.e. 19:23:25 <elliott> A rope :) 19:23:31 <Deewiant> Meh, ByteString it is 19:23:34 <Deewiant> How old-fashioned 19:23:40 -!- Wamanuz has joined. 19:23:45 <elliott> Something like... a rope of what is Text now 19:23:50 <elliott> Except UTF-eight 19:23:58 <coppro> +++++ 19:23:58 <elliott> With the lengths cached properly 19:24:00 <elliott> i.e. not length in bytes 19:24:02 <elliott> coppro: What 19:24:02 <coppro> +++++++++++++++ 19:24:03 <Deewiant> Either ISO88591 UTF32 19:24:14 <elliott> Deewiant: I vomited 19:24:25 <Deewiant> I doubt it 19:24:34 <elliott> My IRC persona did 19:24:39 <Deewiant> Something I ran into recently used that, I can't remember what it was 19:24:43 <Deewiant> (Might not have been Haskell) 19:25:07 <elliott> Ooh, I know how to speed Shiro up; cabal-dev install --ghc-opts="-O2" 19:25:13 <elliott> Then all my dependencies will get MOAR OPTIMISATION 19:25:26 <elliott> I'm so glad nobody mature is in here to tell me how stupid that is 19:25:29 <Deewiant> Doesn't cabal-install do that by default? 19:25:47 <Deewiant> -- optimization: True 19:25:50 <Deewiant> I imagine that means something 19:25:52 <elliott> cabal defaults to -O1 nowadays because -O2 is slow 19:25:57 <elliott> And doesn't help much for most things 19:26:02 <elliott> much ~ at all 19:26:07 <Deewiant> Meh, that sucks 19:26:16 <elliott> You were just complaining about how slow Haskell building was 19:26:36 <Deewiant> But MOAR OPTIMIZATION, dude 19:26:54 -!- oerjan has joined. 19:27:01 <zzo38> GHC is written in Haskell, so if they fix it to run faster (and possibly, less memory; this result in less page faults too), then it should compile faster, too. 19:27:02 <Deewiant> But I was also referring to -O2 not helping much 19:27:15 <Deewiant> Do the new GHCs use -fllvm by default yet? 19:27:17 -!- monqy has joined. 19:27:24 <elliott> Define new 19:27:33 <Deewiant> Darcs head 19:27:39 <Deewiant> Or git head, these days 19:27:39 <elliott> Fucked if I know 19:27:43 <oerjan> istr -O2 only gives marginal improvement over -O 19:27:46 <elliott> I don't think 7.0.4 does, but seven-point two might 19:27:49 <elliott> I'll ask the channel 19:27:54 <Deewiant> I know 7.0.x doesn't 19:28:05 <Deewiant> It doesn't even work on Arch because it depends on an old LLVM 19:28:38 <elliott> When my laptop gets back (after I send my laptop off >_>) I think I'll get me a shiny new SVN LLVM + GHC 7.2 19:28:46 <elliott> It'll be like Christmas 19:28:52 <elliott> Maybe shiro will even speed up, rather than slow down 19:29:14 <elliott> <parcs> no 19:29:16 <elliott> Deewiant: no 19:29:32 <oerjan> <elliott> When my laptop gets back <-- oh, so you finally --> (after I send my laptop off >_>) <-- oh, never mind. 19:29:36 <Deewiant> Shameful 19:29:40 <zzo38> The more -O results in a larger LLVM program, from what I tried. 19:29:42 <elliott> SpecConstr 19:29:42 <elliott> Function `a_soBN{v} [lid]' 19:29:42 <elliott> has two call patterns, but the limit is 1 19:29:42 <elliott> Use -fspec-constr-count=n to set the bound 19:29:42 <elliott> Use -dppr-debug to see specialisations 19:29:43 <elliott> SpecConstr 19:29:45 <elliott> Function `a_soBN{v} [lid]' 19:29:48 <elliott> has two call patterns, but the limit is 1 19:29:49 <elliott> Use -fspec-constr-count=n to set the bound 19:29:52 <elliott> Use -dppr-debug to see specialisations 19:29:53 <elliott> SpecConstr 19:29:54 <Deewiant> That's GHC 7.0.x for you 19:29:55 <elliott> Function `$j_soCK{v} [lid]' 19:29:57 <Deewiant> It prints that 19:29:57 <elliott> has six call patterns, but the limit is 3 19:29:58 <oerjan> </actual thought process> 19:30:00 <elliott> Use -fspec-constr-count=n to set the bound 19:30:01 <elliott> Use -dppr-debug to see specialisations 19:30:03 <elliott> I loooooooooove how you can't turn these off 19:30:05 <elliott> At all 19:30:07 <elliott> Because they're not actually warnings, the specialiser just prints them out 19:30:09 <elliott> oerjan: :-) 19:30:09 <Deewiant> Use grep 19:30:33 <elliott> I wish they were printed as warnings, but without the typical warning guard, so that -Werror failed on them 19:30:36 <elliott> That's the only way they could be more annoying 19:30:46 <elliott> By wish I mean, like, I don't know, it would be cosmically appropriate 19:30:48 <Deewiant> Man, people should use Data.Pointed more 19:30:54 <elliott> Why 19:30:57 <Deewiant> So that I could include it instead of other things 19:31:00 <Deewiant> import* 19:31:03 <elliott> I thought you were annoyed at Kmett's massive import list 19:31:08 <Deewiant> I am 19:31:10 <elliott> But no, you want more Kmett imports, more 19:31:13 <elliott> Moooore 19:31:23 <elliott> Kmetskell does not have the same ring to it. 19:31:25 <Deewiant> I want FingerTree to use it, actually 19:31:26 <elliott> s/t/tt/ 19:31:39 <elliott> Deewiant: Which FingerTree 19:31:48 <elliott> Kmett has one :-) 19:31:49 <elliott> I think 19:31:58 <Deewiant> He uses Data.FingerTree in trifecta 19:32:00 <elliott> Oh 19:32:01 <elliott> Probably not then 19:32:08 <elliott> He has a priority queue, which is close enough right? 19:32:28 <Deewiant> Evidently just using a Trifecta parser requires using a FingerTree, a Rope, a UTF8 ByteString, and an ordinary ByteString 19:32:38 <elliott> A "UTF8 bytestring"? 19:32:39 <Deewiant> Oh, the UTF8 is just for the file name 19:32:45 <elliott> That's called a ByteString with a certain type of data inside it 19:32:49 <Deewiant> Whatever man 19:32:58 <Deewiant> Add "module" to the end of the line if you want 19:33:07 <elliott> Deewiant: BTW, you said Text has O(n) cons and the like, but it's pretty much the same internally as ByteString, which has the same problems 19:33:16 <elliott> For ByteString it's probably ok because of the use-case, though 19:33:19 <Deewiant> I was comparing it to String at that time 19:33:54 <elliott> Text doesn't even do "when we grow, grow too much for speculative future use" I think because that's a pain for functional languages for some reason I don't recall 19:34:09 <elliott> So everything that's O(n) really is O(n), every single time, always 19:34:15 <zzo38> I would like to be able to use Template Haskell to generate declarations even if it is not a declaration splice. 19:35:36 <elliott> Hey Deewiant, what's a good name for Vector a -> [(Int, a -> a)] -> Vector a 19:36:09 <elliott> i.e. f v xs = v // map (\(k,f) -> (k, f (v!k)) xs 19:36:43 <oerjan> <hagb4rd> german-elite.net#gulli 19:36:47 <oerjan> sounds scary 19:36:54 <Deewiant> apply'Em 19:37:15 <hagb4rd> oerjan: it is 19:37:24 <oerjan> O KAY THEN 19:37:31 <Deewiant> elliott: apply'Em 19:37:32 <elliott> Deewiant: What 19:37:36 <elliott> Why 19:37:37 <elliott> That 19:37:38 <elliott> Is the worst name 19:37:42 <Deewiant> It's like applyThem but apply'Em 19:37:48 <elliott> It isn't applyThem either 19:38:01 <Deewiant> I know, I just can't think of anything really good so I went with something really bad and apostrophy 19:38:05 <monqy> apply'em is better than apply'Em but still bad 19:38:09 <elliott> I was thinking (%%) or (//%) or update 19:38:19 <elliott> Or even modifyV 19:38:25 <Deewiant> //% reminds me of mathematica 19:38:37 <elliott> Data.Vector.(//) does that in the first place 19:38:38 <elliott> To me 19:38:44 -!- MSleep has joined. 19:38:46 <Deewiant> //% would work for me 19:38:58 <elliott> http://permalink.gmane.org/gmane.comp.lang.agda/3127 Oh dear god, Agda is now in our browsers, using FRP 19:40:46 <elliott> modifyFPInstructions $ \v -> v //% map (\ins -> (fromEnum ins, tail)) instructions 19:40:46 <elliott> d 19:40:49 <elliott> Deewiant: Yeah that's fairly good 19:40:54 <MSleep> What's Adga? 19:41:02 <zzo38> One use of more-notation, is that haskell-src-exts has too much duplication of everything: data PExp l = Var l (QName l) ... ann e = case e of Var l qn -> l ... 19:41:11 <MSleep> Asking WIkipedia got me "American Dairy Goat Association". 19:41:17 -!- MSleep has changed nick to MDude. 19:41:43 <elliott> MDude: A dependently-typed purely-functional programming language/proof system. 19:41:48 <MDude> No wonder, I got the g and a switched. 19:42:02 <zzo38> The other one, is, pretend MSE is actually Haskell and doens't have impure functions: data Card = Card { more CardFields, cardStyle :: Maybe Style }; data Style = more Styles; renderStyle :: Style -> Render (); renderStyle s = case s of more StyleRenderers; 19:42:15 -!- sllide has quit (Ping timeout: 260 seconds). 19:42:38 <elliott> modifyFPInstructions $ \v -> 19:42:38 <elliott> let (aSem, aSems) = let x:xs = v V.! fromEnum a in (x, bSem:xs) 19:42:38 <elliott> (bSem, bSems) = let x:xs = v V.! fromEnum b in (x, aSem:xs) 19:42:38 <elliott> in v V.// [(fromEnum a, aSems), (fromEnum b, bSems)] 19:42:38 <elliott> Oh dear, this could be complicated 19:42:45 <monqy> zzoskelle is scary 19:42:54 <elliott> Mutual recursion, isn't it great 19:43:06 <Deewiant> import Control.Applicative ( (<$>), (<|>), (<*), (*>), (<*>) 19:43:06 <Deewiant> , (<**>), pure, empty, optional 19:43:06 <Deewiant> , liftA2) 19:43:10 <Deewiant> Who said importing what you use is a pain 19:43:21 <elliott> Deewiant: I call that a pain 19:43:22 <zzo38> Now you use orders in more-declarations to represent z-orders of rendering fields. 19:43:51 <oerjan> <Deewiant> ?hoogle Applicative f => f (a -> b) -> (b -> c) -> f (a -> c) 19:43:57 <Deewiant> (Note the less than 40 characters available for the symbols; thanks be to "Text.Trifecta.Parser.Combinators") 19:44:17 <oerjan> :t flip (fmap (.)) 19:44:18 <lambdabot> forall a b (f :: * -> *) a1. (Functor f) => a1 -> (a1 -> a -> b) -> f a -> f b 19:44:30 <oerjan> argh 19:45:01 <oerjan> :t flip (fmap (.) .) 19:45:02 <lambdabot> forall a b (f :: * -> *) (f1 :: * -> *) a1. (Functor f, Functor f1) => a1 -> (a1 -> f1 (a -> b)) -> f1 (f a -> f b) 19:45:15 <Deewiant> ?ty flip ((<*>) . pure . (Prelude..)) 19:45:16 <lambdabot> forall (f :: * -> *) b c a. (Applicative f) => f (a -> b) -> (b -> c) -> f (a -> c) 19:45:19 <oerjan> wth is it about flip and me again 19:45:30 <oerjan> Deewiant: no, it should _not_ require Applicative 19:45:45 <elliott> I really wish Vector was polymorphic in the index type :-( 19:45:47 <Deewiant> ?ty flip (ap . return . (Prelude..)) 19:45:48 <lambdabot> forall (m :: * -> *) b c a. (Monad m) => m (a -> b) -> (b -> c) -> m (a -> c) 19:45:57 <oerjan> Deewiant: only Functor 19:46:06 <Deewiant> I know what you meant :-P 19:46:06 <elliott> Someone make that happen, please 19:46:45 <zzo38> monqy: zzoskelle is scary? 19:46:48 <monqy> yes. 19:46:52 <monqy> zzoskelle is scary. 19:47:13 -!- CakeProphet has joined. 19:47:13 <elliott> Ha ha, I have a function here that would be made more readable with Control.Arrow but I'm not going to do it, take THAT Deewiant 19:47:13 -!- CakeProphet has quit (Changing host). 19:47:13 -!- CakeProphet has joined. 19:47:23 <Deewiant> Oh noes 19:47:28 <Deewiant> I am wounded! 19:47:43 <oerjan> :t (fmap (.) .) 19:47:44 <lambdabot> forall a b (f :: * -> *) (f1 :: * -> *) (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => f2 (f1 (a -> b)) -> f2 (f1 (f a -> f b)) 19:47:47 -!- Taneb has joined. 19:47:53 <oerjan> i think someone should assassinate Cale. 19:48:04 <oerjan> :t (fmap (Prelude..) Prelude..) 19:48:05 <Deewiant> It's pretty clearly flip (.:) 19:48:05 <lambdabot> forall b c a (f :: * -> *) a1. (Functor f) => (a1 -> f (b -> c)) -> a1 -> f ((a -> b) -> a -> c) 19:48:12 <Deewiant> ?ty flip (fmap fmap fmap) 19:48:13 <lambdabot> forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => f (f1 a) -> (a -> b) -> f (f1 b) 19:48:21 <Taneb> Cale? 19:48:25 <Deewiant> Now just substitute (Prelude..) for the appropriate fmaps 19:48:36 <Deewiant> ?ty flip (fmap fmap (Prelude..)) 19:48:36 <lambdabot> forall (f :: * -> *) b c a. (Functor f) => f (a -> b) -> (b -> c) -> f (a -> c) 19:48:51 <Deewiant> ?ty flip (fmap . (Prelude..)) 19:48:52 <lambdabot> forall (f :: * -> *) b c a. (Functor f) => f (a -> b) -> (b -> c) -> f (a -> c) 19:49:02 <oerjan> Taneb: the guy who modified (.) in lambdabot and gave no short way to write the original 19:49:17 <zzo38> monqy: What is it scary? What can it scares you? 19:49:31 <monqy> zzo38: the parts that are zzoskelle scare me 19:49:33 <elliott> Deewiant: P.S., please rename my Vector type, thanks 19:49:46 <zzo38> monqy: Then please be more specific and explain why. 19:49:47 <Deewiant> Wector 19:50:05 <monqy> (.) really should stop being fmap and start being (Control.Category..) also prelude-. should be category-. and same for id 19:50:24 <elliott> Deewiant: I find this a bad renaming 19:50:33 <elliott> Oh, so that's why I imported Data.Bits qualified 19:50:48 <monqy> zzo38: I'm not quite sure 19:51:08 <zzo38> monqy: Yes, I do think it make more sense. Since (.) and id in Category are still defined for the Hask category as well. 19:51:16 <elliott> Also, argh @ people who put (a -> Foo) into classes and say "YOU CAN'T EXAMINE THE VALUE LOL JUST PASS UNDEFINED"; Deewiant: You don't do that, do you? 19:51:22 -!- Taneb has quit (Remote host closed the connection). 19:51:50 <Deewiant> Is there an alternative to doing that when you have to do that? :-PP 19:51:57 <elliott> Yes 19:51:58 <oerjan> Deewiant: yes, use Proxy 19:52:02 <elliott> Proxy a -> Foo 19:52:03 <elliott> or 19:52:03 <elliott> Tagged a Foo 19:52:14 <elliott> They're in the same package and have conversion functions each way so I don't give a damn which you use 19:52:20 <zzo38> monqy: But I don't know why it can scare anyone 19:52:20 <elliott> The former lets the same source definitions keep working, though 19:52:25 <elliott> If you're fixing something broken 19:53:44 <Vorpal> if anyone loves a ultra-violence zombie game, I can recommend Dead Island. However, I personally find the violence a bit too much perhaps. 19:53:55 <elliott> Deewiant: Disabling fingerprints made Mycology go /slower/; please fix thanks 19:54:04 <Vorpal> s/loves a/loves/ 19:54:10 <Vorpal> s/game/games/ 19:54:17 <elliott> Vorpal: It was correct before then 19:54:21 <elliott> Although informal 19:54:27 <Deewiant> elliott: Mycology doesn't have a speed, Shiro does 19:54:30 <monqy> I've heard only good things about dead island 19:54:35 <Vorpal> elliott, yeah well that is what I got from editing it before sending it. 19:54:47 <Vorpal> elliott, even if it was correct I didn't intend it that way 19:54:49 <elliott> Heh 19:54:56 <elliott> Deewiant: I am offended 19:55:10 <Deewiant> I am okay with that 19:55:14 <Vorpal> <elliott> Deewiant: Disabling fingerprints made Mycology go /slower/; please fix thanks <-- wut 19:55:17 <elliott> Deewiant: BTW, tell me you have a backup of the RC/Funge website, or at least the fingerprints page 19:55:24 -!- Taneb has joined. 19:55:30 <Vorpal> elliott, that is opposite of my experience with cfunge and the -F switch 19:55:32 <Deewiant> The fingerprints page, yes 19:55:35 <Deewiant> Not sure how recent though 19:55:38 <Deewiant> It might be e.g. 5 years old 19:55:39 <Vorpal> so you are probably doing something wrong 19:55:40 <elliott> I rather suspect it will stop existing sometime within the next few years due to obviously being completely unmaintained 19:55:43 <elliott> Deewiant: lol 19:55:53 <elliott> Vorpal: It's within rounding error range 19:55:55 <Vorpal> elliott, I believe I have a backup, on a computer that is dual-booted to another OS atm. 19:55:59 <Vorpal> is the site down? 19:56:03 <elliott> Vorpal: No, I was just checking 19:56:10 <elliott> I'll mirror it myself for funge-archive when I get around to adding more 19:56:35 <Deewiant> It's in the wayback machine, I wouldn't worry 19:56:48 <elliott> Fair enough 19:57:30 <elliott> Does anyone (i.e. Deewiant or oerjan) have a nicer way of writing 19:57:34 <elliott> let (aSem, aSems) = let x:xs = v ! a in (x, bSem:xs) 19:57:35 <elliott> (bSem, bSems) = let x:xs = v ! b in (x, aSem:xs) 19:57:36 <elliott> in v // [(a, aSems), (b, bSems)] 19:57:37 <Vorpal> elliott, oh and downside with dead islands: load screen takes ages. Sure I'm using a slightly older hdd for windows, but 15 minutes is *absurd* 19:57:39 <elliott> I mean, I find it kind of elegant 19:57:41 <elliott> Just wondering 19:57:41 <Vorpal> and one* 19:57:44 <Deewiant> Also argh, can I tell firefox to not URL-escape stuff when expanding keyworded bookmark 19:57:47 <Deewiant> +s 19:58:02 <Taneb> Done some more work on Salesman 19:58:27 <Vorpal> <Deewiant> It's in the wayback machine, I wouldn't worry <-- not the binary files though? 19:59:17 <zzo38> How can they make compiled Haskell programs smaller? There could be some mode to tell it assume not to have errors, to compile it in that way by option 19:59:37 <Sgeo> islands? 20:00:03 <Deewiant> Noo System.Console.TermInfo.PrettyPrint 20:00:06 <Sgeo> zzo38, that sounds more likely to make compilation faster than to make the resulting binary smaller 20:00:12 <Deewiant> Why must you be even longer than Text.Trifecta.Parser.Combinators 20:00:21 <elliott> Deewiant: What are you even doing 20:00:22 <Sgeo> But it also defeats a large point of the purpose of Haskell. 20:00:28 <elliott> Oh, importing things? 20:00:38 <Deewiant> elliott: I'm trying to write parse :: Parser BS.ByteString a -> BS.ByteString -> Result s a and am now importing things, yes 20:00:54 <elliott> Deewiant: This will make you happy: https://github.com/ekmett/trifecta/commit/83133201c95d142c6faf5c9e3c6384aea4515c62 20:01:01 <zzo38> Sgeo: Maybe it is. But, it is one reason it should be option; not the default way. 20:01:02 <elliott> Although it doesn't fix the one you were complaining about 20:01:26 <Deewiant> Yeah, it would've made me happy a moment ago 20:01:29 <Deewiant> But not any more 20:01:29 <Taneb> I have done some more work on Salesman 20:01:31 <Deewiant> Although it might still 20:01:38 <Deewiant> Depending on whether I actually need prettyTerm here 20:01:39 <elliott> Wow, I know why disabling fingerprints sped me up 20:01:41 <zzo38> There could also be an option for simple errors, where it does not keep track of information about error but still knows to stop in case of error. 20:01:50 <elliott> Deewiant: Vorpal: -O2 on everything slowed things down 20:01:52 <elliott> Neat. 20:01:54 <elliott> oerjan: too 20:01:56 <zzo38> Either way, it could possibly remove information about errors from the executable file 20:02:18 <elliott> oerjan: Also you didn't answer my question :-P 20:03:08 <Vorpal> elliott, -O2 to what? clang? 20:03:11 <elliott> What, how do I depend on parsec 20:03:13 <elliott> Vorpal: ghc 20:03:16 <Vorpal> ah 20:03:27 <elliott> I guess one of my dependencies depends on parsec 20:03:34 <Vorpal> elliott, maybe you use parsec to "parse" befunge XD 20:03:41 <elliott> No, I dno't 20:03:42 <elliott> don't 20:03:56 <elliott> That's Shiro.Fungespace.mergeByteString 20:04:01 <elliott> The ugliest function in my program 20:04:09 <elliott> Shiro.Fungespace.insertFS is the second-ugliest 20:06:13 <zzo38> Is this a right way of State monad? get :: State s s; get = State $ join (,); put :: s -> State s s; put = State . flip (,); 20:06:33 <elliott> put does not look right. 20:06:51 <zzo38> I know it is the wrong type of the actual State monad. 20:07:26 <zzo38> But this way seems to work as far as I can tell 20:07:36 -!- boily has joined. 20:08:04 <elliott> Well, you haven't told us the definition of State there 20:09:00 <elliott> Deewiant: Wait, -Otwo didn't really slow things down, I think (//percent sign) did 20:09:21 <zzo38> I used newtype State s t = State { runState :: s -> (t, s) }; 20:09:22 <Deewiant> When benchmarking, change only one thing at a time :-) 20:09:26 <elliott> How is this program so goddamn fidgety 20:09:32 <elliott> I can't change a single thing without it breaking 20:09:57 <elliott> :t flip (,) 99 20:09:58 <lambdabot> forall a a1. (Num a1) => a -> (a, a1) 20:10:06 <elliott> Hmm, right, it does work 20:10:12 <elliott> The return value is really confusing though 20:10:22 <elliott> Deewiant: Yeah but come oooon 20:10:36 <elliott> Also I'm still waiting for you or oerjan to make that code nicer :-| 20:16:53 <zzo38> It is really confusing? It seem reasonable to me. 20:17:07 <monqy> you're you 20:19:46 <oerjan> elliott: let (aSem, aSems) = (bSem:) <$> splitAt 1 (v ! a) i think, requires Control.Monad.Instances iirc 20:20:21 <Deewiant> let (aSem, aSems) = head &&& (bSem:).tail $ v ! a 20:20:35 <elliott> Those are both less symmetric and therefore gross 20:20:43 <elliott> And one uses arrows 20:20:49 <Deewiant> How less symmetric 20:20:59 <Deewiant> Just define (&&&) locally 20:21:15 <elliott> Actually yours are both broken 20:21:26 <elliott> They do one fewer vector reference 20:21:28 <elliott> So they must be 20:21:39 <elliott> Oh, wait, those are just replacing each line 20:21:42 <elliott> Each line is fine, I mean the whole structure 20:21:47 <Deewiant> let ~(aSem, aSems) = head &&& (bSem:).tail $ v ! a 20:21:48 <Deewiant> ~(bSem, bSems) = head &&& (aSem:).tail $ v ! b 20:21:48 <Deewiant> in v // [(a, aSems), (b, bSems)] 20:21:57 <elliott> Each line is fine, I mean the whole structure 20:21:59 <Deewiant> There's your symmetry 20:22:29 <Deewiant> And I don't think there's much to be done about the whole structure 20:22:36 <oerjan> <elliott> Deewiant: Vorpal: -O2 on everything slowed things down <-- i think the ghc user guide even warns about that possibility. 20:23:14 <zzo38> It seem Control.Monad.State not exposing the data constructor. 20:23:37 <Deewiant> How do I get [(something positiony, error message)] out of trifecta, grr 20:24:08 <elliott> Deewiant: You want to use Trifecta, but don't want the clang-style diagnostics? 20:24:09 <elliott> Neat 20:24:15 <Deewiant> Um 20:24:16 <Deewiant> Where did I say thatt 20:24:24 <elliott> Well, you want to throw away the type of diagnostic 20:24:42 <elliott> http://hackage.haskell.org/packages/archive/trifecta/0.46/doc/html/Text-Trifecta-Diagnostic.html See Caret/Span 20:24:45 <Deewiant> That can be part of the error message for all I care 20:24:48 <elliott> And all that jazz 20:24:53 <elliott> Deewiant: Then what do you need the position for 20:24:59 <Deewiant> I need to mess with it 20:25:06 <elliott> To do what 20:25:22 <elliott> Please tell me you're not going to re-scan the line so you can adjust the column to account for tabs 20:25:26 <Deewiant> What I'm parsing has been messed with between the user inputting it and trifecta seeing it 20:25:31 <elliott> Gross, why 20:26:03 <oerjan> *elliott: let ([aSem], aSems) = (bSem:) <$> splitAt 1 (v ! a) i think, requires Control.Monad.Instances iirc 20:26:23 <Deewiant> Because it's C and also because I haven't bothered to look into how to fix the fact that my parser requires me consing a newline in front of the input 20:26:40 <elliott> Deewiant: What are you even parsing 20:26:45 <Deewiant> C, I told you 20:27:10 <elliott> Deewiant: Why are the existing C parsers inadequte 20:27:12 <elliott> inadequate 20:27:17 <Deewiant> They're not DeathStation 9000 enough 20:27:28 <elliott> You trying to steal my thunder? :P 20:27:42 <elliott> I think language-c marks all GNU extensions in the AST 20:27:57 <Deewiant> I think it has an identical source and execution character set 20:28:07 <elliott> language-c doesn't execute. 20:28:10 <elliott> It just parses. 20:28:15 <oerjan> <zzo38> It seem Control.Monad.State not exposing the data constructor. <-- that's weird, i thought i'd used it before 20:28:32 <elliott> zzo38: Use "state" 20:28:35 <elliott> :t state 20:28:36 <lambdabot> forall s a. (s -> (a, s)) -> State s a 20:28:37 <Deewiant> I think it doesn't implement the source passes precisely the way the abstract C translator does 20:28:56 <Deewiant> Anyway, conversion to execution character set happens before the conventional "parsing" stage 20:29:00 <zzo38> elliott: OK. But why is it like that? 20:29:01 <elliott> Deewiant: It doesn't do cpp (well it does, but only by invoking cpp), and you're mixing lexing and parsing too 20:29:05 <oerjan> > runState (State $ \s -> (s+s, s-s)) 1 20:29:05 <lambdabot> Not in scope: data constructor `State' 20:29:09 <oerjan> huh 20:29:09 <elliott> zzo38: Because it's StateT 20:29:13 <elliott> oerjan: Like I said, state 20:29:30 <zzo38> O, OK, that's why. Thank you for telling me. 20:29:31 <oerjan> elliott: this must be some new development? 20:29:40 <Deewiant> I'm only mixing lexing and parsing a tiny bit 20:29:42 <elliott> oerjan: mtl two, I think 20:29:47 <Deewiant> In that I gather preprocessing directives as I parse 20:29:49 <elliott> So last October 20:29:50 <Deewiant> Er, lex 20:29:51 <oerjan> :t state 20:29:51 <lambdabot> forall s a. (s -> (a, s)) -> State s a 20:29:52 <elliott> Or was it transformers 20:30:00 <elliott> Oh, mtl two switched to transformers 20:30:09 <Deewiant> And that's only because <foo> could be a header-name or less-than foo greater-than 20:30:14 <elliott> Deewiant: You're mixing lexing and parsing because you're using Parsec/Trifecta/whatever 20:30:14 <Deewiant> And disambiguating that later would be annoying 20:30:16 <elliott> Which do that inherently 20:30:20 <oerjan> elliott: gah if they did that they should have made state a MonadState method :( 20:30:30 <oerjan> one which i recall missing 20:30:34 <Deewiant> elliott: That doesn't matter? 20:30:44 <elliott> Deewiant: Neither does language-c's mixing 20:30:52 <elliott> oerjan: IIRC edwardk has complained that MonadState isn't _just_ state 20:30:56 <elliott> Since you can encode the rest with it 20:30:56 <Deewiant> elliott: It's the principle of the thing 20:31:07 <elliott> Or was it state, get, set, modify with the latter two with defaults in terms of the first 20:31:12 <elliott> Deewiant: I see 20:31:15 <oerjan> elliott: they should have defaults in terms of each other, certainly 20:31:22 <Deewiant> elliott: This doesn't matter from the POV of the abstract C machine, I'm just doing a bit of phase 3 and 4 together 20:31:29 <elliott> Deewiant: You should logread, ais and others had various ideas for DS9King in a way that points out assumptions well 20:31:42 <elliott> For instance the representation of things casted to char pointers 20:31:53 <Deewiant> I'll get to that if/when I get as far as a backend :-p 20:32:23 <elliott> Deewiant: "If"? What the world truly needs is a C parser and typechecker with absolutely nothing else :-P 20:32:41 <elliott> That's the hard part, after all ;-) 20:32:51 <Deewiant> Currently the hard part is lexing 20:33:02 <Deewiant> Diagnostic !(Either String Rendering) !DiagnosticLevel m [Diagnostic m] 20:33:07 <Deewiant> What is the Either and why 20:33:08 <elliott> The hard part of a DS9C 20:33:34 <oerjan> !haskell import Unsafe.Coerce; import Control.Monad.Instances; main = print ((' ':) `fmap` unsafeCoerce "testing" :: (Char, String)) 20:33:37 <elliott> Deewiant: http://hackage.haskell.org/packages/archive/trifecta/0.46/doc/html/src/Text-Trifecta-Diagnostic-Prim.html#tellDiagnostic 20:33:39 <EgoBot> ​( 20:33:41 <elliott> See Pretty instance, possibly other 20:33:41 <elliott> s 20:33:45 <oerjan> :( 20:34:10 <elliott> Deewiant: So which C standard are you doing 20:34:17 <Deewiant> Latest 20:34:35 -!- EgoBot has quit (Remote host closed the connection). 20:34:46 -!- EgoBot has joined. 20:34:58 -!- boily has quit (Ping timeout: 260 seconds). 20:35:01 <elliott> Oh no, pushString is one of my bottlenecks 20:35:15 <elliott> I could make it faster, but it'd require OverloadedStrings :-/ 20:35:26 <Deewiant> So enable it 20:35:33 <Deewiant> Not like you're portable to non-GHC anyway 20:35:35 <zzo38> The way I defined get and put, I can also define: post :: (s -> s) -> State s s; post f = get >>= put . f; 20:35:41 <elliott> Deewiant: All I depend on is FlexibleInstances and BangPatterns 20:35:47 <elliott> And no GHC. or Unsafe. modules 20:35:51 <elliott> Not even unsafePerformIO 20:35:54 <Deewiant> Oh, darn 20:36:02 <Deewiant> Well, you don't ever /need/ OverloadedStrings 20:36:07 <elliott> Not that anything that isn't GHC can run this, but that's just because they're all crap 20:36:09 <Deewiant> It's just convenience, you can manually convert 20:36:23 <elliott> Deewiant: Weeeeeeeeeeeeeeeeeeeeeeeell... I guess I can try and inline pushString 20:36:25 <elliott> But I'm not doing to write 20:36:34 <zzo38> In Control.State.Monad they have this example: do { n <- get; put (n+1); return n; } 20:36:45 <zzo38> But I do it this way instead: post (1 +) 20:36:56 <elliott> pushString (\stack -> fromIntegral (ord 'z') :- 'y' :- 'x' :- 0 :- stack) 20:37:06 <elliott> fromIntegral and ords omitted for two of those because I got lazy 20:37:12 <zzo38> That is why I prefer to define "put" in this way. 20:38:01 -!- DH____ has joined. 20:39:16 <oerjan> zzo38: post is usually called modify, unless they changed that too. 20:39:26 <oerjan> :t modify 20:39:27 <lambdabot> forall s (m :: * -> *). (MonadState s m) => (s -> s) -> m () 20:39:32 <elliott> oerjan: He wants -> m s 20:39:33 <elliott> For no apparent reason 20:39:59 <oerjan> well -> m s is admittedly about as intuitive as -> m () 20:40:02 <elliott> Deewiant: What, inlining pushString slows things down 20:40:15 <elliott> It fucking reverses the string and then builds a simple monadic list of actions out of them 20:40:15 <oerjan> since they are the only reasonable options 20:40:18 <Deewiant> Guess you're not calling it often enough there 20:40:22 <elliott> How can it be slowed down by having to make no assumptions about the string 20:40:23 <elliott> How 20:40:27 <elliott> Erm 20:40:30 <elliott> How can it be sped up by having to make no assumptions about the string 20:40:37 <elliott> And having to go through it twice 20:40:43 -!- Taneb has quit (Read error: Connection reset by peer). 20:40:44 <elliott> oerjan: except he wants it to return the _old_ state 20:40:55 <oerjan> ...oh. 20:41:23 <oerjan> hm i guess post is a better name, then. or perhaps pre? 20:42:01 <zzo38> It is like, postincrement does in C, for example. It return the old state, in C, too. 20:42:23 <oerjan> ah yes. 20:44:12 <oerjan> <elliott> fromIntegral and ords omitted for two of those because I got lazy <-- just define a Integral Char instance >;P 20:44:17 <oerjan> *an 20:44:40 <oerjan> hm wait 20:44:45 <oerjan> that still won't work 20:45:04 <oerjan> needs OverloadedChars :P 20:46:10 <oerjan> you could use OverloadedStrings 20:46:24 -!- Taneb has joined. 20:46:26 <elliott> that's 20:46:29 <elliott> exactly what the topic of discussion was 20:47:05 <oerjan> how logical. 20:47:55 <oerjan> apparently my eyes glazed over everything except the actual haskell code :P 20:52:16 <zzo38> Maybe I will make the Haskell preprocessor program you have overloaded everything. 20:52:30 <elliott> Deewiant: What. Removing my check for \0 in pushString makes things slower. 20:52:36 <elliott> Just 20:52:36 <elliott> What 20:52:40 <elliott> Noticably slower too 20:52:43 <elliott> Like almost half a second slower 20:52:45 -!- KingOfKarlsruhe has joined. 20:53:01 <elliott> Ugh, not almost half a second 20:53:07 <elliott> It's that fucking //percent sign again 20:53:11 <Deewiant> Are you pushing huge strings now instead of stopping at the null like you should? ;-) 20:53:36 <elliott> Deewiant: I don't "stop at the null", I error out at the null. 20:53:45 <oerjan> // is not a percent sign. trust me on this. 20:53:47 <elliott> Haskell Strings can contain \0s; 0gnirtses can't. 20:53:54 <Deewiant> error "x" is probably more expensive than something else 20:54:03 <oerjan> elliott: increased strictness perhaps? 20:54:04 <elliott> Deewiant: It's /never reached/ 20:54:13 -!- kmc has joined. 20:54:17 <elliott> oerjan: push is strict, so it isn't that 20:54:18 <Deewiant> It's still created 20:54:22 <elliott> Deewiant: No? 20:54:27 <elliott> where pushChars [] = return () 20:54:27 <elliott> pushChars ('\0':_) = 20:54:27 <elliott> error $ "pushStringAs0Gnirts " ++ show s ++ ": string contains NUL byte" 20:54:27 <elliott> pushChars (c:s') = do 20:54:27 <elliott> push . fromIntegral . ord $ c 20:54:28 <elliott> pushChars s' 20:54:31 <elliott> I literally commented out the \0 clause. 20:54:37 <zzo38> You don't need OverloadedStrings but it should help more in my opinion, if you can program the overloading at compile-time, when you have access to the source file when doing the program that is for overloading 20:54:52 <Deewiant> Then the c isn't strict, maybe? 20:55:15 <elliott> Deewiant: Like I said, push is strict 20:55:18 <elliott> Very strict 20:55:32 <Deewiant> So? 20:55:33 <oerjan> elliott: what happens if you replace the $ c by $! c ? 20:55:38 <Deewiant> Does pushChars realize that? 20:55:53 <elliott> push :: Value -> Shiro () 20:55:54 <elliott> push x = modifyStack (stackCons x) 20:55:54 <elliott> stackCons :: Value -> Stack -> Stack 20:55:54 <elliott> stackCons x (Stack n (x' :- xs)) = Stack (n+1) (x :- x' :- xs) 20:55:54 <elliott> infixr 5 :- 20:55:54 <elliott> data StackElems = (:-) {-# UNPACK #-} !Value StackElems deriving (Show) 20:55:56 <elliott> data Stack = Stack {-# UNPACK #-} !Value !StackElems deriving (Show) 20:56:16 <elliott> oerjan: Let's find out 20:56:40 <oerjan> elliott: or better, use (!c:s') in the pattern 20:56:52 <elliott> oerjan: That would make me use more extensions :-( 20:56:57 <elliott> Currently I use each extension in only one file :P 20:57:11 <elliott> oerjan: Gah, yes, $! reverses the slowdown 20:57:12 <oerjan> sigh, c `seq` do then 20:57:13 <Deewiant> pushChars c : s' | seq c otherwise = do 20:57:17 <elliott> I'll keep it but put the \0 back 20:57:22 <elliott> As in, the \0 clause 20:57:25 <Deewiant> elliott: Toldja so 20:57:32 <elliott> Deewiant: It's unnatural :-( 20:57:43 <elliott> Deewiant: How many IPs does Mycology create, roughly 20:57:48 <Deewiant> ccbi -s 20:57:48 <elliott> rotate :: ([a],[a]) -> ([a],[a]) 20:57:48 <elliott> rotate ([ip], r) = (reverse r ++ [ip], []) 20:57:48 <elliott> rotate (ip:xs, r) = (xs, ip:r) 20:57:48 <elliott> rotate _ = error "rotate: no IPs" 20:57:48 <elliott> remove :: ([a],[a]) -> ([a],[a]) 20:57:49 <elliott> remove ([_], r) = (reverse r, []) 20:57:51 <elliott> remove (_:xs, r) = (xs, r) 20:57:53 <elliott> remove _ = error "remove: no IPs" 20:57:55 <elliott> These look pretty slow 20:57:57 <elliott> Deewiant: CCBI this, CCBI that; sheesh 20:58:07 <elliott> How do I disable TURT 20:58:10 <elliott> -F -turt? 20:58:12 <elliott> -f -TURT 20:58:12 <elliott> I forget 20:58:16 <Deewiant> As do I 20:58:16 <elliott> Yeah, -f -TURT 20:58:22 <Vorpal> elliott, iirc at most 3 threads at the same time, but over an entire run, much more 20:58:25 <elliott> (It creates a file which is annoying) 20:58:35 <elliott> elliott@katia:~/Code/shiro$ ~/ccbi-2.1/ccbi -s -f -TURT rsc/mycology/mycology.b98 20:58:35 <elliott> CCBI :: unexpected argument 'R'. Use '--help' for help. 20:58:35 <elliott> CCBI :: unexpected argument 'T'. Use '--help' for help. 20:58:35 <elliott> CCBI :: unexpected argument 'U'. Use '--help' for help. 20:58:35 <elliott> CCBI :: argument 'fingerprints' expects 1 parameter(s), but has only 0. 20:58:37 <elliott> Deewiant: Bug report. 20:58:45 <elliott> Forked: 6 IPs 20:58:46 <elliott> Stopped: 7 IPs 20:58:46 <elliott> Had: 2 IPs live at maximum 20:58:46 <elliott> Was dormant: 1 IP 20:58:48 <elliott> Vorpal: Much more being "six" 20:59:00 <elliott> OK, so my IP list code is probably not any kind of bottleneck. 20:59:07 <Vorpal> elliott, huh, thought it was like 10 20:59:19 <elliott> That's much more? :-P 20:59:32 <Vorpal> elliott, yes 20:59:38 <Vorpal> not like "much" is well defined anyway 20:59:39 <Deewiant> elliott: -f-TURT 20:59:49 <Deewiant> elliott: -f +all,-TURT (IIRC) 20:59:56 <elliott> Deewiant: Lame 21:00:00 <elliott> That's not getopt standard (TM) 21:00:03 <elliott> Well, I don't think 21:00:11 <Deewiant> It's not my argument parser 21:00:22 <elliott> It should be 21:00:30 <Deewiant> It won't be 21:00:45 <elliott> Admittedly Shiro uses someone else's argument parser 21:00:48 <elliott> But it has exactly two argument 21:00:49 <elliott> s 21:01:02 <elliott> currentIP Shiro.Monad 1.8 0.4 21:01:02 <elliott> Maybe my iplist code /is/ a bottleneck 21:01:24 <elliott> f (x:xs) = xs ++ [x] 21:01:30 <elliott> oerjan: That's O(1) in practice, right? 21:01:36 <elliott> If I only ever look at the head, or do f 21:01:41 <elliott> That's literally the only options I ever do on the list 21:01:47 <elliott> Oh, wait 21:01:51 <elliott> I also take the tail 21:03:13 <elliott> Thanks oerjan 21:03:26 <oerjan> i dunno 21:03:35 <elliott> Bah 21:04:01 <elliott> Hey Deewiant, that's O(one) in practice, right 21:04:08 <oerjan> maybe quadratic in the number of f's applied 21:04:20 <elliott> oerjan: I always access the head before f 21:04:29 <elliott> As in, my usage looks like 21:04:41 <elliott> head, f, head, f, head, f, head, tail, head, f, ... 21:05:31 <oerjan> hm i may still suspect quadratic. 21:05:42 <elliott> Hmm, I'm surprised my current code isn't broken; Deewiant: After quitting an IP, I still go to the next IP 21:05:49 <elliott> As in, I skip the IP directly after the quit one's turn 21:05:52 <elliott> Do you check for that? 21:06:00 <oerjan> actual profiling might discover the truth :P 21:06:01 <elliott> If so, I guess Mycology understands my code better than I do 21:06:03 <Deewiant> Probably not 21:06:12 <Deewiant> I only check concurrent code with two IPs, remember 21:06:15 <elliott> >_< 21:06:19 <Deewiant> So if you skip a turn it's missed 21:06:31 <Deewiant> When you implement TRDS it'll notice, don't worry :-) 21:06:54 <elliott> I'm trying to optimise before that 21:07:05 <elliott> ?pl pop >>= \a -> push a >> push a 21:07:05 <lambdabot> liftM2 (>>) push push =<< pop 21:07:22 <elliott> <Deewiant> pop >>= join (liftM2 (>>)) push 21:07:40 <Deewiant> Right 21:07:54 <oerjan> elliott: because the linear cost of applying xs ++ [x] is spread across the entire part before ++, so head will only affect it a tiny bit, i think 21:08:31 <oerjan> while each f followed by a head will apply the cost of all the previous f's at that point 21:08:31 <elliott> oerjan: Right 21:08:46 <elliott> oerjan: That's annoying :/ 21:09:16 <elliott> oerjan: I basically have a list of N elements, and a pointer into this list that I increment; upon reaching the end, it resets to the start 21:09:22 <elliott> And sometimes I remove an element from the list 21:09:30 <elliott> The question is how to do that without something ugly like a vector :P 21:09:46 <elliott> Last time you got me to use zippers, but that involves reversing on the reset-to-start case 21:09:46 <oerjan> zipper? 21:09:49 <elliott> Last time you got me to use zippers, but that involves reversing on the reset-to-start case 21:09:53 <elliott> rotate :: ([a],[a]) -> ([a],[a]) 21:09:53 <elliott> rotate ([ip], r) = (reverse r ++ [ip], []) 21:09:53 <elliott> rotate (ip:xs, r) = (xs, ip:r) 21:09:53 <elliott> rotate _ = error "rotate: no IPs" 21:09:53 <elliott> remove :: ([a],[a]) -> ([a],[a]) 21:09:54 <elliott> remove ([_], r) = (reverse r, []) 21:09:56 <elliott> remove (_:xs, r) = (xs, r) 21:09:56 <oerjan> yep 21:09:58 <elliott> remove _ = error "remove: no IPs" 21:10:05 <elliott> Which is ugly and non-constant-time 21:10:15 <oerjan> ...still better than quadratic :P 21:10:38 <elliott> >:( 21:10:46 <elliott> I guess I'll try sequencing the list 21:11:36 <elliott> rotate :: ([a],[a]) -> ([a],[a]) 21:11:36 <elliott> rotate ([ip], r) = length xs' `seq` (xs', []) where xs' = reverse r ++ [ip] 21:11:36 <elliott> rotate (ip:xs, r) = (xs, ip:r) 21:11:36 <elliott> rotate _ = error "rotate: no IPs" 21:11:38 <elliott> Maybe this'll do better 21:12:11 <elliott> Gah, reverse on Seq is O(one) 21:12:22 <elliott> erm 21:12:23 <elliott> O(n) 21:12:29 <elliott> I thought it might be able to do some fancy "just flip a bit" thing, since it has O(one) accessing from the end 21:12:48 <oerjan> elliott: you can fake that with wrapping around it 21:12:54 <elliott> Hmm, that seq doesn't seem to help 21:13:02 <elliott> At least not noticeably 21:13:07 <elliott> oerjan: Yeah, just wondering whether it's worth it 21:13:09 <elliott> I'll give it a try 21:13:20 <oerjan> but if you use Seq, why use reverse 21:13:48 <oerjan> just append things, which is supposed to be cheap 21:14:05 <elliott> oerjan: um because I'd still use a zipper? 21:14:10 <elliott> oh hmm I see 21:14:17 <oerjan> elliott: if you use Seq there's no point in a zipper 21:14:22 <elliott> yes, that might work, thanks :) 21:14:27 <elliott> I swear to god I've tried Seq for this before... 21:14:41 <oerjan> i may even have been the one suggesting it ;P 21:15:55 <oerjan> i'm sure queues _is_ one of the suggested use cases for it 21:17:08 <elliott> yeah I think I might have tried Seq on your suggestion? 21:17:18 <elliott> maybe I decided this was simpler 21:17:18 <elliott> dunno 21:17:20 <elliott> I must have been an idiot 21:17:25 <oerjan> it is conceivable that you dropped it because zippers were more efficient in total? 21:17:42 <oerjan> after all the reverse only applies each time you have traversed the list completely 21:17:54 <elliott> oerjan: I definitely wasn't thinking about speed at that point :-) 21:18:26 <oerjan> i suspect zippers are more efficient but Seq's may be more "real-time" 21:18:45 <elliott> Deewiant: Does Fungicide test tons of concurrent IPs 21:18:50 <oerjan> that is, less max waiting 21:19:02 <Deewiant> elliott: Yes 21:19:05 <elliott> Deewiant: How many 21:19:27 <Deewiant> http://iki.fi/matti.niemenmaa/befunge/fungicide-rankings/fork.b98.html 21:19:53 <elliott> oerjan: Seq should be more efficient for 131072 items, right? 21:20:24 <oerjan> elliott: only at the point when you do the reverse for a zipper 21:20:34 <elliott> oerjan: I mean in total :-P 21:20:36 <elliott> But hmm 21:21:05 <oerjan> a zipper is a _much_ simpler data structure, so i think it's more efficient in total 21:22:33 <oerjan> mind you this is a hunch, i'm not known for actually optimizing my own programs ;P 21:22:44 <elliott> Deewiant: So how many instructions does each IP execute 21:22:49 <elliott> I mean, I need to reverse every N instructions, where N = number of IPs 21:23:01 <elliott> And reversing a list of 131072 items won't be fast 21:23:34 <Deewiant> I think they all just z until they all @ at once 21:23:43 <Deewiant> So [1..131072] 21:23:56 <oerjan> elliott: indeed. but amalgamawordineverremembered, it's spread out over all the previous 131072 steps and becomes O(1) per step 21:24:14 <Deewiant> amortized 21:24:19 <oerjan> right 21:24:26 <elliott> Deewiant: Heh 21:24:40 <elliott> oerjan: right 21:24:58 <oerjan> and each step is O(1) anyhow, so there's only a constant multiple for it 21:25:02 <elliott> Well, let's see what it does to my Mycology performance 21:25:23 <elliott> oerjan: executing an instruction is _not_ O(1) 21:25:45 <elliott> well hmm, I don't think 21:25:48 <oerjan> elliott: in that case the reverse should be even less significant 21:25:53 <elliott> oerjan: well no it is in practice 21:26:08 <elliott> but there are edge-cases, like k can do any finite number of executions of a single instruction 21:26:22 <oerjan> ok 21:27:45 <elliott> oerjan: Holy crap Seqs are slower 21:27:49 <Taneb> Had an algorithm test in further maths 21:27:52 <elliott> Like, it's been running for several seconds already 21:28:00 <oerjan> elliott: was 'fraid so 21:28:01 <elliott> Oh hmm 21:28:04 <elliott> Going to test concurrent execution with 2 IPs. 21:28:04 <elliott> Assuming that instructions without any particular concurrency-related behaviour, such as ^>v<#, take one tick. 21:28:04 <elliott> Will continue to produce textual output, so strings must work correctly where concurrency is concerned: "a b" should take 5 ticks, 'a should take 1. 21:28:04 <elliott> [LITERAL HANG] 21:28:06 <elliott> OK, so it's just broken 21:28:18 <elliott> But it was definitely slower before anyway 21:28:20 <Taneb> Compared to even the stuff that I understnad that bounces back and forth in this channel, it was first school stuff 21:29:29 <Taneb> 20 marks for doing a thingy with bubblesort 21:29:37 <Taneb> Debug trace 21:29:37 <Taneb> Shuttlesort, rather 21:29:39 <elliott> Bubblesort, the best sort. 21:29:45 <elliott> Debug traces are algorithms? 21:29:54 <oerjan> it's bubbly! 21:33:16 <oerjan> <Taneb> Everything starts going wrong when the comic is put in the bin 21:33:18 <oerjan> aha 21:33:53 <elliott> oerjan: Five more comics of IWC for you 21:33:59 * elliott continues hobbying. 21:34:07 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaa 21:34:18 <elliott> Ah, the sweet sound of horror. 21:34:30 <elliott> "I kind of assumed that if Choking was to be made permanently Choking, Fireballs would be made permanently Fireballs again. This seems so final, though; I hope this doesn't mean the story is coming to an end." 21:34:35 <elliott> You know the story is ending when deaths start getting demoted. 21:34:51 <oerjan> whatever dmm intends, he is certainly keeping up the suspense by seemingly wrapping up things 21:35:16 <elliott> oerjan: My prediction is: a giant fireball and everything resets. That would be new! 21:35:28 <oerjan> u think 21:35:38 <elliott> u mad? 21:35:42 <monqy> :( 21:35:45 <elliott> In this analogy, u mad because IWC is ending. 21:36:02 <oerjan> u thant 21:36:07 <elliott> wat 21:36:54 <oerjan> angkor 21:37:00 <elliott> no 21:38:12 <oerjan> dr. 21:38:25 <elliott> ok 21:38:32 <oerjan> o 21:38:40 <elliott> help 21:38:45 <oerjan> u mad? 21:39:07 <Vorpal> oerjan, is it confirmed that iwc is ending? 21:39:21 <oerjan> Vorpal: not last i checked :P 21:39:25 <Vorpal> good 21:39:42 <elliott> thank god it isn't /confirmed/, only obvious :P 21:40:02 <Vorpal> oerjan, I suspect he will do one more than what everyone thinks he is going to stop at. 21:40:57 <Taneb> But some people think he is going to do that! 21:41:11 <Vorpal> Taneb, well, the majority I meant 21:41:26 <oerjan> the majority hasn't said anything, on the forum at least 21:41:33 <Vorpal> right 21:41:40 <elliott> they're trying to avoid giving him ideas 21:41:44 <Vorpal> oerjan, he should run a poll XD 21:42:17 <oerjan> although there was one person who misremembered the number as 3150 and posted a relief post that it hadn't stopped then 21:42:28 <elliott> i just read that lol 21:43:05 <Vorpal> oerjan, what is the actual number now again? 21:43:10 -!- Wamanuz has quit (Remote host closed the connection). 21:43:50 <oerjan> 3160 21:43:57 <Vorpal> ah 21:44:08 <Sgeo> number of what?/ 21:44:17 <Vorpal> The Number 21:44:45 <elliott> number of green people in world 21:45:23 <oerjan> Sgeo: dmm has several times mentioned that he wanted to reach the number of calvin & hobbes comics, 3160. 21:45:36 <oerjan> and now iwc is at #3155 21:46:27 <oerjan> at the same time as several of the iwc themes look eerily like they're in a "wrapping up" stage 21:46:54 <oerjan> the fantasy group even finished their quest! 21:47:17 <elliott> What was their quest again? My knowledge of IWC is so patchy. 21:47:18 <Sgeo> Is it not a regular occurance for IWC to seem to be ending? 21:47:26 <oerjan> yes, that's true 21:47:35 <oerjan> but still, some of us are worried. 21:47:50 <elliott> oerjan: five comics seems a bit short to wrap up everything, from the last ten or so I read 21:48:10 <oerjan> elliott: perhaps. 21:48:21 <elliott> oerjan: maybe it'll end on 3163 :D 21:48:25 <elliott> just to catch everyone out 21:48:29 <oerjan> eek 21:48:34 <Taneb> I reckon he's going to go into Supers and Espionage again 21:48:38 <Taneb> After 3160 21:49:16 <oerjan> supers does require him to get hold of the illustrator... 21:49:27 <elliott> oh no, getting a hold of an illustrator 21:49:31 <elliott> a well-known impossibility 21:49:44 <elliott> Harry Potter is also disconnected, isn't it? 21:50:02 <oerjan> elliott: um _the_ illustrator, who obviously cannot be much interested since he hasn't made any for years... 21:50:22 <elliott> oerjan: "can I have another bunch of comics since I'm ending the strip you drew a bunch of comics for" 21:50:28 <oerjan> well harry potter may or may not be happening entirely within will shakespeare's mind... 21:50:34 <elliott> doesn't sound _that_ hard to achieve :P 21:51:02 <oerjan> well ok, maybe one or so might be possible 21:52:21 -!- Wamanuz has joined. 21:54:06 <oerjan> <elliott> Aren't Deltas a monoid 21:55:19 <oerjan> Delta = data type for representing a generalization of character width including tabs of arbitrary column settings? 21:55:40 <Deewiant> Delta = data type representing a position in a file 21:55:42 <Deewiant> I /think/ 21:55:46 <Deewiant> I still don't get half of it 21:55:47 <oerjan> oh. 21:56:01 <oerjan> did anyone give an actual definition? 21:56:07 <Deewiant> (Where "it" = position/source representation in Trifecta) 21:56:18 <oerjan> oh hm. 21:57:06 <Deewiant> data Delta 21:57:07 <Deewiant> Columns !Int64 !Int64 21:57:07 <Deewiant> Tab !Int64 !Int64 !Int64 21:57:07 <Deewiant> Lines !Int64 !Int64 !Int64 !Int64 21:57:08 <Deewiant> Directed !ByteString !Int64 !Int64 !Int64 !Int64 21:57:36 <oerjan> instance Monoid Delta where mempty = Columns 0 0 mappend = (<>) 21:57:44 <oerjan> found that 21:58:00 <oerjan> http://hackage.haskell.org/packages/archive/trifecta/0.36.3/doc/html/src/Text-Trifecta-Rope-Delta.html 21:58:15 <Deewiant> Yes, it's a Monoid, we knew that :-P 21:58:30 <oerjan> i thought you were asking 21:58:50 <Deewiant> 2011-09-16 21:58:58 ( elliott) Aren't Deltas a monoid 21:58:50 <Deewiant> 2011-09-16 21:59:07 ( elliott) In which case you just need to replace wherever mempty is called 21:58:53 <Deewiant> 2011-09-16 21:59:08 ( Deewiant) Yes 21:59:03 <Deewiant> That "Yes" was to the former 21:59:37 <oerjan> ok 22:00:17 -!- Taneb has quit (Ping timeout: 276 seconds). 22:01:51 <oerjan> <Deewiant> It's a cofree comonad 22:02:08 <oerjan> i keep wanting to read that as coffee comonad 22:02:33 <elliott> fromList :: [Word8] -> ByteSet 22:02:33 <Deewiant> I actually read that as coffee comonad until I noticed that I said it 22:02:34 <elliott> fromList s0 = ByteSet $ I.unsafeCreate 32 $ \t -> do 22:02:34 <elliott> _ <- I.memset t 0 32 22:02:34 <elliott> let go [] = return () 22:02:34 <elliott> go (c:cs) = do 22:02:34 <elliott> prev <- peekByteOff t byte :: IO Word8 22:02:36 <elliott> pokeByteOff t byte (prev .|. bit) 22:02:38 <elliott> go cs 22:02:40 <elliott> where I byte bit = index (fromIntegral c) 22:02:42 <elliott> go s0 22:02:47 <elliott> Neat. 22:03:36 <Deewiant> mapM_ something-simpler s0 22:08:01 -!- elliott has quit (Ping timeout: 260 seconds). 22:08:46 -!- Patashu has joined. 22:12:51 -!- derdon has quit (Remote host closed the connection). 22:14:52 -!- cheater has joined. 22:20:27 -!- cheater has quit (Remote host closed the connection). 22:20:51 -!- cheater99 has joined. 22:40:11 -!- DH____ has quit (Ping timeout: 260 seconds). 22:44:13 -!- cheater99 has quit (Quit: Ex-Chat). 22:44:49 -!- DH____ has joined. 22:46:39 -!- cheater has joined. 23:01:49 <CakeProphet> hmmm so I'm thinking about buying a server. 23:01:58 <CakeProphet> getting my own place with a static IP 23:07:11 <CakeProphet> I wonder how much a decent server will cost... 23:07:14 <CakeProphet> and decent broadband. 23:07:23 -!- Zuu has joined. 23:11:39 -!- nys has joined. 23:15:42 <CakeProphet> wow comcast is fucking expensive. 23:15:54 <CakeProphet> 50 mbps for $100 23:15:55 <CakeProphet> a month 23:16:10 <CakeProphet> that's their fastest speed. the next lowest is 16 mbps 23:18:50 <monqy> so why do you want this 23:18:51 <monqy> server 23:19:00 <monqy> _secrets?????????????????_ 23:19:04 <CakeProphet> business website, business....server. 23:19:09 <monqy> business 23:19:11 <CakeProphet> for... business 23:19:37 <CakeProphet> also it will basically just be an awesome desktop... 23:19:45 <CakeProphet> so I can play games. :P 23:19:52 <monqy> biz tld please say yes 23:19:54 <CakeProphet> like DF, which is apparently too intense for my laptop. 23:20:09 <CakeProphet> monqy: uh, yes. 23:20:14 <monqy> yesssss 23:20:14 <CakeProphet> er. 23:20:15 <CakeProphet> no 23:20:18 <monqy> noo ;_; 23:20:21 <CakeProphet> you mean like... .biz? 23:20:23 <CakeProphet> no 23:20:26 <monqy> yes .biz 23:20:34 <CakeProphet> no that's a dumb top-level domain. 23:20:44 <CakeProphet> no one uses that. 23:20:46 <CakeProphet> fuck ICANN 23:20:47 <monqy> all biznes sites need it 23:21:05 <CakeProphet> .com is where it's at. 23:21:29 <CakeProphet> actually I really don't have too many uses for a server 23:21:30 <monqy> cakes cool community club 23:21:33 <CakeProphet> I should probably think of those. 23:21:40 <monqy> business, dwarf fortress 23:21:43 <monqy> "good enough" 23:22:09 <CakeProphet> well if I ever go into profitshare I could offering hosting of sites. 23:22:31 <monqy> will there be anything special to your hosting i like special 23:22:49 <CakeProphet> uh, included server maintenance / sysadmin shit. 23:23:14 <CakeProphet> that's a thing right? 23:23:20 <CakeProphet> "included sysadmin shit" 23:23:22 <monqy> I think so 23:23:42 <monqy> but what does it do 23:23:50 <CakeProphet> so basically someone hires me to set up their stupid blog/CMS nonsense 23:24:02 <CakeProphet> and then I maintain it and host it on my server for a monthly fee. 23:24:21 <CakeProphet> so their feeble brains don't have to worry about it. 23:25:00 <monqy> good luck hosting popular blogs with your server box 23:25:12 <CakeProphet> doesn't need to be popular 23:25:22 <monqy> if they're popular you're dead 23:25:23 <CakeProphet> I just need to get paid. 23:25:59 <CakeProphet> oh look kallisti.com is not taken. 23:26:10 <CakeProphet> no one take it. it's mine. 23:26:13 <monqy> ok 23:26:25 <CakeProphet> oh wait 23:26:30 <CakeProphet> www.kallisti.com is taken. 23:26:38 <CakeProphet> "This page intentional left blank." 23:26:43 <CakeProphet> NAME SQUATTING ASSHOLE. 23:26:48 <CakeProphet> *intentionally 23:27:38 <zzo38> Checking corresponding IP address of domain names does not seem the way to check if it is taken; use WHOIS instead. 23:27:58 <monqy> kallisti.biz 23:28:37 <monqy> hm what's in the newest batch of tlds 23:28:38 -!- FireFly has quit (Quit: FireFly). 23:29:16 <CakeProphet> why does whois read like an advertisement help 23:29:35 <zzo38> Some of them do. I don't know why. 23:29:51 <monqy> this tld list is crazy 23:29:55 <CakeProphet> NOTE: FAILURE TO LOCATE A RECORD IN THE WHOIS DATABASE IS NOT INDICATIVE 23:29:55 <CakeProphet> OF THE AVAILABILITY OF A DOMAIN NAME. 23:30:01 <monqy> wtf sort of tld is XN--CLCHC0EA0B2G2A9GCD 23:30:14 <monqy> I see xxx made it in there 23:30:28 <monqy> can't wait for someone to use .museum 23:30:59 <CakeProphet> kallisti.biz has been claimed by godaddy. 23:31:04 <monqy> .cat good tld 23:31:09 <monqy> .coop 23:31:16 <CakeProphet> chicken.coop 23:31:29 <CakeProphet> cool.cat 23:31:31 <monqy> .info .jobs .name .mobi .travel 23:31:50 <monqy> arpa asia aero 23:31:52 <CakeProphet> kallisti.name 23:31:54 <CakeProphet> doesn't have the same ring 23:32:07 <zzo38> CakeProphet: Well, there are many ways to check, you could probably use all of them. One is a DNS lookup, one is WHOIS. I don't know what else would help. 23:32:34 <CakeProphet> zzo38: "typing the host name into google Chrome" counts as a DNS lookup, yes? 23:32:41 <monqy> ooh here's a good one 23:32:44 <zzo38> CakeProphet: Yes 23:32:45 <monqy> kallisti.pro 23:32:48 <CakeProphet> that's what I did originally, to discover that "this page is intentionally left blank" 23:32:51 <CakeProphet> monqy: ha, nice. 23:32:57 <CakeProphet> Kallisti Professional 23:33:28 <CakeProphet> no whois match 23:33:38 <zzo38> You can also use country codes 23:33:51 <CakeProphet> I think .pro is the way to go 23:33:52 <CakeProphet> bahahahaha 23:33:53 <monqy> kallisti.xxx 23:34:06 <CakeProphet> yeah so I can be blacklisted in China. sounds good. 23:34:35 <CakeProphet> http://www.felarya.com/wiki/index.php?title=Kallisti 23:34:48 <CakeProphet> Once an ordinary succubus, Kallisti spent several millenia gathering power, influence, and souls and became a goddess widely worshiped on several worlds. She is beautiful, sensual and is known both for her terrible brutality on the battlefield, and for her encyclopedic knowledge of the ways of pleasure. 23:35:10 <CakeProphet> based on the wiki logo I'm guessing it's some kind of vorephilia roleplay community? 23:35:21 <monqy> good for .xxx 23:35:47 <CakeProphet> it was one of the listing that showed up from one of those auto-generated ISP pages 23:35:51 <CakeProphet> when I typed in kallisti.pro 23:36:04 <monqy> i hate those things 23:36:20 <oerjan> <monqy> wtf sort of tld is XN--CLCHC0EA0B2G2A9GCD <-- hm is that the unicode encoding format? 23:36:22 <monqy> also when isp gives false dns results 23:36:46 <monqy> oerjan: perhaps; I was looking at http://data.iana.org/TLD/tlds-alpha-by-domain.txt 23:36:53 <CakeProphet> monqy: yeah normally I ignore them but when I saw that snippet I had to click... 23:37:50 <Gregor> oerjan: Punycode 23:37:59 <Gregor> (Is the name of it) 23:38:02 <oerjan> Gregor: rings a bell 23:38:21 <Gregor> Its a format for encoding short Unicode strings as ASCII containing only letters and dashes. 23:38:33 <Gregor> That restriction being for the obvious reason of domain names :) 23:38:48 <Gregor> It's the standard for Unicode domains. 23:39:26 <CakeProphet> domain names sure are stupid. 23:39:56 <Gregor> So are confectionery prophecies! 23:40:47 <oerjan> "singapore" in Tamil script, it seems 23:40:56 <CakeProphet> !cpick steal_cash steal_furniture steal_jewelry leave_through_window hide_body 23:40:59 * oerjan didn't know singapore used tamil script 23:41:01 <EgoBot> steal_cash steal_furniture steal_jewelry 23:41:12 <Gregor> oerjan: I strongly suspect that they do not :P 23:42:06 <oerjan> சிங்கப்பூர் 23:42:10 <CakeProphet> !cpick smoke_hookah do_homework party 23:42:16 <EgoBot> do_homework 23:42:19 <CakeProphet> ... 23:42:27 <CakeProphet> WRONG 23:51:10 -!- Tjr has joined. 23:53:31 -!- elliott has joined. 23:54:02 <elliott> 23:01:49: <CakeProphet> hmmm so I'm thinking about buying a server. 23:54:02 <elliott> 23:01:58: <CakeProphet> getting my own place with a static IP 23:54:02 <elliott> 23:07:11: <CakeProphet> I wonder how much a decent server will cost... 23:54:02 <elliott> 23:07:14: <CakeProphet> and decent broadband. 23:54:07 <elliott> CakeProphet: Dude, just get a VPS. 23:55:20 <monqy> can a vps do df..................... 23:55:57 <zzo38> I have been able to run a server with dynamic IP address; that is what domain names help with. 23:56:41 <Gregor> Dwarf Fortress? 23:56:50 <elliott> 23:28:37: <monqy> hm what's in the newest batch of tlds 23:56:50 <elliott> one is .xxx 23:56:54 <Gregor> Surely a 1996 PC running DOS 6 can do Dwarf Fortress :P 23:56:57 <elliott> Deewiant: Did it work in the end 23:57:00 <Gregor> Oh, I haven't bought a .xxx domain! 23:57:01 <elliott> Gregor: ...you're joking, right? 23:57:05 <elliott> DF is very CPU-intensive. 23:57:10 <elliott> It's /famous/ for being CPU-intensive. 23:57:19 <Gregor> elliott: I assumed that it wasn't because whyTF would it be :P 23:57:30 <Gregor> Welllll 23:57:37 -!- itidus20 has joined. 23:57:37 <elliott> Gregor: Its liquid physics are very complex, as are its AIs 23:57:37 <Gregor> I guess it maintains a RIDICULOUS amount of state about all the agents. 23:57:44 <elliott> And you have like a hundred dorfs+ at a time. 23:57:45 <Gregor> OK, fair 'nuff. 23:58:32 <elliott> Gregor: It's like "Minecraft looks like crap, why does it eat all my RAM" :-P 23:58:48 <elliott> 23:31:09: <monqy> .coop 23:58:48 <elliott> .coop is ancient, monqy 23:59:00 <elliott> Well, 2001 23:59:15 <monqy> that doesn't make it not dumb 23:59:21 <elliott> Why is it dumb 23:59:23 <itidus20> wow a new log day begins in like 1 minute 23:59:31 <elliott> It's a very reasonable TLD 23:59:56 <Gregor> And chicken.coop is actually a co-op! D-8 2011-09-17: 00:00:07 <elliott> Only co-ops can register .coops 00:00:11 <Gregor> Oh :P 00:00:30 <elliott> But seriously, co-operatives aren't nonprofit, so .org doesn't apply, and they're not really anything like a "traditional" business at all, so .com doesn't really apply either 00:00:33 <elliott> .coop seems reasonable to me 00:00:43 <monqy> ok 00:00:56 <elliott> 23:31:52: <CakeProphet> kallisti.name 00:00:56 <elliott> 23:31:54: <CakeProphet> doesn't have the same ring 00:01:01 <elliott> CakeProphet: Your name is CakeProphet Kallisti? 00:01:06 <elliott> Otherwise no go, you can't register it. 00:01:12 <Gregor> Except that .com, .net and .org mean "entity that thinks .com is a cool TLD", "entity that thinks that .net is a cool TLD" and "entity that thinks that .org is a cool TLD" 00:01:23 <zzo38> OK, that seems a sensible explanation. But maybe better is .msc for "miscellaneous" anything that the other TLD does not apply 00:01:56 <elliott> Gregor: That doesn't make introducing new TLDs with semantic purpose dumb :P 00:02:03 <elliott> Gregor: .org's derestriction is terrible though. 00:02:11 <elliott> I've seen straight-out businesses operating off .org. 00:02:17 <Gregor> elliott: Codu dot ORRRRRRRRG 00:02:21 <Gregor> I AM AN ORG 00:02:42 <elliott> Gregor: You don't profit from codu, so it seems reasonable enough 00:02:50 <elliott> We really need a non-horrible "personal" TLD though 00:02:50 <Gregor> Damn 00:02:56 <Gregor> I just happen to be an org of one :P 00:03:00 <elliott> .name is awful, .me is awful 00:03:08 <itidus20> .info ? 00:03:13 <Gregor> Also, .me is not actually a TLD for individuals, right? 00:03:21 <monqy> info is not suited for personal 00:03:26 <elliott> Gregor: It's been marketed as one since before it came out 00:03:29 <elliott> Gregor: See nic.me 00:03:36 <Gregor> elliott: Well of course. 00:03:43 <Gregor> elliott: Just because whatever country .me is isn't stupid :P 00:03:47 <elliott> Gregor: Well, their government is making tons of money off it. :P 00:03:53 <elliott> So it's as officially for people as it can be. 00:03:56 <Gregor> Fair enough *shrugs* 00:04:16 <Gregor> It's amazing that we live in a world where a government can make a ton of money for happening to have a good name :P 00:04:19 <elliott> Montenegro apparently 00:04:24 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:04:35 <elliott> Gregor: I gotta wonder why Tokleau isn't rolling out the casinos and hookers 00:04:36 <elliott> Maybe they are 00:05:00 <elliott> Although I can't imagine .tk makes that much money, seeing as its entire appeal is being free 00:05:08 <elliott> Oh wow. 00:05:09 <elliott> http://my.dot.tk/tweak/ 00:05:11 <Gregor> Also it has no meaning as a word :P 00:05:16 <elliott> A URL shortener that registers a new domain for every URL. 00:05:23 <Gregor> BAHAHAHA 00:05:26 <elliott> Finally an idea so stupid I did not think of it first. 00:05:26 <Gregor> BEST 00:05:27 <Gregor> EVER 00:05:39 <zzo38> Both the official and unofficial DNS have TLDs according to mode of access; which is an idea I don't like. Mode of access would be the bottom level if anything, not the top level. It could also be by port number. (Some such TLDs are .mobi and .gopher) 00:05:43 <elliott> OK, who wants to set up a bot to shorten URLs with that constantly? 00:05:47 <elliott> We can exhaust the namespace in a few months. 00:06:12 <elliott> Oh wow, they even have an API. 00:06:14 <CakeProphet> elliott: my pretty newish Dell laptop starts to get very very slow once my population hits about 80 00:06:17 <elliott> "We never remove shortened URLs, as long as they are created in accordance with our terms & conditions." 00:06:19 <elliott> Yesssssssssssssssssssssssssssssssss 00:06:28 <elliott> CakeProphet: My pretty newish MacBook Air doesn't 00:07:06 -!- Nisstyre has quit (Ping timeout: 260 seconds). 00:07:18 <monqy> but what are their temrs ans conditieosn 00:07:44 <CakeProphet> elliott: also yeah VPN is probably the way to go. I just like the idea of running my own server, plus I can avoid hosting costs. 00:07:59 <elliott> >VPN 00:08:06 <elliott> Also, you "run your own" VPS. You get root. 00:08:17 <elliott> You can irrevocably fuck it up if you want. Nobody else can fix it for you. 00:08:22 <elliott> (Well, you can usually reset the HD.) 00:08:26 <CakeProphet> well right. Not what I mean.. 00:08:39 <zzo38> Running your own server is always best way you can configure whatever protocols you need and whatever server software you need; even if you use Apache you should need to configure it 00:08:39 <CakeProphet> still I'd be paying for one internet bill instead of an internet bill and a hosting bill. 00:08:40 <elliott> Also, it's like twenty dollars a month, which is way cheaper than a non-laughable connection would be. 00:08:49 <elliott> Add the COST of the computer... 00:08:49 <CakeProphet> zzo38: you can do the same on a VPN 00:08:53 <elliott> VPS 00:08:53 <elliott> VPS 00:08:54 <elliott> VPS 00:08:59 <elliott> A VPN IS SOMETHING ENTIRELY DIFFERENT 00:09:03 <coppro> ^ 00:09:04 <CakeProphet> elliott: I'll be getting a nice Desktop anyways. 00:09:07 -!- ralc has joined. 00:09:09 <CakeProphet> er... VPS 00:09:11 <CakeProphet> right 00:09:14 <itidus20> "Per IP address only 250 addresses maybe shortened per 24 hours. " 00:09:19 <coppro> CakeProphet: make sure you're allowed to run a server on your internet connection 00:09:22 <elliott> CakeProphet: Yes, and unless it's constantly idle it'll make a lousy server. 00:09:26 <coppro> CakeProphet: odds are good you aren't 00:09:32 <coppro> oh, and your OS too 00:09:34 <elliott> Especially since basically every major ISP tries to block nice ports such as, you know, eighty. 00:09:36 <coppro> check the licensing terms 00:09:42 <elliott> Eighty is also known as "port HTTP". 00:09:52 <CakeProphet> :( 00:10:26 <zzo38> Not all ISPs block port 80 (or other ports). You can still run HTTP server on nonstandard port, or run different protocol servers too 00:10:43 <CakeProphet> what so I can't play Borderlands and Magicka and Dwarf Fortress on my home web server? :P 00:10:48 <CakeProphet> it's like you're expecting me to get actual traffic. 00:11:02 <elliott> Enjoy hosting everyone's blogs 00:11:06 -!- Nisstyre has joined. 00:11:07 <elliott> Does Magicka run on Linux 00:11:09 <CakeProphet> no. 00:11:12 <elliott> Or are you seriously planning to run a server on Windows 00:11:15 <CakeProphet> no. 00:11:27 <CakeProphet> but it would be worth it to play Magicka I think. 00:11:27 <elliott> So you're planning to have a server that goes out for hours at a time at unpredictable intervals when you play games 00:11:29 <CakeProphet> my laptop can't run it. 00:11:39 <CakeProphet> elliott: yes that's the plan. :P 00:11:47 <monqy> good plan 00:11:48 <zzo38> My ISP has specifically said it is allowed to run servers on any port. 00:11:50 <CakeProphet> but do servers really "go out" because of that? 00:12:01 <monqy> what is zzo's isp 00:12:11 <zzo38> Delta Cable 00:12:37 <zzo38> I don't know if they have that information public, but they have told me by telephone. 00:13:43 <elliott> The .me registry is operated by doMEn, which won a contract to do so after a bid process conducted by the government of Montenegro. 00:13:50 <elliott> Gregor: So .me is owned by do men. 00:14:03 <CakeProphet> ....I believe that's "do me in", but okay. 00:14:06 <elliott> Oh jesus, I just realised that .me is the successor of .yu X-D 00:14:50 <CakeProphet> "do me in" sounds like a very trustworthy company. 00:15:02 <elliott> Gregor: Don't worry, you can get libc.what after a few revolutions. 00:15:11 <Gregor> :'( 00:15:22 <Gregor> elliott: BTW, .tk's "tweak" service has an API. 00:15:22 <CakeProphet> kallisti.pro is an awesome name. 00:15:26 <zzo38> And in fact I have servers on three ports. Later I might even add more. 00:15:28 <CakeProphet> monqy is a pro. 00:15:37 <elliott> Gregor: I said that. 00:15:42 <Gregor> elliott: I DON'T READ 00:16:18 <elliott> Man, web.archive.org is really bad at archiving. 00:16:39 <CakeProphet> elliott: you try archiving the web. 00:16:49 <zzo38> I don't plan to change any, because of links coming in externally, I want to ensure the URLs remain valid. 00:17:01 -!- hagb4rd has quit (Ping timeout: 260 seconds). 00:17:37 <CakeProphet> elliott: by the way Magicka is an excellent game if you have a graphics card you should buy it 00:17:41 <CakeProphet> it's like $10 00:17:47 <CakeProphet> best $10 spent 00:18:01 <Gregor> "if you have a graphics card" 00:18:02 <Gregor> lol 00:18:17 <Gregor> I'll just dig out my old Hercules card, I think I've got an ISA slot spare. 00:18:17 <CakeProphet> ..yes/? 00:18:18 <elliott> Unfortunately I use my MacBook Air via serial port. 00:18:25 <CakeProphet> oh. 00:18:32 <CakeProphet> you're running linux right? 00:18:39 <CakeProphet> ....right? 00:18:49 <Gregor> OK, fine, so I'll dig out my first-generation VGA card. 00:18:54 <elliott> No. OS X has excellent support for serial ports. 00:18:56 <CakeProphet> .. 00:19:00 <CakeProphet> NOOOOOO 00:19:03 <zzo38> Gregor: To play CGA collection games you need CGA card; Hercules won't work. You also need PC speaker. 00:19:04 <CakeProphet> and here I believed in you. 00:19:10 * Gregor nods sagely. 00:19:13 <elliott> To get around the fact that my MacBook Air has no serial port, I just punched an appropriately-sized hole in the side. 00:19:20 <elliott> Like, literally punched. 00:19:28 <CakeProphet> ha.. 00:19:34 <elliott> Then I realised that it was thinner than a serial port. So I pulled it open. 00:19:38 <CakeProphet> I thought you ran Ubuntu somewhere? 00:19:41 <elliott> It works perfectly. 00:19:48 <elliott> CakeProphet: Everything I am saying is completely true. 00:19:58 <CakeProphet> .. 00:20:09 <Gregor> It is SO TRUE that you can't even handle it. 00:20:20 <CakeProphet> I can't handle this shit I've got to go. 00:20:20 <zzo38> Does the motherboard support serial ports even though there is none? If it isn't, I wouldn't expect that to work. 00:20:26 <CakeProphet> .... 00:20:37 <CakeProphet> I wonder when he'll catch on. 00:20:43 <elliott> zzo38: Yes. Apple may have welded the SSD directly to the motherboard. 00:20:47 <elliott> But they know that you don't fuck with serial ports. 00:20:58 <zzo38> In fact I am sure simply punching a hole in it won't work if the motherboard doesn't already support serial port. 00:21:27 <elliott> Good thing it does. 00:21:32 <elliott> They just couldn't fit the actual hole. 00:23:35 <monqy> wow what 00:23:39 <elliott> monqy: ? 00:23:51 <monqy> i'm two minutes too late because of log reading 00:24:05 <itidus20> crazy bastards just run something like dosbox 00:24:16 <elliott> monqy: too late for what 00:24:21 <monqy> responding snappily 00:24:23 <itidus20> and come to terms with the facts noone ever made cga games for linux 00:24:32 <elliott> monqy: To what 00:25:01 <monqy> not being able to fit in the hole for their port 00:25:06 -!- CakeProphet has quit (Ping timeout: 260 seconds). 00:25:18 <itidus20> or do a dos partition? i dunno 00:25:33 <itidus20> but installing an actual retro video card is not the answer i think 00:25:53 <elliott> monqy: Everything I am saying is completely true. 00:25:53 <monqy> sage advice as always 00:25:54 <zzo38> itidus20: Well, yes, you do not need an actual CGA card if you have a compatible card or an emulator. 00:26:00 <elliott> Gregor: itidus20 says you shouldn't install a CGA card. 00:26:10 <elliott> This is despite the fact that Hercules was a separate thing to CGA. 00:26:29 * itidus20 laughs aloud 00:26:33 <zzo38> Hercules was pretty good monochrome card. 00:26:50 <monqy> elliott: "wow what" doesn't necessarily mean i believe it's true, just that it's ridiculous 00:26:54 <elliott> But what about the Hercules InColor Card?????????????????????? 00:27:07 <itidus20> whatever.. i secretly want him to do it 00:27:15 <zzo38> There is color Hercules card? I don't know about that. 00:28:15 <zzo38> CGA Collection is also fully source codes available, so with a few modifications you might get it to compile on other computers too 00:28:26 <monqy> good plan 00:28:44 -!- Tjr has left. 00:28:52 <zzo38> And it is public domain, so it is definitely allowed to do so. 00:28:53 <elliott> Wait, isn't Tjr that nethack guy? 00:29:26 <elliott> I blame ais. 00:29:31 <itidus20> elliott: I percieve two me's. The me of the past who did interesting things but not very well. And the me of the present who does nothing and who thinks the old me was better and also realizes the old me was a failure. 00:29:42 <zzo38> Actually, one of them is STARWARS is probably trademark infringement, but the copyright for the program is still public domain. 00:29:49 <elliott> itidus20: Ye verily. 00:30:39 <itidus20> some people use confusing language to confuse. i use it to make complicated statements 00:31:35 <zzo38> CGA works in low-resolution mode (40x25 text or 320x200 graphics) and high-resolution mode (double the horizontal). CGA Collection games all use low-resolution (although some are text mode and some are graphics mode). 00:31:50 <itidus20> what is cga collection? 00:32:05 <zzo38> A collection of public domain games for DOS computers. 00:32:07 <itidus20> i bet it includes bill williams's alley cats 00:32:15 <itidus20> or is it alleycat^ 00:32:29 <zzo38> No it doesn't include that game. It only includes games in the public domain and with source-codes available. 00:32:34 <itidus20> ah 00:33:05 <zzo38> I made the collection myself, but if you have any games meeting the requirement I could add that one too. 00:33:14 <itidus20> hmm 00:33:28 <zzo38> Such as, make up your own game! 00:34:08 <zzo38> You can download some of the games: http://zzo38computer.cjb.net/GAMES/cgacoll1.zip 00:34:16 <itidus20> in the past before i got the world wide web, creating things on my pc was more entertaining 00:34:24 <itidus20> the web is like the spoiling parents 00:34:47 <zzo38> Tell me if you like this game. 00:34:53 <zzo38> Or, other opinion, please. 00:35:34 <zzo38> If you make up levels for any of the games already in CGA Collection, I will add that too. 00:36:08 <elliott> oerjan: STILL NEEDS SOME RENAMIN' 00:36:15 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 00:36:49 <itidus20> Virus scanner says: This game cgacoll1 is free of viruses however my heuristics indicate it is probably bollocks. 00:37:08 <itidus20> (i didnt really virus scan it) 00:37:30 <itidus20> oh wow its a whole collection 00:37:39 <itidus20> in 208kb 00:38:16 <zzo38> It includes a lot of games although the linked URL is a ZIP file of only five of them. I will post more later. And possibly, update those that are already there, too. 00:38:58 <itidus20> i wish i had my old games from my 8086/80286 days 00:39:17 <Jafet> http://gog.com 00:39:18 <itidus20> my games were nothing fancy at all.. just experiments of someone learning qbasic1.0 00:39:37 <zzo38> If you read the documentation file and have questions about any of the other games described there, you can ask me. I might be able to post them immediately or it might take a while 00:39:49 <itidus20> 10 crappy versions of pong. fixed at 45degree angle increments 00:40:04 <zzo38> itidus20: I made only one. 00:40:15 <itidus20> it was the same version. 00:40:35 <zzo38> But I don't include those thing in CGA Collection. 00:40:35 <itidus20> i think i just renamed each improvement like pong1, pong2, pong3 00:40:58 <elliott> Jafet: I like the part where they're selling a game that came out this year 00:41:21 <elliott> Good Old Games without the old part... so Good Games... now we just need to find a bad game they're selling and it'll be Games 00:41:23 <elliott> g.com 00:42:04 -!- Vorpal has quit (Ping timeout: 260 seconds). 00:42:19 <monqy> it'll be an old game eventually 00:42:23 <monqy> they're future-ready 00:42:55 <zzo38> All games in CGA Collection so far are games I programmed myself, although if anyone make up other games too, meeting the requirements, please tell me I might add it there too 00:43:01 <itidus20> i did vector graphics in turbo pascal 6 simply because my way of doing putpixel for every pixel was way too slow 00:43:41 -!- oerjan has quit (Quit: Good night). 00:44:10 <itidus20> like line(0,0,5,0) or whatever the syntax was.. ran faster than putpixel(0,0); putpixel(1,0); putpixel(2,0); putpixel(3,0); putpixel(4,0); putpixel(5,0); 00:44:56 <itidus20> or did it.. oh who cares 00:46:02 <Jafet> elliott: perhaps the game was already old! 00:46:12 <zzo38> Try the five games I posted: BIGMAZE, PUZZLEX, STARSTAK, WUMPUS9, and ZNAK. 00:46:13 <itidus20> ok enough rambling.. i started bigmaze 00:46:14 <elliott> itidus20: What, you didn't try poking the byte before line? 00:46:16 <Jafet> Oh, it wasn't DNF. 00:46:23 <zzo38> itidus20: Did you read the documentation first? 00:46:31 <elliott> Jafet: Well, DNF would certainly remove the "Good" part. 00:46:39 <elliott> s/remove/invalidate/ 00:46:43 <itidus20> a little... 00:46:49 <itidus20> i don't like over-reading documentations 00:47:27 <zzo38> OK, but at least be aware the controls are the arrow keys (or h,j,k,l if you prefer) and the space-bar to use dig. 00:47:43 <itidus20> big maze is reminiscent of minecraft innit 00:47:51 <zzo38> I don't think so. 00:48:28 <itidus20> it "anticipates" minecraft, to use art-critic speak 00:49:00 <zzo38> OK, but I don't know. Write your own reviews though, if you like to do so. 00:49:19 <zzo38> I don't know art-critic speak either. 00:50:29 <itidus20> well anticipates means, it basically does something before something else does it in a more popular way 00:50:38 <itidus20> something like that 00:51:09 -!- ive has quit (Read error: Operation timed out). 00:51:21 <zzo38> OK 00:51:36 <itidus20> hmm.. i like the ascii-maze style 00:52:13 <itidus20> also what seems to be hiding bits of the maze that are too far out of the way 00:53:51 -!- hagb4rd has joined. 00:54:33 <itidus20> ahh the cross was a window 00:55:17 <itidus20> thought maybe it is burial :P 00:55:23 <zzo38> Yes, the cross is a window. 00:56:07 <itidus20> zzo38: basically i try to add extra spice to some gaming experiences by intentionally not reading all of documentation 00:57:05 <zzo38> Well, it is not required to read the documentation. And then, you try to figure out. 00:58:09 <itidus20> there is a difficulty of if you give too many instructions the player will feel they are following instructions 00:58:47 <itidus20> im not saying bigmaze documentation does that. 01:00:03 <zzo38> Yes; I try to avoid discussing strategy in the documentation, and I also intentionally do not include everything, as much as possible. 01:00:31 <itidus20> heh 01:00:44 <zzo38> I list the controls, command-line parameters, goals, and possibly a few other things. But not everything. 01:01:21 <itidus20> but still, i am spoiled by the worldwide web 01:01:31 <itidus20> entertainment coming from so many sources 01:03:23 <elliott> Sigh, when did oerjan escape 01:03:32 <elliott> Hey Deewiant, the burden falls onto you to rename Vector again 01:03:57 <zzo38> itidus20: Did you win? Did you lose? 01:04:05 -!- sebbu2 has joined. 01:04:05 -!- sebbu2 has quit (Changing host). 01:04:05 -!- sebbu2 has joined. 01:04:09 <itidus20> oh i lost 01:04:21 <itidus20> it was late on that i noticed the arrow 01:04:43 <itidus20> also.. i think i got confused about what digging actually caused.. 01:04:57 <itidus20> since so much of the screen can change when digging 01:05:11 <itidus20> now wumpus hunting 01:05:17 <zzo38> It digs around your location. However, some things are undiggable. 01:07:17 <zzo38> The WUNPUS9 game is much more difficult than the old "Wumpus" game. The goals are also different (in this game, simply to have a high score; you are guaranteed to die in this game) 01:08:18 <elliott> zzo38: can you relink again 01:08:20 <elliott> i might try in dosbox 01:08:21 -!- sebbu has quit (Ping timeout: 260 seconds). 01:08:30 <zzo38> http://zzo38computer.cjb.net/GAMES/cgacoll1.zip 01:09:16 <elliott> thx 01:09:18 <elliott> zipbomb right? 01:09:22 <zzo38> Yes 01:10:37 <elliott> bigmaze startup is fun. 01:10:45 <elliott> How many dots does it do 01:11:00 <zzo38> elliott: It is not always the same amount. 01:11:34 <elliott> How many lines can I expect to wait for, since it's pretty slow :P 01:11:37 <elliott> Roughly 01:12:05 <zzo38> Usually 4 to 6 01:12:47 <elliott> Thanks 01:12:53 <elliott> It must be a very big maze 01:13:23 <elliott> zzo38: It's meant to look kinda squashed, right 01:13:39 <elliott> (Also, where's the documentation itidus20 mentioned?) 01:14:01 <zzo38> elliott: No it isn't; it is meant for 40x25 text screen 01:14:06 <zzo38> The documentation is CGACOLL.DOC 01:14:13 <itidus20> microsoft proprietry format .doc 01:14:18 <itidus20> :P 01:14:18 <elliott> Hmm; here the face is squashed so it's much wider than high 01:14:22 <zzo38> It is a plain ASCII text file with printable line endings 75 columns 01:14:40 <zzo38> itidus20: It is not a Microsoft format; it is a plain ASCII format. It just has the .DOC extension. 01:14:42 <itidus20> sorry zzo for then for that accusation 01:16:12 <DH____> Word for MS Dos? 01:16:20 <zzo38> No; just plain ASCII text. 01:17:24 <elliott> zzo38: Where's DANCEKEY 01:17:31 <elliott> Or DOWN 01:17:57 <Gregor> What is that imaginary joke machine people mention when you start stepping on undefined behavior in C? And what is its best implementation? :P 01:17:58 <zzo38> Most of the files are missing; sorry. I will post whatever I can when I can. Possibly in a few days. 01:19:25 <elliott> Gregor: ...DS9K, and Deewiant has just started implementing one today... that we then talked about... for hours... 01:19:28 <elliott> Are you _trying_ to be synchronicious? 01:20:45 <Gregor> elliott: Um ... no? :P 01:20:53 <Gregor> elliott: I was trying to remember it for my C lab today. 01:20:56 <elliott> Gregor: Well you're succeeding. 01:21:14 <elliott> Gregor: I don't know of any implementations of C's abstract machine that deliberately try to trip code up; that's why we've discussed one a lot in here :P 01:21:54 <Gregor> Right, yeah, it's been talked a lot about in here, which is why I asked in here :P 01:21:57 <zzo38> I have old versions of some of the files but I don't want to post those. I believe I have the newest version of KNAR, though. (These files are on other computer and I need floppy disk to transfer them; that is why I don't have all files) 01:21:59 <Gregor> But you'd think SOMEBODY would have implemented it. 01:22:17 <elliott> Gregor: Maybe someone has, but it was probably bad 01:22:34 <elliott> Gregor: The problem is that almost every program relies on tons of UB. 01:22:53 <elliott> Gregor: You can either be an almost useless tool, or make UB /work/ but in a way that you can detect and log. 01:23:07 <Gregor> Hmm 01:23:27 <Gregor> I think more precisely you'd want a sort of "undefinedness verbosity level" 01:23:48 <elliott> It's not that simple; either you let UB happen undetected, or you define things in a way that when UB happens, you know about it, and that makes it almost impossible to recover from 01:24:11 <elliott> Casting an int to a pointer is UB, right? 01:24:12 <Gregor> Well, but there are many undefined behaviors. 01:24:17 <elliott> But pointer to int isn't. 01:24:34 <Gregor> In principle, you could switch off in each of those cases and either do the expected thing or nonsense based on flags. 01:24:44 <elliott> You want your int-representations of pointers to be absolutely ridiculous to trip out things that expect them to be used normally; but if someone casts a pointer to an int, you log it as UB, but then you have to /have a useful result/. 01:24:57 <Gregor> Hmhmhm 01:24:58 <elliott> And if you have a useful result, then pointer -> integer -> pointer doesn't work, and that'll break every program that expects it to. 01:25:05 <elliott> i.e. most programs that cast integers to pointers. 01:25:34 <elliott> Gregor: Personally I think it should just be hardline about it because good programs should make you feel bad about yourself 01:25:52 <elliott> No harm in offering a resume feature when it can be done, but pointless to try and design around it 01:25:54 <Gregor> But wait ... OK, maybe I'm not following. 01:26:19 <Gregor> Let's say for simplicity that "undefined behavior" is always "program terminates with exit code 42", since it's easy to check for. 01:26:23 <elliott> Gregor: Your false assumption is probably that you can detect UB without changing the semantics of the implementation. 01:26:30 <elliott> You cannot. 01:26:37 <Gregor> Hmmmmmmmmmm 01:26:42 <elliott> You must use completely pathological representations to trip programs up. 01:26:50 <elliott> e.g. pointers cannot be integers, internally, you want something completely different. 01:26:56 <elliott> You want to keep track of the type in pointers. 01:26:58 <elliott> Array bounds. 01:26:58 <elliott> etc. 01:27:12 <elliott> But hang on, you can convert anything in C to a bunch of bytes. 01:27:12 <Gregor> But the thing is, casting a pointer to an integer is something a compiler can see. 01:27:16 <elliott> Because you can cast anything to a char pointer. 01:27:19 <Gregor> It could simply write abort() instead of the code to do it. 01:27:29 <elliott> Gregor: Too bad that's not UB 01:27:46 <Gregor> You ... just said it is? :P 01:27:53 <elliott> No, integer -> pointer is 01:27:54 <elliott> I think 01:27:56 <Gregor> Oh 01:27:59 <Gregor> Well, whichever one. 01:28:04 <Gregor> Either way, the compiler can see it. 01:28:08 <elliott> Gregor: s/compiler/interpreter/ 01:28:18 <elliott> It must be some kind of interpreter or it can't catch tons of things. 01:28:31 <Gregor> Fair enough, but this one in particular is static :P 01:28:40 <elliott> Gregor: Anyway, the point is that the way you define things mean that operations like that /can't/ just "log but then go on". 01:28:48 <elliott> Because you have to change the representations to trip programs up. 01:28:52 <elliott> Which then makes those operations meaningless. 01:28:56 <Gregor> I don't argue for "log but then go on" 01:28:57 <elliott> Which is the whole point they're UB - they don't make sense everywhere. 01:29:07 <elliott> Gregor: What, then? "Be more like a real machine slider"? 01:29:19 <elliott> That would probably work, but is a pain to code, and you'd lose a lot 01:29:25 <Gregor> Well, more like a bunch of flags (with convenient presets), and if a UB is met, *boom* 01:29:49 <Gregor> No "go on", because ... why go on? 01:29:53 <elliott> Well 01:29:55 <elliott> That isn't what I meant 01:30:04 <elliott> Gregor: You're assuming every UB detection can look like this 01:30:10 <elliott> if (level > n) abort(); 01:30:13 <elliott> else return meaningful_result; 01:30:15 <elliott> It can't. 01:30:26 <elliott> I will say this one more time before I start typing in all-caps: 01:30:39 <elliott> You must change representations to catch as much UB as possible, and these changes make the relevant UB operations detectable but having _no meaningful result_. 01:30:50 <elliott> That is the reason a lot of things are UB: Because they only make sense given certain assumptions that aren't true everywhere. 01:30:56 <elliott> You must break those assumptions to trip programs up. 01:31:11 <elliott> The point is: "If my program works with DS9KCC, it works anywhere." 01:31:20 <elliott> Therefore, one must violate all assumptions possible. 01:31:55 <itidus20> one naive assumption is that a char is 8bits 01:32:03 <Gregor> I understand that you keep saying that, but I'm not yet convinced because you're yet to present an example :P. Although intuitively I'd agree with you that there are cases which are not detectable at runtime, I just haven't found a case in my head. 01:32:07 <itidus20> is that a good one to start with? 01:33:35 <Gregor> Well, that a char is 8 bits isn't a behavior ... that a char, shifted left by six bits, is something, is. 01:33:49 <Gregor> Though I suppose to define all such cases I end up in Rice's purgatory :) 01:34:07 <elliott> Gregor: Logread if you want examples 01:34:09 <elliott> It's been discussed tons 01:34:15 <Gregor> Fair 'nuff 01:34:16 <elliott> I gave a minor example 01:34:32 <itidus20> i will not try to wedge myself into the topic anymore. 01:34:35 <itidus20> :D 01:34:41 <elliott> itidus20: Oh, you were talking? :P 01:34:50 <elliott> Gregor: Btw "that a char is 8 bits isn't a behavior" yes it is 01:34:51 <elliott> CHAR_BIT 01:35:13 <Gregor> Reading CHAR_BIT is behavior. 01:35:18 <Gregor> The fact that a char is 8 bits is not. 01:35:20 <elliott> Gregor: Incidentally, Valgrind with -fmudflap and all that nonsense is kind of a partial C DS9K 01:35:24 <elliott> Handling only memory management 01:35:40 <elliott> I think -fmudflap is the one that causes every memory access to go through a function, at least 01:35:42 <elliott> I don't really recall 01:35:55 <elliott> The great thing about a C DS9K is that you can give ridiculously detailed errors :P 01:35:56 <Gregor> I just said "reading" for a #define, but y'know, that sorta is reading at CPP-time :P 01:36:47 <zzo38> It is possible to do C preprocessor at the same time as reading other C codes. 01:36:47 <elliott> "The pointer (sdfdf + 999) in function foo at file:line:col was dereferenced, overflowing the bounds of the array blah at otherfile:line:col by N elements." 01:37:30 <elliott> Gregor: Oh yeah, and pointers to different types should look TOTALLY different (when read via char-pointer) 01:37:38 <elliott> Especially function pointers 01:37:53 <elliott> Even if there's an integer index SOMEWHERE in a pointer, it wants to be random :P 01:38:09 <elliott> And each pointer should be of a different, stupid size. 01:38:11 <elliott> As in 01:38:13 <elliott> Each pointer type 01:38:32 <Gregor> Hmmmm ... I truly thought that void * was guaranteed to be the same size as char * (but not function pointers) ... 01:38:48 <elliott> The only guarantee is that any pointer can be casted to (void *) 01:38:53 <elliott> (void *) can just be lolhuge. 01:38:56 <Gregor> Ahh, so void * --- right. 01:39:18 <Gregor> Essentially you could have an arbitrarily-retarded amount of space be usable for things of certain types :P 01:39:21 <elliott> In fact, (void *) could be smaller than (char *); maybe (char *) stores string length or something for debugging purposes :P 01:39:23 <itidus20> ok i looked up ds9k .. what a wonderful thing.. especially the name 01:39:24 <elliott> Then the cast would just throw that away. 01:39:53 <Gregor> elliott: Surely (char *) (void *) (char *) is supposed to work ... 01:40:11 <elliott> Gregor: Yeah, but that'd just note that no length info was available. 01:40:23 <Gregor> Oh right, I spose that since it's for debugging it doesn't matter :P 01:40:23 <elliott> Of course == would discard the length info in comparing equality. 01:40:28 <elliott> But it's still part of the size. 01:40:32 <Gregor> Heh 01:40:41 <elliott> Gregor: Basically, the main reason to fuck with (observable) representations isn't to catch UB that you couldn't otherwise (though it can aid in that, certainly), but to violate the assumptions programs make. 01:40:59 <elliott> Sure, it might just crash horribly rather than giving a nice error message, but the point is that a program that assumes those things will break. 01:41:14 <elliott> And besides, "crashing horribly" pretty much always means you get a luxurious error message when the machine is this clued-in. 01:41:18 <Gregor> Sure sure. 01:41:48 <Gregor> Right, I guess my contention was just that this sort of thing isn't all cause /undefined/ behavior, the behavior is well-defined, it's just not what the programmer expected. 01:42:01 <elliott> Gregor: There's a problem similar to branch coverage though... e.g. if there's a signed overflow that only happens in extremely rare situations. 01:42:06 <Gregor> "isn't all cause" >_> ??? 01:42:13 <elliott> You need a combination of static analysis and runtime DS9Kery... but those are basically entirely separate projects. 01:42:24 <elliott> Since DS9Kness is mostly in the backend, and static analysis is like compilation without a backend :P 01:42:27 <Gregor> elliott: Oh for piff sake, let's not go overboard :P 01:42:33 <Sgeo> DS9K? 01:42:40 <elliott> Gregor: Dude, you call signed overflow overboard? 01:42:49 * Sgeo googles 01:42:50 <elliott> Gregor: Do you REALISE how little you're allowed to do in C? 01:42:52 <Gregor> elliott: I call detecting that in all unreached branches overboard. 01:43:01 <elliott> That's impossible. 01:43:07 <Gregor> Yes :P 01:43:14 <elliott> The point is that lots of programs have UB that's only rarely reached. 01:43:18 <elliott> Most bugs are only rarely reached. 01:43:23 <elliott> That's why they haven't been fixed. 01:43:38 <elliott> So you need a separate static analyser to catch things less accurately but more ahead-of-time. 01:43:41 <elliott> But that's an entirely separate project. 01:43:54 <elliott> I'm just saying that a platonically perfect DS9K toolchain would include a static analyser. 01:44:06 <Gregor> I'm just --- right, "platonically perfect" is what I'm arguing about :P 01:44:09 <itidus20> there could be a C compiler which would simply not compile UB right? 01:44:28 <Gregor> elliott: Designing a system that is actually implementable within our lifetimes would be a nice first step :P 01:44:44 <elliott> Gregor: Deewiant wrote/is writing a parser, so /shrug 01:54:46 -!- myndzi\ has joined. 01:55:43 -!- Jafet1 has joined. 01:58:31 -!- mycrofti1 has joined. 01:58:55 -!- atehwa_ has joined. 01:59:33 -!- Jafet has quit (Ping timeout: 260 seconds). 01:59:34 -!- mycroftiv has quit (Ping timeout: 260 seconds). 01:59:34 -!- atehwa has quit (Ping timeout: 260 seconds). 01:59:35 -!- myndzi has quit (Ping timeout: 260 seconds). 02:04:23 <elliott> "Agda now knows where your (HTML5 geolocation compatible) browser is [...] I just came back from a walk round the block with my Android phone, and watched my coordinates update themselves." 02:04:26 <elliott> WHY ARE YOU DOING THIS TO POOR AGDA 02:05:23 <Sgeo> What do they mean by Agda? Surely not the language 02:06:58 <elliott> Agda 02:07:04 <elliott> http://permalink.gmane.org/gmane.comp.lang.agda/3127 02:11:32 <itidus20> new random thought here 02:11:37 <itidus20> is testing computation? 02:11:42 <elliott> >_< 02:12:16 <itidus20> every software system tends to involve testing 02:12:53 <itidus20> because what the human creates is not always what the human desires 02:13:05 -!- ralc has quit (Quit: Leaving). 02:13:52 <itidus20> and also, that a program is only correct according to a standard being used by a human 02:14:57 <Sgeo> I'm wondering if I could make my VM vaguely resemble PicoLisp's 02:14:58 <itidus20> i wish i didn't have to do this monologue 02:15:18 <itidus20> attempted cathartic 02:16:44 <itidus20> humans created C standard. humans wrote programs in C. the programs are only wrong because they are measured against C standard. therefore humans shouldn't beat themselves up over it ^^; 02:17:27 -!- Jafet1 has changed nick to Jafet. 02:17:41 -!- quintopia has quit (Ping timeout: 260 seconds). 02:17:59 <itidus20> i am not sure whether humans act randomly. because a computer can easily act pseudorandomly. 02:20:57 -!- quintopia has joined. 02:20:57 -!- quintopia has quit (Changing host). 02:20:57 -!- quintopia has joined. 02:21:47 <itidus20> most applications are written in such a way that they expect the user to not operate at 100% efficiency of using the application. 02:22:35 <itidus20> slow typing, slow mouse moving, slow thinking, slow text reading, uncertainty, ignorance of features 02:22:40 <Gregor> Hulu's movie selection is like MST3K without the MST3K characters. 02:23:23 <itidus20> so the most efficient applications are the ones most removed from human interaction 02:24:56 <itidus20> ahh.. one could just feed a stream of 0s and 1s into a cpu 02:25:03 <itidus20> who cares what it does 02:26:01 <elliott> `addquote <Gregor> Hulu's movie selection is like MST3K without the MST3K characters. 02:26:03 <HackEgo> 668) <Gregor> Hulu's movie selection is like MST3K without the MST3K characters. 02:27:53 <elliott> I wonder why FRP isn't more popular in JavaScript. 02:27:57 <elliott> Probably 'cuz it's called FRP. 02:28:04 <coppro> FRP? 02:28:08 <monqy> FUNCTIONAL IS HARD 02:28:15 <elliott> coppro: frp 02:28:18 <elliott> It stands for frp. 02:28:34 <itidus20> as long as a human is not monitoring the calculations then a CPU which is getting it's data and instructions as a stream of 0s and 1s is correct computation 02:29:19 <itidus20> i suppose then error is defined by anything which interrupts the processing of the stream 02:29:23 <coppro> elliott: that's the dumbest acronym ever 02:30:03 -!- copumpkin has joined. 02:30:10 <elliott> coppro: Sorry, you misspelled best. 02:30:15 <elliott> It lets you vary the punctuation. 02:50:03 <Gregor> "The Rocky Horror and Bullwinkle Picture Show" 02:53:15 <itidus20> so the trouble with software is it gives feedback 02:54:01 <itidus20> feedback means it enters into the reward and punishment mechanisms.. as if software is judging us 02:55:33 <itidus20> contrasting with the leitmotifs used to build up associations between music and characters/themes 02:56:19 <itidus20> so i am being too crazy about it.. 02:56:32 <itidus20> cause and effect is not judgement 03:00:20 <elliott> <edwardk> i redesigned the way i was plumbing diagnostic messages through trifecta. now there are a much simpler set of combinators, and many fewer twisty passages they must take going through the parser 03:00:21 <elliott> Deewiant: 03:00:26 <elliott> New release ;-) 03:09:47 -!- evincar has joined. 03:10:55 <evincar> I am returned. 03:10:55 <lambdabot> evincar: You have 1 new message. '/msg lambdabot @messages' to read it. 03:11:39 <evincar> I don't suppose anyone cares much. 03:12:01 <Gregor> We care because now we have to type "el[tab]" for elliott instead of just "e[tab]" X-P 03:13:08 -!- evincar has changed nick to why. 03:13:16 <why> Aww, registered nick. 03:13:21 -!- why has changed nick to evincar. 03:13:24 <evincar> I give up. 03:13:35 <evincar> I'm not known by enough names that I can just switch. 03:19:45 -!- MDude has changed nick to MSleep. 03:20:04 <evincar> Holy shit. I earned $8.73 yesterday from ads? 03:22:05 <evincar> I did not know my blog was earning this much. 03:22:17 <elliott> A WHOLE EIGHT DOLLARS A DAY 03:22:39 <evincar> I know. That covers at least my food. 03:23:48 <evincar> I usually spend twenty minutes on a post, so if it makes me a few dollars, it still works out to a decent hourly rate. 03:23:53 <Jafet> "The best minds of my generation are figuring out how to make people click ads." ~ Jeff Hammerbacher 03:24:28 <evincar> I don't care too much about it. It's just a nice surprise. 03:25:01 <evincar> I'm more concerned with people reading my content than clicking the nearby salesmanboxen. 03:28:17 <evincar> Speaking of concerns, I'm concerned I'll need to rewrite the interpreter for my language. :( 03:29:58 <evincar> It's very modular and wonderfully lazy right now, and it would suck to break that... 03:30:05 <evincar> ...but the different levels of the language are heavily intertwined. 03:30:13 <evincar> So the interpreter may have to reflect that. 03:32:32 -!- itidus20 has quit (Quit: Leaving). 03:39:10 -!- ive has joined. 03:53:00 <zzo38> I found out something in Haskell, that if you import qualified, and then, you can define the class members for an instance without qualification. 04:07:16 <zzo38> And I think const = curry fst and flip const = curry snd 04:09:16 <zzo38> And fst = uncurry const and snd = uncurry $ flip const 04:14:46 <Lymee> :t fst 04:14:47 <lambdabot> forall a b. (a, b) -> a 04:15:03 <Lymee> :t curry 04:15:04 <lambdabot> forall a b c. ((a, b) -> c) -> a -> b -> c 04:15:20 <Lymee> Oh, curry, not uncurry. 04:15:38 <elliott> Deewiant: edwardk says he was planning to add something to customise the tab width 04:15:39 <elliott> FWIW 04:17:22 -!- hagb4rd has changed nick to hagb4rd|zzZ. 04:20:45 <zzo38> Tab width in what? 04:22:15 <elliott> trifecta 04:25:16 -!- nys has quit (Quit: enden). 04:25:38 <zzo38> Can you set it to infinite? 04:26:04 <elliott> no 04:26:41 -!- hagb4rd|zzZ has quit (Ping timeout: 260 seconds). 04:28:42 <elliott> http://www.moderngpu.com/intro/scan.html#Ballot 04:28:51 <elliott> ais deals with aliens. 04:31:25 <elliott> Gregor: Remember that question you asked who's answer was LZO 04:31:30 <elliott> Gregor: http://code.google.com/p/snappy/ might be another answer 04:33:07 <elliott> Deewiant: Also 04:33:10 <elliott> <edwardk> but even so, he could largely ignore the column information i give, i have a column byte in delta as well that provides the offset from the beginning of line in bytes 04:33:11 <elliott> <edwardk> if he doesn't care about the rendering of the source line then he can just use that if he must 04:33:14 <elliott> <edwardk> (assuming he doesn't care about utf-8) 04:33:22 <elliott> This is so much more efficient than direct communication 04:34:13 <Gregor> elliott: Sweet 04:34:24 <elliott> Gregor: What WERE you using it for, anyway? 04:34:47 <Gregor> elliott: Intermediate files produced while doing some music processing that ended up needing to be floating point. 04:35:05 <elliott> What's wrong with that 04:35:33 <Gregor> Only that there are no lossless codecs for floating point audio. 04:35:43 <Gregor> Err, no lossless /compressed/ codecs anyway :P 04:35:47 <elliott> Were the files really that big uncompressed? 04:35:51 <Gregor> Yes. 04:35:54 <elliott> How big 04:36:14 <Gregor> Well, for my ~4 minute audio file, before everything could finally be put together, it was about 5GB 04:36:19 <elliott> Yow 04:36:35 <elliott> How many fucking bits/channels/whatever :-P 04:36:38 <elliott> /hz 04:36:48 <Gregor> 64/2/48000 04:37:01 <elliott> 64-bit floating point? That... I don't think that's a commonly-used audio format. 04:37:18 <Gregor> Even 32-bit floating point isn't particularly common :P 04:37:23 <elliott> Why. Are you doing that. 04:37:34 <Gregor> But 32-bit floating point can't accurately store every 32-bit integer value, so converting /to/ it is lossy. 04:37:40 <Gregor> (I only go to 16-bit as my final step) 04:37:40 <elliott> >_< 04:38:33 <Gregor> Human ears can't hear the difference, but cumulative errors are a bitch, and human ears can hear them real good. 04:38:46 <Gregor> More precision = less cumulative errors 04:38:53 <Gregor> (Or rather, lesser cumulative errors) 04:39:28 <elliott> Humans can't tell ~128 Kio/s MP3 from the original source 04:39:33 <zzo38> Then don't use the floating point format 04:39:34 <elliott> For an average definition of human 04:39:44 <Jafet> For an average definition of source 04:39:45 <elliott> Do you have any examples of such cumulative errors? ABX results? :-P 04:39:48 <Gregor> elliott: Shall I just repeat my last three lines, or would you prefer to read them again? 04:40:14 <Gregor> Precisely the cumulative errors I was getting was from combining multiple reverberations. 04:40:14 <elliott> Gregor: Just asking if you have any actual examples, since I don't think anyone in the world has yet resorted to 64-bit floating point audio :P 04:40:29 <Gregor> Oh, I'm overkilling it. 04:40:33 <Gregor> Most assuredly. 04:40:44 <Gregor> But suffice it to say I was very frustrated with the cumulative errors :P 04:41:14 <Jafet> I heard from a film commentary that they had to render some part of it with 64-bit colour instead of 32-bit colour, because it affected the results 04:41:26 <Jafet> It involved a diffraction shader or something 04:41:51 <elliott> <director> The infrared! You fucked up the goddamn infrared! Fix it! 04:42:02 <Gregor> Right, probably the same sort of idea. You can't tell the difference, but if there's an error in the difference 1000 times, you can. 04:42:04 <elliott> Tetrachromats must find films really disappointing. 04:42:12 <elliott> They look so /dull/. 04:43:00 <Gregor> Is there a term for hypothetical beings that can actually discern all colors? (Ignoring the physical plausibility of such an ability) 04:43:12 <elliott> Headaches 04:43:14 <Gregor> X-D 04:43:41 <elliott> It sounds an excellent recipe for a pretty but useless visual field. 04:46:25 <elliott> Deewiant: <edwardk> elliott: trying to figure out how i can make a modeline parser transformer for reading vim and emacs mode lines and adjusting tabstops, etc. appropriately 04:46:45 <elliott> My parsing library had better become exponentially more awesome overnight with this kind of shit to keep up with 05:25:05 -!- ive has quit (Quit: leaving). 05:34:29 -!- copumpkin has quit (Ping timeout: 240 seconds). 05:34:53 -!- copumpkin has joined. 05:39:14 <evincar> elliott: How do you measure the awesome of a library? 05:44:25 <elliott> http://www.thepimanifesto.com/ 05:44:33 <elliott> Oh my god everybody shut up. 05:45:39 <monqy> why is pi vs tau a thing 05:46:09 <elliott> people don't have anything better to do 05:46:19 <evincar> It's so petty... 05:46:21 <elliott> "Tauists also claim that their version of Euler's formula is better than the original, but we will see that it is in fact weaker." 05:46:26 <elliott> this is amazing 05:46:45 <elliott> im going to find a bunch of formulas where 3pi looks nicer and start the... uhh, lets look at the greek alphabet 05:47:02 <elliott> qoppa manifesto 05:47:11 <elliott> Ϙ 05:47:41 <evincar> That's not even modern Greek. You're doing it right. 05:48:32 <evincar> As programmers, aren't we guilty of stuff like this though? 05:48:52 <evincar> Very often? 05:49:07 <monqy> nope 05:49:43 <zzo38> I think pi is better, but the reason has nothing to do with circles. 05:50:14 <evincar> Pi has to do with circles... 05:50:20 <evincar> ...anything that has to do with pi has to do with circles. 05:50:28 <monqy> shut up shut up shut up 05:51:24 <zzo38> evincar: No it doesn't. Various things with circles have pi, but not everything, and not everything pi is circles. 05:51:53 <evincar> I'm much too lazy to argue. 06:01:23 <evincar> Blog posts about programming languages --> 0-100 views. 06:01:33 <evincar> Blog posts about stuff I don't really care about --> 100-1000 views. 06:01:35 <evincar> :( 06:01:45 <evincar> I appear to be doing it wrong. 06:01:51 <coppro> woot, almost finished getting down linear algebra notes 06:06:44 -!- acommasplice has joined. 06:08:24 <elliott> acommasplice: hi 06:08:57 <elliott> `? welcome 06:08:59 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 06:09:25 <acommasplice> hi 06:11:11 <Jafet> Which esoteric programming languages have been deployed? 06:14:29 <evincar> Jafet: What do you mean by "deployed"? 06:15:11 <Jafet> HackEgo: What do you mean by "deployment"? 06:15:21 <elliott> `log international hub 06:15:22 <Jafet> The silent type, eh. 06:15:34 <elliott> Silenter than it should be. 06:15:35 <elliott> HackEgo: oi. 06:15:37 <HackEgo> 2009-05-07.txt:21:57:15: <ais523> ah, I always get a warm fuzzy nostalgic feeling when we have "the international hub for esoteric programming language design and deployment" in the topic 06:15:56 <elliott> I think it's just a play on them practical channels' topics. 06:16:00 <elliott> At least circa oh-five. 06:16:10 <evincar> So I'm thinking about a package system for my language. 06:16:12 <Jafet> We should be the intergalactic hub 06:16:31 <elliott> `log intergalactic hub 06:16:36 <HackEgo> 2011-09-17.txt:06:16:31: <elliott> `log intergalactic hub 06:16:44 <elliott> Hmph. 06:16:44 <elliott> `log intergalactic hub 06:16:47 <HackEgo> 2011-09-17.txt:06:16:31: <elliott> `log intergalactic hub 06:16:52 <elliott> `log I hate you 06:16:56 <HackEgo> 2007-07-09.txt:16:55:15: <CakeProphet> I HATE YOU 06:17:29 <elliott> I share these sentiments. 06:17:32 <evincar> Do you suppose it makes sense for a package to have a canonical URL? 06:17:40 <elliott> They are sentiments I share. 06:17:51 <evincar> Or should there be an alias and a central repo of redirects to real URLs, in case of change? 06:18:22 <elliott> What is it with me and long, verbose wiki comments lately. 06:18:25 <elliott> Well okay, two of them. 06:18:26 <evincar> I don't want to set up any central stuff... 06:18:38 <elliott> But two is, like, significantly more than one. 06:18:40 <elliott> Or even zero. 06:18:46 <elliott> I'd like to point out that two is much greater than zero. 06:19:02 <elliott> And thus by the "zero, one, infinity" rule we can conclude that I'll be making long, verbose wiki comments for the rest of my life. 06:19:14 <elliott> That isn't quite infinity though. I guess I've assured my own immortality? 06:19:27 <evincar> Congratulations. 06:19:37 -!- acommasplice has quit (Quit: acommasplice). 06:20:09 <elliott> RIP acommasplice. 06:20:12 <elliott> Killed by a comma splice. 06:20:47 <evincar> So like http://company.com/very/package.vp versus very://company/package 06:21:27 <elliott> Meanwhile, a very esoteric work: 06:21:28 <elliott> http://hackage.haskell.org/package/gutenberg-fibonaccis 06:21:36 <evincar> Where the latter would go to cvan.com/company/package.vp and possibly be redirected to the former. 06:21:36 <elliott> "The fibsLen function returns the number of Fibonacci numbers - |in the first1001Fibs list." 06:21:45 <evincar> ... 06:21:48 <elliott> Thank god Gutenberg are preserving the fibonacci numbers for generations to come. 06:22:17 <evincar> We might lose them otherwise. 06:22:35 <evincar> I guess decentralised > centralised? 06:22:48 <evincar> And then if you're changing your URL, you'll notify people anyway. 06:22:54 <evincar> And old software will just be broken. 06:23:07 <evincar> Or you could put it on github or something and save yourself the trouble. 06:23:14 <evincar> Hadn't thought of that. 06:23:39 <elliott> I wonder if that guy is anticipating further Gutenberg fibonacci releases. 06:23:49 <elliott> You know, so he can make it bigger, and then maybe fibsLen would be useful. 06:24:01 <elliott> When we discover more Fibonacci numbers. 06:24:06 <evincar> They come out in episodes of 1001 each. 06:24:19 <evincar> One episode a season. 06:25:04 <evincar> Also, is it a good idea for a web framework to validate generated code? 06:25:18 <evincar> Or should it stay out of the way? 06:25:23 <Jafet> Why would generated code be invalid? 06:25:36 <elliott> Jafet: It might break its knee. 06:26:03 <evincar> I dunno, you could write something that's syntactically fine but semantically invalid. 06:26:06 <Jafet> Is this why some programmers worry about padding? 06:26:08 <evincar> Easily. 06:26:15 <elliott> Jafet: Yes. 06:26:19 <elliott> Jafet: Health and safety is vital when programming. 06:26:22 <elliott> It's a rough world out there. 06:27:02 <Jafet> Why would a code generator produce something semantically invalid? 06:27:11 <Jafet> Find that code generator and break its knee. 06:27:38 <evincar> I dunno, say someone writes <span><p>...</p></span>. Am I responsible? 06:27:56 <Jafet> Did they include a doctype? 06:28:23 <evincar> Assume <!DOCTYPE html> I guess. 06:28:30 <monqy> evincar: you could put that in the type system if you wanted to 06:28:30 <elliott> Jafet: I, too, advocate violence against invalids. 06:28:34 <elliott> Jafet: You monster. 06:28:34 <Jafet> What's HTML? 06:28:45 <monqy> evincar: but why are you talking about this 06:28:54 <Jafet> Or html 06:29:07 <evincar> monqy: Writing a basic web framework for my language? 06:29:09 <monqy> ew 06:29:17 <evincar> Jafet: HTML5. 06:29:27 <monqy> evincar: anyway you wouldn't check the output; you'd put it in the type system and catch errors at compile time 06:29:33 <Jafet> Okay, then validate it as HTML5. If that's even possible. 06:29:54 <Jafet> For bonus points, validate all actionscript 06:29:55 <evincar> monqy: Yeah. Well, I'd do it at compile-time, but not in the type system. 06:30:07 <monqy> then where would it be? 06:30:14 <monqy> if not in the type system 06:30:19 <evincar> In a macro. 06:30:21 <monqy> what 06:30:27 <monqy> what do you mean 06:30:29 <monqy> in a macro 06:30:38 <evincar> In a function that is evaluated at compile time. 06:30:55 <monqy> and what would it do 06:31:11 <elliott> monqy: this is beautiful poetry. 06:31:11 <monqy> I have a feeling you're wrong about something and I have an idea as to what it is 06:31:20 <elliott> Beautry. 06:31:21 <elliott> Boetry. 06:31:36 <Jafet> How Poeful. 06:32:20 <monqy> evincar: indeed you could be Wrong about multiple things 06:32:35 <evincar> Well, I've got a family of macros (such as <span>) that read cdata and other SGML-like macros. 06:32:36 <monqy> evincar: it is very possible your naive approach would be computationally impossible 06:32:56 <evincar> So they'd just report any elements that show up that shouldn't be in them. 06:32:57 <elliott> Jafet: Boeful. 06:33:00 <elliott> Boefultry. 06:33:05 <elliott> Botry. 06:33:06 <elliott> Boats. 06:33:08 <elliott> I like boats. 06:33:10 <monqy> evincar: and how would it know what elements show up in them 06:33:16 <monqy> evincar: how would you determine this at compile time 06:33:51 <evincar> By...reading them? 06:33:56 <evincar> There are plenty of ways to check. 06:33:56 <monqy> what do you mean reading them 06:34:08 <elliott> You can read books. 06:34:11 <evincar> Maintain a stack of parent element names, and blow up if they're wrong. 06:34:11 <elliott> Not as well as boats though. 06:34:14 <elliott> Boaks. 06:34:17 <elliott> The best thing 06:34:18 <elliott> . 06:34:33 <monqy> evincar: what happens if it doesn't halt 06:34:40 <monqy> evincar: is your language sub-TC? 06:34:43 <evincar> Why wouldn't it halt? 06:35:02 <evincar> HTML is sub-TC. :P 06:35:05 <monqy> what 06:35:07 <monqy> i mean your language 06:35:35 <monqy> if you can use your language to embed arbitrary tags and stuff in html, and your language is TC, you've got a Real Problem if you're doing it your way 06:36:21 <evincar> I don't know what you mean by "embed arbitrary tags and stuff in html". 06:36:25 <monqy> i mean 06:36:27 <evincar> And I think you might be misunderstanding me. 06:36:37 <evincar> Because I haven't really explained myself. :P 06:36:50 <monqy> ok; explain away 06:36:58 <monqy> I assure you, you're Wrong 06:37:05 <elliott> Wrongness is good. 06:37:12 <elliott> Actually most things starting with capital letters are. 06:37:18 <elliott> They're so 06:37:20 <elliott> capital. 06:37:38 <shachaf> Capital letters are evil. 06:37:46 <shachaf> English would be far superior if they were completely eliminated. 06:37:46 <monqy> evincar: if you don't feel like explaining, that's fine too; honestly, I'd rather not bother 06:38:03 <monqy> evincar: just know that you're Wrong 06:38:46 <evincar> monqy: It's simple. Tags are macros, which expand to functions that act like templates. 06:39:02 -!- acommasplice has joined. 06:39:03 <monqy> evincar: and how does this catch html errors at compile time 06:39:40 <evincar> By including simple validation tests in the tag macros? 06:39:52 -!- acommasplice has left. 06:39:54 <monqy> and how would that catch html errors at compile time 06:40:07 <monqy> look, you're severely underthinking it 06:40:41 <evincar> There's not much to think about. 06:40:45 <monqy> oh? 06:40:50 <evincar> Write a function that validates some HTML. 06:41:03 <evincar> Now define it as a macro so it evaluates at compile-time. 06:41:16 <evincar> And name it after a tag. 06:41:21 <evincar> Yaaay done. 06:41:22 <monqy> how about an example 06:42:07 <monqy> (define f (don't terminate)) (span f) 06:42:39 <evincar> If the code you put in a template doesn't terminate, you can't expect the template to terminate. 06:43:09 <monqy> so your compilation will silently hang 06:43:28 <monqy> dude 06:43:34 <monqy> just embed it in the type system 06:43:35 <evincar> That's like saying <?php function f() { don't terminate } ?><span><?php f(); ?></span> 06:43:41 <monqy> or some other sub-tc language 06:43:43 <evincar> It's nonsensical. 06:43:48 <monqy> how about 06:43:53 <evincar> Why would you do that? 06:43:55 <monqy> writing your web framework 06:43:57 <monqy> in a sub-tc language 06:44:01 <monqy> such that 06:44:04 <monqy> nothing can ever not terminate 06:44:08 <monqy> that would be 06:44:08 <monqy> grand 06:44:25 <evincar> I already did that once. 06:44:28 <monqy> evincar: people make mistakes. mistakes make infinite loops. 06:44:48 <monqy> evincar: why not embed it in the type system? does your language not have a good type system? 06:45:35 <evincar> monqy: It would be possible to do it in the type system, but not as pretty. 06:45:43 <monqy> not as pretty? 06:45:49 <elliott> Can I have a number sign monqy? 06:45:51 <elliott> It'd be very nice and lovely. 06:45:54 <monqy> # 06:45:58 <elliott> Thanks bro. 06:46:08 <elliott> You can stop your poetry now though. 06:46:12 <monqy> ok 06:46:14 <monqy> evincar: shut up 06:46:28 <evincar> You're the one who was arguing. 06:46:35 <evincar> I just asked if it was a good idea to validate the output at all. 06:46:53 <monqy> how boring 06:56:52 <evincar> Not all problems are interesting. 06:59:49 <monqy> except this channel is for ones that are 07:02:21 <evincar> Care to help me figure out how I ought to implement this beast then? 07:02:33 <evincar> The language itself. 07:02:38 <evincar> Not the dumb library. 07:02:38 <monqy> be a better language / be a better person 07:02:59 <evincar> It's a great language. 07:03:05 <monqy> I'm doubtful 07:04:32 <evincar> It has an irrational obsession with metaprogramming. 07:04:52 <monqy> irrational obsession sounds Bad 07:05:14 <Jafet> Rational obsession? 07:05:20 <evincar> Sounds bad, but feels good. 07:05:36 <elliott> Irrational Obsession: a good b- no it's not who am I kidding. 07:05:49 <elliott> I wonder what the ratio of things people have said are good band names to good band names is. 07:06:58 <Jafet> Queen is a really shitty band name. 07:07:20 <evincar> I resent successful bands with bad names because it perpetuates bad naming. 07:07:50 <elliott> Jafet: Not as bad as King. 07:07:50 <monqy> cool 07:10:04 <evincar> All the layers of the language are intertwined problematically. 07:10:23 <evincar> I fear I'll end up with a one-function interpreter, with no modularity. 07:11:24 <monqy> oh no 07:12:04 <evincar> :/ 07:18:16 -!- itidus21 has joined. 07:18:52 <elliott> oh hello itidus21 07:19:16 <monqy> A Refreshing Change of Pace 07:19:40 <elliott> a refreshing change of itidus21 07:23:27 <itidus21> ahh 07:27:16 <elliott> monqy: nother number sign please? 07:27:25 <monqy> ############################################ 07:27:25 <elliott> never mind 07:27:28 <elliott> found the old one 07:31:48 <elliott> thanks though 07:33:17 -!- CakeProphet has joined. 07:33:17 -!- CakeProphet has quit (Changing host). 07:33:17 -!- CakeProphet has joined. 07:35:21 <CakeProphet> SUP GUYS 07:36:58 <elliott> sup 07:38:52 <CakeProphet> just got back 07:38:55 <CakeProphet> from social stuff 07:38:56 <CakeProphet> and now 07:38:59 <CakeProphet> I must do not social stuff. 07:39:04 <elliott> log off irc then 07:39:05 <monqy> like irc 07:39:07 <monqy> oops 07:39:11 <elliott> sorry monqy 07:39:14 <elliott> yours was better 07:39:24 <CakeProphet> elliott: unpossible. 07:40:08 <CakeProphet> assholes. doubting my multitasking skills. 07:41:14 <itidus21> i wish i could do social stuff 07:41:26 <itidus21> sort of 07:41:28 <CakeProphet> uh, why? 07:41:33 <CakeProphet> also, you ca. 07:41:33 <CakeProphet> n 07:42:17 <itidus21> because the fact that i can't is merely symptomatic of my mental problems 07:42:41 <CakeProphet> only if you think about that way. 07:42:51 <CakeProphet> which, is more difficult to change than it sounds, I realize. 07:43:08 <itidus21> i struggle to enjoy moment to moment existence 07:43:13 <elliott> CakeProphet: s/only if you think about it that way/only if you think about it that way, or actually have mental illness/ 07:43:23 <CakeProphet> elliott: well... 07:43:29 <CakeProphet> that's a difficult topic. 07:43:36 <elliott> you brought it up 07:43:44 <CakeProphet> and like I said it's more difficult than it sounds, for anyone. 07:43:47 <itidus21> im always stressing about fear of vertigo, or fear of heights or fear of open spaces 07:43:49 <CakeProphet> especially if you have a mental illness. 07:44:16 <itidus21> fear of "what is self?" 07:44:28 <itidus21> ok its like this 07:44:30 <CakeProphet> I too have fears about Self. it's a scary idea. 07:44:44 <itidus21> you know that superman movie where they send the villains into space in a polygon 07:44:47 <evincar> When you have fears about Self, just make Smalltalk. 07:44:59 <itidus21> sometimes i wonder if my existence is really squashed like that 07:45:13 <elliott> CakeProphet: "Think your problems away" is basically the premise of that awful The Secret book. Though psychiatry is something like homeopathy, so it's not much better. 07:45:28 <evincar> itidus21: Would it really be relevant to your daily life if your existence were squashed? 07:46:06 <evincar> For all practical purposes, you can ignore most probing existential questions. 07:46:08 <CakeProphet> elliott: well, I'm not saying it works quite like that. But in essence any kind of therapy that isn't drug-based follows this kind of path. 07:46:20 <CakeProphet> it's important to think of yourself as not helpless 07:46:23 <CakeProphet> or you won't get anywhere. 07:46:28 <itidus21> evincar: i do ponder them... some people forced them on me i guess 07:46:42 <elliott> CakeProphet: Sure, but that's one of them "necessary, but not sufficient" conditions. 07:47:15 <CakeProphet> sure. 07:47:15 <itidus21> ive never been quite the same since i started to think of myself as a kind of 2 dimensional thing 07:47:49 <itidus21> it just amplifies all my other fears 07:48:41 <evincar> itidus21: Do you engage in enough physical activity? How's your diet? 07:48:54 <evincar> I find that I hate the world if my blood sugar is low. 07:48:59 <evincar> Or if I haven't exercised lately. 07:49:00 <itidus21> i have diabetes 07:49:06 <itidus21> and i dont get any exercize 07:49:07 <evincar> See, that would do it. 07:49:30 <itidus21> i have no friends 07:49:35 <evincar> Your sugar can really fuck with your emotions. 07:49:55 <itidus21> no money, no job, no schooling, can't drive/no car 07:50:08 <monqy> evincar what are you doing 07:50:18 <itidus21> and lots of people who like to manipulate me 07:50:20 <CakeProphet> elliott: perhaps we're not in disagreement here, just emphasizing different points that are both true. 07:51:05 <evincar> monqy: Trying to be helpful based on experience? 07:51:36 <monqy> experience with being itidus21? ouch. 07:51:50 <evincar> Experience with having fucked up blood glucose. 07:51:56 <elliott> the best experience 07:51:57 <elliott> bexperience 07:51:59 <elliott> toast 07:52:08 <elliott> toast :)))))))))))))))))))))))) 07:52:09 * CakeProphet has experience at being crazy. 07:52:15 <CakeProphet> dunno how to help with that. I manage somehow. 07:52:37 <itidus21> i can't really be myself in my house because my brother has chronic explosive anger which can be triggered by anything 07:52:59 <itidus21> gradually i am learning that my mom and i are too passive, so the imbalance goes both ways 07:53:39 <itidus21> i need to get regular sleeping pattern to improve my diabetes 07:53:56 <itidus21> but... it seems like i am always being counted on occasionally to be awake in the morning 07:54:08 <itidus21> sometimes my brother will be sleeping in when he works.. 07:54:24 <itidus21> or it could be an internet technician visiting early 07:55:23 <itidus21> its like when i go outside i start losing a sense of inside and outside 07:55:33 <itidus21> cos ive been indoors so much] 07:55:40 <itidus21> and i start to flip out 07:55:49 <CakeProphet> I've decided that sleeping properly in the modern world is close to impossible. 07:55:50 <itidus21> combined with the existential pondering 07:56:02 <itidus21> am i inside, am i outside 07:56:53 <evincar> Is the difference important? 07:57:06 <itidus21> i have pondered whether i have some problem with vestibular system 07:58:32 <itidus21> so i try various things.. opening the curtains.. turning on radio 07:58:44 <elliott> radio curtains 07:58:47 <elliott> rurtrains 07:59:05 <monqy> good idea 08:00:19 <elliott> that's 08:00:20 <elliott> my curtains 08:00:22 <elliott> open 08:00:23 <elliott> suddenly 08:00:24 <elliott> radio 08:00:29 <elliott> ......ghost 08:00:37 <CakeProphet> my osseous labyrinth is a beast. 08:00:38 <itidus21> a few times too much existential pondering leads me to start shaking.. at which times i got a cup of whiskey off my broter 08:00:43 <CakeProphet> knowing all sorts of shit about gravity and other forces. 08:00:45 <elliott> the words CakeProphet learned today 08:01:09 <CakeProphet> elliott: always learning. 08:01:23 <evincar> Alcohol isn't...the best thing. 08:01:46 <elliott> iti when's your birthday 08:01:53 <CakeProphet> alcohol is great people are just dumb. 08:01:53 <itidus21> march 08:02:02 <CakeProphet> addiction is a super power. 08:02:44 <evincar> I've never quite gotten past the fact that it tastes like and is poison. 08:02:49 <itidus21> freenode is too academic 08:03:07 <itidus21> every freaking channel is like a science lab :P 08:03:09 <evincar> And I get drunk quickly and sober quickly because I don't weigh a lot. 08:03:19 <CakeProphet> yeah but it's a great poison, and also a macronutrient! 08:03:24 <elliott> itidus21: it's for open projects 08:03:27 <elliott> which in practice reduces to programming 08:03:33 <elliott> what'd you expect 08:03:39 <CakeProphet> second highest in caloric content per mass below fat. 08:04:17 <CakeProphet> it's like, delicious poison fuel that makes it easier to socialize and relax and want to drink more. 08:04:26 <monqy> gross 08:04:31 <CakeProphet> what could go wrong. 08:04:53 <evincar> My progression is generally: 08:05:00 <evincar> One shot, can't feel face. 08:05:03 <evincar> Two shots, drunk. 08:05:08 <evincar> Three shots, can't taste alcohol. 08:05:19 <Patashu> first world problems 08:05:24 <evincar> Wait fifteen/twenty minutes, repeat. 08:05:35 <evincar> I haven't timed this. 08:05:40 <monqy> cool 08:05:42 <evincar> So I'm probably exaggerating. 08:05:52 <itidus21> Patashu: x + y = 0 is always equally dependant on x as it is on y >:-) 08:06:04 <Patashu> yes, very astute of you 08:06:17 <elliott> + is commutative --iti 08:07:01 <itidus21> unfortunately expectations increase needs 08:08:46 <CakeProphet> I'm going to rephrase what you said to make it sound trivial because I'm kind of a jerk -- elliott 08:08:49 * CakeProphet -- jerk 08:08:53 <evincar> Alcohol is excellent for practicing a language though. 08:09:07 <elliott> CakeProphet: but that's literally what he said 08:09:14 <CakeProphet> true enoug. 08:09:16 <CakeProphet> h 08:09:22 <elliott> also commutative is not a trivial word 08:11:18 <monqy> commutativbe is a baby word 08:11:19 <monqy> for babys 08:11:28 <elliott> my word is q 08:11:43 <monqy> q is a good word 08:12:36 <CakeProphet> I think q is frowzy. 08:13:16 <itidus21> all im saying is when i stagger into my brothers room laying down having a whiskey from him while my body is shaking.. which all seems caused by existential pondering 08:13:37 <itidus21> i have been less upset when my father died honestly 08:13:38 <CakeProphet> probably the diabetes. 08:13:40 -!- zzo38 has quit (Remote host closed the connection). 08:15:12 <CakeProphet> eat lots of steak 08:15:14 <CakeProphet> and fish 08:15:15 <CakeProphet> and chicken 08:15:21 <CakeProphet> and stay away from all those saccaride things. 08:15:27 <CakeProphet> when you ponder. 08:15:35 <itidus21> like diet coke type things? 08:15:41 <evincar> CakeProphet: Careful. 08:15:43 <CakeProphet> uh... no 08:15:55 <itidus21> dont even know what saccaride is 08:16:10 <CakeProphet> sugars. either simple or complex carbohydrates. 08:16:21 -!- nooga has joined. 08:16:27 <monqy> bad ideas town 08:16:31 <itidus21> i have to eat a lot of sugars cos my blood sugars drop too easily 08:16:32 <CakeProphet> I guess complex isn't bad. 08:16:33 <monqy> "a good place to be" 08:16:47 <itidus21> i cant control my sugar until i sleep better 08:16:50 <CakeProphet> but yeah #esoteric isn't an advice channel so I hope you're not like 08:16:54 <CakeProphet> taking everything too seriously. 08:17:02 <CakeProphet> itidus21: how so 08:17:09 <elliott> i thought diabetes was having too much blood sugar 08:17:13 <elliott> im not doctor 08:17:14 <itidus21> both 08:17:22 <CakeProphet> it's an inability to maintain it. 08:17:23 <itidus21> the insulin can make it drop if everything is not controlled 08:17:27 <monqy> theres lots of things called diabetes...... 08:17:33 <elliott> diabetes "im dont know how to blood sugar" -- diabetes 08:17:35 <itidus21> lack of insulin = high sugar 08:17:38 <elliott> diabetesquotes.com 08:17:40 <itidus21> insulin without food = low sugar 08:17:57 <itidus21> its about mastering that balance 08:18:06 <monqy> do you get to put needles in yourself 08:18:09 <monqy> is that how it works 08:18:21 <itidus21> CakeProphet: perhaps just for you i will monitor my blood sugar better 08:18:34 <elliott> monqy: diabetes.....heroin addiction.....the same thing??? 08:18:35 <itidus21> now my comment before was a bit morbid 08:18:37 <CakeProphet> awww how sweet. <3 :3 :3 :3 :3 :# :12; :; 08:18:42 <itidus21> but when im losing my mind.. what can be worse 08:18:43 <elliott> :12; 08:19:04 <elliott> my face 08:19:50 <CakeProphet> itidus21: I believe the trick is to eat small, frequent meals with very few simple sugars. 08:19:57 <CakeProphet> things that will metabolize slowly over time. 08:20:09 <elliott> im mel 08:20:10 <elliott> oops 08:20:37 <itidus21> sorry patashu 08:21:16 <itidus21> everyone of the comments in here must be helping 08:21:44 <CakeProphet> yes #esoteric-self-help is coming along nicely. 08:21:58 <itidus21> it was reading freud comments on subconcious which really gave me the shakes 08:22:09 <CakeProphet> don't ever pay attention to Freud. 08:22:14 <elliott> finally CakeProphet says something smart 08:22:24 <monqy> freud will Hurt you 08:22:33 <itidus21> monqy: why? :P 08:22:33 <elliott> freud is a big poop 08:22:36 <CakeProphet> finally elliott is still a jerk. 08:22:37 <CakeProphet> wait what? 08:22:37 <evincar> Immortalise him in the quote thing. 08:22:42 <elliott> and also unsmart 08:23:01 <elliott> CakeProphet: how many jerk accusations before the jerkhood flips... this is what i wish to know.... 08:23:14 <CakeProphet> the jerk is bidirectional 08:23:53 <CakeProphet> elliott: stupid head. nyah. 08:24:05 <elliott> poop 08:24:13 <CakeProphet> > reverse "poop" 08:24:14 <lambdabot> "poop" 08:24:26 <elliott> whoaho 08:24:36 <elliott> monqy: waoah 08:24:39 <monqy> poop 08:24:51 <elliott> poop 08:24:54 <itidus21> now this fear about 2d... makes me worry.. about 1)depth perception 2) reading books 3)watching videos 08:24:59 <CakeProphet> oppo 08:25:03 <itidus21> i think 08:25:04 <elliott> NO 08:25:22 <CakeProphet> elliott: stop being a poop popo 08:25:33 <monqy> poop is a Bad Word 08:25:51 <itidus21> sort of traps me 08:26:21 <CakeProphet> itidus21: you might have extra-dimensional crises when you realize that there is also depth to your width and height. 08:26:33 <CakeProphet> or... width to your depth and height. or height to your depth and width 08:26:40 <CakeProphet> depends on what kind of 2-dimensional thing you are. 08:26:50 <elliott> <monqy> poop is a Bad Word 08:26:51 <elliott> no 08:26:53 <elliott> its the best 08:26:53 <CakeProphet> also point of reference as to where axes are plot. 08:26:56 <elliott> padrilome 08:27:02 <itidus21> i dont think you understand 08:27:16 <itidus21> this isnt a game.. this is pain i endure 08:27:34 <monqy> sorry itidus 08:27:40 <itidus21> to some extent locking me out of enjoyment of traditional 2d media 08:27:46 <itidus21> although i still enjoy some of it 08:29:15 <itidus21> which is ironic in a bedroom full of bookshelves 08:29:40 <CakeProphet> how do you feel about chess? 08:30:09 <itidus21> the solvability of it has started to make me unable to find real purpose in it 08:30:18 <evincar> Play Go then. 08:30:39 -!- evincar has quit (Quit: Goodnight all.). 08:30:45 <monqy> good night evin car 08:31:28 <itidus21> theres a lot which built up to it 08:31:36 -!- derrik has joined. 08:31:47 <itidus21> constant bullying and manipulation from people the whole time growing up 08:32:06 <itidus21> at the end i turned out to be more fragile than i expected 08:35:36 <CakeProphet> Why do you say that? 08:35:51 <monqy> he didn't expect to be as fragile as he observes himself now 08:35:55 <monqy> quite simpley 08:36:06 <itidus21> its a certain anxiety and heavy tiredness in my eyes 08:36:26 <CakeProphet> I don't understand. 08:36:33 <itidus21> just a mess 08:36:45 <monqy> he had an expectation of how fragile he would be. he observes himself to be more fragile than this. 08:37:02 <CakeProphet> Perhaps your plans have something to do with this. 08:37:04 <itidus21> psyche is fragile 08:37:18 <itidus21> im just feeling dizzy 08:37:32 <itidus21> short of breath 08:37:50 <itidus21> sinuses tight 08:38:05 <CakeProphet> `quote 08:38:08 <HackEgo> 59) <Warrigal> I think hamsters cannot be inert. 08:38:24 <itidus21> maybe sleepy 08:38:33 <CakeProphet> constant bullying and manipulation from people the whole time growing up 08:38:44 <CakeProphet> sounds bad. 08:39:35 * CakeProphet should really go to sleep so he can do this metric shit ton of work tomorrow. 08:40:36 <CakeProphet> ^style eliza 08:40:36 <fungot> Not found. 08:40:40 <CakeProphet> ^style 08:40:40 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube 08:40:43 <CakeProphet> ^style alice 08:40:43 <fungot> Selected style: alice (Books by Lewis Carroll) 08:40:48 <CakeProphet> ^style agora 08:40:48 <fungot> Selected style: agora (a large selection of Agora rules, both current and historical) 08:40:59 <CakeProphet> ^style ct 08:40:59 <fungot> Selected style: ct (Chrono Trigger game script) 08:41:06 <CakeProphet> ^style pa 08:41:06 <fungot> Selected style: pa (around 1200 transcribed Penny Arcade comics) 08:41:11 <CakeProphet> ^style ss 08:41:11 <fungot> Selected style: ss (Shakespeare's writings) 08:41:14 <CakeProphet> fungot 08:41:15 <fungot> CakeProphet: ham. it is the bishop of winchester, a page with a torch. 08:41:23 <CakeProphet> excellent. 08:45:09 <monqy> good 08:46:52 <CakeProphet> fungot: 08:46:52 <fungot> CakeProphet: bast. my lord protector will come this way by and by 08:47:43 <monqy> bothj are 08:47:46 <monqy> peotic 08:49:58 <CakeProphet> fungot: blatherly 08:49:59 <fungot> CakeProphet: des. what, angry, sir. an early stirrer, by the king your father, and bid mee fetch thee fnord? i will find out logs, and fnord 08:53:52 <fizzie> "fetch thee fnord? i will find out logs, and fnord". 08:58:10 <Patashu> and fnord 09:01:30 <itidus21> ok feeling better with some drawing therapy 09:01:38 <itidus21> and momentary nap 09:13:57 <CakeProphet> fungot: I will fetch no fnords 09:13:58 <fungot> CakeProphet: no visor does become black villany so well as i: nothing confutes me but eyes, and then to beslubber our garments with it, it shall be still thy true loues recompence, my heart 09:16:15 <itidus21> ^style 09:16:15 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss* wp youtube 09:16:31 <itidus21> ^style youtube 09:16:32 <fungot> Selected style: youtube (Some YouTube comments) 09:16:44 <itidus21> oh lordy fungot wot has you 09:16:45 <fungot> itidus21: again--not sent via this medium. you can't lie about things that they say: put up or shut up. 09:17:07 <itidus21> fungot, i invoke thee pray tell 09:17:07 <fungot> itidus21: wat language was the aircraft with sofisticate computers, but i think they can keep their bullsh*t straight anymore. 09:17:51 <itidus21> fungot moar 09:17:52 <fungot> itidus21: crappy actors, this video is wrong. the plane was empty ( no people were the days) or... how? like wtf 09:18:09 <itidus21> fungot so many aircraft oriented 09:18:10 <fungot> itidus21: its called takeoff go around button and thats fucking awesome 09:20:04 <itidus21> fungot are you partial to amelia earhart? 09:20:15 <CakeProphet> fungot: 09:20:15 <fungot> CakeProphet: or you will find that there was a fly by at an airshow. look over jorma's shoulder when he first came on snl. 09:20:25 <CakeProphet> youtube isn't great. 09:20:31 <CakeProphet> ^style europarl 09:20:31 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006) 09:20:33 <CakeProphet> fungot 09:20:34 <fungot> CakeProphet: mr president, the first of these is concerned, the use of all the legislation involved. this is a benchmark we must not bury our heads in the right place for these ideas to third countries or the countries currently members of the committee of inquiry into drugs in the first place when nitrofen has been banned for years. 09:20:52 <CakeProphet> fungot 09:20:54 <fungot> CakeProphet: madam president, i would like to draw the honourable members' commitment in the house, have had some very intensive talks with the un human rights committee to investigate the possibilities for aid for the victims of that crash. i feel that many more documents are being supplied in both the products and technologies used. this morning, seemed to me at all that right-wing forces have been involved in these four proc 09:21:39 <itidus21> australian parliament is also interesting 09:23:26 <itidus21> mr speaker, i would like to say to the leader of the opposition mr speaker that the opposition's policies are a betrayal of the australian public mr speaker 09:25:23 <itidus21> heres a random sample http://www.youtube.com/watch?v=aaLLP4sc_6Q 09:27:23 <elliott> this is just uk parliament but wimpier 09:27:29 <itidus21> yeah i know 09:27:30 <itidus21> ... 09:27:44 <elliott> :P 09:29:45 <CakeProphet> American politics is the best. 09:29:58 -!- monqy has quit (Read error: Connection reset by peer). 09:30:01 -!- monqy_ has joined. 09:30:41 <CakeProphet> it's like twice the tomfoolery with half of the sense. 09:32:52 <CakeProphet> > compare LT GT 09:32:52 <lambdabot> LT 09:33:03 <CakeProphet> > compare GT LT 09:33:04 <lambdabot> GT 09:33:07 -!- derrik has quit (Ping timeout: 252 seconds). 09:33:13 <CakeProphet> greater than is greater than greater than 09:33:15 <CakeProphet> er 09:33:16 <CakeProphet> less than 09:34:04 <CakeProphet> oh hey I just found the Ordering negation operator 09:34:05 <elliott> no shit 09:34:13 <CakeProphet> > let f = compare EQ in f LT 09:34:13 <lambdabot> GT 09:34:21 <elliott> clap clap clap 09:34:35 <CakeProphet> well I wouldn't say it's immediately obvious.. 09:34:46 <elliott> calp 09:35:01 <CakeProphet> "oh hey why don't I compare comparison values" 09:36:37 -!- monqy_ has changed nick to monqy. 09:39:49 -!- sebbu2 has changed nick to sebbu. 09:50:49 -!- FireFly has joined. 10:13:30 -!- Vorpal has joined. 10:35:27 <monqy> http://esoteric.voxelperfect.net/wiki/User:Aptennap what could it be 10:35:42 -!- yorick has joined. 10:41:59 -!- oerjan has joined. 10:43:59 <oerjan> <elliott> Sigh, when did oerjan escape 10:44:04 <oerjan> i should be so lucky 10:46:08 <elliott> RENAEM MY VECTOR 10:46:48 <oerjan> wat 10:47:00 <oerjan> hector the vector 10:47:01 <elliott> i have a type Vector 10:47:03 <elliott> that amounts to (Value,Value 10:47:04 <elliott> ) 10:47:05 <elliott> but 10:47:06 <elliott> Data.Vetor 10:47:07 <elliott> Vector 10:47:08 <elliott> also has 10:47:09 <elliott> Vector 10:47:10 <elliott> and... 10:47:13 <elliott> confusion 10:47:15 <elliott> so 10:47:16 <elliott> I want to rename my Vector type 10:47:19 <elliott> to something nicer?? 10:47:20 <oerjan> Pair? 10:47:31 <elliott> I guess Vector might be a misnomer in the first place, I basically use it for position and delta 10:47:41 <elliott> oerjan: um Value is integral if that helps 10:48:00 <oerjan> delta is usually a vector-like quality 10:48:16 -!- nooga has quit (Ping timeout: 252 seconds). 10:48:36 -!- monqy has quit (Quit: hello). 10:49:22 <elliott> oerjan: but yeah help :( 10:49:27 <elliott> pair is ok i guess 10:49:29 <elliott> buuut 10:50:55 <oerjan> it seems hard to think of delta as something other than a vector... 10:51:59 <elliott> it's just a coordinate pair :P 10:52:04 <itidus21> Point ? 10:52:07 <elliott> except sometimes instead of coordinates it is a delta :-| 10:52:14 <elliott> maybe what I need to do is have two type 10:52:15 <elliott> s 10:52:16 <elliott> Point and Delta 10:52:20 <itidus21> Coordinate ? 10:52:28 <itidus21> Position ? 10:52:31 <elliott> Coords would work but is kind of bluh 10:52:34 <elliott> Position and Delta might work 10:52:41 <elliott> I think Point and Delta is nicer thouhg 10:52:46 <oerjan> itidus21: it's the delta that makes it not quite like a point 10:52:51 <itidus21> TwoD 10:53:02 <elliott> the annoying thing is that i'll have to define all the same things for positions and deltas 10:53:08 <elliott> but I guess I just need a simple typeclass for (.+.) and (.-.) 10:53:29 <oerjan> elliott: type Position = Delta, problem solved. 10:53:31 <itidus21> CoincidentScalars 10:53:38 <elliott> oerjan: yes. so well-type-checked. 10:53:59 <itidus21> Location 10:54:02 <oerjan> elliott: newtype Position = Position Delta deriving Everything 10:54:09 <CakeProphet> elliott: make a GADT, phantom types, and then type synonyms 10:54:17 <CakeProphet> profit. 10:54:26 <itidus21> XY 10:54:48 <itidus21> Pixel 10:55:14 <oerjan> Thataway 10:55:24 <itidus21> Translation 10:55:54 <oerjan> Thither 10:56:06 <CakeProphet> type Delta = Pointlike D 10:56:12 <CakeProphet> type Point = Pointlike P 10:56:21 <CakeProphet> SUDDENLY TYPE CHECKING. 10:56:43 <itidus21> Vektori 10:57:04 -!- elliott has quit (Read error: Connection reset by peer). 10:57:12 -!- elliott has joined. 10:57:19 <CakeProphet> obviously elliot left because he was disgusted by my design. 10:57:21 <CakeProphet> oh.. hi 10:57:25 <elliott> there is no elliot 10:57:35 <itidus21> Vektori, Vektor, Bektop 10:57:48 <CakeProphet> whatever you say eltoitl 10:58:02 <elliott> oerjan: now the problem being, I still need a type underlying the Point and Delta newtypes ;P 10:58:03 <itidus21> 空間ベクトル 10:58:03 <elliott> :P 10:58:15 <CakeProphet> elliott: some kind of Pointlike type 10:58:16 <oerjan> elliott: see CakeProphet 10:58:17 <elliott> oerjan: and that needs a name :D 10:58:18 <CakeProphet> with a phantom type. 10:58:22 <elliott> oerjan: no Pointlike is the worst. 10:58:26 <elliott> also using the phantom type like that is silly. 10:58:35 <CakeProphet> I think elliott just hates GADTs with phantom types. 10:58:42 <CakeProphet> for typechecking goodness. 10:58:47 <CakeProphet> which is totally what it's for. 10:59:05 <oerjan> i'd say this is precisely what phantom types are for 10:59:08 <itidus21> SinCos 10:59:39 <CakeProphet> though by the time elliott weighed all of these pros and cons he could have probably already written two instances. 10:59:43 <oerjan> itidus21: i think he wants longer vectors than that. 10:59:54 <CakeProphet> itidus21: also naming isn't really an issue here. 11:00:08 <elliott> yes 11:00:09 <elliott> it is 11:00:11 <CakeProphet> so just spewing names out of the front of your face is not helping. 11:00:21 <itidus21> it helps me 11:00:25 <CakeProphet> ...the front of your virtual face. 11:00:27 <elliott> oerjan: not really phantom types -- they're two types that happen to be composed of two values underneath 11:00:32 <elliott> and i was wrong wrt .+. and .-. 11:00:36 <elliott> they only have the possible types 11:00:41 <elliott> (.+.) :: Point -> Delta -> Point 11:00:49 <elliott> (.-.) :: Point -> Delta -> Point 11:00:49 <itidus21> Spot 11:00:50 <elliott> well 11:00:52 <elliott> you could also have 11:00:58 <elliott> (.-.) :: Point -> Point -> Delta 11:00:59 <CakeProphet> yes, so you can use one type to represent both, and then the phantom type is used to distinguish them for the purposes of typechecking.... 11:01:01 <elliott> but I don't think I need that :P 11:01:02 <CakeProphet> ? 11:01:04 <elliott> CakeProphet: or 11:01:07 <elliott> just define two types? 11:01:23 <CakeProphet> well, you wanted to avoid that, and that seems like the best way to avoid it. 11:01:28 -!- nooga has joined. 11:01:30 <CakeProphet> do what you want. 11:01:36 <elliott> data Point = (:@) {-# UNPACK #-} !Value {-# UNPACK #-} !Value deriving (Eq, Ord, Show) 11:01:37 <elliott> data Delta = (:/) {-# UNPACK #-} !Value {-# UNPACK #-} !Value deriving (Eq, Ord, Show) 11:01:43 <CakeProphet> gross. 11:01:49 <CakeProphet> all of that identicalness. 11:01:57 <itidus21> Dual 11:02:02 <CakeProphet> itidus21: no 11:02:06 <CakeProphet> that's already taken. 11:02:14 <itidus21> ChuckNorris 11:02:17 -!- derdon has joined. 11:02:17 <elliott> CakeProphet: it comes down to 11:02:22 <elliott> data Point = Value :@ Value 11:02:25 <elliott> data Delta = Value :/ Value 11:02:27 <itidus21> DeltaForce 11:02:29 <elliott> it's just added optimisation sauce on top of that 11:02:36 <CakeProphet> yes I know. 11:02:56 <itidus21> DxDy 11:02:57 <CakeProphet> but now you have... instance Point ... 11:03:00 <CakeProphet> and instance Delta... 11:03:05 <CakeProphet> and any code that can operate on both 11:03:14 <CakeProphet> must be put in the instance. 11:03:16 <CakeProphet> and written twice. 11:03:16 <elliott> <CakeProphet> but now you have... instance Point ... 11:03:16 <elliott> <CakeProphet> and instance Delta... 11:03:20 <elliott> what? where do I have these? 11:03:34 <elliott> I think you will find that very few operations make sense identically on both points and deltas in context. 11:03:36 <CakeProphet> you were writing a typeclass right? 11:03:41 <oerjan> elliott: how do you define .+. without 11:03:49 <elliott> for instance 11:03:50 <elliott> origin :: Vector 11:03:51 <elliott> origin = 0 :@ 0 11:03:51 <elliott> south :: Vector 11:03:51 <elliott> south = 0 :@ 1 11:03:51 <elliott> east :: Vector 11:03:51 <elliott> east = 1 :@ 0 11:03:53 <elliott> north :: Vector 11:03:56 <elliott> north = 0 :@ (-1) 11:03:57 <elliott> west :: Vector 11:04:00 <elliott> west = (-1) :@ 0 11:04:02 <elliott> obviously origin is a Point, and the rest are Deltas 11:04:03 <elliott> CakeProphet: no, i was mistaken 11:04:06 <elliott> oerjan: without what? 11:04:10 <CakeProphet> ah okay. 11:04:12 <oerjan> elliott: without a typeclass 11:04:22 <elliott> oerjan: (.+.) :: Point -> Delta -> Point 11:04:31 <CakeProphet> ah. 11:04:34 <oerjan> er right 11:04:47 <elliott> oerjan: adding two deltas is rather fundamentally different from that, so it should have another name 11:04:50 * oerjan goes to turn on his brain 11:05:08 <oerjan> ...sorry, out of batteries. 11:05:15 <elliott> ah. 11:05:20 <elliott> your last task is to give Delta a nicer constructor name :P 11:05:22 <elliott> :/ is gross 11:05:29 <CakeProphet> :/ is :/ 11:05:33 <elliott> (:@) is nice for Point because it has the nice "at" connotation. 11:05:52 <itidus21> Vertex 11:06:10 <CakeProphet> I wonder if you can use :, for point 11:06:13 <elliott> CakeProphet: no 11:06:29 <oerjan> :> 11:06:32 <CakeProphet> :% ? 11:06:35 <CakeProphet> for delta? 11:06:46 <itidus21> dunno why vertex didn't occur to me sooner.. it may not be appropriate but it's better than most of my efforts 11:06:47 <CakeProphet> connotate what you wish. 11:06:55 <oerjan> (it clashes if you use Seq, though) 11:06:58 <elliott> :% for delta might work 11:07:05 <elliott> I don't like :>, it's too directional and that conflict as you said 11:07:18 <CakeProphet> I don't like :> because it's a stupid little face 11:07:25 <CakeProphet> :> 11:07:26 <oerjan> elliott: but deltas _are_ directions >:) 11:07:38 <CakeProphet> but not directional between its arguments. 11:07:47 <oerjan> :^ 11:07:52 <CakeProphet> :% implies change to me or something. 11:08:09 <elliott> :^ is cute 11:08:22 <elliott> we'll see 11:08:23 <CakeProphet> @hoogle (:^) 11:08:23 <lambdabot> No results found 11:08:41 <itidus21> :\/ 11:08:47 <itidus21> :P 11:08:52 <CakeProphet> don't believe \ is valid actually 11:08:56 <oerjan> yes it is 11:08:58 <CakeProphet> ah 11:08:59 <CakeProphet> yes it is. 11:09:03 <itidus21> im being silly thouhg 11:09:08 <CakeProphet> :!@$% 11:09:12 <CakeProphet> for delta 11:09:16 <itidus21> :FFFFUUUUUUUUUUU 11:09:26 <oerjan> itidus21: that's not legal, no letters 11:10:00 <oerjan> > let (\/:) = (+) in 2 \/: 2 11:10:01 <lambdabot> 4 11:10:20 <elliott> oerjan: ah hm, turns out I do need addition on points 11:10:31 <CakeProphet> :\/ is not bad for delta except that it's annoying to type. 11:10:31 <oerjan> impossible! 11:10:31 <elliott> the storage offset (which is a point) plus a coordinate within that offsetted area 11:10:33 <elliott> but that's alright 11:10:36 <elliott> I can define it separately 11:10:42 <CakeProphet> just define it as Num 11:10:51 <elliott> no. 11:10:52 <itidus21> :|) 11:10:54 <itidus21> hahahah 11:11:16 <oerjan> itidus21: sorry, no brackets either 11:11:35 <CakeProphet> I bet you'll need addition on deltas as well. 11:11:57 <itidus21> well my intention with \/ is it spells v 11:12:08 <CakeProphet> .+. :: Pointlike a -> Pointlike a -> Pointlike a 11:12:11 <itidus21> otherwise i don't men much by it 11:12:11 <CakeProphet> teeheeheehee 11:12:23 <CakeProphet> :/\ kind of looks like a delta. 11:12:26 <CakeProphet> kind of. 11:12:37 <itidus21> :|\ :/| 11:12:53 <itidus21> :/|\ 11:13:23 <itidus21> :/`\ :/_\ 11:13:35 <CakeProphet> question 11:13:38 <CakeProphet> so if you make 11:13:51 <CakeProphet> er wait 11:13:53 <CakeProphet> can you write 11:13:57 <CakeProphet> type P = Pointlike a 11:14:04 <oerjan> no. 11:14:07 <CakeProphet> type P = forall a. Pointlike a 11:14:32 <oerjan> ...maybe. 11:14:43 <CakeProphet> so then is P -> P equivalent to Pointlike a -> Pointlike a or Pointlike a -> Pointlike b? 11:15:11 <oerjan> it's equivalent to (forall a. Pointlike a) -> (forall a. Pointlike a) 11:15:40 <itidus21> C< . . . . . . ∩ . . ∩ 11:15:58 <oerjan> which cannot take a plain Pointlike a as argument. 11:16:27 <CakeProphet> erm, what can it take? 11:16:53 <CakeProphet> perhaps I don't understand rank-n types very well... or, I guess this is an existential? 11:16:56 <CakeProphet> just with no typeclass. 11:16:58 <oerjan> a polymorphic value of type forall a. Pointlike a 11:17:05 <oerjan> this is afaict rank-2 11:17:12 <CakeProphet> ...ah okay. 11:17:20 <CakeProphet> so plain as in has a concrete a. 11:17:28 <oerjan> yeah 11:17:39 <CakeProphet> hmmmm... okay 11:17:50 <CakeProphet> I think I understand rank-2 now. 11:17:57 <oerjan> the forall in the result type is easy to remove, though. 11:18:20 <CakeProphet> how does one get values of P then? 11:18:26 <olsner> hmm, the function gets a rank-2 type, but the type P isn't in itself? or is it? 11:18:30 <CakeProphet> with a polymorphic argument. 11:18:30 <itidus21> S ≡ λwyx.y(wyx) 11:18:51 <oerjan> CakeProphet: hopefully you would have some functions that are polymorphic in a... 11:19:05 <CakeProphet> hmmm, okay. 11:19:11 <elliott> <p>The REFC fingerprint allows vectors to be encoded into 11:19:11 <elliott> and decoded from single scalar cell values. 11:19:11 <elliott> Gah 11:19:14 <elliott> oerjan: Point or Delta :-P 11:19:35 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaaa 11:19:42 <CakeProphet> why not just have points... 11:19:55 <CakeProphet> and then special functions that treat one point as a delta. 11:20:03 <CakeProphet> s/special// 11:20:08 <itidus21> :δ 11:20:17 <elliott> Why don't we just have one type of data 11:20:20 <elliott> And functions that treat it specially 11:20:20 <oerjan> itidus21: that's not what we usually call S 11:20:25 <elliott> Oh right, because this isn't Tcl 11:20:34 <itidus21> oops :Δ 11:20:47 <itidus21> oerjan: ok sorry. 11:20:52 <CakeProphet> yeah but they're essentially the same thing the only difference is that you have operations that have an operand that treats the point as a delta. 11:21:02 <oerjan> itidus21: sadly greek letters count as letters, so no. 11:21:03 <elliott> yeah but they're essentially the same thing the only difference is that you have operations that have an operand that treats the string as a list. 11:21:08 <itidus21> lol 11:21:42 <oerjan> otherwise everyone would be using real λ in haskell by now 11:21:51 -!- Taneb has joined. 11:22:09 <CakeProphet> (mappend :: Point -> Point -> Point) point delta 11:22:10 <CakeProphet> bahahahaha 11:22:12 <Taneb> Hello! 11:22:50 <oerjan> ho lle 11:22:55 <CakeProphet> hmmm, booleans are monoids yes? 11:23:10 <oerjan> CakeProphet: in four different ways :P 11:23:13 <CakeProphet> but perhaps not in Haskell yes? 11:23:25 <CakeProphet> oerjan: makes me wonder why there is no typeclasses for monoids like that. 11:23:31 <oerjan> wait, six 11:23:33 <CakeProphet> like a typeclass for &&, ||, etc 11:23:44 -!- derdon has quit (Remote host closed the connection). 11:23:46 <elliott> what 11:23:56 <CakeProphet> nevermind. 11:24:01 <CakeProphet> basically I just don't like newtypes. 11:24:09 <CakeProphet> and would prefer having Monoid classes with more than one mappend. 11:24:11 <oerjan> &&, ||, /=, ==, const and const id are all monoid operations for Bool 11:24:27 <oerjan> er wait 11:24:31 <elliott> um 11:24:32 <oerjan> scratch those const ones 11:24:35 <elliott> isn't mempty `mappend` ... yeah 11:24:40 <oerjan> they're just semigroups 11:25:00 <itidus21> ╔╦═══╗ 11:25:00 <itidus21> ╚╩═══╝ 11:25:09 <CakeProphet> ^celebrate 11:25:09 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 11:25:10 <myndzi\> | | | `\o/´ | | | `\o/´ | | | 11:25:10 <myndzi\> >\ |\ >\ | >\ /'\ /`\ | /'\ |\ /< 11:25:10 <myndzi\> /'\ (_|¯`\ 11:25:10 <myndzi\> (_| |_) |_) 11:25:20 <oerjan> itidus21: i have no idea what haskell considers those chars as 11:25:30 <CakeProphet> oerjan: box-drawing character duh. 11:25:32 <itidus21> i just got inspired playing around with character map 11:25:41 <CakeProphet> only useful for drawing boxes. 11:25:59 <oerjan> CakeProphet: well yes but are they legal operator characters? :P 11:26:18 <Taneb> Somebody's made another brainfuck derivative 11:26:25 <CakeProphet> does Haskell even allow Unicode aside from a few special cases? 11:26:25 <itidus21> ♫♪ ♫ 11:26:25 <oerjan> > let a ╔ b = a + b in 2 ╔ 2 11:26:26 <lambdabot> 4 11:26:30 <oerjan> yay :P 11:26:39 <CakeProphet> oh 11:26:40 <CakeProphet> okay. 11:26:49 <elliott> haskell has full unicode support 11:26:58 <CakeProphet> goood. 11:27:02 <elliott> > let æßð = "yes" in æßð 11:27:02 <lambdabot> "yes" 11:27:05 <oerjan> CakeProphet: at least ghc uses the unicode character classifications to decide. somehow. 11:27:23 <CakeProphet> ╔ is an operator that takes uh two.... uh... somethings and TURNS RIGHT, 11:27:29 <elliott> > let æßð = "yes"; (→) = const in æßð → "a" 11:27:29 <lambdabot> <no location info>: parse error on input ` 11:27:31 <CakeProphet> sharply. 11:27:32 <elliott> Aw. :/ 11:27:40 <elliott> > let æßð = "yes"; → = const in → æßð "a" 11:27:41 <lambdabot> <no location info>: parse error on input ` 11:27:42 <elliott> :| 11:27:50 <CakeProphet> you could also have it turn one thing right by being postifx. 11:28:24 <CakeProphet> (car╔) 11:28:32 <itidus21> > let a ▲ b = a + b in 2 ▲ 2 11:28:33 <lambdabot> 4 11:29:06 <CakeProphet> elliott: there you go, your delta-application function. :) 11:29:16 <CakeProphet> obviously with type Point -> Delta -> Point 11:29:19 <CakeProphet> where type Delta = Point 11:29:22 <itidus21> It is cheerfully describes it as Black Up-Pointing Triangle 11:29:59 <elliott> cheerfully 11:30:21 <itidus21> > let a ∆ b = a * b in 3 ∆ 5 11:30:22 <lambdabot> 15 11:30:32 <itidus21> thats another one 11:30:44 <oerjan> > let x → y = x in 2 11:30:45 <lambdabot> <no location info>: parse error on input ` 11:30:47 <itidus21> cheerfully described as "Increment" 11:31:12 <oerjan> > (sin :: Double → Double) 2 11:31:13 <lambdabot> 0.9092974268256817 11:31:14 <CakeProphet> now I just need a unicode keyboard so I can sanely program with these operators. 11:31:17 <oerjan> ah. 11:31:31 <Taneb> My chair has speakers in it 11:31:39 <oerjan> it wasn't illegal, just taken. 11:31:51 <Taneb> I am going to play some Queen music 11:31:53 <itidus21> i didnt mean to define all of these things 11:32:04 <itidus21> i hope im not making a mess of lambdabot 11:32:26 <itidus21> haha... 11:32:45 <CakeProphet> there should be a Haskell IDE or somesuch in which you can assign numpad keys to unicode characters 11:32:50 <oerjan> itidus21: > let doesn't actually define things permanently 11:32:52 <CakeProphet> with some kind of graphical bank displayed. 11:32:58 <itidus21> oerjan: thats good 11:33:10 <itidus21> at least i have kind of opened the possibility of the unicodes :D 11:33:18 <oerjan> you need @let for ... slightly more permanent, but not really. 11:33:19 <itidus21> beginning with my /\ tomfoolery 11:34:25 <CakeProphet> also other nice features like automatically inserting type signatures, renaming functions globally across multiple files, etc. 11:34:45 <CakeProphet> but the unicode bank would actually make unicode operators convenient 11:34:53 <itidus21> my zanyness can come in handy 11:36:18 <oerjan> today's http://www.mezzacotta.net/postcard/ has a nice disclaimer 11:38:10 <oerjan> *(no, the picture is not broken) 11:38:27 <elliott> yes, it is 11:38:33 <elliott> depending on your definition of broken 11:38:52 <elliott> oerjan: only four more IWC strips left ;D 11:39:08 <oerjan> ^ul ((A)S:^):^ 11:39:08 <fungot> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ...too much output! 11:40:13 <CakeProphet> other Haskell IDE ideas: builtin (un)?pl, (un)?do, djinn, shell (which obviously includes ghci), hoogle, documentation viewer stuff 11:40:58 <oerjan> CakeProphet: there is a way to plug lambdabot into ghci. ostensibly. 11:41:16 * itidus21 starts pondering other potential uses of unicode characters. 11:41:41 <oerjan> itidus21: maybe you could use them to write in strange languages 11:42:07 <CakeProphet> oerjan: ah yes that would work I think. though also a source-code transform version of each would be neat. 11:42:22 <CakeProphet> so you right-click on a type signature, run djinn, and it spits out a function definition 11:42:36 <CakeProphet> right-click on a function and then transform via do/pl 11:42:45 <CakeProphet> ...more useful for do than pl 11:42:52 <elliott> oerjan: not really ostensibly, IIRC it's even maintained still. 11:42:53 <CakeProphet> as you may not necessarily want what pl gives you. :P 11:43:01 <elliott> CakeProphet: djinn is not very useful in practice at all. 11:43:10 <CakeProphet> eh, still 11:43:15 <elliott> I guess it's nice if you want to generate large swathes of the Prelude, but apart from that. 11:43:16 <CakeProphet> if it ever does become useful in practice. 11:43:20 <elliott> "ever does"? 11:43:25 <CakeProphet> ..yes 11:43:28 <elliott> It's not some collection of hacks; it's a defined, immutable algorithm. 11:43:28 <CakeProphet> like, if they improve it. 11:43:35 <elliott> Do you know how djinn works? 11:43:40 <CakeProphet> not specifically. 11:43:58 <elliott> "For the curious, Djinn uses a decision procedure for intuitionistic 11:43:58 <elliott> propositional calculus due to Roy Dyckhoff. It's a variation of 11:43:58 <elliott> Gentzen's LJ system." 11:44:13 <elliott> It's just Curry-Howard. 11:44:28 <CakeProphet> okay, but that's not to say it couldn't be improved. 11:44:33 <elliott> ... 11:44:51 <elliott> You would like it to just make shit up if that fails? 11:45:10 <CakeProphet> well no, but if it had access to more functions 11:45:14 <elliott> What. 11:45:23 <CakeProphet> to plug in... in the correct place. 11:45:28 <CakeProphet> I'm sure this makes sense. :P 11:46:08 <oerjan> djinn does have a way to define data types. they just cannot be recursive. 11:46:14 <oerjan> @list djinn 11:46:14 <lambdabot> djinn provides: djinn djinn-add djinn-del djinn-env djinn-names djinn-clr djinn-ver 11:46:18 <oerjan> @djinn-env 11:46:18 <lambdabot> data () = () 11:46:18 <lambdabot> data Either a b = Left a | Right b 11:46:18 <lambdabot> data Maybe a = Nothing | Just a 11:46:18 <lambdabot> data Bool = False | True 11:46:18 <lambdabot> data Void 11:46:20 <lambdabot> type Not x = x -> Void 11:46:22 <lambdabot> class Monad m where return :: a -> m a; (>>=) :: m a -> (a -> m b) -> m b 11:46:24 <lambdabot> class Eq a where (==) :: a -> a -> Bool 11:46:26 <lambdabot> class Applicative f where pure :: a -> f a; (<*>) :: f (a -> b) -> f a -> f b; (*>) :: f a -> f b -> f b; (<*) :: f a -> f b -> f a 11:46:32 <elliott> I'm honestly impressed djinn can even do typeclasses. 11:46:43 <CakeProphet> well I don't mean define data types. I mean if it had a collection of functions and their type information 11:47:00 <CakeProphet> it could decide that a function has the correct type to satisfy the proof, so to speak. 11:47:23 <Taneb> brb 11:47:25 -!- Taneb has quit (Quit: what a big quitter he is, eh?). 11:47:30 <oerjan> well that would be equivalent to having some extra axioms in the logic. 11:47:42 <oerjan> so probably possible in principle 11:47:54 <elliott> oerjan: I'm pretty sure you'd have to modify the search procedure for each new axiom. 11:48:13 <CakeProphet> yes, and it would make it more practical as you could say "write a program for this type and here's a function, module, etc to use" 11:48:15 <elliott> so the answer to the question "can djinn do lists if we special-case it to do lists" is... yes! 11:48:41 <oerjan> elliott: it would still be limited to non-recursive types i think 11:48:57 <elliott> yeah, I just couldn't think of a type :P 11:48:59 <elliott> :t (((. head . uncurry zip . splitAt 1 . repeat) . uncurry) .) . (.) . flip 11:49:00 <lambdabot> forall b c a. (b -> a -> c) -> (b -> a) -> b -> c 11:49:15 <CakeProphet> also there are other problems. 11:49:17 <CakeProphet> ambiguity... 11:49:38 <CakeProphet> but a sufficiently sophisticated djinn could list a bunch of alternatives and have the user decide which one to insert. 11:49:38 <oerjan> elliott: in fact you can in principle already do this with @djinn as it stands - just add your axioms as extra a1 -> a2 -> parts 11:50:01 <oerjan> well, those cannot be polymorphic i guess. 11:50:06 -!- nooga has quit (Ping timeout: 252 seconds). 11:50:10 <elliott> oerjan: wasn't that obvious? :P 11:50:18 <elliott> you can also define any data type by just including the relevant function as its only field. 11:51:28 <oerjan> yeah 11:51:54 <oerjan> @djinn Monad m => m (m a) -> m a 11:51:54 <lambdabot> -- f cannot be realized. 11:52:12 <oerjan> ...something tells me the monad support is rather limited 11:52:35 <elliott> heh 11:52:37 <oerjan> @djinn Monad m => a -> m a 11:52:37 <lambdabot> f = return 11:52:59 <oerjan> @src join 11:52:59 <lambdabot> join x = x >>= id 11:53:46 <oerjan> @djinn Monad m => (a -> m b) -> m a -> m b 11:53:47 <lambdabot> f a b = b >>= a 11:55:48 <elliott> hm is there a way to tell GHC to use irrefutable patterns for a datatype by default? 12:00:41 <twice11> elliott: None I know of, as irrefutable patterns destroy the ability of matching multiple patterns. 12:01:04 <twice11> Depending on what you try to do, you could replace your datatype by a newtype. 12:01:25 <twice11> As newtypes are single-constructor only, matches on them are inherently irrefutable. 12:01:57 <oerjan> i assume the useful case would be single-constructor, multiple fields 12:02:05 <twice11> newtype a tuple. 12:02:14 <oerjan> doesn't work. 12:03:42 <elliott> twice11: There's only one constructor. 12:04:04 <elliott> Newtyping a tuple isn't viable, the whole reason I'm using this in place of a tuple is that it's strict and unboexd :-) 12:04:06 <elliott> unboxed 12:04:56 <oerjan> also this would be tricky, what about case (x, (y:z)) of ... where the tuple does this by default, but it would still be wierd to error out if the second element is an empty list... 12:04:58 <twice11> oerjan: Doesn't work? For me it certainly does. 12:05:03 <twice11> newtype Test = Test (Int,Bool, String) deriving Show 12:05:10 <twice11> main = print $ Test (3,True,"why?") 12:05:11 -!- Sgeo has quit (Ping timeout: 260 seconds). 12:05:15 <twice11> compiles + runs 12:05:22 <oerjan> twice11: doesn't work to achieve a useful irrefutable pattern default 12:05:54 <elliott> I'm sure oerjan knows what he's talking about, having written half the Haskell Report. :p 12:07:15 <oerjan> case Test (1, True, "") of Test (_, _, (x:xs)) -> ... would still error out too early. 12:07:56 <twice11> In this case, the match on the list would need to be irrefutable, though, not the match on the type "Test". 12:08:49 <twice11> Of course there is no way to make the match on members of a data type irrefutable by just playing around with the data type. 12:08:50 <oerjan> > case (1, True, "") of ~(_, _ x:xs) -> "testing" 12:08:51 <lambdabot> <no location info>: Parse error in pattern 12:08:59 <oerjan> > case (1, True, "") of ~(_, _, x:xs) -> "testing" 12:09:00 <lambdabot> "testing" 12:09:54 <twice11> OK, I'm not gonna split hairs here, but the "~" character is obviously "recursive", applying to all sub-patterns too. 12:09:58 <elliott> "hough, not the match on the type "Test". 12:09:58 <elliott> <twice11> Of course there is no way to make the match on members of a data type irrefutable by just playing around with the data type." 12:10:00 <elliott> I was thinking more a flag. 12:10:03 <elliott> Erm 12:10:04 <elliott> Like INLINE 12:10:08 <elliott> A declaration 12:10:12 <elliott> Admittedly INLINE doesn't change semantics 12:10:15 <elliott> But LANGUAGE does :P 12:10:37 <twice11> So like "data Test = Test Int Bool String {#-IRREFUTABLE-#}"? 12:10:46 <oerjan> twice11: it's not clear what should be the semantics if someone _did_ provide a way to make irrefutable default patterns 12:10:50 <elliott> Something like 12:10:54 <twice11> So that matches on the string fields would be irrefutable. 12:10:54 <elliott> {#- IRREFUTABLE Test -#} 12:10:59 <elliott> data Test = Test Int Bool String 12:11:00 <elliott> Then a match 12:11:03 <elliott> f (Test ...) = ... 12:11:04 <elliott> would actually be 12:11:06 <elliott> f ~(Test ...) = ... 12:11:15 <elliott> So I could say: 12:11:19 <elliott> {#- IRREFUTABLE Point -#} 12:11:22 <elliott> infix 0 :@ 12:11:22 <elliott> data Point = (:@) {-# UNPACK #-} !Value {-# UNPACK #-} !Value deriving (Eq, Ord, Show) 12:11:45 <elliott> Erm, {-# ... #-} not {#- ... -#} of course. 12:12:52 -!- MSleep has changed nick to MDude. 12:12:54 <twice11> for the top-level match, newtype-of-tuple provides the required irrefutability: 12:13:07 <twice11> data Test2 = Test2 Int Bool String deriving Show 12:13:11 <twice11> foo1 (Test _) = True 12:13:14 <twice11> foo2 (Test2 _ _ _) = True 12:13:18 <twice11> foo3 ~(Test2 _ _ _) = True 12:13:28 <twice11> foo1 and foo3 can be called with "undefined". 12:13:46 -!- hagb4rd|zzZ has joined. 12:14:06 <oerjan> twice11: but you can actually define any variables in foo1 12:14:09 <oerjan> *cannot 12:14:15 <elliott> twice11: But not the required unpacking or strictness. 12:14:17 <twice11> right, so I was cheating. 12:14:20 <elliott> If I didn't need them, I would just use a tuple. 12:14:38 <twice11> elliott: I guess "unboxed tuples" are too limited for you. 12:15:02 <elliott> Definitely. Also ugly. :p 12:16:47 <twice11> foo4 (Test (_,_,_)) can not be called with undefined (of course), so I just moved the refutability by introducing a non-refutable futile further layer of indirection. 12:17:03 <elliott> I love how cabal, when a package fails to build, just builds a random other number of them before reporting the error. 12:17:15 <elliott> twice11: Clearly we just need an infinite stack of irrefutability. 12:20:24 <twice11> elliott: Do you want irrefutability for performance or for being able to pass undefined? 12:21:24 <elliott> Performance. Not that I expect it'll help much or perhaps even at all... I'd just like to try everything before actually having to replace my fungespace :-P 12:22:10 <twice11> So saying !Point instead of Point and relying of ghc's worker split-off would do the job nicely. 12:22:27 <twice11> No, I don't know a way of getting the bang everywhere. 12:22:31 <elliott> Well, sed. 12:22:47 <elliott> Preferably I'd like to localise the Horrific Cthulian Directives, though. :p 12:23:00 <twice11> Also, !Point is a pattern does not work... 12:23:23 <elliott> ~(a :@ b) would do it. 12:23:55 <twice11> Modifying actual patterns instead of type signatures would be even more ugly. 12:24:24 <elliott> You can say !Point as a type? 12:24:48 <twice11> No. 12:24:55 <elliott> Aw. That would be nice. 12:25:12 <elliott> Fun Haskell-derivative feature number 9999: Strictness polymorphism. 12:25:27 <twice11> That's what I meant when I wrote "!Point is a pattern", wanted to type "!Point in a pattern" and meant "!Point in a signature". 12:25:32 <elliott> Right. 12:26:07 <elliott> To expand on that feature: Every type is, by default, takes either "strict" or "lazy". It then passes this on to all the types mentioned in its definition that don't have an explicit override. 12:26:39 <elliott> So you can define lists once and get lazy lists with lazy elements, spline-strict lists with lazy elements, element-strict lists with lazy splines, ... 12:28:43 -!- oerjan has quit (Quit: leaving). 12:31:41 -!- itidus21 has quit (Quit: Leaving). 12:37:34 -!- Taneb has joined. 12:37:42 <Taneb> Hello! 12:41:55 -!- itidus21 has joined. 12:44:28 <Taneb> Does anyone else do Project Euler? 12:46:38 -!- itidus21 has quit (Client Quit). 12:50:21 -!- itidus21 has joined. 12:50:53 -!- itidus21 has quit (Client Quit). 12:56:47 -!- itidus21 has joined. 12:59:03 -!- Taneb has quit (Remote host closed the connection). 13:01:45 -!- Taneb has joined. 13:02:26 <Jafet> The thing that isn't a project and has nothing to do with Euler 13:03:32 <Taneb> That has nothing to do with my question 13:03:49 <cheater> what is the keyboard combination to change readline to vi mode and emacs mode? 13:03:58 <Jafet> elliott: data Lazy a = Lazy a; data StrictList a = SNil | SCons !a (StrictList a); type LazyList a = StrictList (Lazy a) 13:04:43 <elliott> Jafet: Cute. But doesn't let you parameterise spline strictness. 13:05:29 <Jafet> data ElliottIsAFag s a = SNil | SCons !a !(spn (ElliotIsAFag spn a)) 13:05:44 <Jafet> ...I think that would work. 13:06:00 <Jafet> s/s /spn / 13:06:04 <elliott> Congratulations, you've proved that strict languages admit explicit laziness 13:06:27 <Jafet> Damn, I was trying to prove the converse. 13:06:28 <elliott> The idea with this is that you wouldn't have to define all that, and also wouldn't have to pack/unpack Lazy values (i.e. the reason laziness is awful in strict languages) :P 13:07:14 <Jafet> You can usually fix that with more polymorphism. 13:07:26 <Jafet> POLYMOARPHISM 13:09:13 <elliott> Go on then 13:09:44 <Jafet> The Prelude does not have polymoarphism. 13:10:04 <elliott> Implement yer own 13:10:09 <elliott> I guess you mean 13:10:13 <elliott> data Lazy a = Lazy a 13:10:20 <elliott> data Strict a = Strict !a 13:10:32 <Jafet> Also, you can't unbox that !a. 13:10:41 <elliott> class O o where pack :: a -> o a; unpack :: o a -> a 13:10:43 <elliott> instance O Lazy 13:10:45 <elliott> instance O Strict 13:10:57 <Jafet> More like Num a => Num (Lazy a) 13:11:05 <Jafet> Repeat 9001 times 13:11:13 <elliott> data List o a = Nil | Cons !(o a) !(o (List o a)) 13:11:22 <elliott> Jafet: who cares about the prelude 13:11:28 <Jafet> And don't have pack or unpack, just roll both into cast 13:11:40 <elliott> Jafet: Anyway, one problem there is that yo uca'n't override strictness of the element type 13:11:49 <elliott> You need to define your own newtype that discards its argument 13:11:52 <elliott> Which is lame 13:12:09 <elliott> Compare (List! Int~) 13:12:16 <elliott> i.e. spline-strict list of lazy integers 13:12:25 <elliott> (List! Int) == fully strict list because the ! is passed on 13:12:30 <elliott> I dunno, it sounds interesting :-P 13:12:46 <elliott> (List Int!) -- polymorphic on spline strictness but with strict elements 13:13:08 <Jafet> Programming with splines sure is 13:13:26 <elliott> Sure is what 13:14:15 <Jafet> ,,,smooth? Visually appealing? 13:14:24 <elliott> Totes 13:14:45 <elliott> The other nice thing is that functions become the automatic "correct" strict implementation 13:14:54 <elliott> As in you don't need to rewrite map for efficiency on strict lists 13:15:43 -!- itidus21 has quit (Read error: Connection timed out). 13:15:46 <Jafet> How would it be more efficient? 13:16:08 <elliott> Than what? 13:16:11 -!- itidus21 has joined. 13:16:20 <Jafet> map on a non-strict list. 13:16:30 <elliott> It wouldn't, it'd just be properly strict 13:16:32 -!- sllide has joined. 13:16:45 <elliott> I guess that Haskell stuff gtes you the same, but really nobody wants to write in that 13:17:23 <Jafet> That would suck, actually, since you'd need a stack or a reversal. 13:18:27 <Jafet> Either way, it's a linear amount of extra space. 13:19:51 <elliott> Jafet: What would suck? 13:20:12 <Jafet> map on strict lists. 13:20:45 <elliott> Jafet: Well, I'm not saying strict languages are a party. 13:20:56 <elliott> But people do map over strict lists quite an awful lot In The Real World, it has to be said. :p 13:21:10 <Jafet> It's kind of egregious when a strict solution uses more space than the lazy one. 13:21:27 <elliott> But the main thing is that I could write !(Value,Value) as a type, dammit, rather than defining my own fucking tuples. 13:21:31 <Jafet> Well, you save a bit of space from unboxing, but it's not enough. 13:21:50 <Jafet> (#,#) 13:22:32 <Jafet> Do you need strict tuples that often, or do you just want unboxed tuples 13:22:50 <elliott> infix 0 :@ 13:22:50 <elliott> data Point = (:@) {-# UNPACK #-} !Value {-# UNPACK #-} !Value deriving (Eq, Ord, Show) 13:22:51 <elliott> I want these 13:23:06 <elliott> Except without the part where I reimplement tons of things for them and the constructor/destructor syntax isn't as nice as (a,b) 13:23:15 <elliott> Unboxed tuples wouldn't even remotely work, I need to return these things 13:23:23 <Jafet> Well, you can fix the tuple type system while you're at it. 13:23:30 <elliott> Tuple type system? 13:24:06 -!- Taneb has quit (Read error: Connection reset by peer). 13:24:22 <Jafet> So you can write tail (a,b,c...) and get (b,c...) 13:24:36 -!- elliott has changed nick to Clippy. 13:24:40 <Jafet> Then init (x,y,z,w) = (x,y,z) 13:24:42 <Clippy> It looks like you're writing HLists. 13:24:44 <Clippy> - Bow to Oleg 13:24:47 <Clippy> - Continue futility 13:24:50 <Clippy> - Bug the GHC developers 13:24:51 -!- Clippy has changed nick to elliott. 13:25:39 <elliott> Everyone loves Clippy. 13:25:52 <elliott> If you disagree, reconsider your opinions. 13:26:12 <Jafet> Eh pops up at the right time and doesn't afraid of anything. 13:26:28 <elliott> Except rejection. 13:26:31 <Jafet> @google openoffice.org clippy 13:26:32 <lambdabot> http://www.oooforum.org/forum/viewtopic.phtml?t=50110 13:26:44 <elliott> Finally I can switch to Linux. 13:28:37 <Jafet> http://www.oooforum.org/forum/viewtopic.phtml?t=22401 13:28:46 <Jafet> 10% of people actually want it. 13:29:54 <Jafet> That's probably more people than the people who want, say, auto-turn-everything-that-could-possibly-be-interpreted-as-a-date-into-a-date-even-American-so-called-dates in spreadsheets. 13:30:32 <elliott> Really, American dates aren't that bad. PDPs had integers like that, you know. 13:30:45 <elliott> I wonder if PDPs were fast at handling American dates. 13:33:06 -!- sebbu has quit (Read error: Connection reset by peer). 13:35:24 -!- sebbu has joined. 13:35:24 -!- sebbu has quit (Changing host). 13:35:24 -!- sebbu has joined. 13:38:35 -!- ais523 has joined. 13:45:53 <ais523> something that came up at my job, and people might have ideas on here: what's the easiest (ideally fully-automated) way to get all the email sent to a gmail account into an mbox file or equivalent easily machine-readable format? 13:46:05 <ais523> I'm assuming it involves IMAP somewhere 13:47:34 * ais523 goes and checks CPAN 13:47:36 <elliott> step one 13:47:36 <elliott> imap 13:47:39 <elliott> step two 13:47:40 <elliott> done 13:47:46 <elliott> gmail has imap interface, so just enable it and... use a client 13:47:50 <elliott> a standard imap client 13:47:53 <ais523> yep, I'm wondering where to get an appropriate IMAP client 13:48:03 <ais523> using Evolution is obviously silly 13:48:05 <elliott> fetchmail :-) 13:48:12 <elliott> note: joke. joke. joke. no. joke. 13:48:17 <ais523> I thought it might be 13:48:32 <elliott> ais523: At least do Maildir rather than mbox. 13:48:42 <ais523> what's the difference? 13:48:50 <elliott> Maildir isn't useless. 13:49:18 <ais523> well, the application is: I want to perform an operation on the text and subject line of every email emailed to a particular gmail account 13:49:28 <elliott> It has a file per message and actually supports more than one application accessing a file without like totally rewriting it. 13:49:28 <ais523> (using gmail wasn't my choice here, and seems a little inappropriate for the task) 13:49:42 <elliott> It's easy to implement, http://en.wikipedia.org/wiki/Maildir#Technical_operation 13:49:48 <ais523> there's only the one application accessing the account 13:49:50 <elliott> ais523: bayes has code for this :-) 13:49:53 <ais523> it's dedicated for the one task only 13:49:58 <elliott> though you'd have to ask comex if he has a copy of it 13:50:00 <elliott> and it's Python 13:50:01 <ais523> elliott: aha, it probably does 13:50:09 <elliott> well, I forget what bayes operated on 13:50:12 <ais523> language isn't really important, although I don't like Python 13:50:14 <elliott> might have been imap, might have been mbox 13:50:21 <elliott> but python has imap too so that's like three extra lines 13:50:24 <elliott> ais523: i don't either but it worked at the time 13:50:25 <itidus21> `log language 13:50:33 <elliott> ais523: I'm really surprised Bayes worked, really 13:50:39 <itidus21> `log language 13:50:46 <ais523> elliott: the same is true of most programs 13:50:47 <HackEgo> 2007-08-19.txt:22:24:16: <Overand> Gurami: my favorite language for web development is english - I requie all web users to phrase queries in plain english, then I write my answer out in cursive german, which an OCR program will scan, and translate to english, then feed back to the user. 13:50:47 <HackEgo> 2005-07-16.txt:07:25:12: <calamari> that's interesting though.. I wonder what a programming language would look like if the ancient egyptians had computers 13:50:55 <ais523> I'm surprised my quick hacks to OCaml's parser this morning worked 13:51:00 <ais523> and to its main evaluation loop 13:51:05 <elliott> did Bayes ever actually do well at the AAA? 13:51:15 <elliott> it played perfectly, but I don't remember if that translated into real success 13:51:16 <itidus21> `log really important 13:51:16 <ais523> the AAA collapsed before it had much of a chance, IIRC 13:51:19 <HackEgo> 2008-04-04.txt:19:06:07: <ais523> but it's really important in sed 13:51:23 <itidus21> `log really important 13:51:27 <HackEgo> 2011-09-17.txt:13:51:16: <itidus21> `log really important 13:51:31 <itidus21> `log really important 13:51:34 <HackEgo> 2010-01-25.txt:22:02:48: <cpressey> If it was really important for me to get clang running, I probably would have tried it in the VM. But for kicks, it's hey, let's try cygwin!! 13:51:43 <itidus21> `log really important 13:51:46 <HackEgo> 2010-10-16.txt:15:01:08: <elliott> catseye: is the windows partition really important? i'd have just upgraded the ubuntu install 13:52:00 * itidus21 sidles away 13:52:22 <elliott> ais523: hmm, partnerships weren't stripped of personhood, right? 13:52:37 <elliott> ...never mind :P 13:52:38 <itidus21> `log personhood 13:52:41 <HackEgo> 2010-10-20.txt:00:04:00: <cpressey> trees have personhood 13:52:43 <ais523> yes, they were 13:52:46 <itidus21> `log personhood 13:52:49 <HackEgo> 2010-10-20.txt:00:04:00: <cpressey> trees have personhood 13:52:53 <ais523> I know I tried to argue that they were still nonetheless players 13:52:58 <elliott> hmm, I thought that was ruled R101-violating 13:52:58 <itidus21> `log personhood 13:52:58 <ais523> until someone explicitly deregistered them 13:53:01 <HackEgo> 2010-09-12.txt:07:51:52: <Sgeo> Does U.S. Law, which might contain legal fictions (corporate personhood, for example), constitute a fictitious world? 13:53:11 <ais523> but I think it was decided that the undefinition of concepts caused partnerships to cease to exist 13:53:13 <elliott> seems an easy way to circumvent R101; depersonalise something, abuse it, then repersonalise it 13:53:16 <elliott> ais523: heh 13:53:21 <elliott> `log nomic 13:53:24 <HackEgo> 2010-09-17.txt:05:44:25: <pikhq> Less so culturally, but very much so economically. 13:53:38 <ais523> `log \bnomic\b 13:53:40 <itidus21> nice abuse of nomic 13:53:41 <HackEgo> 2007-12-28.txt:00:17:49: <ihope> Small world, I guess. I conclude that everyone here is interested in Nomic. 13:53:53 <ais523> egrep recognises \b? nice 13:54:08 <itidus21> `log recogni 13:54:12 <HackEgo> 2008-05-08.txt:15:36:17: <ehird> Monticello recognizes your monkey patches and even version controls them 13:54:23 <ais523> elliott: ooh, that sounds useful 13:54:38 <itidus21> `log recogni 13:54:41 <elliott> ais523: I'm sure Feather's VCS could do that 13:54:42 <HackEgo> 2007-04-17.txt:02:37:31: <SevenInchBread> if the filesystem recognizes content types... then it can be smart about handling them. audio is typically large, and edited infrequently... while a swap file stays roughly the same most of the time, but will be written and read from frequently. 13:54:42 <ais523> I was planning to diff my unpacked OCaml directory against the original, ignoring files that didn't exist in both, to find my monkeypatches 13:54:48 <ais523> elliott: Feather has a VCS? 13:54:51 <ais523> do you mean @'s VCS? 13:54:53 <elliott> Monticello is a Smalltalk thing, so presumably? 13:55:01 <ais523> oh, I see 13:55:03 <itidus21> `log VCS 13:55:07 <HackEgo> 2010-03-01.txt:11:58:55: <scarf> one thing I've been thinking about recently is designing my own VCS 13:55:16 <ais523> haha, it begins 13:55:18 <elliott> Ha, what does that scarf know about VCSes. 13:55:20 <elliott> He should try scapegoat. 13:55:24 -!- ais523 has changed nick to scarf. 13:55:24 <elliott> It'll beat whatever crappy idea HE has. 13:55:27 <scarf> heh 13:55:29 -!- scarf has changed nick to ais523. 13:55:44 * itidus21 abuses `log 13:55:53 <ais523> `log 13:55:55 <HackEgo> 2011-03-16.txt:02:53:07: <quintopia> indeed, it is impossible to give an answer inadvertently 13:55:56 <elliott> ?tell scarf I'm from the future! Turns out your VCS sucks. Actually it wiped out half the human population. Thanks a bunch. 13:55:56 <lambdabot> Consider it noted. 13:56:19 * itidus21 leaves lesions and trauma on `log 13:56:24 <ais523> elliott: you're getting sg and feather muddled again 13:56:33 <ais523> anyway, I'm pretty sure I know what a Feather program is 13:56:39 <elliott> ais523: the folly is pretending all these concepts can be separated 13:56:49 <ais523> it's a sequence of program fragments that, when run, transform a Feather interpreter into a new state 13:57:01 <ais523> I'm not sure if output is possible, but luckily it's an esolang, so I don't really mind 13:57:30 <itidus21> `log ton 13:57:34 <HackEgo> 2010-04-19.txt:16:38:52: -!- Tritonio_GR has quit (Read error: Connection reset by peer). 13:57:42 <itidus21> `log fuckton 13:57:45 <HackEgo> 2010-03-13.txt:18:25:41: <Gregor> pikhq: Y'know, I'm starting to think that metric fucktons aren't even a real unit! 13:57:54 <itidus21> yes they are 13:58:07 <itidus21> blasphemy 13:58:21 <itidus21> jk,, 13:58:50 <itidus21> `log fuckton 13:58:53 <HackEgo> 2010-10-17.txt:17:57:02: <elliott> pikhq: I think we are up for a FUCKTON of flashbacks. 13:59:46 <itidus21> why are people always addressing pikhq with the word fuckton i wonder 14:00:15 <elliott> Always=two. 14:00:18 <itidus21> lets take another dip 14:00:18 <elliott> Two=infinity. 14:00:20 <itidus21> `log fuckton 14:00:21 <elliott> Zero, one, infinity. 14:00:24 <HackEgo> 2011-09-17.txt:13:58:50: <itidus21> `log fuckton 14:00:28 <itidus21> `log fuckton 14:00:31 <HackEgo> 2011-09-12.txt:03:52:40: <Gregor> As per how many files, roughly a metric fuckton. 14:00:57 <itidus21> so it seems gregor's faith in that metric is stable 14:01:06 <itidus21> ok my sample size was too small 14:01:33 <itidus21> `log fuckton 14:01:37 <HackEgo> 2009-06-18.txt:21:10:58: <ehird> pikhq: metric fuckton? 14:01:59 <itidus21> wtf.. some freeeaky pattern there 14:02:18 <itidus21> gestures 14:13:46 -!- Taneb has joined. 14:17:59 -!- hagb4rd|zzZ has changed nick to hagb4rd. 14:29:06 -!- Taneb has quit (Read error: Connection reset by peer). 14:35:24 -!- Patashu has quit (Ping timeout: 258 seconds). 14:39:15 -!- Taneb has joined. 15:13:04 -!- derrik has joined. 15:15:31 -!- Taneb_ has joined. 15:17:56 -!- sebbu2 has joined. 15:18:08 -!- Taneb has quit (Ping timeout: 252 seconds). 15:21:20 -!- sebbu has quit (Ping timeout: 252 seconds). 15:25:06 -!- Taneb_ has quit (Ping timeout: 252 seconds). 15:38:18 -!- sebbu2 has changed nick to sebbbu. 15:39:20 -!- calamari has joined. 15:59:22 <Gregor> `pastelogs fuckton 15:59:28 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3409 16:00:35 <Gregor> Welp, I'm the first person to ever say "fuckton" in this channel. 16:00:38 <Gregor> Pretty proud of that. 16:00:47 <Gregor> Also the first person to say "metric fuckton" 16:01:13 <ais523> isn't a metric fuckton slightly smaller than an imperial fuckton? 16:01:24 <Gregor> ais523: According to our own logs, slightly /larger/ 16:01:28 <ais523> ah, aha 16:01:57 <Gregor> `run sed 's/\(.*metric\)/ \1/gi' paste/paste.3409 | paste 16:01:59 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5111 16:02:32 <Gregor> Looks like about half of all fuckton mentions are qualified. 16:28:08 -!- sebbbu has quit (Read error: Connection reset by peer). 16:30:37 -!- sebbbu has joined. 16:35:33 -!- sebbbu has changed nick to sebbu. 16:35:47 -!- sebbu has quit (Changing host). 16:35:48 -!- sebbu has joined. 16:46:35 -!- ive has joined. 16:46:43 -!- Freedom666 has joined. 16:47:36 -!- Freedom666 has left. 16:48:06 <elliott> ?hoogle Q [Q a] -> [Q a] 16:48:07 <lambdabot> Language.Haskell.TH appsE :: [ExpQ] -> ExpQ 16:48:07 <lambdabot> Language.Haskell.TH listE :: [ExpQ] -> ExpQ 16:48:07 <lambdabot> Language.Haskell.TH tupE :: [ExpQ] -> ExpQ 16:48:08 <elliott> That won't work >_> 16:48:17 <elliott> ?hoogle m [m a] -> [m a] 16:48:17 <lambdabot> Data.List transpose :: [[a]] -> [[a]] 16:48:17 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a 16:48:17 <lambdabot> Test.QuickCheck oneof :: [Gen a] -> Gen a 16:48:19 <elliott> BUT I MIGHT AS WELL TRY 16:48:53 -!- derrik has quit (Quit: gone). 16:49:21 <Deewiant> elliott: (Parsec3, Text) -> (Trifecta, ByteString): 6 files changed, 263 insertions(+), 202 deletions(-) 16:49:38 <elliott> Deewiant: Nice 16:49:41 <elliott> Deewiant: I logpinged you repeatedly 16:49:43 <elliott> w/ edwardk comments 16:49:48 <Deewiant> I noticed 16:50:12 <Deewiant> Nice to know that the tab thing is in the works 16:51:12 <Deewiant> Dang, 12% of this file is imports now 16:51:21 <elliott> :-D 16:51:29 <elliott> Deewiant: Be thankful, you're not dealing with TH like I am 16:51:34 <Deewiant> I don't think I've ever had 8 qualified imports in one module 16:52:00 <elliott> Gotta love a library where the recommended calling convention for the API functions is "they all take monadic values and return monadic values, except that, if it's a list, it's actually a pure list of monadic values, and..." 16:55:27 <Deewiant> Whoops, make that 214 deletions 16:59:32 <elliott> Deewiant: Can you shoot whoever wrote the cereal package for me, thanks 16:59:52 <elliott> What kind of horrible person adds functions for serialising WordNs for various N in little-endian BUT NOT INTS 16:59:56 <elliott> WHAT AM I MEANT TO DOOOOO 17:00:05 <elliott> (Okay I guess I can just fromIntegral it and it'll be fine but still) 17:01:43 <Deewiant> elliott: That'd be "Galois Inc." and some others 17:03:14 <elliott> Deewiant: DAMN YOU GALOIS INC. 17:03:20 <elliott> module MC.Protocol.Helpers 17:03:20 <elliott> ( putInt16be 17:03:20 <elliott> , putInt32be 17:03:20 <elliott> , putInt64be 17:03:20 <elliott> , putTextUCS2be 17:03:21 <elliott> ) where 17:03:26 <elliott> Finally my code is becoming a mess already 17:03:31 <elliott> Just what I always secretly wanted 17:19:21 -!- azaq23 has joined. 17:19:22 -!- azaq23 has quit (Changing host). 17:19:22 -!- azaq23 has joined. 17:28:09 -!- calamari has quit (Quit: Leaving). 17:48:02 <fizzie> Deewiant: My xmonad.hs has six qualified imports, and they're named using the "1-3-letter all-uppercase cryptic acronyms" style elliott hates. (Though three of them probably have no real business to be qualified.) 17:49:40 <elliott> fizzie: I thought you used so-called ``awesome''. 17:49:53 <Deewiant> At least I can recognize five of these eight abbreviations out of context 17:50:02 <elliott> Also, as far as hating them goes, I realised my style was totally inconsistent and switched to Deewiant's 17:50:06 <elliott> Bit of an existential crisis there 17:50:07 <Deewiant> as BS 17:50:07 <Deewiant> as BSL 17:50:07 <Deewiant> as UTF8 17:50:07 <Deewiant> as F 17:50:07 <Deewiant> as IM 17:50:09 <Deewiant> as IS 17:50:12 <Deewiant> as PP 17:50:14 <Deewiant> as TriD 17:50:23 <elliott> Deewiant: I gently request "B" instead of "BS", on behalf of programmers worldwid.e 17:50:25 <elliott> worldwide. 17:50:28 <elliott> I mean come on, BS. 17:50:33 <elliott> Also it: is shorter. 17:50:35 <fizzie> elliott: I made the plunge a month ago. 17:50:43 <fizzie> Deewiant: HT, W, T, DBA, DBC, DBT. 17:50:47 <Deewiant> Actually I just remembered that BSL should be BL 17:50:51 <elliott> fizzie: I hope you've enjoyed your plungerating. 17:51:00 <fizzie> elliott: At Least It's Not Lua(tm). 17:51:22 <Deewiant> Anyway, BS is intentional precisely because it's BS 17:51:49 <Deewiant> UTF8 should probably be BS_UTF8 but meh 17:52:26 <elliott> fizzie: I should probably try out xmonad sometime myself. I mean, there's something to be said for being under fifty lines. 17:52:32 <elliott> Deewiant: What exactly is the BS_UTF8 module 17:52:41 <Deewiant> Data.ByteString.UTF8 17:53:31 <elliott> I'd go for BUTF8 17:53:35 <elliott> Beautiful eight. 17:53:39 <olsner> Data.BullShit.UTF8 17:53:41 <Deewiant> Butt F8 17:53:44 <elliott> Meanwhilst, from the land of generated code: 17:53:45 <elliott> 1 -> Control.Monad.ap 17:53:45 <elliott> (Control.Monad.ap 17:53:45 <elliott> (Control.Monad.ap 17:53:45 <elliott> (Control.Monad.ap 17:53:45 <elliott> (Control.Monad.ap 17:53:45 <fizzie> elliott: So far I like it, even though my setup (Gnome-2 session running XMonad as the WM, with a gnome-panel instance holding all those indicator schwubblets and a systray) is probably something that would make "real XMonadists" go up in flames. 17:53:46 <elliott> (Control.Monad.ap 17:53:48 <elliott> (Control.Monad.ap 17:53:50 <elliott> (Control.Monad.ap 17:53:52 <elliott> (Control.Applicative.pure CLogin) 17:53:54 <elliott> MC.Protocol.Helpers.putInt32be) 17:53:56 <elliott> MC.Protocol.Helpers.putTextUCS2be) 17:53:58 <elliott> MC.Protocol.Helpers.putInt64be) 17:54:00 <elliott> MC.Protocol.Helpers.putInt32be) 17:54:02 <elliott> Data.Serialize.Put.putWord8) 17:54:04 <elliott> Data.Serialize.Put.putWord8) 17:54:08 <elliott> Data.Serialize.Put.putWord8) 17:54:10 <elliott> Data.Serialize.Put.putWord8 } } 17:54:13 <fizzie> Oh no, I messed up the pretty triangle. :( 17:54:16 <elliott> fizzie: Pretty sure PROMINENT XMONAD COMMUNITY MEMBERS(tm) do the Gnome thing too. 17:54:22 <elliott> And yes, you are disgusting. 17:54:41 <elliott> Now if you stay quiet for a second, you will hear the sound of Deewiant yelling USE <ASTERISK> 17:54:43 -!- DH____ has quit (Read error: Connection reset by peer). 17:54:47 <elliott> He will then type the asterisk, enabling my use of it 17:55:04 -!- DH____ has joined. 17:55:11 <Deewiant> <*> 17:55:20 <elliott> Also he might tell me that it should be get instead of put there and he'd be EXACTLY RIGHT. 17:55:57 <elliott> 1 -> ((((((((Control.Applicative.pure CLogin 17:55:57 <elliott> Control.Applicative.<*> 17:55:57 <elliott> MC.Protocol.Helpers.getInt32be) 17:55:57 <elliott> Control.Applicative.<*> 17:55:57 <elliott> MC.Protocol.Helpers.getTextUCS2be) 17:55:58 <elliott> Control.Applicative.<*> 17:55:59 <elliott> MC.Protocol.Helpers.getInt64be) 17:56:02 <elliott> Control.Applicative.<*> 17:56:03 <elliott> MC.Protocol.Helpers.getInt32be) 17:56:05 <elliott> Control.Applicative.<*> 17:56:09 <elliott> Data.Serialize.Get.getWord8) 17:56:11 <elliott> Control.Applicative.<*> 17:56:16 <elliott> Data.Serialize.Get.getWord8) 17:56:16 <elliott> Control.Applicative.<*> 17:56:17 <elliott> Data.Serialize.Get.getWord8) 17:56:19 <elliott> Control.Applicative.<*> 17:56:21 <elliott> Data.Serialize.Get.getWord8) } } 17:56:23 * copumpkin sighs 17:56:25 <elliott> Isn't it pretty? 17:56:28 <Deewiant> elliott: Do you need those brackets 17:56:31 <fizzie> I also have a dzen2-for-each-monitor statusbars thing fed by a separate proggie that receives status updates via DBus, and the XMonad.Layout.IndependentScreen thing that makes workspaces local per screen (as in Awesome), which I guess are non-conventional things to do also. 17:56:32 <Deewiant> elliott: Also btw henceforth when I use first/second if you yell at me about arrows I'll say they're from Data.Bifunctor 17:56:35 <fizzie> The sauna. -> 17:56:45 <elliott> Deewiant: (a) This is GHC printing its generated splice code 17:56:48 <elliott> All this is from TH 17:56:52 <elliott> Deewiant: (b) Okay 17:56:58 <elliott> copumpkin: Do you have a highlight on applicative or something 17:57:03 <copumpkin> nope 17:57:10 <elliott> Or were you just expressing general disapproval of my beautiful exhibits 17:57:36 <Deewiant> elliott: And if you can find me an (&&&) outside Control.Arrow I can drop arrows entirely 17:57:49 <elliott> :t (&&&) 17:57:50 <lambdabot> forall (a :: * -> * -> *) b c c'. (Arrow a) => a b c -> a b c' -> a b (c, c') 17:57:53 <elliott> Hayoo time 17:58:00 <Deewiant> \f g -> bimap f g . join (,) 17:58:31 <Deewiant> It exists in various places IIRC but nowhere nice :-P 17:58:38 <elliott> http://hackage.haskell.org/packages/archive/data-aviary/latest/doc/html/Data-Aviary-Functional.html#v:(&&&) 17:58:38 <elliott> http://hackage.haskell.org/packages/archive/uulib/latest/doc/html/UU-Util-Utils.html#v:split 17:58:40 <elliott> http://hackage.haskell.org/packages/archive/pointless-haskell/latest/doc/html/Generics-Pointless-Combinators.html#v:(/\) 17:58:41 <elliott> http://hackage.haskell.org/packages/archive/Agda/latest/doc/html/Agda-Utils-Tuple.html#v:(/\) 17:58:43 <elliott> http://hackage.haskell.org/packages/archive/hamusic/latest/doc/html/Music-Analysis-PF.html#v:split 17:58:46 <Deewiant> Yes, exactly 17:58:48 <elliott> I suggest the Agda or hamusic one. :p 17:58:52 <elliott> Deewiant: Well, hmm 17:58:53 <Deewiant> Yes, exactly not :-P 17:59:10 <elliott> http://hackage.haskell.org/package/pointless-haskell-0.0.5 does not look so bad, though it depends on haskell98 and duplicates a lot of edwardk packages ;-) 17:59:29 <Deewiant> Yes, the duplication is the main problem :-P 17:59:31 <elliott> uulib is apparently the parsing library? I assumed it'd just be a grab-bag of Utrecht-style insanity 17:59:44 <elliott> Oh, data-aviary is just a set of combinator birds 17:59:48 <elliott> That's not so bad, is't? 17:59:52 <elliott> Though it certainly has all the stupid names. :p 18:00:05 <elliott> Oh, Data.Aviary.Functional: "This is for reference (obviously) and is not intended for use." 18:00:17 <elliott> Deewiant: In conclusion, I recommend depending on Agda 18:00:24 <Deewiant> Not hamusic? 18:00:31 <elliott> Deewiant: It uses the older Haddock CSS 18:00:33 <elliott> I don't like that 18:01:00 <elliott> Deewiant: More seriously though, I might just make my own package of "Arrow shit except specialised to functions" 18:01:05 <elliott> Since I want it, too 18:01:15 <elliott> The question is where to put them, module-wise :P 18:01:19 <elliott> Data.Function.Extra is gross 18:01:20 <Deewiant> Make it a "tuple helpers" instead 18:01:28 <elliott> Deewiant: What about arrowchoice 18:01:29 <Deewiant> And add Trifunctors etc 18:01:33 <Deewiant> Nobody uses arrowchoice 18:01:45 <elliott> Deewiant: But okay, tuple helpers sounds decent 18:01:48 <elliott> Data.Function.Tuple? 18:01:53 <Deewiant> Data.Tuple already exists 18:02:01 <Deewiant> Data.Tuple.ElliottsExtrasEmporium 18:02:08 <elliott> Yes, which is why I'm trying to think of logical other names 18:02:21 <Deewiant> I meant that I'd put it under Data.Tuple 18:02:30 <elliott> Data.Tuple.Combinators? 18:02:40 <elliott> That seems reasonable, if a little long 18:02:48 <Deewiant> That's not long 18:02:54 <Deewiant> System.Console.Terminfo.PrettyPrint is long 18:02:58 <elliott> Your mind is warped by the trifecta 18:03:04 <Deewiant> That's not trifecta 18:03:13 <elliott> s/trifecta/edwardk/ :-P 18:03:30 <Deewiant> And hey, Data.ListTrie.Patricia.Map.Enum 18:03:35 <Deewiant> That's long too 18:03:44 <elliott> Deewiant: I'm so glad I put GPipe stuff on the back-burner 18:03:46 <Deewiant> But it's only ever imported qualified so it doesn't matter for my alignment purposes 18:03:56 <elliott> Means I'm not dealing with your awful library :-D 18:04:04 <Deewiant> :-( 18:04:12 <elliott> OK, beautiful library with ugly typeclasses. 18:04:25 <Deewiant> Which you haven't fixed yet 18:04:28 <Deewiant> Or where did we end up with that 18:04:32 <elliott> Like I said, I put GPipe stuff on the backburner 18:04:38 <Deewiant> Yeah okay 18:04:44 <elliott> It's not hard to fix at all, it's just a lot of tedious work :P 18:04:46 <Deewiant> I'm just wondering if you'd given up on it or if we were stuck on something else 18:04:58 <elliott> Deewiant: So (&&&) isn't a very nice name 18:05:09 <Deewiant> I don't care about the name 18:05:16 <elliott> You probably care about whether it's infix or not 18:05:23 <Deewiant> Not that much 18:05:26 <Deewiant> I'm fine with bimap instead of *** 18:05:31 <Deewiant> I think, at least 18:05:41 <Deewiant> I haven't used either *** or &&& lately 18:05:44 <elliott> What type does (\f g -> bimap f g . join (,)) actually come out to 18:06:01 <Deewiant> \f g -> bimap f g . join (,) :: (c -> b) -> (c -> d) -> c -> (b, d) 18:07:49 <Deewiant> (Same as with (***)) 18:08:17 <elliott> Oh, I thought it'd end up with some funky bifunctor crap in the type 18:08:31 <Deewiant> The (,) makes it be a pair 18:08:39 <Deewiant> And that's the only bifunctor crap there could be 18:09:06 <ais523> <Esolang> Brainlove adds a few more commands to brainfuck in order to make it easier to program in. 18:09:08 <ais523> oh dear 18:09:10 <elliott> ais523: augh 18:09:12 <elliott> ?hoogle showHex 18:09:12 <lambdabot> Numeric showHex :: Integral a => a -> ShowS 18:09:23 <elliott> > showHex 99 "a" 18:09:24 <lambdabot> "63a" 18:10:10 <ais523> it seems to be BF + one register that can be copied to/from tape + until loop + instruction that makes while/unless into if/unless 18:11:29 <Deewiant> I always think of http://i.imgur.com/6Ybge.jpg when elliott says "augh" 18:11:40 <elliott> Fairly accurate 18:12:38 <elliott> Has anyone here who is Deewiant used lazy bytestrings 18:12:48 <Deewiant> Yes 18:12:52 <elliott> Excellent 18:13:03 <elliott> Deewiant: I take it doing the equivalent of getContents for a lazy bytestring isn't a Done Thing 18:13:16 <elliott> It's only that, I just realised that cereal only works on bytestrings 18:13:20 <elliott> And the data is variable length 18:13:27 <elliott> So I have no idea how many bytes to read 18:13:27 <elliott> So 18:13:27 <elliott> Yeah 18:13:35 <elliott> I could do my own buffering but I'd rather it be more automatic 18:13:36 <elliott> Oh hmm 18:13:38 <elliott> Constructors 18:13:38 <elliott> Fail String 18:13:38 <elliott> The parse failed. The String is the message describing the error, if any. 18:13:38 <elliott> Partial (ByteString -> Result r) 18:13:39 <elliott> Supply this continuation with more input so that the parser can resume. To indicate that no more input is available, use an empty string. 18:13:43 <elliott> Done r ByteString 18:13:45 <elliott> The parse succeeded. The ByteString is the input that had not yet been consumed (if any) when the parse succeeded. 18:13:48 <elliott> Yeah okay this should work 18:13:55 <Deewiant> Glad I could help 18:13:56 <elliott> I'll still have to keep my own buffer but that's pretty good 18:14:01 <elliott> Deewiant: You're very welcome 18:14:18 <elliott> Deewiant: To thank you for your help, here's a horrible function: http://sprunge.us/ASLM 18:14:30 <elliott> Actually that's probably the prettiest TH code I've written yet 18:14:31 <Deewiant> Looks fine to me 18:14:36 <Deewiant> The average identifier length far exceeds 1 18:14:42 <elliott> Deewiant: Quick, what does it do, tell me in ten seconds 18:14:43 <Deewiant> Compare to trifecta 18:14:45 <elliott> No cheating 18:14:58 <elliott> Also no looking at the function body which makes it obvious :-P 18:15:10 <Deewiant> Too late, I already looked before you asked 18:15:30 <elliott> Dammit 18:15:41 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 18:15:43 <elliott> let x = 0 of type UNSIGNED byte 18:15:43 <elliott> while (x = read byte from stream) does not equal 127: 18:15:44 <elliott> select based on value of (x >> 5): 18:15:44 <elliott> case 0: read byte from stream 18:15:44 <elliott> case 1: read short from stream 18:15:44 <elliott> case 2: read int from stream 18:15:46 <elliott> case 3: read float from stream 18:15:48 <elliott> case 4: read string (UCS-2) from stream 18:15:50 <elliott> case 5: read short, byte, short from stream; save as item stack (id, count, damage, respectively) 18:15:52 -!- zzo38 has joined. 18:15:53 <elliott> case 6: read int, int, int from stream; save as extra entity information. 18:15:55 <elliott> end select 18:15:57 <elliott> end while 18:15:59 <elliott> What a beautiful serialisation. 18:16:01 <elliott> By beautiful, I mean ``augh''. 18:19:50 <ais523> is that pseudocode? or some language I'm not aware of? 18:19:54 <Deewiant> elliott: (x *> ((:) <$> y) <* z <*> w) or ((:) <$> (x *> y) <* z <*> w) or ((:) <$> (x *> y <* z) <*> w) 18:19:59 <ais523> oh, must be pseudocode because of the "respectively" 18:20:00 <Deewiant> Question mark 18:20:12 <ais523> the only language I can think of that has something even vaguely corresponding to that is COBOL 18:20:15 <elliott> ais523: pseudocode, yeah 18:20:27 <elliott> Deewiant: Um 18:20:33 <ais523> err, pun unintentional 18:20:35 <elliott> ?. undo unpl ((:) <$> (x *> y) <* z <*> w) 18:20:35 <lambdabot> (((((:)) <$> (x *> y)) <* z) <*> w) 18:20:38 <elliott> God dammit 18:20:41 <ais523> and probably will be missed unless you know at least a bit of COBOL 18:20:44 <elliott> ?. do unpl ((:) <$> (x *> y) <* z <*> w) 18:20:45 <lambdabot> (((((:)) <$> (x *> y)) <* z) <*> w) 18:20:47 <elliott> God dammit 18:20:53 <elliott> ?. do unpl ((:) `fmap` (x *> y) <* z `ap` w) 18:20:53 <lambdabot> (do { b <- ((fmap ((:)) (x *> y)) <* z); a <- w; return (b a)}) 18:21:00 <elliott> ?. do unpl ((:) `fmap` (x >> y) <* z `ap` w) 18:21:00 <lambdabot> (do { b <- ((fmap ((:)) (do { x; y})) <* z); a <- w; return (b a)}) 18:21:25 <elliott> ?do let q a b = do x <- a; b; return x in (do { b <- ((fmap ((:)) (do { x; y})) `q` z); a <- w; return (b a)}) 18:21:26 <lambdabot> let { q a b = do { x <- a; b; return x}} in (do { b <- ((fmap ((:)) (do { x; y})) `q` z); a <- w; return (b a)}) 18:21:28 <elliott> >_<< 18:21:29 <elliott> >_< 18:21:36 <elliott> Deewiant: Yeah, I recommend something that looks nothing like that 18:21:58 <Deewiant> I'll just take the first option then 18:22:59 <Deewiant> Well, I suppose I could use (:) <$> between x z y <*> w 18:25:40 <elliott> Hey Deewiant, what should I prefix/suffix/whatever field constructors with 18:25:49 <elliott> "string" and "bool" are a bit too close to clashing wit things for comfort 18:26:02 <elliott> f_ prefix is ugly, fInt is hideous, intF/stringF/... are just kinda weird 18:26:09 <elliott> Clearly you have the perfect solution 18:26:12 <Deewiant> Some say "don't, import qualified" 18:26:15 <olsner> Deewiant: or something with liftA2 (:) or liftM2 (:), if you haven't already been there 18:26:21 <elliott> Deewiant: Hmm, that might actually be a good idea here 18:26:48 <elliott> Yeah, that should work 18:26:59 <elliott> Although "TF." is a bit long a prefix 18:27:06 <elliott> I don't want F., that's reserved for Foldable 18:38:39 -!- Taneb has joined. 18:40:06 <Taneb> How about GHost? 18:40:26 <Taneb> I'm not sure why I said that 18:49:51 -!- copumpkin has joined. 19:04:11 -!- Taneb has changed nick to Taneb|Hovercraft. 19:04:34 -!- oerjan has joined. 19:04:58 -!- Zuu has quit (Ping timeout: 244 seconds). 19:12:38 -!- Taneb|Hovercraft has changed nick to Taneb. 19:22:34 <oerjan> the Taneb has landed 19:23:39 <zzo38> One feature idea I have for Haskell, is ability to define equivalence classes where you can specify that it should assume everything listed there is equivalent to each other. If the name of an equivalence class is mentioned, it will select whichever one has a matching type (or kind), and if more than one has, it selects one arbitrarily. The equivalence class has its own fixity. 19:24:29 <Taneb> What does anyone think of Salesman? 19:24:37 <Taneb> I'm trying to get opinions and feedback of it 19:24:47 <oerjan> *MWAHAHAHA* 19:24:51 <zzo38> Taneb: OK I will read it 19:24:56 <Taneb> http://esoteric.voxelperfect.net/wiki/User:Taneb/Salesman 19:26:39 <zzo38> OK. Although, examples should be given, and a line break in the description of command 3 19:31:17 <ais523> hmm, the joys of orthogonality: IMAP has a pair of commands that returns a message's UID, one takes a sequence number as argument, the other takes a message's UID as argument 19:31:56 <fizzie> So it takes a message's UID and returns the message's UID? 19:32:05 <ais523> yep 19:32:08 <oerjan> the id-eal command 19:32:29 <fizzie> Does it return some sort of an error for a nonexistent message? 19:32:31 <ais523> the Perl library I'm reading actually has a wrapper for that command that actually sends it across the network 19:32:38 <ais523> umm, I think so 19:32:42 <ais523> but I'm not sure from the docs 19:32:42 <fizzie> Then it's not so id-eal. 19:34:22 <oerjan> @hoogle Set key -> key -> Maybe key 19:34:23 <lambdabot> Did you mean: Set Key -> Key -> Maybe Key /count=20 19:34:23 <lambdabot> Prelude asTypeOf :: a -> a -> a 19:34:23 <lambdabot> Data.Dynamic dynApply :: Dynamic -> Dynamic -> Maybe Dynamic 19:34:47 <Deewiant> elliott: 19:34:50 <Deewiant> > chr 42 19:34:50 <lambdabot> '*' 19:35:03 <oerjan> that could be a useful command for monadic chaining 19:35:25 <oerjan> hm 19:35:28 <oerjan> :t guarding 19:35:29 <lambdabot> Not in scope: `guarding' 19:35:50 <oerjan> i think someone suggested that once... 19:36:11 <oerjan> @hoogle (x -> Bool) -> x -> m x 19:36:11 <lambdabot> Prelude until :: (a -> Bool) -> (a -> a) -> a -> a 19:36:11 <lambdabot> Data.IntMap filter :: (a -> Bool) -> IntMap a -> IntMap a 19:36:11 <lambdabot> Data.Foldable find :: Foldable t => (a -> Bool) -> t a -> Maybe a 19:36:20 <oerjan> @hoogle MonadPlus m => (x -> Bool) -> x -> m x 19:36:20 <lambdabot> Prelude until :: (a -> Bool) -> (a -> a) -> a -> a 19:36:21 <lambdabot> Data.IntMap filter :: (a -> Bool) -> IntMap a -> IntMap a 19:36:21 <lambdabot> Data.Foldable find :: Foldable t => (a -> Bool) -> t a -> Maybe a 19:36:55 <fizzie> ^ord * 19:36:55 <fungot> 42 19:37:00 <fizzie> Unfortunately it doesn't do the inverse. 19:37:08 <Deewiant> ?ty \x s -> fmap (const x) $ guard (Data.Set.member x s) 19:37:08 <lambdabot> forall a (f :: * -> *). (Functor f, Ord a, MonadPlus f) => a -> S.Set a -> f a 19:37:14 <oerjan> ^show ord 19:37:14 <fungot> >>,[[-<+2>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[-<+>[<[-]+>->+<[<-]]]]]]]]]]>]<2[>+6[<+8>-]<-.[-]<]+32.[-]>>,] 19:37:28 <oerjan> fizzie: hm shouldn't be _too_ hard 19:37:43 <elliott> Deewiant: Can't type dem numbers either 19:39:08 <Deewiant> > map chr [fromIntegral (minBound :: Char)..] 19:39:08 <lambdabot> No instance for (GHC.Real.Integral GHC.Types.Char) 19:39:08 <lambdabot> arising from a use of... 19:39:15 <Deewiant> Oops 19:39:19 <Deewiant> > map chr [ord (minBound :: Char)..] 19:39:20 <lambdabot> "\NUL\SOH\STX\ETX\EOT\ENQ\ACK\a\b\t\n\v\f\r\SO\SI\DLE\DC1\DC2\DC3\DC4\NAK\S... 19:39:25 <Deewiant> Bah 19:39:46 <ais523> hmm, interesting that the backslash-single-character escapes are in a block like that 19:40:19 <Lymee> > text $ "\NUL" 19:40:37 <Lymee> > ord '\NUL' 19:40:38 <lambdabot> 0 19:41:11 <Lymee> ^ord joijio 19:41:11 <fungot> 106 111 105 106 105 111 19:41:23 <Lymee> ^ord 19:41:26 <Lymee> ^ord aa aa 19:41:26 <fungot> 97 97 32 32 32 97 97 19:41:44 <Deewiant> ^ord asterisk 19:41:45 <fungot> 97 115 116 101 114 105 115 107 19:41:49 <Lymee> > ord '\SQH' 19:41:50 <lambdabot> <no location info>: 19:41:50 <lambdabot> lexical error in string/character literal at chara... 19:42:01 <Lymee> > chr 0 19:42:01 <lambdabot> '\NUL' 19:42:02 <Lymee> > chr 1 19:42:03 <lambdabot> '\SOH' 19:42:43 <Lymee> > chr 1 : "ACTION hugs oerjan" ++ [chr 1] 19:42:44 <lambdabot> "\SOHACTION hugs oerjan\SOH" 19:42:51 <Lymee> > text $ chr 1 : "ACTION hugs oerjan" ++ [chr 1] 19:42:52 <lambdabot> ACTION hugs oerjan 19:42:57 <Lymee> :( 19:46:11 -!- Taneb has quit (Remote host closed the connection). 19:46:50 -!- Taneb has joined. 19:51:01 <fizzie> ^bf ,[>[->++++++++++<]>[-<+>]<<------------------------------------------------[>+<-],]>.!42 19:51:01 <fungot> * 19:51:06 <fizzie> ^help 19:51:06 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 19:51:17 <fizzie> ^def chr bf ,[>[->++++++++++<]>[-<+>]<<------------------------------------------------[>+<-],]>. 19:51:18 <fungot> Defined. 19:51:21 <fizzie> ^chr 42 19:51:21 <fungot> * 19:51:23 <fizzie> ^save 19:51:23 <fungot> OK. 19:51:32 <fizzie> (Not that elliott can still write any numbers.) 19:52:05 <fizzie> (Human interest point: I first did that the wrong way around.) 19:52:19 <fizzie> ^bf ,[>,]<[>>[-<++++++++++>]<<------------------------------------------------[>+<-]<]>>.!24 19:52:20 <fungot> * 19:52:22 <fizzie> Like that. 19:52:52 <fizzie> ^show chr 19:52:52 <fungot> ,[>[->+10<]>[-<+>]<2-48[>+<-],]>. 19:52:55 -!- Taneb has quit (Remote host closed the connection). 19:54:34 <oerjan> <elliott> The idea with this is that you wouldn't have to define all that, and also wouldn't have to pack/unpack Lazy values (i.e. the reason laziness is awful in strict languages) :P 19:55:01 <oerjan> if you could do this with data/codata instead, it might be useful for dependently typed languages... 19:56:24 <fizzie> ^bf +.,[.,]+.!ACTION still doesn't filter CTCP *shame* 19:56:24 * fungot still doesn't filter CTCP *shame* 19:56:37 <fizzie> "One of these days." 19:56:38 <oerjan> how does agda handle this? does it just define most functions twice for lists and streams? 19:57:18 <oerjan> fizzie: secretly we all prefer it that way, just don't tell any admins 19:58:48 -!- augur has quit (Remote host closed the connection). 19:59:23 <oerjan> or make an exception for ACTION 20:06:25 <fizzie> If I manage to gather the willpower to actually filter it, maybe checking the first word wouldn't be such a huge hassle, yes. 20:09:01 <elliott> Well, we're Plazmaless. :p 20:09:25 <oerjan> we're a zolid bunch 20:09:37 <oerjan> having a gaz 20:10:28 <oerjan> elliott: also, i thought you were the resident agda expert 20:10:57 <elliott> i am? 20:11:09 <oerjan> as in you've actually tried it, or something 20:11:48 <oerjan> i guess some of the #haskellers might be even more likely 20:12:12 <oerjan> (re my data/codata question) 20:14:57 <copumpkin> ? 20:15:19 <copumpkin> yeah, you just define functions twice 20:15:30 <copumpkin> you do the same in haskell, fwiw 20:15:56 <copumpkin> the closest thing to a haskell list is a colist in agda 20:16:09 <oerjan> yes, but it seems like it would be more annoying the more variations of a list there are 20:16:14 <copumpkin> certainly 20:16:26 <copumpkin> which is why people are especially interested in generics in dependent languages 20:16:37 <copumpkin> the levitation stuff in epigram, for example 20:16:47 <copumpkin> or the ornamentation 20:24:34 <zzo38> I want to change rules of Magic: the Gathering cards, I have a lot of ideas. 20:25:12 <zzo38> * Each object which is a card has an initial state, which corresponds to what is printed on the card and is immutable. Other objects have no initial state and cannot be given any. 20:25:59 <zzo38> * When an object moves from one zone to another, except for stack->play, and phasing, the old object is destroyed and a new object created from the old object's initial state is placed in the new zone. 20:26:45 <zzo38> * There is no state-based effect for tokens out of play ceasing to exist. Instead, the above rule applies, which has a similar effect. 20:26:55 <zzo38> * Copies of spells on the stack are the same things as tokens. 20:27:31 <zzo38> * No state based effects for auras or equipments that are also creatures. Something that is both a creature and an aura still is both things with no conflict. 20:27:54 <zzo38> * If a nonexistent object would deal damage, that damage is prevented. 20:27:59 <ais523> hmm, next issue: what if someone sends an HTML email, or GPG-signed email (both quite likely to happen on our systems) 20:28:31 <elliott> ais523: what issue? 20:28:40 <zzo38> * Losing due to being unable to draw a card is not a state based effect; it happens immediately. 20:28:51 <ais523> elliott: with the system I'm writing for work 20:28:54 <zzo38> (Before state-based effects are checked) 20:29:02 <ais523> what we really want is just to receive plain text as the email body 20:29:03 <elliott> ais523: I mean, why is that an issue? 20:29:11 <elliott> GPG is just cruft above and below the message 20:29:14 <ais523> because I can't exactly run HTML through an OCaml parser 20:29:16 <elliott> But uh 20:29:21 <elliott> Grep Python's stdlib for MIME :P 20:29:25 <elliott> ais523: wait, what? 20:29:33 <elliott> whatever you're doing, stop, I don't care who told you to do it 20:29:42 <ais523> elliott: running arbitrary code emailed to me? 20:29:52 <elliott> I believe I already told you to stop 20:29:55 <ais523> nah, I'm not quite that mad 20:30:06 <elliott> I don't really care what it is, I know enough 20:30:24 <ais523> just you telling me to stop won't stop me designing something I'm being paid to do 20:30:42 <zzo38> * Mana burn still works (that is one of the rules changed in the new rules; I don't know all the changes) 20:30:55 <elliott> ais523: i can no longer talk to you in good conscience :( 20:30:57 <ais523> gmail being involved is ridiculous enough as it is 20:31:04 <ais523> seriously, though, why are you so upset about this? 20:31:16 <ais523> parsing user input is hard, especially when it comes from students 20:31:24 <oerjan> <ais523> because I can't exactly run HTML through an OCaml parser <-- just consider it a CHALLENGE 20:31:31 <elliott> you're feeding html mail into the ocaml parser 20:31:34 <elliott> that's never ok :( 20:31:37 <ais523> no, I'm not 20:31:40 <ais523> at least, I don't want to 20:31:51 <elliott> you want to turn it into text then feed it into the ocaml parser which is just as bad 20:31:52 <elliott> :P 20:31:53 <zzo38> * Rules for playing land cards no longer overrides rules for other types. (Existing Artifact Lands will still act as they do; but if you make an Artifact Land with a mana cost, you can now play the card as either an Artifact or as a Land, because the mana cost allows you to do so.) 20:31:53 <ais523> so the challenge is to figure out when I'm sent HTML mail, and look for the plaintext portion, or at worst detag it myself 20:32:04 <elliott> what language? 20:32:21 <ais523> elliott: there's no way you're going to get a yearful of students to get it right when they can't even do CSV right 20:32:31 <elliott> what language are you writing this in, I mean? 20:32:33 <ais523> I'm using Perl for the glue code, but the OCaml parser itself is in OCaml 20:32:43 <elliott> heh 20:32:57 <zzo38> ais523: Would it help to convert HTML mail into ANSI escape sequences? 20:33:21 <ais523> zzo38: I'd prefer to convert it into plain Unicode 20:33:23 <oerjan> i recall back when i found ocaml, ocamlyacc still was based around a modified yacc in C 20:33:30 <ais523> or even ASCII would do 20:33:57 <elliott> oerjan: nicw 20:33:58 <elliott> nice 20:34:12 <zzo38> ais523: OK, that would do, I suppose. Although it loses formatting in case there is any important formatting 20:34:28 <ais523> elliott: it'd be fun to punish the students for sending HTML email, but I really doubt I could get away with that 20:34:37 <ais523> especially because it's basically impossible to do in most webclients 20:34:45 <elliott> ais523: p.s. I want to confess that I've just willingly used git to version control something that I could have put into darcs without much trouble 20:34:48 <elliott> i'm sorry :( 20:34:51 <ais523> zzo38: well, they're meant to be sending programs, and I think I can dispense with syntax highlighting 20:35:00 <zzo38> OK 20:35:02 <ais523> elliott: it's OK 20:35:10 <elliott> "especially because it's basically impossible to do in most webclients" -- what, send html mail? :-) 20:35:12 <ais523> git might be utterly broken, but it still works well enough to be usable 20:35:15 <ais523> elliott: send plaintext mail 20:35:18 <elliott> ais523: is it ok if I partly did it for github? :-P 20:35:35 * ais523 laughs at the question, but doesn't answer 20:35:53 <elliott> oh lame, github's haskell syntax highlighting doesn't recognise template haskell's overloading of the character quoting character 20:35:56 <elliott> i want my money back 20:36:03 <elliott> (TH has the worst syntax imaginable) 20:36:11 <elliott> (character literal in haskell: 'a', '\n') 20:36:17 <elliott> (reference to name foo in template haskell: 'foo) 20:36:24 <ais523> ouch 20:36:33 <elliott> (pop quiz: how do you get a reference to the name x', which is of course perfectly legal?) 20:36:34 <ais523> OCaml uses 'a for type variables 20:36:41 <elliott> (hint: you don't, you have to use mkName manually) 20:36:58 <elliott> oh, and ''Foo is the same at the type level 20:37:03 <elliott> because it wasn't confusing enough 20:37:43 <ais523> elliott: I was really impressed with Kate's syntax highlighting of Perl 20:37:44 <zzo38> I recognized that problem immediately when reading about Template Haskell syntax. 20:37:52 <ais523> it managed stuff that confused all the other editors I tried 20:38:11 <oerjan> starting things with $ also doesn't seem very nice, but at least you can use space then 20:38:12 <elliott> ais523: well, the KDE folks need _something_ to win the flamewars with 20:38:21 <elliott> so they got a perl junkie to spend a few weekends on it :P 20:38:43 <elliott> "oh, well, I quite like ema-" "CAN YOUR PRECIOUS EMACS HIGHLIGHT THIS????" 20:38:46 <ais523> I actually downloaded a Perl port of the source for Kate's syntax highlighter 20:38:54 <ais523> for reasons I can't quite remember 20:39:05 <ais523> maybe it'll come in useful some day 20:39:06 <zzo38> I happen to think Template Haskell syntax works OK, though, even though there is that problem 20:39:17 <elliott> it works, it just isn't very nice 20:40:01 -!- monqy has joined. 20:40:18 <elliott> arcane monqy. how are the curts wronrging. 20:40:19 <zzo38> Currently at FreeGeek Vancouver, UNIX-to-UNIX mail doesn't work. The system administrator says he will fix it soon, and that the software already has this capability it only has to be configured. He also says Internet-to-UNIX mail will be configured (UNIX-to-Internet already works). 20:40:32 <monqy> whats a curt 20:40:32 <ais523> now I need to work out how to send an HTML email, as a test for this thing 20:40:36 <ais523> just to see what it comes up with 20:40:36 <elliott> zzo38: like... UUCP? 20:40:52 * ais523 tries to work out how to send HTML mail from Evolution 20:41:13 <ais523> ah, there's a dropdown 20:41:26 <elliott> be a bad person: [yes] [no] 20:41:28 <elliott> except 20:41:30 <elliott> as a dropdown 20:42:03 <ais523> indeed 20:42:17 <elliott> you have selected 20:42:20 <elliott> to be a bad person 20:42:23 <elliott> you must now face the consequences :( 20:43:14 <zzo38> elliott: Actually, I mean to a different user on the same computer. 20:43:17 <ais523> aha, Evolution sends a plaintext component, then the HTML component after that 20:43:20 <ais523> that's actually really nice behaviour 20:43:44 <ais523> anyone here who uses Thunderbird? could you send me an HTML mail with a bit of formatting in, so I can see how it behaves? 20:44:06 <monqy> oh no, as i feared, brainlove is Bad 20:44:19 <elliott> hmm, apparently the fucking weather is fucking ...alright 20:44:27 <elliott> i don't know whether to agree or not 20:44:33 <elliott> ais523: I use gmail 20:44:36 <elliott> ais523: can i still send html mail 20:44:57 <ais523> well, that's less useful, because the students /should/ be using their University accounts 20:45:12 <ais523> which means that they should be sending from Thunderbird or Outlook Web Access (*shudder*) 20:45:27 <ais523> and I definitely don't trust OWA to do anything sane, but I was hoping with Thunderbird 20:45:30 <elliott> MC/Protocol.hs:1:1: Error: Unused LANGUAGE pragma 20:45:30 <elliott> Found: 20:45:30 <elliott> {-# LANGUAGE TemplateHaskell #-} 20:45:30 <elliott> Why not remove it. 20:45:30 <elliott> because it's not unused, you presumptuous program >:( 20:45:32 <elliott> ais523: "should" 20:45:47 <ais523> elliott: "should" in that we're at least justified if we deny them marks for using something else 20:46:01 <elliott> ais523: deny someone marks for avoiding Outlook Web Access? 20:46:04 <ais523> because those are the only clients they're given on their University account, which is the one they're meant to use 20:46:06 <elliott> you're horrible 20:46:09 <elliott> I don't like the new ais523 20:46:12 <ais523> hey, I didn't make the rules 20:46:22 <elliott> that's what the Nazis said! 20:46:25 <ais523> how I'd love to say "use mail(1) only" 20:46:31 <ais523> and avoid all these issues 20:47:02 <zzo38> I too would say use UNIX mail, if the computer is UNIX you would use it. However, some people might use other program anyways. 20:56:03 -!- augur has joined. 20:58:32 <zzo38> Did someone tell me before that do-notation with the (x ->) monad does correspond to something in Curry-Howard? Can you please remind me? 20:58:34 <fizzie> My inbox has bazillion emails from Thunderbird (it's the quasi-official client in our desktop installation, I think) but so far all of them have been plaintext-only. 20:59:47 <fizzie> "Microsoft Office Outlook 12.0" has sent a multipart/alternative message, with a text/plain copy first, and a text/html copy after. That I think is the "usual way". 21:01:30 <ais523> I think what I'll do is parse it, and take the first text/plain part I come across 21:01:32 <elliott> ais523: I sent you some HTML mail just in case 21:01:41 <elliott> I think your spam filter might block it thoug 21:01:41 <elliott> h 21:01:49 <ais523> is it that spammy? 21:01:53 <elliott> It's a masterpiece. 21:01:59 <ais523> I haven't received it, at least 21:02:06 <elliott> "viagra cialis" appears more than once. 21:02:10 <elliott> Also there's some Haskell in it. 21:02:14 <elliott> It's pink. 21:02:34 <fizzie> I did get one incredibly complicated-looking MIME subpart tree from a student once. 21:02:39 <elliott> Wow, the text/plain version is almost not entirely fucked up, too. 21:02:46 <fizzie> (Mutt's message-part-viewer shows it as a tree.) 21:04:02 <ais523> hmm, I'm going to send myself some OCaml as an attachment, just to see what content-type it gets 21:04:04 <elliott> Deewiant: So what manner of trifunctory stuff would you want to see in the hypothetical tuple-combinators 21:04:13 <ais523> I'm hoping for text/x-ocaml, but that seems really implausible 21:04:36 <Deewiant> elliott: trimap, first3/second3/third3 21:04:56 <Deewiant> (Do we already have thd/trd and friends in base somewhere?) 21:05:01 <elliott> Deewiant: What signature would trimap have exactly, I'm trying to think of a use-case for this 21:05:09 <elliott> Oh 21:05:11 <elliott> For three-ples 21:05:13 <Deewiant> Like bimap but for three 21:05:25 <ais523> hmm, at least the involvement of gmail was the least complex part in all of this 21:05:28 <elliott> I have this kind of belief that using anything more than a tuple is bad. Is that bad of me? 21:05:40 <elliott> It feels like once you get to that point you need to start naming something. 21:05:42 <Deewiant> s/tuple/pair/ 21:05:46 <elliott> Yeah yeah 21:05:47 <elliott> two-ple 21:05:54 <Deewiant> I think three isn't that bad 21:06:15 <fizzie> I think I took a screencap of the complicatedness, but it's hard to find anything when all the names are like "florb.png". 21:06:23 <Deewiant> ?ty Data.Map.splitLookup 21:06:23 <lambdabot> forall k a. (Ord k) => k -> M.Map k a -> (M.Map k a, Maybe a, M.Map k a) 21:06:33 <elliott> Deewiant: I'd kind of prefer Trifunctor to be in a separate trifunctors package, but that feels like it's a slippery slope towards Kmett package dominance 21:06:42 <Deewiant> Yeah, I know 21:06:50 <elliott> Finally we can replicate Control.Arrow specialised to functions with only fifty import 21:06:50 <elliott> s 21:07:54 <fizzie> Also there's a "blurg.png". 21:07:58 <ais523> elliott: a 3-item tuple is called a triple 21:08:05 <ais523> given that people here seem to have had issues finding the name 21:08:20 <elliott> I wish I had a nicer name than tuple-combinators 21:08:21 <fizzie> Perhaps it should be called a "trubble", because it's nothing but trouble? 21:08:21 <oerjan> zzo38: i think i said something about the "decision theorem", which i then failed to google, but it's essentially about proving a -> b by assuming a locally as an axiom and proving b from that, which to me seems similar to what the (x ->) monad allows you to do 21:08:33 <ais523> elliott: Subject: [SPAM?] SPAM: example viagra cialis hexham didgeridoo 21:08:46 <ais523> it seems to have been greylisted and marked as possible spam by one filter and certain spam as another 21:08:46 <elliott> ais523: Yessssssssssssss 21:08:52 <ais523> but not to the extent that it wasn't delivered at all 21:08:55 <elliott> I hope I'm on blacklists now 21:09:03 <ais523> what's with all the GIF images? 21:09:05 <elliott> Deewiant: Yo, better name than tuple-combinators, hit me 21:09:12 <elliott> ais523: Emojis! 21:09:13 <Deewiant> tumbinators 21:09:14 <elliott> Gmail supports them nowadays. 21:09:22 <monqy> viagra cialis hexham didgeridoo 21:09:25 <elliott> They're even in Unicode! 21:09:33 <elliott> But I doubt you have a font with the PILE OF POO character in it, so I used the images instead. 21:09:40 <ais523> wow, it hit a 7.4 on spam score 21:09:42 <ais523> that's pretty high 21:09:43 <elliott> I neglected to include GOAT. 21:09:51 <elliott> It's a pretty spammy message. 21:10:40 <ais523> strangely, it was knocked down 0.7 for the reputation of your account 21:10:48 <ais523> it'd have been 8.1 from an unrecognised sender 21:10:53 <zzo38> oerjan: OK, yes I suppose I can see how that works with do-notations. 21:11:12 <elliott> ais523: haha 21:11:17 <elliott> good to know I have the karma 21:11:43 <ais523> the pharmaceutical-related words make up most of the spam score, it seems 21:11:58 <oerjan> zzo38: oh wait now i suddenly remembered and no wonder i couldn't google it, it's called the _deduction_ theorem. http://en.wikipedia.org/wiki/Deduction_theorem 21:12:06 <ais523> also, it seems it has 10 nested blockquotes 21:12:15 <fizzie> ais523: One of our departmental "little christmas" parties had (as one of the multitude of activities they usually have) a SPAM competition; there was a console set up on a desk, and you typed a handle and a message, and then it ran SpamAssassin on the message and showed a highscore list of handles and corresponding spam scores. 21:12:29 <zzo38> oerjan: Yes, and I think what you describe is also like what is called "fantasy rule" in Hofstadter's book, which I already figured out before, which is why I asked about do-notation, because it seem to do the fantasy rule. 21:12:30 <ais523> haha 21:12:45 <ais523> it might be quite hard to get control of a blacklisted spam domain to bump the score up higher 21:13:00 <elliott> Deewiant: Hmm, wait, isn't bimap a superset of (&&&)'s type 21:13:02 <ais523> although we managed it with Normish, seems the IP had belonged to a spammer before Normish gained it 21:13:08 <fizzie> I think it just fed the message as-is to SA, so you got to write all kinds of headers into it. 21:13:10 <ais523> and it took a while to get it off the blacklists 21:13:28 <Deewiant> elliott: No, it's a superset of (***) restricted to functions 21:13:36 <Deewiant> (So really, it's disjoint) 21:13:45 <elliott> Oh, hmm, right 21:13:55 <elliott> I'm new to this fancy bifunctor shit :-P 21:14:24 <elliott> Is there really no way to avoid the explicit (,) in that triple-ampersands implementation? 21:14:26 <elliott> It's soooo inelegant. :p 21:14:48 <Deewiant> If you can think of a way of going from a to (a,a) without a (,), sure 21:15:09 <zzo38> Deewiant: It seem to me, the way would be: join (,) 21:15:14 <elliott> Without a (,) 21:15:18 <Deewiant> zzo38: That's not without a (,) 21:15:33 <zzo38> Deewiant: I know. But I don't know why you don't want (,) 21:15:38 <oerjan> zzo38: oh there's something possibly relevant in that wp article: "Under the Curry–Howard correspondence, the above conversion process for the deduction meta-theorem is analogous to the conversion process from lambda calculus terms to terms of combinatory logic, where axiom 1 corresponds to the K combinator, and axiom 2 corresponds to the S combinator. Note that the I combinator corresponds to the theorem schema P→P. 21:15:46 <Deewiant> zzo38: elliott just stated why. 21:16:31 <zzo38> Of course you can write (a,a) but I don't know if that counts. 21:16:39 <oerjan> and the SKI combinators are ap, return, ask in the (x ->) monad 21:17:16 <zzo38> I know return = const so that is K combinator. 21:17:33 <zzo38> I have not heard of "ask" 21:17:40 <elliott> thread :: (a -> b) -> (c -> d) -> (a,c) -> (b,d) 21:17:40 <elliott> combine :: (a -> b) -> (a -> c) -> a -> (b,c) 21:17:41 <monqy> it's from Reader 21:17:44 <elliott> Deewiant: Whaddya think of those names 21:17:49 <elliott> With thread just being defined as bimap ofc 21:17:58 <monqy> there's a MonadReader instance for (a ->) 21:18:13 <Deewiant> They sound as arbitrary as the names of the polarities of bfjoust 21:18:24 <elliott> Deewiant: I put thought into those :( 21:18:40 <Deewiant> "combine" is about as generic a name as possible 21:18:41 <elliott> Deewiant: With the first, you can imagine two completely separate bits of string that you want to meet at the inputs and outputs 21:18:52 <elliott> So you thread them together through two little holes 21:18:58 <elliott> And that threading is the result 21:19:02 <Deewiant> I can imagine that, or I can imagine something completely different 21:19:08 <elliott> Pah 21:19:13 <Deewiant> forkIO could be called thread :-P 21:19:14 <elliott> Gimme nice operator names then :P 21:19:28 -!- MDude has quit (Ping timeout: 252 seconds). 21:19:30 <elliott> "split" would be good for combine 21:19:35 <elliott> but it's taken by Data.List.Split 21:19:42 <Deewiant> ?ty split 21:19:43 <lambdabot> forall g. (RandomGen g) => g -> (g, g) 21:19:47 <Deewiant> ?ty Data.Map.split 21:19:48 <lambdabot> forall k a. (Ord k) => k -> M.Map k a -> (M.Map k a, M.Map k a) 21:19:57 <zzo38> But of course I is id, and K is const. 21:20:04 <elliott> Hmm, pointless-haskell does 21:20:11 <elliott> (/\) :: (a -> b) -> (a -> c) -> a -> (b, c) 21:20:17 <oerjan> :t join (curry id) 21:20:17 <lambdabot> forall b. b -> (b, b) 21:20:18 <elliott> (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 21:20:26 <Deewiant> ?hoogle (><) 21:20:26 <oerjan> Deewiant: ^ 21:20:26 <lambdabot> Data.Sequence (><) :: Seq a -> Seq a -> Seq a 21:20:26 <lambdabot> Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 21:20:29 <elliott> Ugh 21:20:42 <Deewiant> oerjan: s/Deewiant/elliott/ 21:20:48 <oerjan> elliott: ^ 21:21:26 <elliott> oerjan: Not the point :-P 21:21:30 -!- MDude has joined. 21:21:42 <fizzie> In[1]:= ?Thread 21:21:42 <fizzie> Thread[f[args]] "threads" f over any lists that appear in args 21:21:46 <Deewiant> That second (><) is the same one though 21:21:46 <fizzie> See, that's what "thread" does. 21:21:48 <elliott> Deewiant: Heh, it then goes on to do (\/) :: (b -> a) -> (c -> a) -> Either b c -> a 21:22:09 <Deewiant> I'd have \/ and /\ the other way around 21:22:10 <oerjan> zzo38: ask is a method of MonadReader, which (x ->) belongs to 21:22:19 <elliott> >_< 21:22:29 <zzo38> oerjan: OK 21:22:34 <elliott> Which logical operator is /\ again 21:22:36 <elliott> I always mix 'em up 21:22:41 <Deewiant> And 21:22:41 <elliott> The one that's and should be the tuple one :P 21:22:45 <elliott> Then it's correct 21:22:48 <elliott> Either ~ or, so \/ 21:22:51 <elliott> (,) ~ and, so /\ 21:22:52 <Deewiant> heh 21:23:01 <Deewiant> Fair enough I guess 21:23:14 <elliott> ?hoogle (a -> b) -> (c -> d) -> (a,c) -> (b,d) 21:23:14 <lambdabot> Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 21:23:17 <oerjan> <zzo38> But of course I is id, and K is const <-- i meant that they are monadic functions from the (x ->) monad 21:23:18 <elliott> Hmph 21:23:25 <Deewiant> ?hayoo 21:23:25 <elliott> Nobody has a nicer operator name for it? :-P 21:23:25 <lambdabot> Unknown command, try @list 21:23:36 <Deewiant> ?ty (|||) 21:23:37 <lambdabot> forall (a :: * -> * -> *) b d c. (ArrowChoice a) => a b d -> a c d -> a (Either b c) d 21:23:46 <Deewiant> Hmf 21:23:53 <elliott> OK, so the names are: 21:23:56 <elliott> (><) 21:23:57 <Deewiant> elliott: |,| ? :-P 21:23:57 <elliott> cross 21:23:59 <elliott> (-asterisk-) 21:24:01 <elliott> pairApply 21:24:04 <elliott> (asteriskasteriskasterisk) 21:24:35 <elliott> Deewiant: I'd go for || were it not taken 21:24:42 <zzo38> oerjan: OK. 21:24:49 <elliott> Deewiant: Actually >< is quite brilliant graphically, it shows the two unrelated functions "meeting" in the middle 21:24:52 <Deewiant> I'd go for |,| if you don't want to override ||| 21:24:53 <elliott> Input below/above, output above/below 21:25:03 <Deewiant> Right, >< is fine as well 21:25:05 <zzo38> But |,| is not a name in Haskell 21:25:05 <elliott> Hmm, /\ does the same 21:25:10 <Deewiant> It isn't? 21:25:14 <elliott> Two separate functions 21:25:16 <elliott> One from the left 21:25:18 <elliott> One from the right 21:25:20 <elliott> And a single output value at the top 21:25:38 <elliott> Deewiant: What fixity :-P 21:25:44 <elliott> I'm terrible at fixities 21:25:44 <elliott> Always 21:25:50 <Deewiant> Ditto 21:25:53 <elliott> Darn 21:25:56 <elliott> I'll copy Control.Arrow's 21:26:01 <elliott> But first, I'll sleep. 21:26:18 <Deewiant> I guess you want . to bind tighter 21:26:35 <oerjan> Deewiant: commas are punctuation and cannot be used in operators 21:26:41 <Deewiant> Darn 21:26:54 <oerjan> same with semicolons. although not colons... 21:28:29 <oerjan> also not brackets or quotes, except ' is generally messed up 21:30:27 -!- elliott has quit (Ping timeout: 260 seconds). 21:30:58 <fizzie> "Comma is a semi-semicolon", to quote a Perl document. 21:31:08 <fizzie> I don't know why but it sounds funny. 21:31:42 <ais523> it's because they were really stretching for mnemonics at that point 21:31:51 <ais523> and pretty much admitted as much 21:31:57 <oerjan> > let a |!@#$%&/=?+\^~*-:. b = a + b in 2 |!@#$%&/=?+\^~*-:. 2 21:31:58 <lambdabot> 4 21:32:09 <oerjan> oh wait 21:32:18 <oerjan> > let a |!@#$%&/=?+\^~*-:.<> b = a + b in 2 |!@#$%&/=?+\^~*-:.<> 2 21:32:19 <lambdabot> 4 21:33:27 -!- pikhq has joined. 21:33:41 <fizzie> I might think a semi-semicolon would be some sort of a "two commas vertically" instead. Haven't found a real character for that from Unicode yet, though of course you can put a "combining comma above" on a comma, like ,̓ that. 21:34:14 <itidus21> `pastelogs fuckton 21:34:20 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21829 21:35:14 <fizzie> 35 of every 80 fucktons are metric. 21:37:44 <zzo38> The character ' in Haskell is a letter that is neither uppercase nor lowercase. (I think) 21:38:09 <monqy> letter? 21:39:29 <ais523> Content-Type: text/x-ocaml; 21:39:33 <ais523> oh Evolution I love you 21:39:45 <ais523> although I'm not entirely sure how you figured it out 21:39:59 <ais523> perhaps from the extension, although .ml could mean all sorts of ML-family languages 21:41:28 <fizzie> <glob pattern="*.ml"/> and <glob pattern="*.mli"/> are in my /usr/share/mime/text/x-ocaml.ml. 21:41:33 <fizzie> (And no other conditions.) 21:41:49 <Deewiant> Shameful 21:42:04 -!- pikhq_ has joined. 21:42:11 <ais523> fizzie: ditto in mine, that must be it 21:42:14 <ais523> I didn't know that file existed 21:42:33 <ais523> it also has "OCaml source code" translated into a lot of languages 21:42:35 <fizzie> It's the modern way to do /etc/mime.types. 21:43:29 <ais523> so there's a good chance I will get text/x-ocaml attachments after all 21:44:02 <ais523> I suppose I could just run an OCaml parser over every part of the message (after decoding and deHTMLing) to see which parsed correctly 21:44:36 <oerjan> monqy: ' is used for character constants, but also in otherwise alphanumeric identifiers. but because of the former it cannot be used at the beginning of identifiers. 21:44:57 <ais523> use ACME::Don't; 21:45:14 -!- pikhq has quit (Ping timeout: 260 seconds). 21:45:47 <fizzie> I guess it could also be using "file --mime", which has a magic-db contents of http://p.zem.fi/hws1 21:46:01 <oerjan> monqy: "neither uppercase or lowercase" sort of fits to characterize that in haskell, because haskell distinguishes those in meaning at the beginning of identifiers. btw _ is then lowercase. 21:46:01 <fizzie> (Do they all really start with "Caml1999"?) 21:46:30 <fizzie> I suppose that's for the more compiled file types, not the source. 21:46:58 <oerjan> monqy: and : is the only uppercase _operator_ character :P 21:47:32 <ais523> hmm, the author of MIME::Parser is insistent that storing parsed MIME components of email in memory is a security risk in case someone emails you a many-gigabyte attachment 21:47:58 <ais523> I'm getting around it by refusing to parse emails more than a megabyte long, on the basis that that's /quite/ enough for one short OCaml program 21:48:38 <ais523> fizzie: the standard compiled bytecode actually starts with a shebang 21:51:14 <monqy> : being the only uppercase operator character...is that why all the type/data constructor operators start with : 21:51:54 <monqy> At least I think I've only seen them ever start with : 21:52:17 <ais523> bleh, a search for "which punctuation marks are uppercase?" gave me no results 21:52:25 <ais523> (with the quotes; without, it gave only irrelevant results) 21:52:35 <ais523> I was hoping for some crazy answer 21:53:31 <ais523> and "uppercase punctuation" gives me just pages which meant to say "uppercase, punctuation" or "uppercase/punctuation" but screwed up the punctuation mark between them 21:57:59 <zzo38> Is there any standard function for "foldr (.) id"? 22:01:22 <oerjan> monqy: yep, precisely 22:01:38 <oerjan> :t foldr (.) id 22:01:38 <lambdabot> forall b. [b -> b] -> b -> b 22:02:36 <oerjan> @hoogle [b -> b] -> b -> b 22:02:36 <lambdabot> Data.Generics.Schemes everywhere :: (a -> a) -> a -> a 22:02:37 <lambdabot> Data.Generics.Schemes everywhere' :: (a -> a) -> a -> a 22:02:37 <lambdabot> Prelude until :: (a -> Bool) -> (a -> a) -> a -> a 22:02:45 <oerjan> zzo38: i don't know of any 22:02:52 <oerjan> :t foldr ($) 22:02:53 <lambdabot> forall b. b -> [b -> b] -> b 22:03:04 <oerjan> :t flip (foldr ($)) 22:03:05 <lambdabot> forall b. [b -> b] -> b -> b 22:03:15 <oerjan> i think that's equivalent 22:03:52 <zzo38> I suppose I can define it in my program then. What should it be called? 22:04:03 <oerjan> @hoogle f (b -> b) -> b -> b 22:04:03 <lambdabot> Data.Generics.Schemes everywhere :: (a -> a) -> a -> a 22:04:03 <lambdabot> Data.Generics.Schemes everywhere' :: (a -> a) -> a -> a 22:04:03 <lambdabot> Prelude until :: (a -> Bool) -> (a -> a) -> a -> a 22:04:20 <monqy> compose? composes? composed? 22:04:58 <oerjan> @hoogle (a -> m) -> t a -> m 22:04:59 <lambdabot> Prelude ($) :: (a -> b) -> a -> b 22:04:59 <lambdabot> Prelude ($!) :: (a -> b) -> a -> b 22:04:59 <lambdabot> Data.Function ($) :: (a -> b) -> a -> b 22:05:25 <oerjan> @hoogle (Monoid m, Foldable f) => (a -> m) -> f a -> m 22:05:25 <lambdabot> Data.Foldable foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m 22:05:25 <lambdabot> Data.Traversable foldMapDefault :: (Traversable t, Monoid m) => (a -> m) -> t a -> m 22:05:25 <lambdabot> Data.Foldable all :: Foldable t => (a -> Bool) -> t a -> Bool 22:05:25 <zzo38> Is @hoogle broken? 22:05:35 <oerjan> :t foldMap Endo 22:05:36 <lambdabot> Not in scope: `foldMap' 22:05:48 <oerjan> :t Data.Foldable.foldMap Endo 22:05:49 <lambdabot> forall a (t :: * -> *). (Data.Foldable.Foldable t) => t (a -> a) -> Endo a 22:06:17 <oerjan> hm or is that in the direction 22:06:30 <oerjan> zzo38: how so? 22:06:41 <zzo38> It makes responses which don't match 22:07:05 <oerjan> zzo38: yes it tries to guess if you meant something different if there's no exact match 22:07:20 <fizzie> 12.8 htkallas 9/18 01:07 0+00:00:00 [????????????????] 22:07:26 <fizzie> That does not look good. 22:07:40 <fizzie> It's supposed to say where my job is running. 22:09:50 <oerjan> @hoogle (Arrow a) => [a b b] -> a b b 22:09:50 <lambdabot> Data.Map unions :: Ord k => [Map k a] -> Map k a 22:09:51 <lambdabot> Data.Graph.Inductive.Internal.Heap mergeAll :: Ord a => [Heap a b] -> Heap a b 22:09:51 <lambdabot> Data.Graph.Inductive.Basic grev :: DynGraph gr => gr a b -> gr a b 22:10:12 <fizzie> XMonad calls it (well, something a bit like it; in fact it composes ManageHooks) "composeAll". 22:11:07 <oerjan> zzo38: what worries me more is that it required me to add the Monoid and Foldable class before it gave anything useful, that's stupid. 22:11:08 <fizzie> But that's possibly because it also has a composeOne, which runs only the first on the list that actually does something. 22:11:17 -!- sebbu has quit (Ping timeout: 260 seconds). 22:12:00 <oerjan> it seems obvious to me that adding those should be a smaller change than modifying the actual type part to something incompatible... 22:12:18 -!- sebbu has joined. 22:13:31 <oerjan> @hoogle (Category a) => [a b b] -> a b b 22:13:31 <lambdabot> Data.Map unions :: Ord k => [Map k a] -> Map k a 22:13:31 <lambdabot> Data.Graph.Inductive.Internal.Heap mergeAll :: Ord a => [Heap a b] -> Heap a b 22:13:31 <lambdabot> Control.Category (.) :: Category cat => cat b c -> cat a b -> cat a c 22:14:40 <oerjan> :t foldr`flip`id 22:14:41 <lambdabot> forall a a1. (a -> (a1 -> a1) -> a1 -> a1) -> [a] -> a1 -> a1 22:14:49 <oerjan> oops 22:15:14 <oerjan> oh right 22:22:23 -!- ive has quit (Ping timeout: 252 seconds). 22:59:14 <CakeProphet> data Many a = One a | Many (Many a) 22:59:18 <CakeProphet> I wonder what you could use this for. 22:59:47 <CakeProphet> it seems to just associate an integer count to a value. 23:01:08 <CakeProphet> count (One a) = 1; count (Many a) = 1 + count a 23:01:14 <oerjan> like Nat with an extra parameter 23:01:46 <CakeProphet> you could also generalize (1+) to f 23:01:51 <CakeProphet> er, well no 23:01:54 <oerjan> also it's isomorphic to that delayed monad thing 23:01:58 <CakeProphet> but you can apply f a number of times. 23:02:15 <CakeProphet> runMany (Many a) = f(runMany a) 23:02:15 <zzo38> What delayed monad thing? 23:02:19 <oerjan> data Delayed a = Now a | Later (Delayed a) 23:02:31 <oerjan> (not sure i have the name right) 23:02:34 <zzo38> If you want to apply a number of things, you can also use church numerals 23:02:47 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:03:36 <CakeProphet> data Lol a b = Nothing | Left a | Right b | Both a b | Many (Lol a b) 23:03:37 <CakeProphet> bahahaha 23:03:51 <monqy> is this abomination your doing 23:03:56 <CakeProphet> yes 23:04:22 -!- DH____ has quit (Ping timeout: 260 seconds). 23:04:30 <zzo38> I made genCurry i = do { n <- mapM id $ replicate i (newName "x"); f <- newName "x"; lamE (varP f : map varP n) (appE (varE f) . tupE $ map varE n); }; 23:05:38 <CakeProphet> type Lol a b = Many ( Maybe (Either (Either a b) (a,b))) 23:06:00 <monqy> zzo38: mapM id? isn't that the same as sequence? 23:06:17 <zzo38> monqy: O, maybe it is. 23:06:54 <zzo38> Yes that works 23:07:40 <oerjan> zzo38: in fact i think mapM id $ replicate i = replicateM i 23:08:05 <CakeProphet> yep 23:08:09 <zzo38> So, in other words, curry = $(genCurry 2) 23:08:41 <CakeProphet> good ol' replicateM 23:09:05 <zzo38> OK, I fixed it to use replicateM and it works. 23:10:12 <oerjan> s/[$]/./ technically 23:10:21 <monqy> I was about to comment on that 23:10:55 <zzo38> oerjan: Yes 23:11:59 <zzo38> Now I can understand how the "newName" command works. The documentation doesn't say what it is but I figure it out. 23:12:12 <zzo38> The document just says the type. 23:12:49 <oerjan> i guess it's for inventing a fresh variable name 23:13:12 <oerjan> almost like lisp gensym 23:13:12 <zzo38> Yes, that is what it does. But you still need to indicate its name anyways! 23:13:39 <zzo38> Why does it require you to indicate the name anyways, even though it is always a new name? 23:14:02 <oerjan> zzo38: i assume it uses the x as a prefix 23:14:04 -!- CakeProphet has quit (Ping timeout: 260 seconds). 23:14:17 <oerjan> zzo38: it might help if you want to read core output, perhaps 23:14:30 <zzo38> Yes it does use it as a prefix 23:15:29 <oerjan> or generated output, there's probably an option for printing it just after the TH step 23:16:18 <zzo38> Generated output printing after TH step by -ddump-splices shows the name you specify as prefix, and the other stuff in [] 23:16:34 <oerjan> ok 23:17:08 <zzo38> But I suppose one other thing, is to tell whether you want uppercase or lowercase, but it should be able to figure that out by itself. 23:18:15 <oerjan> might be tricky in some cases 23:18:21 <zzo38> But perhaps they don't want one name used in both ways, but it can anyways because it is for type levels and value levels 23:19:20 <oerjan> zzo38: but constructors appear both places. 23:20:20 <zzo38> If you do something like f = X :: X; then both X are different 23:21:07 <oerjan> yes but what about x = X :: X x 23:21:51 <zzo38> Then I also think both x are different, too, isn't it? 23:22:11 <oerjan> zzo38: i thought you were talking about distinguishing upper and lower case 23:23:22 <zzo38> Yes..... 23:23:55 <zzo38> But those don't seem to be problem there, if you can use a name in multiple places 23:23:57 -!- ive has joined. 23:24:06 <oerjan> all of those might be produced from newName "x" if it were to change the case everywhere 23:24:47 <oerjan> anyway it probably _could_ decide, since the actual definition site inserted would probably tell what it was 23:25:04 <zzo38> oerjan: Say, you have a different function newName' which takes no argument. 23:25:05 <oerjan> but it might require some awkward tying of the knots 23:25:30 <zzo38> But it could not use newName' for either of the X here. 23:25:49 <zzo38> I don't think it could use newName either. 23:26:20 <oerjan> oh so newName isn't general for all names? 23:26:26 <oerjan> @hoogle newName 23:26:26 <lambdabot> Language.Haskell.TH newName :: String -> Q Name 23:26:26 <lambdabot> Language.Haskell.TH.Syntax newName :: String -> Q Name 23:26:27 <lambdabot> Language.Haskell.TH.Syntax qNewName :: Quasi m => String -> m Name 23:26:59 <zzo38> oerjan: newName can do uppercase or lowercase names, but in the example "x = X :: X x" it couldn't do because X would need to be defined already for that to be accepted 23:27:29 -!- sllide has quit (Ping timeout: 258 seconds). 23:28:46 <oerjan> zzo38: right, so newName requires that you're generating a splice which includes the definition. 23:28:51 <zzo38> Actually I suppose there is still some difficulty, that you have [d| data X = $x; y = $x; |] the answer is still obvious but the program to determine it might not be entirely simple. 23:29:03 <monqy> the best part of TH is using mkName to make impossible names, like ones with alphanumeric and operator charaters mixed together 23:29:04 <zzo38> oerjan: Yes, because it is the Q monad. 23:29:42 <zzo38> But I suppose you can have newVar = newName "name___"; newCon = newName "Name___"; 23:29:58 <oerjan> monqy: those actually _work_? 23:30:04 <monqy> oerjan: I've done it! 23:31:03 <oerjan> monqy: in that case, does it work to use the name in a spot with the "wrong" case for it? 23:31:18 <ais523> monqy: /why/ did you do it? 23:31:21 <monqy> I've never tried, but I'm guessing yes it will work 23:31:35 <monqy> ais523: bad reasons, naturally 23:31:51 <oerjan> zzo38: ok if what monqy says is true then it's likely TH doesn't actually _care_ about the case used 23:32:05 <zzo38> Actually it works as long as the *first* character is of the correct case. 23:32:12 <ais523> hmm, idea my supervisor had for sandboxing OCaml (whilst preventing uses we don't want of the standard library): reject all mentions of modules other than Pervasives, combined with rejecting the stuff in Pervasives we don't want them to use 23:32:15 <zzo38> Everything else can be any symbols it doesn't matter. 23:32:17 <monqy> ais523: I was too lazy to parse haskell but I wanted to do some syntactic modifications where I could mark a haskell expression, pull it out, put it somewhere else, and leave a stump in its place 23:32:25 <ais523> so I've hooked the parser to recognise only Pervasives as a legitimate module name 23:32:31 -!- CakeProphet has joined. 23:32:31 -!- CakeProphet has quit (Changing host). 23:32:31 -!- CakeProphet has joined. 23:32:31 <oerjan> zzo38: oh so that is required. 23:32:32 <ais523> is this going to be a crazily flawed solution? 23:32:40 <monqy> ais523: yes 23:32:58 <monqy> I used the syntactically invalid identifier to mark the expressions I wanted to pull out 23:33:00 <ais523> (that is, in any context where a module name is expected, if it isn't "Pervasives" error out) 23:33:02 <zzo38> Now instead of f <- newName "x"; I can write f <- newVar; 23:33:06 <ais523> monqy: can you see any flaws with it? 23:33:11 <monqy> it was ugly 23:33:22 <monqy> oh you were not talking about what I was doing there 23:33:22 <monqy> oops 23:33:25 <ais523> oh, I see 23:33:31 <monqy> I was talking about my thing being falwed 23:33:35 <ais523> crossed conversations 23:34:27 <monqy> but it does have a sort of ugliness similar to what i was doing 23:34:42 -!- kmc has quit (Ping timeout: 260 seconds). 23:34:51 <monqy> hm 23:34:58 <oerjan> never cross the conversations! 23:36:25 <monqy> dunno if this quite applies to ocaml at all, but perhaps make a wrapper module, always included, which exports only the stuff you want from Pervasives, and make all module imports syntactically invalid? 23:36:30 <Vorpal> oerjan, augh 23:36:44 <monqy> or would that be going against a goal or two 23:37:24 -!- CakeProphet has quit (Ping timeout: 260 seconds). 23:38:45 <ais523> yep, the idea is to verify that input programs use a particular subset of OCaml 23:39:00 <ais523> I haven't yet got around to the idea of conditionally banning if, mostly because it's so easy to work around 23:39:20 <ais523> there are any number of ways to express an if in OCaml, just as in most languages 23:39:49 <monqy> the ugliest part is rejecting the stuff in Pervasives you don't want them to use 23:39:50 <Gregor> Heh, one of the places where I buy cheap Chinese junk just sent me an email saying that they now have a US warehouse for their most popular wares, and so can offer 3nd day delivery. Whatever "3nd day delivery" is :P 23:40:12 <monqy> I can't think of any clean way to do it without making a new module :( 23:40:19 <monqy> and making a new module is also ugly :( 23:41:20 <ais523> I could reject module imports and qualifies altogether, because Pervasives is loaded by default 23:41:30 <ais523> but yes, I agree, the issue's rejecting things like file opens 23:42:00 <ais523> Gregor: I can pronounce it as a word somewhere between "third" and "second", and yet even though it's obvious how to pronounce it, I still don't know what it means 23:42:01 -!- Patashu has joined. 23:43:46 <zzo38> One idea is, to have a macro system in Haskell with its own syntax and its own types. Such as, MetaExp, MetaPat, MetaName, MetaLcName, MetaUcName, MetaNewLcName, MetaNewUcName, MetaLocalLcName, MetaLocalUcName, MetaInt, MetaOrder, MetaLayout, etc. 23:44:00 <zzo38> And each keyword is its own type. 23:44:03 -!- CakeProphet has joined. 23:44:03 -!- CakeProphet has quit (Changing host). 23:44:03 -!- CakeProphet has joined. 23:49:06 <oerjan> zzo38: i somehow had the idea that was what template haskell is... 23:49:21 <oerjan> approximately, anyhow 23:50:27 -!- kmc has joined. 23:51:50 <zzo38> oerjan: No, it isn't. What I mean is something, you can define macro called "j" of type (MetaNewUcName -> Q [Dec]) to make a declaration "j K" permitted and it means K is a new name to this module instead of imported or something like that. And same with the other things; including make up new syntax and affecting what is already there, such as making up do-notation instead require it already have do-notation. 23:52:57 <zzo38> Or possibly different monad not Q, it would be different to do the different thing, but in addition to the Q stuff of Template Haskell too. 23:54:53 <oerjan> i see. i think that would require intertwining TH with parsing? 23:55:25 <zzo38> Yes, unless you did it different so that it is a separate step from TH. 2011-09-18: 00:12:50 -!- FireFly has quit (Quit: FireFly). 00:22:52 <zzo38> But one thing should be in TH, is an expression that it require the list of expression and select the first one that typechecks. 00:23:02 <zzo38> (If none of them typecheck it is error) 00:25:01 -!- Vorpal has quit (Ping timeout: 276 seconds). 00:31:14 <oerjan> > let a ☺ b = a / b in 2 ☺ 3 00:31:15 <lambdabot> 0.6666666666666666 00:32:47 <Gregor> Divisiooooooon is the loneliest op'rator you'll eeeeever dooooooooo 00:34:06 <ais523> so why does smiley face count as an operator not an identifier? 00:34:52 <ais523> one of the problems with Unicode is that nobody's memorized the difference between lowercase/uppercase letters and lowercase/uppercase punctuation in it 00:35:27 <oerjan> well since i picked it out from a SO discussion linked on reddit of why that char isn't allowed in javascript identifiers: because it's not a unicode letter. 00:36:40 <ais523> ☺ is easy enough to type if you have a working compose key 00:36:43 <Gregor> Yeah, JS tokenization actually uses the Unicode categories. 00:37:10 <oerjan> as does ghc 00:37:19 <Gregor> So there ya go :P 00:37:46 <Gregor> > let 4 = 2 in 4 + 4 00:37:47 <lambdabot> 8 00:38:39 <ais523> o 00:39:20 <Gregor> > let 2 = 4 in 4 + 4 00:39:21 <lambdabot> 8 00:39:23 <Gregor> Hm 00:39:30 <oerjan> ...don't tell me you don't understand that one yet. 00:39:56 <Gregor> "Yet"? I haven't used Haskell in years :P 00:41:37 <ais523> and I've never bothered to inquire into that particular corner of Haskell 00:41:39 <ais523> I understand this one 00:41:47 <ais523> > let 2 + 2 = 3 in 2 + 2 00:41:48 <lambdabot> 3 00:41:58 <Gregor> Oh right, that's what I was looking for :) 00:41:59 <ais523> but the examples above don't seem to be following that pattern 00:42:16 <ais523> (in particular, I don't get why "let 4 = 2" isn't a parse error) 00:42:17 <Gregor> Because you can specific cases for functions, but can't redefine literals I guess. 00:42:29 <Gregor> Right, seems like that ought to be caught earlier. 00:43:00 <oerjan> ais523: 4 is a legal pattern so may be on the left side of = , it just doesn't actually bind any variables. 00:43:18 <ais523> ah right 00:43:23 <Gregor> So then it should be a /semantic/ error >_< 00:43:32 <ais523> so how can you tell whether the pattern matched or not? 00:43:56 <ais523> it doesn't seem to have anything to match 00:43:59 <oerjan> also, patterns in let are lazy so are not checked until a variable in them is used - in this case never, since there aren't any. 00:44:28 <Jafet> > let !4 = 2 in () 00:44:29 <lambdabot> *Exception: <interactive>:3:4-9: Non-exhaustive patterns in pattern binding 00:44:31 <oerjan> it's just a logical but unintuitive consequence of orthogonal features. 00:45:14 <ais523> > let a + 2 = 4 in a 00:45:15 <lambdabot> a 00:45:42 <ais523> > let a + 2 = 4 in a + 2 00:45:43 <lambdabot> 4 00:45:50 <oerjan> heh 00:46:01 <oerjan> the right a isn't in the scope of the first one 00:46:02 <ais523> I take it a here is a value, rather than a variable? 00:46:05 -!- azaq23 has quit (Quit: Leaving.). 00:46:24 <oerjan> so it's actually one of lambdabot's predefined Expr values. 00:46:31 <ais523> yep, I thought it'd be something like that 00:46:43 <ais523> > let ttt + 2 = 4 in ttt 00:46:44 <lambdabot> Not in scope: `ttt' 00:46:50 <ais523> > let ttt + 2 = 4 in ttt + 2 00:46:51 <lambdabot> Not in scope: `ttt' 00:46:54 <ais523> that's way saner 00:46:58 -!- CakeProphet has quit (Ping timeout: 260 seconds). 00:47:45 <Jafet> That defines (+). 00:47:51 <Jafet> > let (x + 2) = 4 in x 00:47:52 <lambdabot> <no location info>: Parse error in pattern 00:48:03 <Jafet> That attempts to use a horrible deprecated feature. 00:48:31 <oerjan> lambdabot already has a ghc version without it? 00:48:37 <oerjan> @version 00:48:37 <lambdabot> lambdabot 4.2.2.1 00:48:37 <lambdabot> darcs get http://code.haskell.org/lambdabot 00:48:47 <oerjan> doesn't say which ghc version 00:48:59 <oerjan> > let f (n+1) = n in f 2 00:48:59 <lambdabot> <no location info>: Parse error in pattern 00:49:04 <oerjan> indeed 00:50:16 <Jafet> It has always been possible to turn that off. 00:50:43 <ais523> hmm, I sent CTCP SOURCE to lambdabot, but didn't get a reply 00:50:50 <ais523> why does nobody implement that nowadays? 00:50:56 <ais523> (also, did anyone ever implement that ever?) 00:52:48 <ais523> haha, INTERCAL will have that feature all to itself now! 00:53:20 <ais523> (admittedly, it doesn't actually /work/, but it's nontrivial to make it do so without bruteforcing all possible values in the representable range for every variable and constant in the expression) 00:53:59 <oerjan> ais523: you need to work more on your maniackal laughter. 00:55:12 <Gregor> I don't think I've ever seen CTCP SOURCE .... 00:55:56 <ais523> it's standard! 00:56:20 <Gregor> Yeah, but I've got four quarts of curry in my 'fridge. 00:56:22 <Gregor> So there's that. 00:56:27 <oerjan> <ais523> haha, INTERCAL will have that feature all to itself now! <-- i thought you were referring to CTCP SOURCE here 00:56:40 <ais523> no, to putting expressions on the LHS of an assignment 00:57:02 <ais523> you can end up with expressions overloading arbitrary identifiers in INTERCAL anyway, so it was more or less inevitable 00:57:06 <oerjan> if no one uses CTCP SOURCE, then clearly INTERCAL should. 00:57:30 <ais523> (C-INTERCAL won't let you do that with a completely different data type from the one that's meant to be there; CLC-INTERCAL will) 00:58:00 <monqy> hm, maybe I should learn INTERCAL sometime. 00:58:31 <ais523> perhaps I should give lessons in-channel, so elliott doesn't have to walk all the way from Hexham to attend them 01:00:39 <zzo38> I didn't implement CTCP SOURCE because I didn't know the proper response 01:01:30 <oerjan> maybe the joke is that CTCP SOURCE is actually unimplementable 01:02:53 <ais523> well, you're meant to give details of an FTP server you can get the source of the IRC client from, and where on the server to look 01:03:25 <zzo38> An FTP URL would give those details, I think. 01:04:02 <ais523> yep, but there's a different format defined in the standard, IIRC, that nobody uses 01:04:23 <zzo38> However I do not run an FTP server and I don't know FTP server to put it on. If you have any FTP server, then I will be glad to upload my IRC client source code to that server and program it to give that information. 01:05:16 <Gregor> It is the nineties, and there is time for FTP server. 01:05:27 <ais523> I think that's the real reason CTCP SOURCE isn't implemented much, the people who remember it exists don't have FTP servers handy 01:05:53 <Gregor> Surely IRC doesn't predate URLs ... 01:06:39 <oerjan> i assume the frc stuff is still on the nvg ftp server where i put it 01:07:02 <oerjan> or else somewhat would probably have complained 01:07:06 <oerjan> *someone 01:07:10 -!- augur has quit (Remote host closed the connection). 01:10:44 -!- CakeProphet has joined. 01:10:44 -!- CakeProphet has quit (Changing host). 01:10:44 -!- CakeProphet has joined. 01:11:32 <CakeProphet> <Gregor> > let 4 = 2 in 4 + 4 01:11:43 <CakeProphet> I must be master of Haskells for understanding that one. 01:12:05 <oerjan> IT'S COMPLETELY LOGICAL, I SAID 01:12:15 <CakeProphet> yeah not a semantic error 01:12:20 <CakeProphet> just a failed pattern match 01:14:02 <CakeProphet> = as equality is a lie! 01:14:40 <CakeProphet> no equality in Haskell. it is a fascist language. 01:15:19 <CakeProphet> > let [] = 4 in undefined 01:15:20 <lambdabot> No instance for (GHC.Num.Num [t]) 01:15:20 <lambdabot> arising from the literal `4' at <inter... 01:15:49 <CakeProphet> yeah okay. I wasn't sure if it could give "types" to patterns or not. 01:15:57 <zzo38> You could mention properties of URLs (depending on URI scheme, but sometimes also on other parts of the URL): interactive, readable, writable, enumerable, fileable, displayable, ... 01:16:24 <zzo38> (Although some things depend on the system, such as which URLs are displayable type of URL, and so on) 01:16:27 <CakeProphet> interactive = readable + writable? 01:17:16 <zzo38> CakeProphet: No, not quite. 01:17:50 <zzo38> HTTP URLs are readable and writable but not interactive. 01:18:05 <CakeProphet> ah interactive as in stateful 01:18:29 <zzo38> Telnet is interactive. 01:18:59 <oerjan> as is ftp 01:19:11 <CakeProphet> right. 01:19:16 <CakeProphet> sustained connection. 01:19:20 <CakeProphet> I forgot the term. 01:20:29 <CakeProphet> persistentI know HTTP is referred to as a stateless protocol, so an interactive protocol would be the opposite of a stateless one I think. 01:20:39 <CakeProphet> >_> 01:21:36 <CakeProphet> my subconscious must be at work. 01:21:48 <zzo38> I was thinking of a system with the following URI schemes: ftp gopher http telnet tape sprunge file h o s x (h = hard drive, o = optical drive, x = USB Plan 9 or network Plan 9, s = active saver directory, tape = encode data in audio I/O) 01:21:58 * CakeProphet sits in an armchair and consternates. 01:22:35 <CakeProphet> don't forget data 01:22:46 <zzo38> Where the commands are LOAD, SAVE, and DISPLAY with one URL, and COPY with two URLs. (These are in BASIC. However, it will also have corresponding Forth commands) 01:22:58 -!- oerjan has quit (Quit: Good night). 01:23:30 <CakeProphet> I think being inspired by BASIC should be against the rules. 01:24:36 <zzo38> O, and the sprunge URL is write-only URL that is treated like HTTP, but the # if any is the name of the form field to send to ("sprunge" is the default), and there can be a status message. 01:25:26 <zzo38> For example: sprunge://sprunge.us/#sprunge is an upload URL for text programs, and then it has a status message is the "http://" URL which downloads the file. (If you upload to "http://" directly it uses PUT method) 01:25:48 <CakeProphet> zzo38: I have an idea for a chess variant you might be interested in. 01:26:07 <zzo38> CakeProphet: OK. 01:27:08 <CakeProphet> you begin the game with a king, and two portals (knights) 01:27:28 <zzo38> OK 01:27:45 <CakeProphet> all of your other available pieces are in a pool at the start of the game. When a portal moves it can optionally leave behind a piece from the pool. 01:28:07 <zzo38> OK. 01:28:27 <zzo38> Does the knight still move and capture as in FIDE chess or is there different rules? 01:28:56 <CakeProphet> there are two cannons (rooks), four arrows (pawns with a sharpie mark to indicate a direction), missiles (pawns), and... some other pieces I haven't decided on yet. 01:29:15 <CakeProphet> different movement rules for everything, except the king who is pretty much the same at this point. 01:29:23 <CakeProphet> though I may give him some special rules. 01:29:48 <CakeProphet> haven't workd out the movement rules 01:29:50 <zzo38> OK. Is there castling? 01:30:03 -!- SgeoN1 has joined. 01:30:30 <CakeProphet> but the basic idea is that when a cannon is adjacent to a missile, then the missile is expended and anything in a straight line from the missile going away from the cannon is captured. 01:30:45 <CakeProphet> missiles can be fired cardinally or diagonally. 01:31:04 <CakeProphet> no castling 01:31:08 <zzo38> OK 01:31:08 <CakeProphet> nothing from chess is given. 01:31:30 <CakeProphet> okay, so portals and arrows have directionality. at the end of their move they can be rotated a different direction, also diagonally or cardinally. 01:31:59 <CakeProphet> when an arrow is in the path of a fired missile, it redirects the path of capturing in the direction of its nose (arrows are knights) 01:32:20 * SgeoN1 badmoods 01:32:31 <monqy> I thought arrows were sharpied pawns 01:32:36 <monqy> make up your mind!!! 01:32:39 <itidus21> CakeProphet: thats a fantastic damn idea 01:32:55 <CakeProphet> if a missile is fired at a portal, and the sharpie mark on the portal is facing the path of the projectile, then the path of fire continues out of the other portal on the board. 01:33:06 <Jafet> Are they sidewinders? They must be sidewinders. 01:33:13 <CakeProphet> also, if a portal is captured, its corresponding linked portal explodes and captures itself and all pieces adjacent to it. :) 01:33:51 <CakeProphet> pieces can also move through portals, by moving "on top" of the portal, their path of motion continues in the direction the other portal is facing. 01:34:01 <ais523> "captures itself" is ridiculous terminology 01:34:11 -!- augur has joined. 01:34:11 <CakeProphet> for a piece that only moves one square this means that they appear on the other side in front of the portals opening. 01:34:20 <ais523> why not just use "dies" or whatever, given that you're changing everything else about chess? 01:34:21 -!- sebbu has quit (Read error: Connection reset by peer). 01:34:42 <CakeProphet> so portals act as teleporters as well. these rules are independent of piece color. So you can use enemy portals and arrows just as well as your own. and fired missiles can capture any piece regardless of color. 01:35:18 <Jafet> Because it wouldn't be a chess variant any more! 01:35:22 <CakeProphet> the goal is to capture the king. 01:35:32 <monqy> is the number of pieces the same as in chess or can you portal-place at most more or less than chess 01:35:34 <CakeProphet> that's probably the only thing that stays the same. 01:36:12 <itidus21> there is a reason that people don't play much chess on video game consoles 01:36:34 <monqy> oh? this has always puzzled me 01:36:41 <CakeProphet> same number of pieces. you get two portals (knights), two cannons (tooks), one king, one queen (whose role is undecided), two bishops (role also undecided), and four arrows (four specially marked pawns) 01:37:02 <CakeProphet> the remaining pawns are replenishable so when they are captured they return to your spawn pool for replacement by a portal. 01:37:24 <CakeProphet> originally the queen was going to be the piece-spawner but I realize the queen would then serve no purpose once all pieces are spawned, other than to place missiles and capture normally. 01:37:31 <itidus21> monqy: i suppose my argument isn't fair because chess is free 01:38:26 -!- sebbu has joined. 01:38:26 -!- sebbu has quit (Changing host). 01:38:26 -!- sebbu has joined. 01:40:21 <CakeProphet> cannons are slow moving pieces, I'm thinking one square any direction per turn, with no capturing. portals have large movement spans, perhaps 3-4 squares with jumping though I haven't decided if there are any restrictions to how they can move. they can only capture in the direction of their portal, and can only be captured from directions that their portal is not facing otherwise you piece just teleports to the other sid 01:40:46 <CakeProphet> s/you/the/ 01:41:20 <CakeProphet> arrows move like bishops and can't capture. kings movement and capturing is the same. 01:41:57 <CakeProphet> most pieces can't move very quickly, thus making the missile firing and teleporting more valuable. 01:42:28 <CakeProphet> also I've got some rules for how infinite loops work with the projectiles. 01:42:52 <CakeProphet> because you can easily set up an infinite loop with four arrows or two portals and any number of arrows. 01:43:21 <Jafet> ALL THE PORTALS ASPLODE. 01:43:56 <CakeProphet> so an arrow in an infinite loop can capture in any direction by simply turning, which then breaks the loop but gives one free capture. 01:44:06 <CakeProphet> same with portals. 01:44:31 <CakeProphet> you could also have multiple circuits the loop could take, with arrows and portals acting as switches. 01:45:29 <CakeProphet> but I imagine in practice the setup time would often not be worth the gain. 01:46:56 <CakeProphet> the idea is to make capturing somewhat difficult. you have to rely on misguiding your opponent with convoluted portal/arrow setups. 01:47:17 <monqy> knight pieces would make the best arrows, as they clearly point in a single direction, so no sharpie, but you specify 4 arrows, and there are only 2 knmights 01:47:27 <CakeProphet> well portals have direction as well 01:47:30 <CakeProphet> and there are only two of those. 01:47:35 <CakeProphet> I like four arrows because it allows more craziness. 01:47:51 <CakeProphet> four portals would be, perhaps, too much craziness. :P 01:48:12 <CakeProphet> some bishop pieces have notches on them as well, so arrows could be bishops in that case but then there are only two. 01:48:20 <CakeProphet> not sure what the bishop does at this point. 01:48:38 <CakeProphet> I was thinking one piece would be special in that if a friendly projectile passes through it it would change the nature of the projectile 01:48:42 <monqy> I dunno how anyone would use arrows 01:48:43 <CakeProphet> perhaps allowing the capturing of arrows. 01:48:51 <CakeProphet> monqy: strategically. 01:48:52 <monqy> it might be interesting to program bots for this game and see what people do 01:48:52 <CakeProphet> :P 01:49:02 <monqy> CakeProphet: but how? what strategies? 01:49:11 <CakeProphet> well cannons are slow, arrows are fast. 01:49:26 <CakeProphet> so you don't want to move cannons all over the board, you would just redirect projectiles via arrows. 01:50:03 <monqy> I'm also thinking you could guard your cannon and then use arrows to move around 01:50:10 <CakeProphet> also you can point your arrows at opponent arrows/portals and utilize them / force them to move elsewhere. 01:50:19 <monqy> by move around I mean go into dangerous places 01:50:29 <CakeProphet> essentially the strategy would be much like chess in that you could set up situations where your opponent has to choose between two pieces. 01:50:34 <monqy> can arrows capture? I think they'd be most intesting if they can't 01:50:41 <CakeProphet> they can't 01:50:43 <monqy> good 01:50:46 <monqy> er 01:50:49 <monqy> intesting/interesting 01:50:53 <CakeProphet> also they are difficult to capture because they redirect projectiles. 01:50:55 <monqy> intesting is _not a word_ 01:50:58 <monqy> as far as I know at least 01:51:19 <CakeProphet> though I was thinking one of the queens abilities would be to change friendly projectiles that pass through her so that they can capture arrows. 01:51:32 <CakeProphet> or perhaps the king. 01:51:34 <CakeProphet> but 01:51:42 <CakeProphet> utilizing the king in that way to capture arrows seems not so smart. 01:52:04 <monqy> do arrows have a fixed direction or is repositioning them a valid move or part of a valid move 01:52:12 <CakeProphet> also not sure how missiles work. if they can move/capture. 01:52:14 <monqy> and how does portal repositioning go 01:52:23 <CakeProphet> repoisition is a valid move and can be done after they are moved normally 01:52:31 <CakeProphet> so you can turn them and leave them in the same place 01:52:36 <CakeProphet> or move them and then turn them in one turn. 01:52:48 <CakeProphet> same rules for portals. 01:52:53 <CakeProphet> all of the directional pieces have this rule. 01:52:58 <CakeProphet> currently there are only two directional pieces. 01:53:07 <zzo38> How do you use the (Maybe Dec) parameter of the VarI constructor? 01:53:38 <zzo38> CakeProphet: You could have a rule for rooks to flip if you need that too, flip right-side-up or upside-down 01:53:38 <CakeProphet> I believe portals will be highly valuable due to their mobility and their ability to make other things mobile 01:53:44 <CakeProphet> also you don't want to lose them because they asplode. 01:53:57 <CakeProphet> zzo38: yes I've seen that in Ultima 01:54:06 <CakeProphet> I've considered a possible use for that but don't have one so far. 01:54:43 <zzo38> In the game Baroque (a.k.a. Ultima) you do have one rook up and one upsidedown, but they don't ever flip during the game. 01:54:50 <CakeProphet> right. 01:55:03 <CakeProphet> I probably wouldn't do that as two cannons seems like a good number 01:55:06 <CakeProphet> one would be very limiting. 01:55:17 <zzo38> OK. 01:55:18 <CakeProphet> but the cannons could have two different moves of operation somehow. 01:55:21 <CakeProphet> *modes 01:55:25 <zzo38> OK, maybe. 01:55:45 <CakeProphet> bahahaha terran siege tanks. 01:56:04 <CakeProphet> siege mode allows firing, tank mode allows faster movement. 01:56:06 <CakeProphet> (no, this is a bad idea) 01:56:49 <CakeProphet> still need to figure out the queen and bishop 01:57:03 <zzo38> But I realized, that even in FIDE chess, you might have flippable rooks; start upsidedown but flip them the right way up as soon as they make a move or if the king moves. This is used in case it is difficult to remember if you are allowed you castle; now you can know for sure castling or not. 01:57:03 <CakeProphet> the queen should obviously do something kind of queen-like. 01:57:19 <CakeProphet> ah, yes. 01:57:25 <zzo38> (I implemented Chess.zrf in a similar way to this, actually) 01:57:42 <zzo38> (This is a public domain prorgam, an alternative to the standard Chess.zrf) 01:57:42 <Jafet> How do people forget whether they're allowed to castle 01:58:00 <CakeProphet> in some earlier mental drafts the queen could swap places with any other piece but the king, and spawned pieces at the beginning of the game like portals currently do. 01:58:11 <CakeProphet> I don't think I like that though. 01:58:32 <zzo38> Jafet: Even if the people do not forget, I used a similar method to make the computer keep track of if castling is allowed 01:59:40 <CakeProphet> but the idea is for the queen to be similar to that in chess. a very powerful piece but something you wouldn't want to sacrifice and thus limited by that in the early game. 01:59:41 <pikhq_> Jafet: Well, it's possible due to being a form of game state that's not directly encoded. 01:59:46 <CakeProphet> not sure how that would work with these rules. 02:02:39 <CakeProphet> I also considered, simply for the fun of the though, that bishops could be prisms. So when they are hit by a projectile the projectile branches in the other three cardinal (or diagonal, depending on the original path) directions. 02:02:51 <CakeProphet> this is however a terrible idea. but fun to consider. 02:03:00 <CakeProphet> s/though/thought/ 02:03:33 <CakeProphet> or the queen could do this. 02:04:33 <CakeProphet> there are still some issues to work out. 02:05:04 <itidus21> on the topic of chessvariants, one move scheme i thought of one time is giving a piece 2 options. a short move which can capture, and a longer move which cannot capture 02:05:08 <zzo38> I have implemented many variants including 123456 Chess and Chess with Wickets. 02:05:22 <CakeProphet> itidus21: there are variants with exactly this sort of scheme 02:05:45 <itidus21> i was thinking of street fighter 2 when i thought of it 02:05:51 <CakeProphet> in particular one problem is that, if your piece spawner dies, you now have a finite supply of missiles. 02:06:06 <itidus21> and such things.. where you have this speed vs strength trade off 02:06:18 <itidus21> and just in general this tradeoff exists eh 02:06:36 <CakeProphet> so perhaps I should use the original rules, where the cannons spawn missiles adjacent to them, and then the subsequent turn they're fired. making projectiles a 2-turn process, but this also has disadvantages. 02:06:50 <itidus21> the nimble weakling vs the stumbling oaf 02:07:45 <itidus21> :D :D oh man.. i wonder if they ever made chess variants based off of animes 02:07:58 <CakeProphet> hmmm./ 02:08:22 <itidus21> like dragon ball z, naruto, bleach, these kinds of things 02:08:28 <CakeProphet> I guess no one is interesting in offering suggestions so I'll shush now. I was hoping for some ideas. 02:08:39 <itidus21> sorry.. im off-topicing 02:08:48 * itidus21 sidles away. 02:09:01 <CakeProphet> itidus21: DBZ checkers. when you reach the end of the board you're promoted to super saiyan. 02:09:31 <itidus21> i like the idea of a cannon and a cannonball(which you have called a missile) 02:09:49 <CakeProphet> yes but there are issues with strategy and overall game progression 02:10:00 <CakeProphet> such as what happens when you lose all of your cannons, or both of your portals, etc. 02:10:18 <CakeProphet> if missile spawning is tied to a piece that's expendable then you have a situation where cannons are basically useless. 02:10:18 <itidus21> its a bit like a pinball scheme you have dreamed up.. where the cannon is the launcher 02:10:41 <CakeProphet> and once cannons are useless then arrows are useless. 02:10:47 <itidus21> and the arrows are those bouncy parts 02:11:39 <CakeProphet> so perhaps cannons should spawn their own missiles. 02:11:53 <itidus21> or something like gregor's 2L which i was peeking at the other day 02:12:41 <CakeProphet> hmm 02:13:05 <itidus21> see im really not a chess guy.. ill drop out here and let someone who better understands in 02:14:13 <CakeProphet> there could be no missile pieces. 02:14:17 <CakeProphet> cannons can just fire... 02:14:31 <CakeProphet> and then pawns are some sort of expendable but useful thing. 02:15:03 <CakeProphet> ah, one-time use trampolines. :) 02:15:06 <CakeProphet> perhaps. 02:15:36 <CakeProphet> this gives them a defensive use while also making them not overpowered. They're not invincible. 02:15:50 <CakeProphet> but they protect pieces behind them in the line of fire. 02:15:53 <CakeProphet> for one shot. 02:15:57 <CakeProphet> perhaps. 02:16:20 <CakeProphet> nah... 02:18:44 <CakeProphet> but it definitely makes sense for cannons not to rely on a missile piece for firing. 02:20:44 <CakeProphet> ah okay. 02:21:17 <CakeProphet> the two cannons are different. one fires diagonally one fires cardinally. otherwise they'd be ridiculous. 02:21:30 <CakeProphet> also help what is a sidewinder. 02:22:54 <zzo38> I have played pinball games with nonstandard launch, such as JiggleBox. 02:23:26 <zzo38> CakeProphet: Yes, that is idea; you could use rook upsidedown to indicate that, too. 02:24:23 <CakeProphet> right that was implied. 02:24:45 <CakeProphet> so that removes the cumbersome missile requirement without making cannons like super-queens 02:24:57 <CakeProphet> well, slow super-queens :P 02:25:37 <CakeProphet> perhaps the piece spawning mechanic should also be ditched. 02:25:40 <zzo38> I do know about Chinese cannons (in Xiangqi and some other chess variants), but I suppose your game is entirely different cannons and has nothing to do with that. 02:26:15 <CakeProphet> yes the cannons are vital. portals are probably second most vital. 02:26:25 <CakeProphet> arrows are probably more useful than I currently realize. 02:26:55 <CakeProphet> okay, nevermind, I now realize they are useful. 02:27:03 <CakeProphet> than I previously realized, or whatever. :P 02:27:46 <CakeProphet> okay so either the queen or the two bsihops have the arrow-destroying property. 02:29:30 * CakeProphet is going to go read some chess variant rules for inspiration. 02:30:14 <zzo38> Do you know Emperor-Wars? I had a book about it once, but now I lost it. It is also a chess variant. 02:31:05 <zzo38> Here is my chess variants using mostly normal chess pieces. All URLs start with http://www.chessvariants.org/index/msdisplay.php?itemid= 02:32:36 <CakeProphet> the queen /could/ be like an arrow with no direction. 02:32:45 <CakeProphet> the player can freely choose in which direction it redirects. 02:33:00 <CakeProphet> but then there is no drawback to this. there isn't the same sacrifice-dynamic here. 02:33:51 <zzo38> MS123456chess MS2choicechess MSblandchess MSchecker-captur MSchesswithcheck MSchesswithquant MSchesswithwicke MScommunistchess MSinvisiblekingc MSvariantswithqu 02:33:51 -!- augur has quit (Remote host closed the connection). 02:35:25 <zzo38> These are list of my variants using mostly normal chess set. A chess/checkers/backgammon set is preferred. 02:37:24 <CakeProphet> perhaps two arrows is sufficient. 02:37:33 <CakeProphet> so then bishops could be arrows. 02:37:49 <zzo38> OK. 02:39:26 <zzo38> Do you know about Shogi or Xiangqi? 02:39:33 <CakeProphet> Xiangqi yes. 02:41:25 <zzo38> I know how to play both. 02:43:24 <CakeProphet> perhaps there could be... no pawns. 02:43:39 <zzo38> And I especially like Tsume Shogi. 02:43:59 <CakeProphet> otherwise I think they should be trampolines (think befunge #) 02:48:46 <zzo38> Here are some chess variants: http://www.chessvariants.org/fiction.dir/hitchhiker/zork_and_turn.html (I like many of the variants by Claude Chaunier and Joao Pedro Neto) 02:48:46 <zzo38> It defines chess variants as follows: Chess is a class of games that comply with the following restriction: There must be at least one special piece, called King. Each player must protect his own King and loses if it is captured or checkmated. 02:48:59 -!- EgoBot has quit (Ping timeout: 252 seconds). 02:49:35 -!- Zetro has quit (Quit: End of Stream). 02:49:36 -!- EgoBot has joined. 02:49:42 -!- Zetro has joined. 02:51:38 -!- MDude has changed nick to MSleep. 02:54:20 -!- augur has joined. 02:55:05 <ais523> so suicide chess isn't a chess variant? 02:55:20 <zzo38> ais523: I think it is a chess variant, actually. 02:55:32 <ais523> but it doesn't have any special powers involving the king 02:55:36 <zzo38> The definition that description gives is not completely accurate, I think. 02:55:45 <zzo38> ais523: Some forms of suicide chess allow castling. 02:55:59 <monqy> is suicide chess anything like strip chess 02:56:11 <ais523> but the capture or checkmate of the king doesn't end a game of suicide chess 02:56:13 <ais523> monqy: not really 02:56:38 <CakeProphet> zzo38: I would think the only real technical requirement of a chess variant is that it bear some semblance to chess. Either using the same board, a similar rule, or the same pieces. 02:56:43 <zzo38> ais523: I know; that is why I say I think that definition is inaccurate 02:57:07 <monqy> I dunno how strip chess would work. Is there a good ruleset? 02:57:12 <zzo38> CakeProphet: That definition is also inaccurate, I think, as seen by the various chess variants existing. 02:57:48 <CakeProphet> so if a chess variant has a completely different board, completely different pieces, and no rules in common with chess 02:57:52 <CakeProphet> is it still a chess variant? 02:57:52 <monqy> loser retroactively takes off clothes? is that fair? 02:57:54 <ais523> monqy: normally on captures, is how chess is adapted to the usual forfeit-related game-patterns 02:58:10 <ais523> although that probably works better with alcoholic chess than strip chess 02:58:33 <CakeProphet> yeah, you could also employ piece values to determine various things. 02:58:35 <zzo38> Oops! GHC told me to report a bug because the 'impossible' happened. 02:58:48 <CakeProphet> in drinking chess the piece value would determine how much or what you drink. 02:58:56 <ais523> indeed, it does 02:59:14 <ais523> "please report a bug: it's not that anything drastic's gone wrong internally, we're just lonely" 03:00:07 <CakeProphet> okay so the only things to figure out now are a) starting piece position b) purpose of the queen c) make the movement rules a bit more precise 03:01:13 <zzo38> Oops! The database for GHC bug tracker is locked. 03:01:20 <monqy> the queen can swap with any piece? is that too useless or powerful or similar to other pieces? 03:01:20 <zzo38> Therefore I cannot report a bug. 03:02:06 <CakeProphet> monqy: it's not useless it would actually give it a similar sacrifice dynamic. it would be similar to the portal but more useful I think. Also it needs to have some other purpose besides that 03:02:30 <CakeProphet> originally it was to spawn pieces, but I later ditched that. Also I considered some kind of sacrifice dynamic where pieces adjacent to the queen could be sacrificed and replaced by other pieces. 03:02:36 <CakeProphet> but that could be a little wonky. 03:02:44 <zzo38> Type of classInstances is classInstances :: Name -> [Type] -> Q [Name] different from the documentation, and the code producing error is $(classInstances ''Num [ConT ''Integer] >>= reify . head >>= runIO . print >> [| 0 |]) 03:03:27 <CakeProphet> monqy: I think the queen should permit the capturing of arrows by cannons. perhaps it could also change the nature of friendly projectiles so that they clear an entire path instead of capturing only one piece, but this might make it incredibly easy to checkmate. 03:03:47 <CakeProphet> you wouldn't want your king in an enclosed area where it can't move. 03:03:55 <zzo38> What does "reifyType PredTy" mean? 03:04:11 <monqy> CakeProphet: my idea would give the queen the job of positioning important pieces, rescuing important pieces, and fleeing by swapping with an unimportant piece 03:04:38 <CakeProphet> rescuing and what way? 03:04:44 <monqy> CakeProphet: important pieces mainly being clumsy slowmoving things like the king and the cannons 03:04:54 <monqy> rescuing as in swapping out with a piece in danger 03:04:59 <CakeProphet> well I would specifically not allow swapping with the king. 03:05:02 <CakeProphet> I think. 03:05:03 <monqy> what!!! 03:05:13 <monqy> special cases are not cool!!! 03:05:21 <CakeProphet> sure they are. the king is already a special case. 03:05:37 <monqy> diaf, cakechess 03:06:29 <CakeProphet> so then the queen basically becomes a very useful support tool that is very difficult to capture. Not sure I like that. 03:07:04 <monqy> what's not to like? not a rhetorical question; I honestly haven't thought much about my queen, beyond what I already said 03:07:17 <zzo38> OK, I managed to report bug now 03:07:31 <CakeProphet> the best way to capture the queen would be to put the king in a check in which the only way to escape is to swap with the queen. 03:07:44 <CakeProphet> otherwise the queen can just disappear as it pleases. 03:10:16 <monqy> disappear as it pleases at the cost of sacrificing your pieces!! of coruse all pieces would have to be fairly valuable for this to be meaningful 03:10:16 <CakeProphet> also the portal fills a similar role albeit in a different way. 03:10:31 <CakeProphet> all pieces except pawns are extremely valuable. 03:10:59 <monqy> portal sort of fulfiles the moving a piece into attack role except only once when it places the piece 03:11:31 <monqy> CakeProphet: so then i guess you place pawns either when you're out of other stuff to place or you want queen escape teleport fodder? 03:11:33 <CakeProphet> yes sort of makes the cannons slowness less of an issue, in a way similar but different to arrows. 03:12:31 <CakeProphet> monqy: oh by the way I ditched the portal spawning stuff. 03:12:35 <monqy> oh 03:12:35 <CakeProphet> you begin the game with all pieces on the board. 03:12:44 <monqy> that makes queens more problematic 03:12:49 <CakeProphet> but portal however can still teleport pieces. a piece walks into the direction the portal is facing 03:12:53 <CakeProphet> and comes out the other side. 03:12:55 <CakeProphet> like a poral. 03:12:59 <CakeProphet> portals are portals. 03:13:01 <monqy> i was going on the assumption that you had to take turns to place pawns for use with queens 03:14:10 <CakeProphet> the queen could always just be a simple piece adept at capturing. 03:14:19 <CakeProphet> something that is lacking in this game. 03:14:28 <CakeProphet> currently arrows are very tricky to capture. 03:14:37 <CakeProphet> and are very valuable when strategically placed. 03:14:38 -!- augur has quit (Remote host closed the connection). 03:15:08 <monqy> also i forgot about portals actually working as portals oops 03:15:19 <CakeProphet> yes portals will be fun. 03:15:21 <monqy> also i remember you saying something about portals having a direction? what's that about 03:15:53 <CakeProphet> the direction is the direction the portal is facing. you can't capture it from that direction because you just pass through. 03:16:08 <CakeProphet> projectiles pass through as well as pieces. 03:16:24 <CakeProphet> all other directions are open for capture though. 03:16:51 <monqy> directional capturing? what's that about 03:16:54 <CakeProphet> not sure how or if portals capture. Perhaps that can capture in one direction, making them kind of useful defensively. 03:17:05 <CakeProphet> ...I mean, I hoped it was kind of an intuitive concept but I guess not. 03:17:15 <zzo38> "People usually think great things about Planets. The fact is planets are just small and rocky or big and foggy gravity modeled spheres, where complex biological cells try to grab to its surface as hard as they can, in order to invent cable television." 03:17:18 <monqy> if anything has knightsmoves, will portals not work for them? 03:17:36 <CakeProphet> knights still have a direction in which they're moving when capturing, so it will still work 03:17:43 <CakeProphet> also I don't plan on having anything that moves like a knight 03:17:49 <CakeProphet> except that portals can hop. 03:18:22 <CakeProphet> .....also I have no considered what happens when a portal tries to pass through a portal it is linked to. 03:18:26 <CakeProphet> I'd thinkt his isn't possible. 03:18:47 <CakeProphet> or they just explode or something. 03:18:51 <CakeProphet> which could be useful. 03:19:12 <CakeProphet> a portal is bound to explode at some point. it's in their nature. 03:19:47 <CakeProphet> (explode meaning that all adjacent pieces and the piece itself are captured) 03:20:28 <ais523> how big's the board? 8x8 would be hilarious given this complexity 03:20:43 <CakeProphet> 8x8 I'd imagine. I don't have fancy boards. 03:23:27 <CakeProphet> I've been running situations in my head and if you use a starting board placement that's exactly the same as normal chess it works out similarly. 03:23:47 <CakeProphet> well, actually I'll probably modify it a little bit. 03:24:38 <CakeProphet> but basically it works similarly to chess from what I can except that where you should move pieces is now drastically different. 03:24:51 <CakeProphet> you should basically have no need to move cannons until the endgame. 03:25:50 <CakeProphet> the cannon essentially acts as a piece that turns other friendly pieces in its path of fire into projectiles. 03:26:04 <CakeProphet> put a portal directly in front of a cannon and now your second portal can shoot things. 03:26:23 -!- evincar has joined. 03:27:21 <CakeProphet> also what is being sacrificed is not directly straightforward, for example. say you have your portal set up directly in front of your cannon, and an arrow is placed so that the enemies cannon can capture your portal. 03:27:34 <CakeProphet> so, you spend your turn to turn your portal to face the arrow so that the portal won't be captured. 03:28:17 <CakeProphet> ...but now you've either sacrificed some other piece you own on a completely different location on the board, or you've pointed the potential projectile at an enemy piece and thus caused them not to fire. 03:28:28 <CakeProphet> wildly different things could happen as the result of a single move. 03:29:32 <evincar> I thoroughly endorse these shenanigans. 03:30:04 -!- copumpkin has joined. 03:34:17 <monqy> hi evincar 03:35:23 <zzo38> Make a chess variant based on this idea: "A Black Hole is a place where all the White squares has been removed from the local representational Chess board." 03:35:48 <pikhq_> ... Relativistic chess? 03:36:21 <zzo38> I don't know. 03:40:42 <CakeProphet> I need a name for my game. 03:40:53 <monqy> I've been calling it cakechess, once. 03:40:59 <zzo38> CakeProphet: I don't know. 03:41:20 <evincar> Cakechess is fine as a working title. 03:41:43 <CakeProphet> I was thinking shellshock but I'm almost certain that's already the name of something. 03:41:46 <evincar> monqy: Ohai. 03:43:48 <CakeProphet> there's some stupid online game called shellshock 03:43:53 <CakeProphet> so I could call my game shellshocked 03:44:34 <CakeProphet> I think cannon placement will be somewhat problematic 03:44:39 <CakeProphet> for the starting layout. 03:45:38 <CakeProphet> though I think pawns will perhaps mitigate the problem to a degree. 03:46:21 <CakeProphet> essentially since capturing by cannon is indirect there's no defenses for things like bishops and rooks in chess 03:46:35 <CakeProphet> where you have many units surrounding the piece to capture it 03:46:42 <CakeProphet> because the cannon can just capture from afar. 03:47:03 <CakeProphet> I suppose it's the same thing you just have to think about it differently. 03:47:28 <CakeProphet> those above sentences probably make no sense to anyone else but me. 03:49:06 <CakeProphet> okay so assuming the diagonal cannon is on queenside and the cardinal cannon on kingside. 03:49:17 -!- pikhq has joined. 03:49:29 <CakeProphet> moving g2 to g3, then f1 to g2 03:49:46 <CakeProphet> er no, wrong side. 03:49:54 -!- pikhq_ has quit (Ping timeout: 260 seconds). 03:50:01 <CakeProphet> b2 to b3. then c1 to b2. 03:50:05 <CakeProphet> would be a good starting move for white. 03:50:38 <CakeProphet> because the arrow protects your diagonal cannon while also allowing you to aim it 03:50:43 <CakeProphet> but there are likely other good starting moves. 03:51:16 <CakeProphet> and then black will need to do very different things in order to react defensively to white. 03:52:05 <CakeProphet> also strange things could easily happen very quickly. :P 03:53:48 <CakeProphet> infinite loops between two opposing arrows would be, uh, interesting. 03:55:03 <CakeProphet> yeah I'm thinking the queen could act as a directionless arrow. 03:55:19 <CakeProphet> that can also capture. 03:55:24 <CakeProphet> but doesn't move as quickly. 03:58:23 <zzo38> I have read about program to make up the Haskell function from the type, but can it work with Template Haskell? 03:58:53 <copumpkin> just integrate @djinn 03:58:59 <copumpkin> @djinn a -> Not (Not a) 03:59:00 <lambdabot> f a b = b a 03:59:12 <copumpkin> @djinn Either (Not a) (Not b) -> Not (a, b) 03:59:13 <lambdabot> f a = 03:59:13 <lambdabot> case a of 03:59:13 <lambdabot> Left b -> \ (c, _) -> b c 03:59:13 <lambdabot> Right d -> \ (_, e) -> d e 03:59:14 <CakeProphet> meaning that a friendly projectile can be redirected to any path across the queen, and will at that point be able to capture arrows, but enemy projectiles will still capture her. (yes, a special case.) 04:00:37 <CakeProphet> so this is something that is incredibly useful, but vulnerable 04:00:47 <zzo38> copumpkin: That is seem a function taking two parameters, the type specifies only one, what is the Not type? 04:01:00 <copumpkin> type Not a = a -> Void 04:01:11 <zzo38> And how do I do djinn? I cannot find the information it seem broken 04:01:38 <copumpkin> you just give @djinn a type and it will try to write a function (prove) of that type 04:01:55 <copumpkin> what I wrote up there was one of the deMorgan laws 04:02:22 <zzo38> OK, I understand those things. But it still doesn't explain how to integrate @djinn into another program, because I do not have the information of that program. 04:02:22 <copumpkin> oddly enough, in haskell, only three out of the four deMorgan laws are true 04:02:43 <copumpkin> http://hackage.haskell.org/package/djinn-th 04:02:54 <copumpkin> and http://hackage.haskell.org/package/djinn 04:03:42 <zzo38> OK thanks 04:03:59 <itidus21> CakeProphet: to avoid infinite loops you could possibly give each arrow a finite number of arrowings per turn 04:04:07 <itidus21> just a thought 04:04:14 <itidus21> im sure theres other ways to get around it 04:04:41 <CakeProphet> itidus21: I have no intention of avoiding infinite loops 04:04:46 <itidus21> lol.. 04:04:55 <CakeProphet> the only annoying about them is that you need to verbally declare that you have created one 04:05:03 <CakeProphet> which is kind of annoying and not very chess-like. 04:05:21 <CakeProphet> I guess you could just say "loop" or something like that, similar to check. 04:05:29 <itidus21> you have to declare check right? 04:05:39 <itidus21> (i don't know chess ) 04:05:42 <CakeProphet> yes. 04:05:48 <itidus21> so it is chesslike really 04:05:51 <itidus21> not to worry 04:05:53 <CakeProphet> ...yes it's a chess variant. 04:06:07 <CakeProphet> using chess pieces, on a chess board, with what is currently the exact same starting layout. 04:06:16 <itidus21> i mean declaring a state of the game is chess-like 04:06:25 <CakeProphet> oh, well, right I just don't want it to be like 04:06:31 <itidus21> precidented on "check" 04:06:47 <itidus21> ^precedented 04:06:49 <CakeProphet> "oh uh, by the I just fired this cannon here and made this loop here that follows this path like so..." 04:06:55 * CakeProphet gestures and points awkwardly 04:07:17 <CakeProphet> which is normally not very chess-like as most of the time it's completely silent. 04:07:31 <CakeProphet> so I think saying "loop" would be sufficient except in cases where multiple possible loops can happen. 04:07:33 <zzo38> copumpkin: Which deMorgan laws not true in Haskell? 04:07:52 <copumpkin> @djinn Not (a, b) -> Either (Not a) (Not b) 04:07:52 <lambdabot> -- f cannot be realized. 04:08:07 <copumpkin> it's not provable in constructive logic 04:08:50 <zzo38> Is there a way to do different kind of logic? 04:09:10 <CakeProphet> "a player may simply declare "loop" in the event that they've fired a projectile that forms an infinite loop. If the opponent wishes the player to clarify, then they must do so." 04:09:19 <copumpkin> no, most programming (and proof assistants) model an intuitionist (constructive) logic 04:09:20 <CakeProphet> sounds good to me. 04:09:40 <copumpkin> classical logic is very non-computational 04:10:08 <zzo38> copumpkin: I know, Curry-Howard uses intuitionistic logic, and sometimes it is good, but sometimes you might want different logic and I think I read someone can somehow make it using different logic too 04:10:29 <CakeProphet> itidus21: actually I forsee loops being a useful defensive and offensive strategy. 04:10:31 <copumpkin> some type systems encode substructural logics 04:10:43 <zzo38> What are substructural logics? 04:10:46 <copumpkin> but you typically don't get classical logic 04:10:46 <itidus21> is a loop the end of a game? 04:10:54 <CakeProphet> either to respond to an enemies arrow placement with your own arrow pointing in the opposite direction, or to form defensive walls. 04:11:13 <CakeProphet> (part of the loop rules include that firing a projectile into an existing loop cancels both the loop and the fired projectile) 04:11:21 <copumpkin> substructural logics basically place restrictions on what you can do with your context, which in programming language terms, means that you put restrictions on how many times you can (or must) use your variables 04:11:28 <itidus21> oh so the loop persists between turns? :D 04:11:30 <copumpkin> some say that a variable must be used exactly once 04:11:32 <zzo38> OK, Wikipedia does have article about substructural logic, I will read that too 04:11:35 <copumpkin> others say at least once 04:11:35 <CakeProphet> loops work similarly to how you would imagine them to work, if you imagine the projectile as a deadly laser death wall 04:11:38 <copumpkin> others say at most once 04:11:38 <CakeProphet> itidus21: yes. 04:11:40 <copumpkin> and so on 04:11:41 <CakeProphet> itidus21: until the loop is broken. 04:11:41 <itidus21> dude you're good at this. 04:11:51 <copumpkin> even more strict ones say that you must use variables in the same order you declare them 04:12:06 <CakeProphet> itidus21: so all you have to do is turn an arrow in the loop and you immediately capture something. loops are a very dangerous situation. 04:12:23 <copumpkin> ATS and clean have type systems that support certain kinds of substructural logics 04:12:27 <CakeProphet> or turn a portal. 04:12:46 <itidus21> this thing you're describing is so far the coolest chess variant i have heard of 04:13:10 <monqy> of how many chess variants have you heard, anyhow 04:13:25 <itidus21> 1,220,005 04:13:26 <CakeProphet> actually I can forsee some situations in which the best way to counteract an infinite loop being used to capture something is to form another chain in the loop 04:13:35 <copumpkin> is this laserchess? 04:13:38 <CakeProphet> yes. 04:13:40 <copumpkin> I loved laserchess 04:13:45 <copumpkin> had to write an AI for it a while back 04:13:46 <CakeProphet> oh, is that a thing? nevermind 04:13:52 <copumpkin> oh 04:13:54 <CakeProphet> no this is something I've come up with that might be similar. 04:14:04 <copumpkin> you should check it out. It's lots of fun 04:14:08 <copumpkin> you have a laser and mirrors 04:14:09 <copumpkin> and rotation 04:14:14 <copumpkin> and the complexity is way higher than regular chess 04:14:32 <CakeProphet> yes it basically looks like this game but with way more arrows. 04:14:41 <CakeProphet> and different kinds of arrows 04:14:47 <CakeProphet> I've added portals as well. 04:14:52 <zzo38> Wikipedia does mention "Correspondence between classical logic and control operators", it has to do with continuations, apparently. 04:15:15 <CakeProphet> ah and mirrors don't work exactly like arrows. 04:15:28 <CakeProphet> an arrow forced the direction of a projectile into one specific direction. the mirrors can reflect two different ways. 04:15:49 <CakeProphet> er multiple different ways. 04:16:20 <itidus21> monqy: ok i will say there is no best chess variant. but basically, some games are more memorable than others independant of factors like marketing 04:16:33 <itidus21> ^and word of mouth 04:16:54 <CakeProphet> I think portals will be great fun. 04:17:08 <itidus21> i never even really followed the portal part of it 04:17:22 <CakeProphet> bah, I've explained it so many times now. :P 04:17:35 <itidus21> i can read log if i have to 04:17:39 <itidus21> its all there 04:17:42 <copumpkin> zzo38: yeah 04:18:03 <CakeProphet> portals are knights. the direction of their nose is the direction of the portal. You can literally think of it as a portal. If you move a piece into the opening they come out the other opening, moving as they normally would through the portal 04:18:15 <itidus21> a game only has to be slightly more memorable than the other games in order to achieve mainstream popularity 04:18:16 <CakeProphet> projectiles can travel through the portal opening as well. 04:18:18 <CakeProphet> for great fun. 04:18:20 <CakeProphet> and profit. 04:18:59 <CakeProphet> if you capture a portal its corresponding portal EXPLODES and everything around it and itself is captured. 04:19:17 <CakeProphet> portals can't point to nothing, and obviously this requires that they explode. 04:19:41 <CakeProphet> also trying to pass a portal through its sister portal will cause them to EXPLODE in the same fashion 04:19:44 <CakeProphet> paradox is not allowed. 04:19:58 <itidus21> like if i wrote a simulation where people play games and talk about them, the games which were talked about even slightly more would have iterated positive feedback 04:20:02 <CakeProphet> and obviously causes explosions. 04:20:35 <CakeProphet> also, if any other rules I discover cause annoying side-effects, you can be sure something will explode. 04:21:57 <CakeProphet> hmm, perhaps I should have four arrows again instead of just two. 04:22:03 <CakeProphet> sounds more fun. 04:23:40 <zzo38> I think I can understand why Pierce's law is not deducible, though. If it is a function type, you have a value of type ((a -> b) -> a) there is nothing to call the function because you need (a -> b) which you don't have. Is that correct? (I know there is unsafe functions, and undefined, but I believe you have to be limited to safe and halting computations) 04:26:13 <zzo38> I know there is (x ->) monad and I have suggested using do-notation for fantasy rule. Would you simply use different monads, or...? 04:32:03 <CakeProphet> so basically as it currently stands if you lose a portal, cannon, or prism (queen) you are very likely to lose. 04:32:12 <CakeProphet> especially a portal, as a portal takes many pieces with it. 04:32:24 <Lymee> :t fix($) 04:32:25 <lambdabot> forall a b. a -> b 04:32:34 <Lymee> zzo38, what do you mean by "you don't have" 04:32:41 <Lymee> @djinn (a->b) -> a 04:32:41 <lambdabot> -- f cannot be realized. 04:33:14 <CakeProphet> can anyone think of any interesting ideas for pawns? Currently they move and capture exactly as chess pawns. 04:33:44 <CakeProphet> which is perfectly fine with me. pawns are definitely one of the most useful pieces in chess. 04:35:09 <zzo38> Lymee: Isn't that an infinite loop though? 04:35:33 <CakeProphet> they will be even more expendable in this game though, as capturing a pawn with a cannon does not place any of your pieces in danger like capturing a pawn would in chess. 04:35:39 <Lymee> zzo38, yes. 04:35:45 <Lymee> But it fits the type signature. 04:36:42 <Lymee> Can you even write a function with the signature (a->b)->a? 04:36:48 <Lymee> @djinn a->b->c 04:36:49 <lambdabot> -- f cannot be realized. 04:37:25 <Lymee> @djinn a->b->(e->d->c->a->b)->c->d->e->(b->r)->r 04:37:25 <lambdabot> f a _ b c d e f = f (b e d c a) 04:37:40 <Lymee> @djinn a->b->(e->d->c->a->x)->c->d->e->(x->r)->r 04:37:40 <lambdabot> f a _ b c d e f = f (b e d c a) 04:38:09 <Lymee> @djinn a->([a]->(a,b,c)->x)->b->(e->e->e->x->x)->c->d->e->(x->r)->r 04:38:09 <lambdabot> Error: Undefined type [] 04:38:11 <Lymee> :( 04:38:16 <Lymee> @djinn a->(a->(a,b,c)->x)->b->(e->e->e->x->x)->c->d->e->(x->r)->r 04:38:17 <lambdabot> f a b c d e _ f g = g (d f f f (b a (a, c, e))) 04:38:22 * Lymee stops silly 04:38:41 <CakeProphet> hmmm 04:38:57 <CakeProphet> I have a feeling shellshock AI will be more difficult than chess AI. 04:39:04 <zzo38> Lymee: Maybe you can if you have infinite loop and all of that stuff, but for all 'a' and 'b' you probably do not have such a function that is always defined output for all defined input. 04:39:46 <zzo38> But even if you can, what you need is (((a -> b) -> a) -> a) 04:40:39 <zzo38> Which means you require (a -> b), at least I think it does. 04:46:19 <CakeProphet> hmmm, here's an interesting idea. perhaps a portal could swap places with any friendly pieces in its movement radius. 04:46:27 <CakeProphet> monqy: ^^^ 04:47:02 <CakeProphet> this is perhaps a bad idea though. 04:47:13 <monqy> so that would be any place to which it can move? 04:47:17 <CakeProphet> yes 04:47:26 <CakeProphet> which, currently is three spaces in any direction. 04:47:30 <CakeProphet> but might be shortened to two. 04:47:39 <CakeProphet> I will play with my first draft and then go from there. 04:47:54 <CakeProphet> also portals can hop. 04:48:07 <CakeProphet> which puts them near the top of the mobility list, below arrows. 04:48:36 -!- evincar has quit (Quit: Night.). 04:49:14 <CakeProphet> because both portals and arrows will need to get to places quickly and often. 04:49:37 <CakeProphet> as they're the primary defensive pieces. 04:49:41 <CakeProphet> and offensive pieces. 04:49:43 <CakeProphet> >_> 04:50:27 <Patashu> Has anyone in here played DROD (Deadly Rooms of Death) and Braid? 04:51:14 <CakeProphet> Braid sounds familiar. 04:52:55 <zzo38> What is a "dependent product type"? The article about Curry-Howard mentions it, but the article about dependent types, while I read it, I still don't know what dependent product type is. 04:53:06 <monqy> I've played some braid and I think I've played some drod as well. don't remember either that well. 04:55:33 <CakeProphet> hmmm, I'll need to clarify the rules involving infinite loops and prisms. 04:56:47 <Patashu> I had an idea two nights ago in bed to combine the time travel elements of braid with drod 04:56:52 <Patashu> Drod already lets you undo as many moves as you like 04:56:57 <Patashu> So why not introduce achronal elements into it? 04:59:59 <Lymee> @let abaa :: ((a -> b) -> a) -> a; abaa p = fix($) 04:59:59 <lambdabot> <local>:3:39: 04:59:59 <lambdabot> Couldn't match expected type `a1' against inferred type `... 05:00:05 <CakeProphet> dude shellshock is going to be so fun I can't wait to play it. 05:00:38 <monqy> i'm still going to call it cakechess it sounds better to me 05:00:41 <Lymee> @let abaa :: ((a -> b) -> a) -> a; abaa p a = fix($) 05:00:42 <lambdabot> <local>:3:30: 05:00:42 <lambdabot> Couldn't match expected type `a1' 05:00:42 <lambdabot> against inf... 05:00:56 <Lymee> Wait, never mind. 05:01:01 <CakeProphet> laser chess would be a good name but that's already taken. 05:01:03 <CakeProphet> maybe portal chess. 05:03:10 <CakeProphet> arrows might be equally important as cannons, or just slightly below importance. 05:03:17 <CakeProphet> portals are pretty vital I think. 05:04:05 <CakeProphet> portal, cannon, prism, arrow. perhaps. 05:04:19 <CakeProphet> but losing any of them would be very much like losing a queen in chess. 05:06:27 <CakeProphet> anybody play sc2 05:06:31 <CakeProphet> I'm thinking about getting back in. 05:19:19 <CakeProphet> a similar game: http://en.wikipedia.org/wiki/Khet_(game) 05:19:25 <CakeProphet> to my chess variant. 05:19:44 <CakeProphet> more like laser chess though 05:21:25 <CakeProphet> it has actual lasers too. this is something portal chess cannot do because of portals. :P 05:21:48 <CakeProphet> well, no, if the portal pieces were electronic, they could have a sensor/laser combo on one of their sides. 05:21:52 <itidus21> i started taking down some notes on a dbz-chess 05:21:55 <CakeProphet> and a wireless transmitter. :P 05:22:00 <CakeProphet> itidus21: oh god no. 05:22:03 <CakeProphet> don't do it. 05:22:06 <itidus21> cos thats how i like to pass 10 minutes on a sunday 05:22:18 <CakeProphet> chess does not work like that. 05:22:29 <CakeProphet> also, no stealing my ideas. 05:22:43 <itidus21> feh 05:23:14 <itidus21> you're encouraging me to actually take down more notes! 05:23:23 <CakeProphet> no 05:23:25 <itidus21> however.. to also be mindful of not stealing your ideas 05:23:33 <CakeProphet> your game will be horrible and unbalanced. while mine is obviously not. 05:23:37 <monqy> good idea: explosion chess. 05:23:41 <monqy> I'll leave the rest up to you 05:23:48 <CakeProphet> yes explosions are always good 05:23:52 <CakeProphet> especially to avoid rule paradox. 05:23:58 <CakeProphet> such as portals going into portals. 05:24:03 <itidus21> i am probably subconciously stealing ideas. 05:24:15 <CakeProphet> itidus21: well it's difficult to have DBZ chess without ENERGY BEAMS 05:24:44 <CakeProphet> so basically you'd have something where like... every piece can shoot some kind of projectile, and so everything would just die very quickly and it would be lame. 05:24:47 <CakeProphet> bad game. 05:25:20 <CakeProphet> and you could give some piece cool powers like the queen could be cell which would absorb other pieces and take their leet powerz 05:25:33 <CakeProphet> but it wouldn't matter because everything else would just shoot everything to deth. the end. 05:25:35 <itidus21> oh.. i would scrap the whole idea of using chess pieces 05:26:14 <itidus21> *sigho* as long as you're not getting genuinely too upset. 05:26:21 <CakeProphet> either way unless you have a lame hit points system you will have a) projectiles b) rapid death 05:26:32 <CakeProphet> yes I'm furious. 05:26:32 <itidus21> someone else mentioned that some of your ideas are similar to laserchess 05:26:40 <CakeProphet> yes but it's not the same. 05:27:06 <CakeProphet> it's actually very different. the only similarity is that there are cannon pieces and there are pieces that redirect the direction of the cannons fires. 05:27:29 <CakeProphet> but the way they redirect is very different.. 05:27:51 <itidus21> maybe you're furious because i don't like chess 05:27:54 <CakeProphet> as is the number of pieces that redirect. 05:28:05 <itidus21> and my ideas are basically attempts to destroy it 05:28:08 <CakeProphet> nah I'm just saying dbz chess is probably not a good idea. 05:28:14 <CakeProphet> you can't destroy chess. 05:28:23 <CakeProphet> that's like saying "today I'm going to destroy communism" 05:28:36 <CakeProphet> or "today I'm going to destroy object-oriented programming" 05:28:46 <Patashu> mr fischer, tear down this board 05:28:56 <Patashu> *checkmate* 05:29:19 <CakeProphet> Did you think to kill me? There's no flesh or blood within this cloak to kill. There's only an idea. Ideas are bulletproof. 05:29:21 <itidus21> months ago i had ideas about streetfighter style fighting game with chess characters drawn in that style 05:30:11 <itidus21> i even had an idea about a chess platform game 05:30:28 <Patashu> itidus21 05:30:33 <Patashu> have you been to www.chessvariants.com 05:30:41 <CakeProphet> no don't encourage him. 05:31:10 <itidus21> well ya see.. the characters: King, Queen, Knight, Bishop, Pawn, Rook can be abstracted entirely out of the gameplay structure 05:31:13 <Patashu> I figure either he'll get better ideas or be overwhelmed by all the stuff on the site and ruminate 05:31:37 <CakeProphet> hmm also another neat idea for a chess variant inspired from Khet 05:31:38 <itidus21> heck, you could even make chess the sitcom 05:31:50 <CakeProphet> where your pieces are all arranged in a massive block and movement is done by swapping out pieces. 05:32:01 <CakeProphet> not sure what the objective would be. 05:32:08 <itidus21> chess the sitcom: "Welcome home King." "Thanks Queen." *canned laughter* 05:32:30 <itidus21> "Wheres our little pawns?" "Oh they're watching TV" *more canned laughter* 05:32:54 <CakeProphet> all the pawns would obviously die in horrible ways to protect other pieces. 05:32:55 <Patashu> CakeProphet: Castlingmost Chess 05:33:23 <CakeProphet> and the queen would always run away. 05:33:30 <CakeProphet> and the knight would always hop out of danger. 05:33:39 <itidus21> "King: It was a busy day at work today. 3 of our men got captured" 05:33:44 <CakeProphet> meanwhile the bishop is doing something strategic. 05:34:11 <CakeProphet> and sneaky 05:34:31 <itidus21> "Moooom! Timmy says he's gonna capture me!" 05:34:39 <CakeProphet> okay this can't continue. 05:35:04 <itidus21> i think there may have been an xkcd comic about a chess raft 05:35:19 <CakeProphet> the punch line so far is: "haha anthropomorphic chess family" "haha capturing" 05:35:37 <itidus21> maybe its just in my head 05:35:40 <monqy> haha 05:35:49 <Patashu> I remember that comic 05:35:53 <Patashu> they were going to settlers of catan 05:35:59 <Patashu> and the knights was having an argument with the bishop 05:36:34 <CakeProphet> so how does one post a contribution to chessvariants? 05:36:38 <CakeProphet> I must write up ze rules. 05:36:46 <itidus21> CakeProphet: yes anthropomorphic chess characters. 05:36:49 <Patashu> http://www.chessvariants.com/index/membersubmission.php presumably 05:36:52 <CakeProphet> of what is either portal chess or shellshock I can't decide. 05:36:57 <Patashu> I'm not sure if stuff is still getting added to it though... 05:37:11 <CakeProphet> well, I still need to work out a final draft after some test plays 05:37:17 <itidus21> so taking something like a manga.. and importing it into chess is simply an inverse operation of anthropomorphizing chess pieces 05:37:19 <CakeProphet> but surely they will see the awesomeness and allow it. 05:38:11 <Patashu> ah, yes. there are still new pages 05:38:16 <CakeProphet> excellent. 05:38:33 <CakeProphet> they shall witness what is probably the most excellent game ever made. well, maybe, after extensive testing. 05:38:50 <Patashu> yeah, you better playtest it :fistshake: 05:38:56 <CakeProphet> oh I will. 05:38:58 <Patashu> in my youth I had an overwhelming desire to come up with chess variants 05:39:01 <Patashu> but no desire to playtest them 05:39:03 <Patashu> so yeah it was awful 05:39:15 <CakeProphet> well playtesting is where you figure out if your game is actually good. 05:40:07 <CakeProphet> I have a feeling it will be extremely fun to begin with, and then get gradually less fun for one person as they lose all of the incredibly important pieces. hopefully at that point losing will be swift. 05:40:29 <Patashu> just gg out when you can't win 05:40:30 <Patashu> I guess 05:40:54 <CakeProphet> sidenote: it is probably always a bad idea to have a portal next to a king 05:41:15 <itidus21> basically i don't like chess for exactly the same reason that chessplayers do like it. i don't like knowing that it takes 50 years to learn to do anything in the game which hasn't been done before redundantly :D 05:41:38 <CakeProphet> I wonder if I should include some kind of indirect check rule in which portals can be placed in check if capturing the portal would result in capturing the king. 05:41:43 <CakeProphet> or if I should just not care. 05:41:55 <CakeProphet> and include that "oh by the way if a portal explodes on a king you lose" 05:42:21 <CakeProphet> itidus21: chess isn't about breaking the mold, really. 05:42:45 <itidus21> one idea i had was to make the tiles shaped as golden ratio instead of squares 05:42:55 <Patashu> good luck with that 05:43:04 <CakeProphet> a golden ratio is not a... shape. 05:43:14 <itidus21> a golden ratio rectangle 05:43:37 <CakeProphet> that's not an actual thing. 05:43:48 <itidus21> an approximation of a golden ratio rectangle 05:43:54 <CakeProphet> you need more than one. 05:44:15 <CakeProphet> ah wait, no you don't. 05:44:37 <CakeProphet> still what does changing the dimensions of the squares do exactly? 05:44:45 <itidus21> it doesn't mean anything yeah 05:45:26 <itidus21> it could unfortunately make certain distances on the board seem larger than they are also 05:45:46 <CakeProphet> do you mean make a golden SPIRAL? 05:46:03 <CakeProphet> or just have squares whose side ratios are phi? 05:46:26 <itidus21> yeah, i just mean take the sqaures and turn them into rectangles whose side ratios are pi 05:46:47 <CakeProphet> I see. 05:47:09 <itidus21> it would create a false sense of distance though 05:47:22 <itidus21> but i wonder if that would matter 05:47:26 <CakeProphet> I doubt it. 05:47:57 <CakeProphet> hmmm, just found some more things I need to clarify 05:48:03 <CakeProphet> these rules are going to get pretty large I think. 05:48:40 <CakeProphet> ah wait, no. I don't need the rule I was thinking of. I was thinking in terms of lasers but that's not how it will work. 05:48:49 <Jafet> Chess rules are hard enough to write down. 05:48:53 <Jafet> @google joke chess problem 05:48:54 <lambdabot> http://en.wikipedia.org/wiki/Joke_chess_problem 05:48:54 <lambdabot> Title: Joke chess problem - Wikipedia, the free encyclopedia 05:49:07 <CakeProphet> I was thinking if at any point the projectile crosses its own path it would nullify itself 05:49:14 <CakeProphet> but that would only make sense if it were imagined as a laser 05:49:35 <CakeProphet> and not as an abstract path thing. 05:49:37 <Jafet> Laser beams can cross themselves... 05:49:44 <Jafet> Do you mean TRON? Star Wars? 05:49:45 <CakeProphet> also that. 05:49:48 <CakeProphet> yes. 05:50:11 <CakeProphet> however I am making it a rule that infinite loops act basically like big laser death walls. 05:50:30 <CakeProphet> and if you fire a projectile /at/ an infinite loop then it cancels the projectile that was fired as well as the loop. 05:50:46 <CakeProphet> they collide. 05:51:09 <CakeProphet> also if an infinite loop captures a piece it ceases to exist. no permanent death walls. 05:51:47 <CakeProphet> basically you can imagine it as a pointlike projectile move around very very quickly inside the circuit. it collides with anything that crosses the circuit and then goes away. 05:51:59 <Jafet> TRON chess, the next big thing since trek chess 05:52:20 <CakeProphet> ha 05:52:24 <CakeProphet> tron chess would be madness 05:52:30 <CakeProphet> you'd need some kind of piece to keep track of the walls. 05:52:34 <CakeProphet> checker pieces I guess. 05:52:41 <Jafet> Play on a whiteboard 05:52:54 <CakeProphet> here I think the loops are simple enough that you can simply use your memory to locate loops. 05:52:59 <Jafet> Also, every piece moves every turn. 05:53:30 <CakeProphet> though perhaps I will precisely define how loops should be handled 05:53:41 <CakeProphet> I think you should have to redeclare a loop if you create a new loop from an existing loop. 05:54:14 <Patashu> how about chess where the board's colours update every round according to a CA (game of life or day and night would be appropriate) and then movement is determiend as follows: http://www.chessvariants.org/boardrules.dir/piedchess.html 05:54:21 <CakeProphet> ... 05:56:11 <CakeProphet> hmmm the simplest loop I think would be a wall structure. on a single row, column, or diagonal you could have: (canon) >> << 05:56:55 <CakeProphet> you could also have an L-shaped circuit, but that would involve the opponent's arrow. shared loops are nasty situations. 05:57:23 <CakeProphet> and then you could have an L-shaped loop between two portals and a connecting arrow inbetween them. 06:01:08 <CakeProphet> ...bah, I think I'll actually need to give loops a directional quality as well. 06:01:33 <CakeProphet> in a portal-arrow-portal loop only one portal could change directions wouldn't being captured. 06:01:49 <CakeProphet> the other would change directions and then collide with the looping projectile. 06:05:32 <CakeProphet> so basically in any portal-based loop there's an in-portal and an out-portal, based on the direction the projectile was originally fired. 06:06:20 <CakeProphet> rotating the in-portal without moving it would cause it to be captured, the out-portal can rotate and move freely, thus breaking the loop and capturing the piece directly in front of it at the end of the turn. 06:06:40 <CakeProphet> yeah... that's probably the most complex rule of the game. 06:09:07 <CakeProphet> it also makes the out-portal an extremely deadly thing 06:09:41 <CakeProphet> as it can, in one turn, move three spaces in any direction, hoping over any piece, and face any direction... capturing whatever is in front of it at the end of the turn as it breaks the loop. 06:29:58 <CakeProphet> http://www.chessvariants.org/diffsetup.dir/pattsch.html 06:30:46 <Patashu> haha, that's hilarious 06:32:01 <CakeProphet> I don't really see how that's a double stalemate. 06:32:07 <CakeProphet> you can easily move one of the pawns forward. 06:32:14 <Patashu> no 06:32:22 <Patashu> look at where they start 06:32:24 <Patashu> then look at a normal board 06:32:27 <Patashu> notice something different? 06:32:47 <CakeProphet> aside from the two pawns above the rank no. 06:33:12 <CakeProphet> also the colors are flipped. 06:33:29 <CakeProphet> so, is that implying the pawns move backwards? 06:35:11 <CakeProphet> help 06:35:21 <Patashu> think 06:35:25 <CakeProphet> I am. 06:35:40 <Patashu> 'the players start the game in a position in which they are both stalemated.' 06:35:43 <Patashu> Is the page lying? 06:36:04 <CakeProphet> "it's a stalemate because it says it is" is not a valid explanation. 06:36:47 <CakeProphet> my only guess is that pawns move backwards because they reversed the locations of the pieces. 06:37:09 <Patashu> bravo 06:37:24 <CakeProphet> you'll note that I said that several lines ago. 06:37:38 <CakeProphet> and you didn't confirm it. 06:38:07 <Patashu> you should have been able to figure it out on your own lol 06:38:22 <Patashu> I didn't deny it 06:38:47 <CakeProphet> asshole. 06:38:58 <Patashu> wow 06:39:13 <CakeProphet> oh wait 06:39:20 <CakeProphet> I forgot the :P 06:39:25 <CakeProphet> see now everything is better. 06:39:32 <Patashu> yes 06:40:01 <CakeProphet> hahaha you're a terrible person just kidding hahaha 06:40:14 <Patashu> hahahaha 06:40:15 <Patashu> :) 06:40:58 <Patashu> anyway yeah 06:41:00 <Patashu> on chess variants 06:41:04 <Patashu> always assume fide rules and rule zero to the letter 06:41:18 <Patashu> until it says something contradictory 06:41:42 <Patashu> fide rules for instance explicitly says white starts on THIS side black starts on THIS side white's pawns go THIS way 06:41:44 <Patashu> and so on 06:45:40 -!- ive has quit (Quit: leaving). 07:08:26 -!- augur has joined. 07:11:58 <itidus21> in some book i downloaded(stole) it began by explaining its easier to describe fairy chess pieces relative to standard pieces... (please note: i am using my own words here in this paraphrase, and my memory always makes small forgettings) 07:12:21 <itidus21> reason for saying this? i suppose that fide provides a stable base 07:14:19 <CakeProphet> yes it's easier to say "this piece moves like a bishop" or "this piece moves like a knight, except.." 07:15:05 <CakeProphet> I don't this is entirely true for portal chess. "This piece moves like a king, except it can shoot bulletz lol" 07:15:15 <CakeProphet> +think 07:15:20 <itidus21> he's a badass king 07:15:25 <itidus21> carrys a rifle 07:15:51 <CakeProphet> also I've found some other abstract strategy games that have a directional componnt 07:15:54 <itidus21> calls himself k1ng 07:15:54 <CakeProphet> jwiriwejr 07:16:19 <CakeProphet> in one game you had to change direction a single turn, except there was one kind of piece that could move and turn in the same turn. 07:16:42 <itidus21> `log pawn 07:16:54 <CakeProphet> but I think it makes things more interesting if you can move and turn in one move. 07:17:03 <HackEgo> 2007-09-26.txt:22:51:33: <bsmntbombdood> something like Like a flock of hellspawns \ And stewards of the son of despite \ We parry their guile with the magnificence of disgust 07:17:18 <CakeProphet> hmmm, though once again I have more loop dilemmas... 07:17:37 <itidus21> CakeProphet: can i predict laserchess never had loops? 07:18:18 <itidus21> loops in chess is sort of cool. loops in chess in _the_ esolang channel, is quite special. 07:18:21 <CakeProphet> let's say I have a loop, and the opponent puts his portal inside of the loop and then turns his piece so that the portal is facing the path of the projectile 07:18:42 <CakeProphet> does the portal get captured or does it break the loop? 07:18:55 <CakeProphet> I would think it breaks the loop 07:19:17 <itidus21> are your portals anything like narbacular drop portals? 07:19:35 <CakeProphet> you can kind of think of them as walls with Portal portals on them. 07:19:44 <CakeProphet> you can reorient the walls. 07:19:50 <itidus21> `log narbacular 07:19:51 <CakeProphet> ...I've explained it like 4 times at least. 07:19:55 <HackEgo> 2008-07-18.txt:15:43:01: <Deewiant> shooting a portal through a portal? that worked in narbacular drop 07:20:02 <itidus21> ^_^ 07:20:25 <itidus21> sorry cake.. i hate being so wrong that i have to regularly apologize 07:21:01 <CakeProphet> so anyways I guess the portal should break the loop... 07:21:14 <CakeProphet> any loop-breakage should be calculated at the end of a turn, in other words. 07:21:20 <CakeProphet> not halfway through it. that would be kind of arbitrary. 07:21:39 * CakeProphet will have a fairly large section on loop-breaking at the end of the rules 07:21:46 <CakeProphet> it's the most potentially confusing part of the game. 07:21:56 <itidus21> im a right groan and grunt 07:22:06 <itidus21> thank you big book of rhyming slang 07:22:51 <itidus21> ok i see 07:22:57 <itidus21> so a portal can divert a laser 07:23:02 <itidus21> faark thats cool 07:23:12 <CakeProphet> bah, okay I don't have a solution for this one. 07:23:19 <CakeProphet> let's say you have the simple 2-arrow loop 07:23:39 <itidus21> ok ill stop calling em lasers 07:23:46 <CakeProphet> (Cannon) >>------(loop)------<< 07:23:56 <CakeProphet> >> and << are arrows. 07:24:07 <itidus21> yeah im following most of it believe it or not 07:24:24 <CakeProphet> okay so in the L-shaped loops, there was an obvious direction to the loop. so that a portal could suddenly jump into te loop and something predictable would happen. 07:24:39 <itidus21> ahhhhh 07:24:39 <CakeProphet> but... what happens here when a portal jumps into a loop. do you flip a fucking coin? 07:25:21 <itidus21> hmm 07:25:31 <CakeProphet> I have to decide one way or another. 07:25:43 <CakeProphet> either the portal dies or it breaks the loop safely. 07:25:49 <itidus21> you could default to facing the portal at the cannon 07:25:56 <itidus21> along the loop 07:25:58 <CakeProphet> meh. 07:26:07 <itidus21> but yeah i know that answer sucks 07:26:10 <CakeProphet> that breaks my intuitive loop thinking. :P 07:26:21 <CakeProphet> flipping a coin makes the most sense but that's gross. 07:26:41 <CakeProphet> okay, the projectile is moving way too fast there's no way to time it correctly, the portal is always captured. :P 07:27:00 <itidus21> hummmm 07:27:02 <CakeProphet> however, portals can hop... thus allowing them to pass through. they just can't stand in it and break the loop. 07:27:59 <CakeProphet> so yeah I'll basically have to document the two cases (arrow-based loops vs portal-based loops) and how they differ. 07:28:15 <CakeProphet> portal-based loops have a directional quality. arrow-based loops do not. 07:28:21 <itidus21> so what happens if 2 loops cross each other.. is that the explosion case? 07:28:38 <CakeProphet> that can't happen because if a projectile crosses a loop they're both negated. 07:28:45 <itidus21> ahh 07:28:56 <itidus21> hmm 07:29:01 <CakeProphet> the explosion case involves a portal trying to pass through its linked portal 07:29:07 * itidus21 troll grins. 07:29:10 <CakeProphet> also when portals are captured their linked portal explodes. 07:29:35 <CakeProphet> you want to keep your portals alive... 07:31:08 <CakeProphet> actually portal-based and arrow-based is bad terminology as there's a 4-arrow case with directional qualities 07:31:17 <CakeProphet> so basically I should call them bidirection and unidirectional loops. 07:31:34 <CakeProphet> (the 4-arrow case would be extremely unlikely as it involves all four arrows on the board) 07:32:26 <itidus21> at times like this i bet you wish you could code up a simulator for it in 10 minutes 07:32:58 <CakeProphet> ........nooooo 07:32:59 <CakeProphet> I just found 07:33:04 <CakeProphet> something I'm pretty sure cannot be solved. 07:33:12 <CakeProphet> without a major rule change. 07:33:48 <CakeProphet> oh wait nevermind. 07:33:52 <CakeProphet> that can't happen. 07:33:53 <CakeProphet> phew 07:34:24 <CakeProphet> okay so anytime you break a loop, there is ONE predictable path the projectile can take. 07:34:33 <CakeProphet> itidus21: do you understand what happens when a loop breaks? 07:34:47 <itidus21> nope 07:34:56 <CakeProphet> okay simplest case: 07:35:06 <CakeProphet> (Cannon) >>------(loop)------<< 07:35:16 <CakeProphet> the arrow on the far right moves diagonally up-right 07:35:32 <CakeProphet> the loop is broken, which causes 07:35:42 <CakeProphet> (Cannon) >>--------(projectile)----------- 07:35:47 <itidus21> right 07:36:05 <CakeProphet> right, so everytime a loop is broken a potential capture is possible. 07:36:30 <CakeProphet> making loops a situation where the person controlling the loop has a huge advantage. 07:36:58 <itidus21> (Cannon) >>------(loop)------<< (bob) 07:37:03 <CakeProphet> because there's I think 12 options even in that simple case. 07:37:06 <CakeProphet> of where the projectile can go. 07:37:09 <itidus21> (Cannon) >>--------(projectile)---------(bob captured)--- 07:37:12 <CakeProphet> yes. 07:37:32 <CakeProphet> no there's 10 07:37:34 <CakeProphet> 10 options 07:37:50 <CakeProphet> the two options that are removed the ones that form the loop 07:37:56 <CakeProphet> +are 07:38:13 <CakeProphet> that's a lot of different ways for things to potentially be captured, and the opponent can only react to one. 07:38:29 <CakeProphet> unless 07:38:43 <CakeProphet> they can, in their turn, break the loop via portal. which is not possible in the bidirectional case. 07:39:08 <CakeProphet> hmmmm, maybe it should be. otherwise that very very easy to setup loop could not be easily handled. 07:39:43 <itidus21> maybe you can declare a loop direction on creation of a loop 07:39:43 <CakeProphet> WHAT SAYETH? 07:39:50 <CakeProphet> no... that's not how it works. 07:39:55 <itidus21> ok :P 07:40:00 <CakeProphet> the projectile moves back and forth. it's bidirectional 07:40:23 <CakeProphet> a unidirectional loop moves in a circle thanks to portals or very unlikely arrow situations 07:40:35 <CakeProphet> >>-----V 07:40:35 <itidus21> ahhhhhh i see 07:40:38 <CakeProphet> ^-----^ 07:40:40 <CakeProphet> or whatever 07:40:46 <CakeProphet> very unlikely with arrows 07:41:06 <CakeProphet> but more likely with portals. two portals + 1 arrow = L-shaped loop with a single direction of travel. 07:41:31 <CakeProphet> well there's also a line-based version. 07:41:45 <CakeProphet> ()-------<<------() 07:41:48 <CakeProphet> the ()'s are portals 07:42:03 <CakeProphet> the cannon is perpendicular to the arrow and fires. 07:42:51 <CakeProphet> the L-shaped loops is similar but with the portals not on the same rank/file 07:43:07 <itidus21> ╔═►═╗ 07:43:11 <itidus21> ▲ ▼ 07:43:12 <itidus21> ╚═◄═╝ 07:43:15 <CakeProphet> yep. 07:43:22 <itidus21> i know thats not how it works but it looks cool 07:43:30 <CakeProphet> that's the 4-arrow loop 07:43:45 <CakeProphet> the only loop that consists entirely of arrows and is also unidirectional. 07:43:58 <itidus21> i realize in practice those arrows would be on the corners but artistic license 07:44:03 <CakeProphet> it is owned by both players. Hilarity ensues. 07:44:32 -!- zzo38 has quit (Remote host closed the connection). 07:44:44 <CakeProphet> basically you would not want to be the person to form this loop as it gives your opponent license to redirect the loop as he pleases. 07:45:14 <CakeProphet> UNLESS you can somehow make it so that any possible breaking of the loop causes the opponent to lose a piece 07:45:21 <CakeProphet> but that's even more unlikely than forming the loop itself. 07:45:34 <itidus21> hmm 07:45:42 <itidus21> ok heres a random idea 07:45:52 -!- kmc has quit (Ping timeout: 260 seconds). 07:46:08 <CakeProphet> okay so for the sake of balance I think bidirectional loops can always be broken by an intervening portal. 07:46:11 <itidus21> you could say that you can only control the loop if your opponent has no pieces adjacent to it.. or that might be going a bit far 07:46:24 <CakeProphet> uh, that's not how it works. 07:46:25 <itidus21> or it could be if you have more pieces adjacent 07:46:31 <CakeProphet> the loop is the result of an arrangement of pieces 07:46:38 <CakeProphet> re-arranging those pieces should logically alter it. 07:47:15 <CakeProphet> there's no balance issues with the loop rules as far as I can tell. 07:47:22 <itidus21> yeah.. you can imagine how fucked up a chess variant would be if i produced it 07:47:41 <CakeProphet> they're expensive in time to set up and allow for a wide-number of neat possibilities. all positive things in my opinion. 07:47:57 <CakeProphet> to prevent them from being unbalanced and not fun. 07:48:27 <CakeProphet> I /could/ make the bidirectional portal break thing-a-ma-jig a coin flip... 07:48:43 <CakeProphet> the ONLY element of chance in the entire game. 07:49:03 -!- kmc has joined. 07:49:17 <CakeProphet> but no I think a ortal should be able to break a bidirectional loop always because they're the most trivial to set up and are still very nasty for the opponent who isn't in control of it. 07:49:58 <itidus21> nothing drives me more crazy about game design than knowing that victory is usually the result of opponent error 07:50:28 <itidus21> and that where victory is not the result of opponent error it is the result of inherent advantage to one player 07:50:47 <itidus21> and where those aren't the case it could be pure luck 07:51:13 <CakeProphet> yes those are generally the three cases. 07:51:15 <itidus21> but still.. that is an extreme and unrealistic way of looking at it i have 07:51:23 <CakeProphet> here's an interesting case 07:51:32 <CakeProphet> >>----()()----<< 07:51:52 <CakeProphet> also bidirectional 07:52:27 <CakeProphet> >>----() ()----<< 07:52:32 <CakeProphet> or any equivalent arrangement 07:52:41 <itidus21> but what i described is not really the case. and that is where i draw hope from 07:52:48 <itidus21> its an oversimplifcation i made 07:52:58 <CakeProphet> well no if you look at game theory that's pretty much true I believe. 07:53:18 <itidus21> `log nash 07:53:21 <HackEgo> 2009-11-08.txt:15:52:22: <Gregor> Observation: gnash actually ... like ... works 'n stuff. 07:53:29 <itidus21> `log \bnash\b 07:53:33 <HackEgo> 2011-09-18.txt:07:53:18: <itidus21> `log nash 07:53:36 <itidus21> `log \bnash\b 07:53:40 <HackEgo> 2011-08-16.txt:03:18:46: <HackEgo> 362) <monqy> I've only watched bad movies about video game. I enjoyed every second of it. \ 536) <itidus20> Game theory is not a perfect tool for analyzing video games. <itidus20> Nash failed to create a "video game theory" 07:53:47 <CakeProphet> there are so called perfect games in which one player can always win. 07:53:55 <itidus21> my quote is not necessarily true.. 07:54:08 <itidus21> but theres proof that it is something that plagues me :D 07:54:09 <CakeProphet> the only case you didn't mention is an impartial game where stalemate is possible if no one makes an error. 07:54:17 -!- Patashu has quit (Ping timeout: 252 seconds). 07:55:42 <CakeProphet> the majority of competitive video games have some degree of chance. 07:56:07 <CakeProphet> I think even a game like starcraft 2 has elements of chance. 07:56:28 <itidus21> in the end i guess it's that it's not who wins 07:57:13 <CakeProphet> ah wait no the element of chance I thought existed in starcraft actually does not. 07:57:33 <CakeProphet> I thought the damage calculations were semi-random but they have definite values. 07:57:55 <itidus21> i rant about my ideas a lot 07:58:00 <CakeProphet> I see. 07:58:00 <itidus21> `log test of reflexes 07:58:03 <HackEgo> 2011-09-18.txt:07:58:00: <itidus21> `log test of reflexes 07:58:08 <itidus21> `log test of reflexes 07:58:11 <HackEgo> 2011-09-18.txt:07:58:03: <HackEgo> 2011-09-18.txt:07:58:00: <itidus21> `log test of reflexes 07:58:16 <itidus21> hmm 07:58:23 <itidus21> `log test of 07:58:26 <HackEgo> 2010-04-24.txt:02:02:09: <oklopod> i think i uploaded the most recentest of changes 07:58:29 -!- ais523 has quit (Remote host closed the connection). 07:58:31 <itidus21> `log test of 07:58:34 <HackEgo> 2009-01-08.txt:17:08:12: <fungot> fizzie: they are not the brightest of bots 07:58:40 <itidus21> ha ha ha haha ha 07:58:43 -!- pikhq_ has joined. 07:58:52 <itidus21> sorry 07:58:55 -!- pikhq has quit (Ping timeout: 260 seconds). 07:59:04 <itidus21> i gotta chill out more effectively 08:00:22 <itidus21> don't be afraid to tell me off.. i have some bad chat habits. 08:00:42 <itidus21> im basically not much of a contributer 08:01:05 <itidus21> now ill see if i can get your topic back after i broke it 08:01:47 <itidus21> ok so 08:01:58 <itidus21> a normal piece can be captured by the missile right? 08:02:28 <CakeProphet> any piece that doesn't interact with projectiles, yes. 08:02:36 <itidus21> a cannon can be captured. a missile can be captured. 08:02:43 <CakeProphet> missiles are not pieces anymore 08:02:47 <itidus21> ahh 08:02:56 <CakeProphet> cannons fire missiles, which are kind of just abstract rule-things. 08:04:05 <itidus21> so... there is an interesting case 08:04:33 <itidus21> (cannon) >>------(loop)------(portal-a) (portal-b)------(loop)-------<< 08:04:59 <itidus21> thats exactly what you said isnt it 08:05:22 <itidus21> thats another of my bad chat habits .. repeating peoples text back at them 08:05:40 <CakeProphet> yeah that's a case I already covered. 08:05:55 <CakeProphet> it's just a more interesting case of the basic bidirectional one 08:06:05 <CakeProphet> because it can exist on two seperate locations. 08:06:11 <CakeProphet> also I haven't considered cases involving four portals. 08:06:14 <itidus21> "<CakeProphet> here's an interesting case <CakeProphet> >>----()()----<<" 08:06:38 <itidus21> i practically copied your post word for word.. 08:06:40 <CakeProphet> because as far as the projectile rules are considered opponent arrows and portals are fair game. 08:06:55 <CakeProphet> so there are 4 portals and 4 arrows total on the board, if none have been captured. 08:07:20 <itidus21> it's interesting because it represents the situation of whether a portal is in a loops path before the loop is created 08:07:36 <CakeProphet> well not exactly 08:07:51 <CakeProphet> it's not possible to place both portals into a loop unless you have a secondary loop to pass it off to. 08:07:51 <itidus21> hmm 08:08:18 <CakeProphet> placing one portal into >-----< just breaks the loop, sends the projectile somewhere else. 08:08:34 <CakeProphet> which could be a new loop, sure. 08:08:41 <itidus21> oops i mean 08:08:43 <CakeProphet> maybe I don't understand what you're getting at. 08:09:08 <itidus21> in order to have >>----() ()----<< .. it means that a portal is in the loops path before the loop is created 08:09:23 <CakeProphet> yes 08:10:03 <itidus21> there is another way it could be done 08:10:10 <CakeProphet> (A)------(b) (B)--<<--(a) here's a fun and unlikely case 08:10:16 <CakeProphet> also you could have..... 08:10:31 <itidus21> if you pushed an arrow into the loop the loop would be cut short 08:10:37 <CakeProphet> (A)------(b) (B)-----<< 08:10:41 <itidus21> then you could insert a portal 08:10:41 <CakeProphet> followed by 08:10:47 <itidus21> and remove the arrow 08:10:53 <CakeProphet> (A)------(b) (B)----(a)----<< 08:11:06 <CakeProphet> er wait... 08:11:11 <itidus21> hnn.. what does upper case mean? 08:11:13 <CakeProphet> that case is not possible I messed that up. 08:11:21 <CakeProphet> upper case is one players portals, lower case is the others. 08:11:31 <CakeProphet> yeah there is no 4-portal case unless arrows are involved 08:12:22 <itidus21> 1) >>-----------<< 2) >>------<< << 3) >>------<<() << 4) >>-------() << 08:12:43 <itidus21> oh thats the same problem.. 08:12:44 <itidus21> i see 08:12:46 <CakeProphet> in those cases a loop breaks and a new one is formed. 08:12:56 <itidus21> (2) is wrong 08:12:57 <CakeProphet> ...in the event that you break the loop 08:13:04 <CakeProphet> well two is an entirely possible setup. 08:13:33 <itidus21> oh uhhh no no 2 is correct because the loop would ultimately be shrunk that way 08:13:52 <CakeProphet> an interesting case where a loop breaks and no projectile-flies-off-the-board capturing occurs. 08:13:53 <itidus21> oops 08:14:07 <CakeProphet> because it gets caught in a second loop. 08:14:08 <itidus21> 1) >>-----------<< 2) >>------<< << 3) >>------<<() << 4) >>-------() << ()------<< 08:14:15 <CakeProphet> ultimately these loop scenarios are highly contrived and unlikely. 08:14:18 <CakeProphet> but still possible. 08:14:34 <CakeProphet> so the rules need to be clear on them. 08:14:57 <CakeProphet> yes nothing new is happening in these examples. 08:15:05 <itidus21> so i am just pointing out that if loops capture portals theres still ways to use them 08:15:18 <CakeProphet> I'm looking for cases I haven't considered with possibly ambiguous rules. 08:15:30 <CakeProphet> ...oh, well sure. 08:15:39 <CakeProphet> the main use for capturing a loop with a portal would be to capture something on the other end. 08:15:47 <CakeProphet> a loop is just a capture waiting to happen. 08:16:09 <itidus21> does a loop end with a capture? 08:16:42 <CakeProphet> do you mean does a capture break the loop? yes. 08:16:53 <CakeProphet> do you mean do all loops conclude with a capture inevitably? no. 08:17:24 <CakeProphet> in the basic rules if a projectile captures something the path of the projectile is stopped. 08:17:41 <CakeProphet> same rule applies for loops as they're essentially projectiles that have been sustained across multiple turns. 08:18:04 <monqy> I haven't been paying attention how do you represent active loops 08:18:51 <monqy> also what happens if the opponent fires a projectile into an active loop 08:19:02 <monqy> mutual annihilation? 08:19:08 -!- SgeoN1 has quit (Quit: Bye). 08:19:55 <CakeProphet> monqy: yes 08:20:21 <CakeProphet> also, you declare that a loop exists and if requests by your opponent disambiguate the nature of the loop 08:20:29 <CakeProphet> in most situations there's probably only one loop that's possible though. 08:20:44 <CakeProphet> and... you just keep a mental note of it. there is no on-board representation. 08:20:47 <monqy> oh 08:21:01 <monqy> hidden state is messy 08:21:10 <monqy> especially in things like this 08:21:13 -!- augur has quit (Remote host closed the connection). 08:21:22 <CakeProphet> it's just a consequence of the projectile, which is a hidden state itself. 08:21:28 <itidus21> it might be possible to represent a loop with an object on the loops path 08:21:40 <CakeProphet> sure but it's not really necessary. 08:21:43 <itidus21> nah forget that 08:21:44 <CakeProphet> optional rule. 08:21:49 <itidus21> im silly. 08:22:03 <monqy> CakeProphet: but projectiles normally don't persist, so they aren't problematic 08:22:07 <CakeProphet> I find it quite easy to picture evil death walls. 08:22:19 <CakeProphet> monqy: right, even when they do persist they remain in a stable circuit until broken. 08:22:42 <monqy> but how do you know when the circuit is active or inactive (your own memory and the memory of your opponent that's what) 08:22:46 <CakeProphet> also directionality can be inferred from arrows along the loop so that's not a problem either. 08:23:17 <CakeProphet> monqy: when someone declares a loop it's active, meaning that he spent his turn to fire a cannon into a loop, thus activating it 08:23:25 <CakeProphet> it remains so until broken. 08:23:34 <itidus21> if you really wanted you could have a second board which shows the loops :D 08:23:41 <monqy> CakeProphet: that isn't my problem 08:23:50 <CakeProphet> which occurs as the result of a re-arrangement of the loop components or obstruction by something else. 08:23:51 <monqy> CakeProphet: my problem is with loops persisting without indication 08:24:08 <CakeProphet> the loop declaration is the indication. 08:24:17 <itidus21> if you really wanted you could have a second board which shows the loops :D = the monqy board 08:24:19 <monqy> and then you just remember it 08:24:24 <CakeProphet> yes. 08:24:27 <CakeProphet> it's not difficult. 08:24:28 <monqy> hidden state 08:24:33 <monqy> the Worst Thing 08:24:37 <monqy> go back to perl 08:24:39 <monqy> ;_; 08:24:41 <itidus21> lol 08:24:47 <CakeProphet> also when you move a pawn two squares forward in regular chess 08:24:59 <CakeProphet> you have to remember that it can be captured on the space it would have been had it moved one space. 08:25:08 <CakeProphet> *been at 08:25:09 <monqy> what 08:25:19 <monqy> that's not remembering 08:25:23 <CakeProphet> http://en.wikipedia.org/wiki/En_passant 08:25:28 <CakeProphet> sure it is. 08:25:34 <itidus21> you could use bits of string on the board even ^^; 08:25:48 <CakeProphet> what if the pawn had moved one square, and then one square a second turn? 08:25:55 <CakeProphet> the rule doesn't apply even though the board is in the same state physically. 08:25:57 <monqy> oh multiple turns i forgot about that. 08:26:03 <monqy> yuck chess is disgusting ;_; 08:26:39 <itidus21> the state doesn't have to be hidden.. its just that representing it requies a kludge or 2 08:26:42 <CakeProphet> oh, btw, "hidden state woooooo" is not a design philosophy of perl. 08:26:49 <monqy> i know 08:26:56 <monqy> they're related by being gross 08:27:17 <itidus21> the irony of perl is that it's not meant to be an esolang 08:27:29 <CakeProphet> in any case it's not an issue as loops are in practice very short lived entities. 08:27:30 <itidus21> i don't know perl so empty words from me 08:27:41 -!- zake has joined. 08:27:46 <monqy> CakeProphet: hahaha good luck making them short-lived 08:27:51 -!- zake has quit (Client Quit). 08:27:53 <CakeProphet> monqy: ??? 08:28:01 <monqy> CakeProphet: nobody will want to enter them 08:28:16 <monqy> they'll persist for turns at least 08:28:20 <itidus21> CakeProphet: bits of string could do it.. as could a second board.. it's not really insurmountable 08:28:22 <CakeProphet> protal chsse 101 08:28:26 <CakeProphet> how to break a loop 08:28:35 <CakeProphet> 1) >>-------<< 08:28:41 <CakeProphet> 2) >>-----^ 08:28:41 <monqy> what is this notation 08:28:55 <CakeProphet> >> and ^ are arrows the direction of the symbol indicates the direction of the arrow 08:29:03 <CakeProphet> ------ is a projectile path (aka the loop) 08:29:15 <itidus21> (>>)/(<<)/(^)(v) = (arrow piece) 08:29:17 <CakeProphet> on one row/file/diagonal. it's a 1d view of the board 08:29:32 <CakeProphet> I am constrained by IRC 08:29:40 <monqy> use a paste bin 08:29:58 <CakeProphet> okay basically all you have to do is change the direction of an arrow and the loop will break. 08:30:05 <CakeProphet> change the state of any of the loops components and it breaks. 08:30:13 <monqy> and how do you change the direction of someone else's arrow 08:30:17 <CakeProphet> put a portal which can redirect the loop into the loop and it breaks. 08:30:23 <CakeProphet> .....you don't. it's yours. 08:30:26 <CakeProphet> you have two arrows. 08:30:58 <itidus21> ►═══▼ 08:31:00 <CakeProphet> there are several ways to break loops. in many cases it will be advantageous to break an arrow as it captures something. 08:31:01 <monqy> why would you break your own loop if not for the enemy falling into range of one of its constituent arrows 08:31:01 <itidus21> ║ ║ 08:31:03 <itidus21> ▲═══◄ 08:31:04 <CakeProphet> ... 08:31:08 <CakeProphet> you don't understand at all. 08:31:30 <CakeProphet> breaking a loop essentially allows you to capture something by /turning an arrow in a direction/ 08:31:36 <monqy> yes I know 08:31:56 <monqy> because someone will put definitely something in that direction 08:32:13 <CakeProphet> there are 10 of them in the most basic loop you can make. 08:32:15 <CakeProphet> 10 paths 08:32:18 <CakeProphet> the loop can break. 08:32:24 <itidus21> ►═════▼ 08:32:29 <itidus21> ║ ║ 08:32:30 <itidus21> ▲═) (═◄ 08:33:05 <CakeProphet> and even, as you say, "no one will want to break their own loop", the opponent can still place a portal into the loop to redirect it. 08:33:23 <CakeProphet> (which is, consequently, even more reason for the loop-maker to want to break their own loop, otherwise they give their opponent a free projectile) 08:33:25 <monqy> people will want to break their own loops 08:33:29 <CakeProphet> yes. 08:33:30 <monqy> did you reade the "unless" clause 08:33:38 <monqy> I mean "if not" 08:33:53 <monqy> and the "why would you" not "nobody will ever" 08:33:57 <monqy> but whatever 08:34:01 <CakeProphet> hmmm? 08:34:36 <CakeProphet> ah my mistake. 08:34:44 <CakeProphet> "nobody will want to enter them" 08:34:48 <CakeProphet> the dangers of paraphrasing. 08:34:51 <CakeProphet> still all of my points are valid. 08:34:57 <monqy> what points 08:35:09 <monqy> you're assuming people will walk into deathtraps 08:35:15 <monqy> i.e. into range of the arrows 08:35:28 <CakeProphet> that loops are systematically short-lived entities as a result of their purposes and the ability to be "stolen" from you 08:35:55 <monqy> what purposes 08:36:00 <monqy> by stolen do you mean via portals 08:36:12 <CakeProphet> to allow 10 or more possible paths of capture at the same time 08:36:13 <CakeProphet> and yes. 08:36:21 -!- Vorpal has joined. 08:36:33 <CakeProphet> sure they could be defensive as well, but again there's the case where a portal can redirect it 08:36:38 <CakeProphet> so you wouldn't want it to stay around long 08:36:45 <CakeProphet> a few turns is not a long time to remember the existence of a portal. 08:36:49 <CakeProphet> it's not an issue. 08:36:58 <CakeProphet> s/portal/loop/ 08:37:42 <monqy> 1) yes it is (2) elegance suffers greatly and i will hate it forever (3) how would you use them offensively, positioning and firing and all 08:37:51 <monqy> they seem like a pretty defensive thing to me 08:38:17 <monqy> and offensive when broken because you forced the enemy to move into range 08:38:32 <monqy> or the enemy is being stupid or using a pawn to break it intentionally 08:38:38 <CakeProphet> they're both. but being able to fire a projectile at will from any of the components is a major perk of breaking them. 08:38:47 <CakeProphet> yes, no one will walk into a death trap. 08:38:49 <monqy> but i guess using a pawn isn't fulfulling much of its purpose my train of thought kind of derailed there 08:39:41 <CakeProphet> also there are only 4 arrows at any given time 08:39:49 <CakeProphet> it's not like the board is going to be littered with loops to keep track of. 08:40:10 <monqy> it seems a lot more like a tool for restricting movement than killing 08:40:17 <itidus21> also.. how many players do you think is optimal for this game? 08:40:25 <itidus21> is this a 4 player jubilee? 08:40:28 <CakeProphet> ....2 08:40:32 <itidus21> hehe 08:40:35 <CakeProphet> it's on a chess board. 08:40:39 <monqy> also also 08:41:02 <monqy> in loop case 1... >>-----<<...positioning a portal in there...what happens 08:41:03 <itidus21> d&d Also? 08:41:07 <CakeProphet> it is very much a tool for killing. 08:41:13 <monqy> does it both do the redirection and get destroyed? 08:41:13 <itidus21> ignore that comment 08:41:26 <CakeProphet> monqy: portal redirects it. I considered that case and decided for balance reasons that was the best choice. 08:41:34 <CakeProphet> but there are two variant rules you could play. 08:41:36 <monqy> also what happens when you put your own pieces in a loop. destruction? 08:41:42 <CakeProphet> yes. 08:41:47 <CakeProphet> projectiles are friendly-fire always. 08:42:02 <CakeProphet> with the exception of arrows, prisms, and portals facing the right direction. 08:42:19 <CakeProphet> (also need to clarify prism-based loops as they're kind of tricky) 08:43:19 <CakeProphet> ...actually a prism based loop with arrows is impossible 08:43:33 <monqy> oh? 08:43:51 <CakeProphet> the prism, by the way, is the queen piece. it's an arrow without a direction, basically. the player is free to choose a path. also once a projectile passes through a prism is destroys arrows in its path. 08:44:09 <monqy> what 08:44:12 <CakeProphet> ? 08:44:18 <monqy> destroys arrows in its path 08:44:18 <monqy> why 08:44:24 <CakeProphet> to allow that to be possible. 08:44:32 <CakeProphet> as otherwise arrows are kind of difficult to capture and can just roam around easily. 08:44:47 -!- FireFly has joined. 08:44:58 <itidus21> CakeProphet: when i was reading about 2L there was a thing which redirects dependant on incoming direction 08:45:00 <CakeProphet> arrows are highly useful as well, which compounds the issue of them being difficult to capture. 08:45:25 <CakeProphet> so far it's the best idea for a queen piece I have. it might change but I like it. 08:45:53 <CakeProphet> if I allowed prisms to destroy portals as well then I could avoid clarifying prism-based loops entirely. :P 08:45:57 <CakeProphet> but I'm not sure I want to do that. 08:46:39 <CakeProphet> monqy: oh also prisms can capture, but have restricted movement (currently 2 squares no hoping) 08:47:12 <CakeProphet> but I might increase their movement capabilities since they're one of the few pieces that are effective at non-projectile captures. 08:47:20 -!- augur has joined. 08:48:20 <CakeProphet> hmmm, actually no 08:48:29 <CakeProphet> I'll make prism movement/capturing a combination of knight and king. 08:48:33 <CakeProphet> I like that better. 08:48:39 <monqy> what do you mean by that 08:48:53 <CakeProphet> ....it can move and capture like knights and kings can in chess... 08:48:58 <CakeProphet> either way. 08:49:04 <CakeProphet> very simple. 08:49:05 <CakeProphet> to grasp... 08:49:41 <monqy> oh so you choose between them? 08:49:44 <CakeProphet> yes. 08:49:48 <monqy> ok 08:49:55 <CakeProphet> ah I see the confusion. 08:50:08 <CakeProphet> anyways what do you think about these prisms? 08:50:31 <CakeProphet> I basically used as a convenient to close some issues concerning arrow capture. 08:50:39 <CakeProphet> s/used/used them/ 08:50:44 <CakeProphet> s/convenient/convenient way/ 08:51:27 <CakeProphet> prisms only have that effect on friendly fire, btw. 08:51:30 <CakeProphet> they are not like arrows. 08:51:34 <CakeProphet> this makes them more vulnerable. 08:51:57 <CakeProphet> ew gross special case, etc. 08:52:33 <monqy> i wis this game was ~elegant~ 08:52:36 <monqy> wish 08:52:53 <CakeProphet> "all pieces are parenthetical lists" 08:53:09 <CakeProphet> question: what makes something elegant? 08:53:30 <monqy> me saying it's elegant (thumbs up) 08:54:12 <CakeProphet> but anyways if you can think of something better for the queen let me know. 08:54:28 <CakeProphet> but it gives it queen-like attributes while allowing arrow capture so I think it's pretty solid. 08:54:55 <monqy> queeen like attributes like what 08:55:14 <CakeProphet> being powerful offensively but weak defensively. 08:55:19 <CakeProphet> er, no 08:55:26 <CakeProphet> that's not what it does. 08:55:28 <monqy> it's pretty defensively powerful 08:55:30 <monqy> it has knight moves 08:55:48 <monqy> though the queen can escape from a bunch of things as well 08:55:57 <CakeProphet> it is still vulnerable compared to arrows 08:56:10 <monqy> arrows are weird 08:56:12 <CakeProphet> so it's not something you'd use 08:56:16 <CakeProphet> like 08:56:19 <CakeProphet> at the beginning of the game 08:56:25 <itidus21> My scouter indicates the prism has a power level over 9000. 08:56:34 <CakeProphet> because then every arrow decides to point at it, and it must flee. 08:56:53 <CakeProphet> monqy: arrows are awesome. 08:57:07 <CakeProphet> arrows are definitely all-around amazing defensive/offense. 08:57:58 <CakeProphet> provided they have cannons... 08:59:06 <CakeProphet> arrows are probably better defense than offense though, I think. 08:59:28 <CakeProphet> as they can "block" cannon fire. 09:00:02 <CakeProphet> from multiple sources. 09:00:15 <CakeProphet> portals can only block from one direction at a time. 09:00:23 <Vorpal> which game are you discussing? 09:00:33 <CakeProphet> a chess variant I created. 09:00:36 <Vorpal> ah 09:00:46 <CakeProphet> it's like... laser chess with portals. 09:00:51 <Vorpal> whoa 09:00:59 <Vorpal> CakeProphet, are there pirates and ninjas too? 09:01:08 <CakeProphet> unfortunately no. 09:01:10 <Vorpal> aww 09:01:14 <monqy> what if instead of special cases you had pirates and ninjas 09:01:18 <monqy> i would be less angry 09:01:19 <CakeProphet> ...no 09:01:22 <CakeProphet> there are no special cases. 09:01:23 <CakeProphet> just rules. 09:01:30 <monqy> how about the hidden state then 09:01:36 <CakeProphet> that's not a special case of anything. 09:01:39 <CakeProphet> that's just a rule. 09:01:46 <Vorpal> CakeProphet, so you removed en passant (nfc about spelling) 09:01:46 <monqy> i didn't say it was a special case 09:01:51 <CakeProphet> the distinction is completely pointless in a board game. 09:01:55 <Vorpal> that is a special case in normal chess IMO 09:02:12 <CakeProphet> Vorpal: actually haven't decided. pawns work like chess pawns but I dunno if they should have en passant. 09:02:22 <monqy> use checkerspieces or coins to mark active loops 09:02:38 <CakeProphet> monqy: put a coin under each active component? 09:02:57 <itidus21> is it legal to sell money? 09:02:59 <Vorpal> CakeProphet, how are the lasers used? As weapons? 09:03:06 <CakeProphet> yes they're the primary means of capture. 09:03:14 <monqy> CakeProphet: as long as it makes the state explicit and works in all cases, sure 09:03:24 <Vorpal> if so you need hitpoints 09:03:25 <itidus21> eg... if you sell a toy with actual legal tender in the packaging. is that legal? 09:03:30 <CakeProphet> the rooks are cannons. the upside-down rook can fire a projectile in any diagonal direction. right-side up rook is the same but cardinal. 09:03:36 <itidus21> lol 09:03:50 <Vorpal> CakeProphet, heh 09:03:55 <itidus21> probably would attract many thiefs 09:04:11 <CakeProphet> a projectile will capture anything in its path up to the first thing it captures. 09:04:14 <CakeProphet> ... 09:04:19 <CakeProphet> a weird way to word it I know. 09:04:27 <Vorpal> CakeProphet, projectile? Doesn't sound like a laser 09:04:38 <CakeProphet> it's... well it doesn't really matter how you view it. 09:04:52 <CakeProphet> it's an abstract path like thing 09:04:57 <Vorpal> CakeProphet, anyway grenades. 09:05:00 <Vorpal> laser grenades! 09:05:00 <CakeProphet> with a direction. 09:05:04 <Vorpal> (no clue how that would work) 09:05:21 <CakeProphet> Vorpal: I'm afraid I already have most of the rules solidified minus some minor future revision perhaps. 09:05:24 <CakeProphet> need to playtest. 09:05:26 <Vorpal> ah 09:05:52 <monqy> remove en passant and i'll be hapey 09:05:56 <Vorpal> CakeProphet, random idea: zombie chess 09:06:07 <monqy> I've never liked castling being a thing either 09:06:12 <CakeProphet> so yeah an interesting thing is that you portals. the knights. the direction of their nose indicates the opening of the portal 09:06:21 <CakeProphet> monqy: castling is no longer thing. I'll remove en passant sure. 09:06:27 <monqy> hurrey 09:06:30 <CakeProphet> maybe even the 2-square pawn thing. 09:06:36 <monqy> sure 09:06:46 <monqy> I don't care as much about that though 09:06:48 <itidus21> what about piece promotion? :D can more cool items be made? silly question i know 09:07:02 <CakeProphet> itidus21: no, no, and yes. 09:07:14 <CakeProphet> Vorpal: I think there are chess variants with zombie pieces. 09:07:17 <Vorpal> XD 09:07:24 <Vorpal> well, bbl, need to leave for a while 09:07:27 <CakeProphet> Vorpal: http://www.chessvariants.com/other.dir/nemoroth.html 09:07:28 <CakeProphet> ah okay. 09:07:34 -!- Taneb has joined. 09:07:41 <CakeProphet> when pawns (humans) go to the end of the board they're promoted to zombies. 09:07:42 <itidus21> vorpal would probably like my lowbrow style of chess variation 09:07:46 <Taneb> Hello! 09:07:53 <CakeProphet> Taneb: heyo 09:08:06 <CakeProphet> monqy: you're just jealous because my special cases make the game awesome in all ways. 09:08:12 <monqy> ;_; 09:08:12 <CakeProphet> nyah!!! :P 09:08:23 <monqy> also hidden state ;________; 09:08:45 <CakeProphet> more like "state that is verbally declared and just needs to be remembered" 09:08:50 <CakeProphet> might be a problematic rule for goldfishes. 09:08:57 <Taneb> FUNCTIONAL PYTHON <- awful idea? amazing idea? YOU DECIDE 09:09:02 <itidus21> thats a false myth 09:09:20 <itidus21> mythbusters proved goldfish have good memory 09:09:32 <Taneb> CakeProphet: itidus21: there's one of those "hidden" states in regular chess 09:09:33 <itidus21> but maybe theres multiple kinds of memory 09:09:33 <CakeProphet> fine. snakes. insects. anything. 09:09:41 <Taneb> "Has this king moved yet?" 09:09:44 <itidus21> he taught a goldfish to run an obstacle course 09:09:53 <CakeProphet> Taneb: we also determined en passant was similar. 09:09:56 <itidus21> so maybe its not so much memory as conditioning 09:09:59 <itidus21> but whatever 09:10:32 <Taneb> Similar to Functional Python, or similar to deciding whether the king has moved yet? 09:10:36 <CakeProphet> but honestly if you can't remember where a loop is you probably should accidentally walk into it. 09:10:39 <Taneb> Because it's neither really 09:11:04 <itidus21> CakeProphet: that is a possible design decision :) 09:11:05 <CakeProphet> and probably shouldn't be playing a game that's played with chess pieces and involves redirecting projectiles across the board. 09:11:09 <monqy> if you can't remember if you've allocated/freed the memory........ 09:11:23 <CakeProphet> *imaginary projectiles 09:11:31 <monqy> or what your values are 09:11:46 <monqy> because your varaibales are mutable and there's manaul memroy memanagement with poeinters 09:11:51 <CakeProphet> speaking of which I have a feeling portal chess AI is very difficult. 09:11:58 <Taneb> I am implementing one of DMM's sorting algorithms in Python! 09:12:01 <monqy> because you're using c or something 09:12:17 -!- Vorpal has quit (Ping timeout: 248 seconds). 09:12:17 <CakeProphet> Taneb: I occasionally use functional style in Python, but the syntax is very limiting. 09:12:23 <CakeProphet> also no tail call optimization. 09:12:32 <monqy> i guess perl has the mutable variables but most of its inelegance is in other areas??? 09:12:48 <CakeProphet> monqy: perl is beautiful if not elegant. 09:12:48 <Taneb> I meant an entirely functional version of python 09:12:55 <CakeProphet> oh well that's just weird. 09:12:55 <monqy> oh? 09:12:56 <CakeProphet> weirdo. 09:13:00 <Jafet> Python is dysfunctional by design 09:13:04 <monqy> TCO is Unpythonic -- master guido 09:13:08 <CakeProphet> monqy: er, not saying perl is elegant. 09:13:13 <Jafet> Anyone who tries to fix this will face the wrath of guido 09:13:17 <itidus21> `log unpythonic 09:13:21 <HackEgo> 2007-07-03.txt:20:27:55: <lament> bsmntbombdood: so? this is still unpythonic. Besides, it's clearly not the only stdout, otherwise you wouldn't need that __stdout__ thing. 09:13:28 <itidus21> ok 09:13:34 <CakeProphet> monqy: I meant "perl is beautiful, but definitely not elegant" 09:13:40 <monqy> ah 09:13:48 <itidus21> so the word is common 09:13:59 <CakeProphet> yes pythonic is a term invented by pythonistas 09:14:02 <monqy> a beautiful trainwreck 09:14:03 <CakeProphet> which is another term invented by pythonistas. 09:14:21 <CakeProphet> pythonistas are lame. 09:14:26 <Taneb> I call them pyfaces 09:14:40 <CakeProphet> itidus21: if you want to get banned from a channel right now 09:14:48 <CakeProphet> join #python, type "lol", press enter. 09:14:53 <monqy> I haven't called them anything consistently, but I've probably parroted "pythonistas" once or twice 09:15:05 <itidus21> i've been banned from 2 recently 09:15:05 <CakeProphet> monqy is a good parrot. 09:15:08 -!- Nisstyre has quit (Ping timeout: 260 seconds). 09:15:38 <itidus21> ##c-basic because of bad connection, and efnet #xna for being off topic and ranting 09:16:33 <CakeProphet> if you need any evidence that Python users are style fascists, the "no lol" rule is it. 09:16:44 <itidus21> ok here goes 09:16:55 * itidus21 rubs hands together 09:17:11 <Jafet> They can't possibly ban everyone that says lol, I think 09:17:22 <Jafet> The channel ban list would overflow 09:17:30 <CakeProphet> they do. 09:17:39 <Jafet> Probably temporary bans 09:17:46 <CakeProphet> most likely. 09:17:54 <Jafet> Go in there every day and lol until you get permanently banned 09:18:02 <CakeProphet> otherwise they'd ban some long-time visitors that accidentally say it. 09:18:10 <Jafet> Automate it. 09:18:13 <CakeProphet> Jafet: no I occasionally ask #python questions 09:18:16 <CakeProphet> and occasionally get good answers! 09:18:42 <itidus21> i left after taunting the quiet room 09:18:55 <monqy> what did you say 09:18:59 <itidus21> don't really want to be banned bad enough to wait 09:19:13 <itidus21> i said <itidus21> lol <itidus21> more euler problems needed 09:19:22 <monqy> banned from life 09:19:23 <CakeProphet> don't really want to wait bad enough to be banned. 09:19:40 <CakeProphet> itidus21: they can still ban you even if you're not there you know. 09:19:50 <itidus21> well i kinda assumed i would be banned when i did that 09:20:07 <CakeProphet> they should have a nololbot 09:20:33 <monqy> that reminds me of the #jesus bot 09:20:40 <monqy> with the broken bad words filter 09:21:52 -!- Taneb has quit (Read error: Connection reset by peer). 09:22:12 <CakeProphet> monqy: did it need moar \b? 09:22:44 <monqy> it banned when you said "ands" or "an s" 09:22:51 <CakeProphet> wat 09:22:57 <monqy> "ants" was special-cased not to ban 09:23:10 <CakeProphet> why those phrases. 09:23:17 <monqy> it was meant to ban on "anus", the baddest word, but I guess "anvs" is bad too 09:23:26 <monqy> anqs 09:23:28 <CakeProphet> wow like.... 09:23:35 <CakeProphet> how do you break something that badly. 09:23:39 <CakeProphet> how can you get that wrong. 09:24:17 <monqy> variants of "fuck" were also repeated everywhere, despite "fuck" itself being in the list of things to ban on even if it's within other words etc 09:24:30 <Jafet> One time, yahoo's discussion board censored "breast" 09:24:31 <CakeProphet> man christians sure are weird. 09:24:43 <Jafet> It was not appreciated by women who wanted to talk about their chicken breasts 09:25:04 <CakeProphet> chicken breasts? gross. 09:25:19 <monqy> I bet they didn't censor other variants of the word 09:25:24 <CakeProphet> where they genetically modified? 09:25:30 <CakeProphet> .... 09:25:31 <CakeProphet> *were 09:26:57 <CakeProphet> monqy: I challenge you to make a chess variant that is more elegant than mine. 09:27:11 <monqy> oh snap!!!!! 09:27:25 <CakeProphet> AND YET RICH WITH COMPLEXITY AND FUN. 09:27:33 <CakeProphet> MAYBE 09:27:34 <monqy> maybe i could take you up on that s-expression chess 09:27:37 -!- Nisstyre has joined. 09:29:03 <itidus21> K vs K. Can only capture diagonally. 09:29:08 <itidus21> I dunno how it would go. 09:29:21 <monqy> K? 09:29:24 <itidus21> king? 09:29:40 <itidus21> not sure of notations 09:30:28 <monqy> I dunno about king vs king stuff but I'd be willing to call it a stalemate 09:30:58 <itidus21> im not sure how my rules would override the usual king vs king rules 09:31:05 <CakeProphet> Ultima is a neat chess variant. 09:31:07 <monqy> your rules? 09:31:26 <CakeProphet> mostly consisting of odd capturing rules. 09:31:28 <itidus21> "King vs King. Can only capture diagonally." 09:31:41 <CakeProphet> for example there's one type of rook that captures by moving /away/ from something adjacent to it. 09:32:06 <CakeProphet> and chameleons (bishop) can only capture pieces by using their capture rules. 09:32:23 <itidus21> heh 09:32:34 <CakeProphet> I imagine it's actually cumbersome to play. 09:32:39 <CakeProphet> UNLIKE PORTAL CHESS WHICH IS VERY GOOD. 09:32:44 <monqy> ok 09:32:47 <CakeProphet> -ahem- 09:32:54 <CakeProphet> excuse me. 09:33:05 <monqy> also I remember you saying something about knigt-moves having direction? what's that about 09:33:16 <monqy> relevant if any of your pieces have knight moves and try stepping into portals 09:33:31 <monqy> also what happens when portals step into their counterparts 09:33:39 <monqy> is that invalid? 09:33:43 <CakeProphet> well I suppose they have two different possible directions actually. 09:33:46 <monqy> do they explode? 09:33:47 <CakeProphet> monqy: they explode. 09:33:47 <CakeProphet> yes. 09:34:10 <CakeProphet> possibly useful as a suicide strategy but probably a really bad idea. 09:34:13 <itidus21> `log explode 09:34:16 <HackEgo> 2010-09-28.txt:21:09:22: <Phantom_Hoover> The LWSSes hit it and everything explodes. 09:37:06 <CakeProphet> monqy: the portal direction could be made irrelevant for entrance perhaps. 09:37:25 <CakeProphet> or knights-likes could simply enter from two directions 09:37:29 <monqy> CakeProphet: but then you've got really weird stuff 09:37:45 <CakeProphet> how so? 09:38:19 <monqy> nevermind 09:38:29 <monqy> actually yes do mind it's really weird 09:38:47 <itidus21> (cannon)>>-------()-------<<(cannon) ()------<< 09:38:49 <itidus21> :P 09:39:08 <CakeProphet> itidus21: that doesn't breakanything. 09:39:13 <monqy> also how will you deal with bishop-movers and portals? is them switching to the other coloure just a natural thing? 09:39:17 <itidus21> fair enough 09:39:22 <itidus21> its kind of cool 09:40:02 <monqy> I was going to say something els ebut I forgot it 09:40:55 <CakeProphet> monqy: portals can hop anywhere in a 3-square radius 09:41:05 <CakeProphet> thus I don't see how bishop movement is a problem. 09:41:17 <monqy> ok? 09:41:39 <CakeProphet> ooooh 09:41:40 <CakeProphet> I see. 09:41:46 <CakeProphet> yeah it doesn't matter. 09:42:01 <CakeProphet> in fact that would be a useful way to switch colors for arrows. 09:42:11 <CakeProphet> which are the pieces that move like bishops 09:42:19 <CakeProphet> (possibly like queens in the future... I haven't decided) 09:42:26 <itidus21> radius? :p 09:42:42 <itidus21> ah ok. radius] 09:42:57 <itidus21> understood 09:42:57 <monqy> presumably by chebyshev distance 09:44:14 -!- DH____ has joined. 09:44:36 <monqy> CakeProphet: is it chebyshev or is it manhattan or are you So Wrong 09:44:52 <CakeProphet> I have no idea what that means. 09:45:18 <CakeProphet> ah yes 09:45:18 <monqy> is your "3-square radius" measured by chebyshev distance or manhattan distance or are you Wrong 09:45:19 <CakeProphet> chevyshev 09:45:19 <itidus21> i realized that it probably means 3 spaces in 8 directions when i said (ah ok. radius]) 09:45:23 <CakeProphet> *cheby 09:46:16 <CakeProphet> though perhaps 3 is a bit extreme? especially with hoppage. 09:46:35 <itidus21> oh ok i see what chebyshev is 09:46:40 <monqy> portals can't capture can they 09:46:47 <monqy> directly, I mean 09:47:29 <monqy> if portals trigger when hopping onto someone you could kill them by portalling dudes into active loops 09:47:50 <monqy> er 09:48:07 <monqy> if portals trigger when hopping onto pieces you could kill them by portalling them into active loops 09:48:12 <monqy> there 09:48:14 <monqy> less confusion 09:48:15 <monqy> that 09:48:15 <monqy> time 09:48:17 <CakeProphet> well, sort of. 09:48:27 <CakeProphet> you can't portal something to a loop though. 09:48:37 <CakeProphet> because moving the portal breaks the loop 09:48:38 <monqy> oh? 09:48:48 <CakeProphet> however 09:48:50 <monqy> no I mean 09:48:51 <CakeProphet> there is a neat trick you can do. 09:48:54 <monqy> portal isn't part of the loop 09:48:59 <monqy> the portal is pointing into the loop 09:49:09 <CakeProphet> ah okay 09:49:11 <CakeProphet> yes that's possible 09:49:29 <monqy> that;s one way to use loops offensively 09:49:50 <CakeProphet> also breaking a loop with the out-portal is very nice. 09:49:53 <monqy> with a little preparation you have an extremely mobile capturing machine 09:50:21 <monqy> and i guess you could also move portal into loop to get the thing worky 09:50:32 <CakeProphet> because you can hop three spaces, and change direction to release the project whose loop you just broke. 09:50:38 <CakeProphet> which is actually kind of ridiculous. 09:50:43 <CakeProphet> if you consider the possibilities. 09:50:46 <monqy> mhm 09:50:50 <monqy> oh right I remembered a thing 09:50:50 <monqy> about 09:50:53 <monqy> what I was going to say 09:50:54 <monqy> about 09:51:04 <monqy> portals where the in-portal triggers from any direction 09:51:05 <monqy> which is 09:51:12 <monqy> how do you capture them? 09:51:19 <CakeProphet> ah, yes. 09:51:21 <CakeProphet> that's a problem 09:51:27 <CakeProphet> I think I just need to define the movement rules well 09:51:34 <monqy> answer: a portal explosion (by portal suicide) 09:51:34 <CakeProphet> so basically even if you move like a knight you still have directionality. 09:51:53 <monqy> alternatively a prismed projectile 09:52:03 <monqy> if that works the same was on portals as arrows 09:52:08 <CakeProphet> yeah but currently prismed projectiles do not kill portals. 09:52:11 <monqy> oh 09:52:20 <CakeProphet> ...might change that? 09:52:20 <monqy> I think they should for consistency 09:52:24 <CakeProphet> hmmm 09:52:35 <monqy> anyway I think it'd be best to fix directionality anyway 09:52:39 <CakeProphet> well, portals can still be killed when facing the wrong direction 09:52:46 <CakeProphet> while arrows work from any direction 09:52:54 <CakeProphet> fix it how? 09:53:09 <monqy> to give every movement a direction 09:53:34 <CakeProphet> oh, yes, that's what I meant. 09:53:35 <monqy> fior knights it could be the side in which they move more 09:53:38 -!- DH____ has quit (Ping timeout: 260 seconds). 09:53:56 <CakeProphet> well, no. knights could just have multiple entrance directions. 09:53:57 <monqy> since they move 2 in one direction and 1 in the other isn't it 09:54:05 <monqy> that works too 09:54:14 <monqy> and they enter from the applicable one? 09:54:16 <CakeProphet> yep 09:54:20 <CakeProphet> same with portals 09:54:28 <CakeProphet> who move like knights but with a chevyshev distance of 3 09:55:02 <CakeProphet> no need to get incredibly detailed... 09:55:09 <CakeProphet> I feel it's a fairly intuitive notion. 09:55:16 <monqy> do portals hopping onto things have a direction or do they always work or do they not work anymore 09:55:29 <CakeProphet> the only thing that's not reall very intuitive so far is the bidirectional loop portal breakage rule thing. 09:55:53 <monqy> since portals turn whenever they hop I can see portal hops always working being fine 09:56:01 <CakeProphet> monqy: I was thinking if portals captured that would be how they capture. only able to capture in the direction they're facing. 09:56:18 <CakeProphet> but that's kind of weird 09:56:25 <CakeProphet> intuitively they should just teleport whatever they land on. 09:58:24 <CakeProphet> it's probably a bad idea to teleport things unless they die immediately on the other side. 09:58:40 <CakeProphet> or 09:58:42 <monqy> i.e. there's a loop waiting for them? 09:58:44 <CakeProphet> they have nothing to capture. 09:58:44 <CakeProphet> yes 09:58:59 <CakeProphet> there's also the situation where killing the portal on the other side causes an explosion and kills a bunch of the opponents pieces. 09:59:07 <CakeProphet> so they wouldn't want to capture said portal. 09:59:32 <monqy> I'm imagining moving an enemy piece into any piece via portal will capture that piece 09:59:36 <CakeProphet> in this way the portal explosion rule can be used for bargaining power. 09:59:48 <monqy> so I guess you could use enemy pieces to capture other enemy pieces? or your own pieces if you're dumb 10:00:01 <CakeProphet> hmmm... it would capture enemy pieces but would be an illegal move otherwise I think. 10:00:14 <monqy> illegal? 10:00:22 <CakeProphet> ..yes because you can't capture your own pieces. 10:00:27 <monqy> you can;t??? 10:00:28 <CakeProphet> well, I would think not. 10:00:32 <CakeProphet> ...not without projectiles. 10:00:34 <monqy> why not!! 10:00:34 <CakeProphet> I DON'T KNOW 10:00:40 <CakeProphet> MAKES SENSE? 10:00:53 <CakeProphet> fine okay you can elect to capture your own pieces. 10:00:56 <CakeProphet> like a boss. 10:00:57 <monqy> hurray 10:01:19 <CakeProphet> so in this weird corner case where someone is directly in front of your portal and you teleport something to that portal it gets captured . 10:01:31 <CakeProphet> this game is full of weird corner cases. 10:01:33 <monqy> most likely usually a bad move but getting rid of pawns which are in the way may prove useful 10:01:46 <monqy> naturally emerging corner cases, right? 10:01:50 <CakeProphet> yes. 10:01:54 <monqy> not special exceptions in the rules good good 10:02:53 <CakeProphet> but I'll have to list that as how the portals work. 10:02:55 <CakeProphet> to clarify. 10:02:58 <CakeProphet> it's not immediately obvious. 10:03:33 <CakeProphet> also if a piece moves through a portal it can continue moving on the other side, as you would expect I hope. 10:03:34 <monqy> as long as you note it in such a way to make it clear that it's natural and not just some other rule you made up!! 10:03:42 <CakeProphet> as long as it legaly has more squares that it can move in its turn. 10:03:46 <CakeProphet> *legally 10:04:01 <monqy> oh right I was going to ask about that too 10:04:06 <monqy> with regard to direction changing and all 10:04:11 <CakeProphet> yes 10:04:22 <CakeProphet> portals are direction/location changers. 10:04:39 <CakeProphet> hmmm... I wonder if I should include that. 10:04:41 <monqy> it won't work with knightsmoves either right 10:04:42 <CakeProphet> if an arrow goes through a portal 10:04:50 <CakeProphet> it reorients to keep the same angle..... 10:04:54 <CakeProphet> if that makes sense. 10:05:00 <monqy> ??? 10:05:06 <monqy> what do you mean reorients and same angle 10:05:14 <CakeProphet> okay so imagine you're the arrow 10:05:20 <CakeProphet> you're facing up-right 10:05:24 <CakeProphet> and you walk through a portal 10:05:35 <CakeProphet> you are still going the same direction when you come out, but now facing a different way. 10:05:40 <CakeProphet> thus.... your direction would change 10:05:46 <CakeProphet> your absolutely direction 10:05:49 <CakeProphet> -ly 10:05:57 <monqy> yes that's what I was hoping 10:06:01 <CakeProphet> to reflect that your direction actually didn't change as you walked through the portal and reoriented. 10:06:03 <monqy> unless I interpreted you backwards 10:06:17 <CakeProphet> but that's a pretty complex thing to worry about. 10:06:38 <CakeProphet> also knight movers still have legal moves if they go through a portal. 10:06:45 <CakeProphet> I just need to define knight moves properly 10:06:45 <monqy> like if you're going left and facing left into a rightfacing portal and the outportal is up now you're going up and you're facing up 10:06:48 <CakeProphet> as a series of single-square moves 10:06:51 <CakeProphet> for it to make sense. 10:06:53 <monqy> absolute-wise 10:07:06 <CakeProphet> yes. 10:07:18 <monqy> a series of single-square moves? how will the leaping work then? 10:07:33 <CakeProphet> ....uh, it just will. :P 10:07:38 <monqy> :| 10:08:04 <CakeProphet> "the prism can leap across pieces in the course of making its move" 10:08:08 <CakeProphet> I mean 10:08:27 <CakeProphet> you don't have to interpret it as a LITERAL series of single-square movements where you MUST have an EMPTY square. 10:08:36 <monqy> also the destination according to the knightsmoves rules and not being "here go three spaces leaping over stuff" 10:08:41 <CakeProphet> it's just to make the directions and portal stuff well-defined. 10:09:03 <CakeProphet> hmmm? 10:09:04 <monqy> I liked it better when it was a single move with two directions :( 10:09:16 <CakeProphet> it's the same thing... just different ways to say it. 10:09:26 <monqy> not really 10:09:49 <CakeProphet> it will be way easier to comprehend when talking about portals. 10:09:53 <monqy> it's easier to specify the knightsmove conditions for single moves than make a state machine to get three moves to obey the knightsmove rules 10:09:53 <CakeProphet> who can move 3 squares. 10:10:28 <monqy> am I sense ing???? 10:10:30 <CakeProphet> ....no it's the opposite of that. 10:10:35 <monqy> what???????????????? 10:10:38 <CakeProphet> you have only ONE direction entering the portal. 10:10:46 <CakeProphet> because it's all defined in terms of single square moves. 10:11:00 <CakeProphet> with your system you have two/three directions 10:11:07 <CakeProphet> which makes less sense. 10:11:27 <monqy> three directions? when's that? 10:11:49 <monqy> with your system you have to specify the second and third moves in terms of their predecessors 10:11:54 <monqy> which is ugly- gross 10:12:15 <monqy> and hard to follow 10:12:16 <CakeProphet> .......? 10:12:34 <CakeProphet> oh and the three direction case is when you enter a portal on your second jump as a portal---oh wait that causes explosions 10:12:37 <CakeProphet> but still a valid move I suppose 10:12:49 <monqy> in my system knights leap over portals 10:13:02 <CakeProphet> so they have to hop on them to teleport? 10:13:03 <monqy> as they leap over all other pieces 10:13:04 <monqy> yes 10:13:11 <CakeProphet> hmmm 10:13:19 <CakeProphet> so then the direction doesn't matter with knights? 10:13:21 <CakeProphet> that works. 10:13:24 <CakeProphet> I thought you might complain about that. 10:13:41 <monqy> either it doesn't matter or it's one of the directions in which they traveled or it's the longer of the directions in which they traveled 10:13:41 <CakeProphet> also portals are not restricted to where they can land. 10:13:44 <monqy> either one 10:13:48 <CakeProphet> meaning they don't /have/ to move three squares. 10:13:54 <CakeProphet> they can move one, or two. 10:13:56 <monqy> right 10:13:58 <CakeProphet> is that ridiculous? 10:14:05 <monqy> I figured that when you said "within" rather than "at" 10:14:10 <monqy> in "within a 3-square radius" 10:14:12 <monqy> or whatever it was 10:14:24 <CakeProphet> that's like... being a queen and a knight 3 squares around you. 10:14:32 <CakeProphet> granted you can't capture anything 10:14:35 <CakeProphet> so I guess that's fine. 10:14:51 <monqy> you can pull off wickednasty stunts though!!! 10:14:56 <CakeProphet> yes. 10:15:08 <CakeProphet> the portal is mobile but by itself not effective. 10:15:10 <CakeProphet> so that's fine. 10:15:36 <CakeProphet> it would be silly if portals were not very good at jumping around and portalling things. 10:15:56 <monqy> indeed!! 10:16:07 <CakeProphet> they're currently the second most mobile in terms of sheer distance. arrows are the only pieces that can move an unlimited number of squares in a single direction. 10:16:36 <CakeProphet> I think this makes sense in this game. 10:16:44 <monqy> I need to see it in action now 10:16:51 <CakeProphet> ...how will you do that? 10:17:04 <CakeProphet> monqy: you could write a program for it. :) 10:17:08 <CakeProphet> an IRC bot. 10:17:10 <monqy> never 10:17:14 <monqy> wait irc bot what 10:17:19 <monqy> how would that even work 10:17:20 <CakeProphet> ASCII board 10:17:22 <CakeProphet> commands 10:17:22 <itidus21> it could be static animated 10:17:30 <CakeProphet> ...yes/ 10:17:31 <CakeProphet> ? 10:17:38 <CakeProphet> it would be very spammy. 10:17:44 <monqy> the spamest 10:17:44 <CakeProphet> but each turn it would print out the board. 10:17:54 <itidus21> i mean as in.. it could have an animation mocked up 10:17:57 <CakeProphet> which would not be bad, say, in a separate channel. 10:18:02 <CakeProphet> itidus21: explain. 10:18:07 <CakeProphet> how does that even make sense in IRC. 10:18:09 <CakeProphet> and why do you need to animate it. 10:18:33 <itidus21> like a game drawn frame by frame and saved as a gif or something for purpose of <monqy> I need to see it in action now 10:18:51 <CakeProphet> well. monqy can just play it with some friends IRL? 10:18:57 <monqy> whats friends 10:19:00 <CakeProphet> oh.. 10:19:04 <CakeProphet> well, that's how I'm going to playtest it. 10:19:08 <CakeProphet> I have some friends that like chess 10:19:12 <CakeProphet> so I'm pretty sure they'd like this game. 10:19:21 <CakeProphet> they also like Portal... so... 10:19:27 <monqy> do they like lasers 10:19:28 <itidus21> i used to have friends.. thats almost the same thing as having friends :-s 10:19:29 <CakeProphet> and hookah. 10:19:30 <CakeProphet> probably. 10:19:34 <monqy> that was a joke everyone loves lasers 10:19:52 <CakeProphet> I wonder if they like prisms. 10:19:57 -!- sllide has joined. 10:20:04 <CakeProphet> I wonder if the prism is a good piece... 10:20:07 <monqy> prisms _are_ nifty 10:20:13 <monqy> I mean real prisms 10:20:22 <CakeProphet> I am somewhat suspicious that they could be improved upon. 10:20:26 <monqy> me too 10:20:45 <CakeProphet> but something needs to capture arrows... 10:20:57 <monqy> can normal pieces not? 10:21:10 <CakeProphet> currently that includes: pawn, king, and queen 10:21:15 <monqy> aahh 10:21:20 <CakeProphet> s/queen/prism/ 10:21:33 <monqy> what are bishopes agian i forgot 10:21:36 <CakeProphet> arrows. 10:21:42 <monqy> ah 10:21:54 <monqy> moved it from sharpied pawns, then? good 10:21:56 <CakeProphet> I changed the piece roles a bit near the end of brainstorming. 10:21:57 <CakeProphet> yes. 10:22:28 <CakeProphet> queenside rook is the d-cannon, kingside rook is the c-cannon 10:22:33 <CakeProphet> that's diagonal and cardinal. 10:22:47 <CakeProphet> d-cannon is upside down. 10:24:30 <CakeProphet> these designations may change entirely. needs more playtesting. 10:24:48 <CakeProphet> but a cannon that fires in all directions seems bad to me. 10:24:55 <CakeProphet> but then prisms basically do that are more mobile... 10:25:21 <CakeProphet> still they're not offensively mobile in that they need to be in a projectile path to be effective. 10:25:48 <CakeProphet> ...except when they're just hopping around capturing normally. 10:25:53 <CakeProphet> which is one of their advantages as well. 10:26:28 <CakeProphet> it's a very effective anti-arrow piece. but not something that's invincible itself. 10:27:24 <monqy> I was imagining it'd be a pretty good piece for staying in some degree of saftey and sniping at the enemy 10:27:42 -!- Patashu has joined. 10:27:50 <CakeProphet> well, that's kind of why I want portals to not be affected by prisms 10:27:51 <monqy> as with some assistance it can do what queen-captures without moving itself 10:28:07 <CakeProphet> portals could be used to defend against prisms then. 10:28:47 <monqy> only if they're facing the right direction!! 10:28:49 <CakeProphet> which can otherwise just destroy anything in three different paths without having to move out of safety. 10:28:52 <CakeProphet> monqy: right 10:29:25 <CakeProphet> so yeah leaving portals unaffected by prisms would be a nice balance I think. 10:30:30 <CakeProphet> arrows defend against cannon fire, prisms can kill arrows, but regular cannon fire can kill prisms 10:30:57 <CakeProphet> portals can defend against anything in which it's facing. 10:31:11 <CakeProphet> (...results may vary on the other end of the portal. :P ) 10:31:37 <monqy> hm 10:31:41 <monqy> a thing 10:32:02 <CakeProphet> yes a thing. 10:32:03 <Patashu> so is this chess or a wargame 10:32:06 <monqy> what happens when you have two corresponding portals pointing into each other and someone somehow gets into one of them, say by knightsmoves 10:32:12 <CakeProphet> Patashu: what is a wargame 10:32:25 <Patashu> like panzer general and stratego and so on 10:32:26 <CakeProphet> monqy: oh my. 10:32:32 <monqy> CakeProphet: explosions? 10:32:37 <CakeProphet> monqy: uh...... 10:32:39 <CakeProphet> uh....... 10:32:42 <CakeProphet> yeah explosions. 10:32:44 <monqy> woohoo 10:32:52 <CakeProphet> explosions are cures for all forms of paradox. 10:33:12 <itidus21> monqy: stargate rules? 10:33:15 <CakeProphet> Patashu: uh I'd say it's chess-like 10:33:17 <Patashu> That would be a funny premise for a time travel game 10:33:20 <itidus21> is there any applicable rule? 10:33:22 <Patashu> Mess up? EXPLOOOSION 10:33:27 <monqy> itidus21: never seen it 10:33:40 <itidus21> i dont think anything like that ever happened 10:33:47 <itidus21> but stargate is much like a portal 10:33:53 <CakeProphet> monqy: it could just be like illegal or something... 10:34:07 <monqy> illegal is boring 10:34:18 <CakeProphet> also how should diagonal movement work through a portal that isn't facing diagonal 10:34:23 <monqy> so long as you're making an exception for it, might as well make it explodey 10:34:26 <CakeProphet> or similarly with cardinal movement. 10:34:51 <monqy> CakeProphet: oh right that was a thing I was going to ask you about. when I was thinking about bishopmovement/portals 10:35:04 <CakeProphet> well, for example 10:35:08 <CakeProphet> if a king goes through a portal 10:35:14 <CakeProphet> and the out-portal is diagonally facing 10:35:19 <CakeProphet> then he should come out right in front of it. 10:35:24 <CakeProphet> no problem. 10:35:41 <CakeProphet> so 10:35:49 <monqy> bishopmove attempt to reorient? explosion 10:35:53 <CakeProphet> maybe things should just always come out on the square adjacent to the portals opening 10:35:56 <CakeProphet> and then they continue movement from there. 10:36:12 <monqy> or rookmove attempt to reorient. either way. 10:36:25 <CakeProphet> OR 10:36:38 <CakeProphet> maybe they continue along the path the portal points them? as a strategic element. 10:36:49 <CakeProphet> so a diagonally moving arrow goes through a portal and comes out a portal that's facing in a cardinal direction 10:36:52 <CakeProphet> at which point it continues cardinally. 10:36:55 <monqy> and then they're back to normal after stopping movemntn? 10:36:59 <CakeProphet> yes. 10:37:00 <monqy> that works 10:37:08 <monqy> best solution 10:37:14 <CakeProphet> yes allows for shenanigans. 10:37:44 <CakeProphet> ....wow these rules are ridiculously complicated. 10:37:59 <itidus21> the implications on this rule is huge 10:38:05 <CakeProphet> it'll be fun trying to explain it all to my friends. 10:38:27 <CakeProphet> well it really only affects arrows. 10:38:38 <itidus21> of which there arenot many 10:38:39 <itidus21> :P 10:39:07 <CakeProphet> if I decide to make something else that isn't a knight-mover or a king-mover 10:39:17 <CakeProphet> or which doesn't explode upon going through a portal. 10:39:25 <CakeProphet> then it would follow that rule as well. 10:39:35 <CakeProphet> i.e., a rook-like could go diagonally. 10:39:51 * itidus21 blinks 10:40:00 <itidus21> now that is hardcore 10:40:14 <CakeProphet> but there are no rooklikes. 10:40:28 <itidus21> changing the frame of reference of a chesspiece surely doesn't happen a lot 10:40:56 <CakeProphet> everything is king-like, knight-hop-hop, pawns, or bishop-like 10:41:02 <Patashu> wow. rotating a piece via portal 10:41:39 <CakeProphet> monqy: also I realized that the whole angle-reorienting stuff is kind of pointless since you can just change directions at the end of the turn anyways. 10:42:08 <monqy> oh right 10:42:23 <monqy> that makes it a bit less complicated 10:42:27 <CakeProphet> should I make re-angling take a whole turn? seems kind of... lame. 10:42:42 <monqy> it's fine as-is 10:42:49 <itidus21> well this frame of reference thing would be more meaningful in a game with regular pieces 10:43:08 <CakeProphet> yes but then no projectile shenanigans and loops. 10:43:29 <itidus21> im just imagining pawns rotated to walk to the walls 10:43:36 <CakeProphet> wat 10:43:39 <monqy> they change back to normal at turn-end 10:43:40 <CakeProphet> "walls"? 10:43:42 <Patashu> walls 10:43:42 <Patashu> lol 10:43:48 <itidus21> sorry.. side panels 10:43:51 <Patashu> the chess board is surrounded by infinitely high walls of infinitely thick concrete 10:43:54 <CakeProphet> "side panels"? 10:43:55 <itidus21> spectator stands of rome 10:43:57 <Patashu> or 10:43:58 <Patashu> wait 10:43:59 <Patashu> what if 10:44:00 <Patashu> you could move 10:44:02 <itidus21> caesar looks on 10:44:02 <Patashu> -between the squares- 10:44:05 <Patashu> along the edges and corners 10:44:11 <CakeProphet> Patashu: woah dude 10:44:13 <itidus21> actually considering that rome probably never saw chess 10:44:19 <monqy> changing back to normal at turn end is how you avoid a choice between hidden state and sharpieing your pawns!!! 10:44:35 <CakeProphet> it wouldn't even make sense for them to continue moving that way afterwards. 10:44:49 <CakeProphet> GOES AGAINST THE LAWS OF PORTAL CHESS PHYSICS. 10:45:03 <itidus21> glados has infected the system 10:45:19 -!- monqy has quit (Quit: hello). 10:45:37 <Patashu> hmm, I'm picturing a simple 'chess with portals' variant now. 10:46:00 <CakeProphet> also if you a have a portal adjacent to a king 10:46:11 <CakeProphet> any time the linked portal can be captured you're in check. 10:46:30 <Patashu> FIDE rules except both teams start with a them-coloured portal on a tile in their third rank. a portal moves to any unoccupied tile. you can move a piece onto a portal and it continues out the other side like the two tiles were in fact right together 10:46:55 <Patashu> or possibly make both portals neutral instead of owned by a side and add 'no repeating an earlier state' as a rule 10:47:04 <CakeProphet> help where's directionality of portals. 10:47:04 <Patashu> hi I have not tested my game at all 10:47:41 <CakeProphet> I do find adding a concept of direction to chess to be interesting. 10:47:44 <CakeProphet> could explore that with other variants. 10:47:51 <CakeProphet> #esoteric-chess? :P 10:48:10 <Patashu> I assume they'd never be rotated 10:48:13 <Patashu> but you could add that easily 10:48:36 <Patashu> portals have an orientation, you can move it to any tile or change its orientation as your turn. when you go into one portal you look at what its orientation is re: the other one and that's how much it angles by 10:49:02 <CakeProphet> lolwat 10:49:27 -!- Vorpal has joined. 10:49:28 <CakeProphet> Patashu is not allowed to write rules for portal chess. 10:49:29 -!- Vorpal has quit (Changing host). 10:49:29 -!- Vorpal has joined. 10:49:30 <Patashu> example, if both portals face north then there's zero difference so you go through unchanged. if one is bent 90 degrees then going through one bends you 90 degrees 10:49:31 <Patashu> oh 10:49:33 <Patashu> well then! 10:49:36 <CakeProphet> !!!!! 10:49:38 * Patashu storms off in a huff. through a portal 10:49:41 * Patashu closes it behind him 10:49:59 <CakeProphet> you could have chess with a portal gun 10:50:02 <CakeProphet> the portal gun is directional 10:50:07 <Vorpal> hi 10:50:09 <CakeProphet> and then fires portals on the infinite concrete walls 10:50:12 <itidus21> i considered portal gun earlier but stayed silent :D 10:50:13 <Vorpal> <itidus21> vorpal would probably like my lowbrow style of chess variation <-- oh? 10:50:23 <Vorpal> (was the last line I saw before putting computer to sleep) 10:50:53 <itidus21> i haven't completed any though 10:51:08 <Vorpal> itidus21, what is your lowbrow style of chess? 10:51:34 <CakeProphet> he drools on the pieces. 10:51:44 <Vorpal> XD 10:51:45 <itidus21> <Vorpal> CakeProphet, are there pirates and ninjas too? 10:51:46 <Patashu> lowbrow style of chess makes me think of the version of chess played in...sweden? germany? someplace like that. where you throw a piece of wood underarm across a field and try to hit your enemy's king with it 10:52:02 <itidus21> <monqy> what if instead of special cases you had pirates and ninjas <monqy> i would be less angry 10:52:04 <Vorpal> Patashu, that isn't chess, that is kubb I think 10:52:08 <Patashu> yes 10:52:08 <Patashu> kubb 10:52:09 <Vorpal> Patashu, very different from chess 10:52:21 <Patashu> I might be confusing it with a hhgttg joke 10:52:24 <itidus21> lol patashu 10:52:29 <CakeProphet> soon I will publish my chess variant and no one will play chess anymore 10:52:35 <CakeProphet> they will only play PORTAL CHESS!!!!!!111111111 10:52:53 <Vorpal> Patashu, I mean, it has nothing to do with chess. Apart from being a game. It is normally played between two teams. 10:53:12 * CakeProphet fantasizes about his future fame as a renowned chess variant writer. 10:53:12 <Vorpal> anyway it is from Sweden, I played it once. I suck at it. 10:53:43 <Patashu> spend 10 years becoming a kubb grandmaster 10:53:48 <Patashu> and complain about how no one appreciates this game anymore 10:53:53 <Vorpal> heh 10:54:31 <Vorpal> Patashu, wikipedia indicates it is common in Germany too at least. 10:55:04 <CakeProphet> note that Wikipedia says nothing about portal chess. 10:55:29 <itidus21> CakeProphet: if you're checking wikipedia thats because you're afraid of the nasty truths you'll find in google 10:55:33 <Vorpal> CakeProphet, and? 10:55:36 <itidus21> (which i havent checked) 10:55:38 <CakeProphet> http://en.wikipedia.org/wiki/Portal:Chess 10:55:40 <CakeProphet> not the same. 10:55:44 <Vorpal> XD 10:56:10 <CakeProphet> Vorpal: I'm just revelling in my ego right now having just created something entirely new to the world. 10:56:17 <CakeProphet> pay no mind. 10:56:30 <Vorpal> CakeProphet, sounds like a combination of chess and Portal. 10:56:37 <CakeProphet> well yes... 10:56:47 <itidus21> CakeProphet: this isn't a competitor... but... worth looking at http://www.youtube.com/watch?v=dav9OyEORk4 10:56:47 <CakeProphet> new things are usually resynthesized from previous ideas. 10:56:52 <CakeProphet> but this doesn't make them any less original. 10:57:23 <Vorpal> speaking of games, I recently played Bastion. Very impressive game. Innovative. 10:57:41 <Vorpal> and it is right up there with Braid in terms of games being art. 11:00:40 <itidus21> CakeProphet: ok heres the first bitter taste of your competition. but don't lose hope too easily. http://blog.chess.com/balifid/portal-chess 11:01:12 -!- Taneb has joined. 11:01:16 <itidus21> it doesn't even have guns though 11:01:23 <itidus21> its not exactly a big threat 11:03:17 <itidus21> http://www.quora.com/How-might-one-add-portals-to-chess -- curious 11:06:42 <CakeProphet> yeah that doesn't look like a good game. 11:06:53 <itidus21> now this is a badass idea http://www.youtube.com/watch?v=WtcGiZelPfk 11:08:18 <CakeProphet> bahaha 11:09:17 <itidus21> good game * good game = good game 11:09:41 <CakeProphet> I think I would be a good game designer actually. 11:09:54 <CakeProphet> I've done some brainstorming on an Android game I've thought about. 11:09:58 <itidus21> ive been following super mario very closely 11:10:00 <CakeProphet> kind of a metroid-like game. 11:10:07 <CakeProphet> but a puzzle game. 11:10:13 <itidus21> so im excited to see a video of super mario with portals 11:10:24 <CakeProphet> action-puzzle game. 11:10:36 <CakeProphet> with things like time dilation missiles. 11:10:56 <CakeProphet> and... other things I haven't thought of. time dilation missiles are basically the main idea I've got. 11:11:28 <CakeProphet> lemme check my notes... 11:11:43 <itidus21> so combining themes from laserchess with original loops idea with portals and i think it is likely you're onto something original 11:12:31 <CakeProphet> ....I think this is an original chess variant already. 11:12:46 <itidus21> thats what i meant to say 11:12:46 <CakeProphet> I will need to playtest it but the game seems pretty complete to me. 11:12:56 <itidus21> i cant find any obvious copies 11:13:21 <CakeProphet> I didn't even know about laserchess actually. 11:13:37 <CakeProphet> laser chess is more strictly about bouncing lasers everywhere. 11:13:43 <CakeProphet> each piece reflects differently. 11:14:19 <CakeProphet> man I need to sleep. 11:14:24 <CakeProphet> too much thinking about portal chess 11:14:27 <CakeProphet> not enough homeworkdone. 11:16:22 <itidus21> "Little known fact: knights in chess travel over other pieces by rocket jumping." 11:17:26 <CakeProphet> itidus21: also what is L2 11:17:39 -!- oerjan has joined. 11:17:49 <itidus21> 2L http://codu.org/eso/2l/README 11:19:43 <CakeProphet> oerjan: there is now such a thing as portal chess. Obviously you are as excited as I am right now. 11:20:40 <oerjan> well i _do_ have to consider the possibility that the CakeProphet is a lie. 11:21:08 <CakeProphet> oerjan: no no it's real all the paradoxes cause explosions. 11:21:15 <CakeProphet> everything is fine. 11:21:16 <oerjan> yay 11:21:20 <Taneb> Does SK do the same as KI in a different way? 11:21:27 <oerjan> Taneb: yes 11:21:35 <Taneb> INTERESTING 11:21:38 <Taneb> ALSO WEIRD 11:21:42 <oerjan> with lazy evaluation, anyhow 11:21:44 <CakeProphet> :t const id 11:21:45 <lambdabot> forall a b. b -> a -> a 11:21:50 <CakeProphet> :t ap const 11:21:50 <lambdabot> forall b a. (b -> a) -> b -> b 11:22:14 <oerjan> in (strict) unlambda they're slightly different in what can be evaluated. 11:22:57 <CakeProphet> :t ap const (const id) 11:22:58 <Taneb> I'm really thinking in terms of MIBBLLII 11:22:58 <lambdabot> forall b. b -> b 11:23:19 <oerjan> :t ap const undefined 11:23:20 <lambdabot> forall b. b -> b 11:24:46 <CakeProphet> see I'm tempted to not listen to monqy and gives knights directionality to their movements 11:25:12 <CakeProphet> so that the adjacent portals with infinitely teleporting knight situation can't happen. 11:25:47 <CakeProphet> well, infinitely teleporting prism, which can move like a knight. 11:26:20 <Taneb> Next: Portal Monopoly 11:26:43 <CakeProphet> yeah... monqy's rule causes more problems than the way I wanted to do it. 11:27:57 <oerjan> so, monqy's rule it is, then? 11:29:04 <Taneb> Which ap is lambdabot's ap? 11:29:18 <CakeProphet> there's more than one? 11:29:19 <oerjan> the usual one... 11:29:21 <CakeProphet> @hoogle ap 11:29:21 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 11:29:22 <lambdabot> Data.Graph.Inductive.Query.ArtPoint ap :: Graph gr => gr a b -> [Node] 11:29:22 <lambdabot> Control.Arrow app :: ArrowApply a => a (a b c, b) c 11:30:53 -!- Taneb_ has joined. 11:30:53 <oerjan> "I'd like to be able to apply Arrows to each other." "There's an app for that." 11:31:19 -!- Taneb has quit (Read error: Connection reset by peer). 11:31:22 <Taneb_> Control.Monad, I presume? 11:31:25 -!- Taneb_ has changed nick to Taneb. 11:31:33 <oerjan> well yes 11:32:35 <CakeProphet> arrows are weird. 11:33:43 <CakeProphet> as far as I understand they're like monads but tuplier 11:35:13 <oerjan> arrows = category + applicative + some extra laws 11:35:25 <oerjan> no bind, unless you have arrowapply 11:35:51 <oerjan> in which case they're equivalent to monads 11:42:02 -!- Taneb has quit (Ping timeout: 252 seconds). 11:42:40 <CakeProphet> I guess I should play Braid 11:42:46 <Vorpal> CakeProphet, yeah it is awesome 11:43:49 -!- pikhq has joined. 11:44:02 -!- pikhq_ has quit (Ping timeout: 260 seconds). 11:44:46 <CakeProphet> Vorpal: what was the other game someone was talking about? 11:44:54 <Vorpal> CakeProphet, Bastion? 11:45:07 <CakeProphet> no 11:45:10 <CakeProphet> deadly death something. 11:45:13 <Vorpal> minecraft? magicka? Deus Ex? 11:45:18 <Vorpal> CakeProphet, oh, dead island? 11:45:23 <CakeProphet> no 11:45:38 <Vorpal> harry potter and the deadly hallows (I heard it was shit) 11:45:53 <CakeProphet> Vorpal: wow imagine that. 11:46:11 <CakeProphet> Deadly Rooms of Death 11:46:17 <Vorpal> never heard of that 11:46:20 <Vorpal> what sort of game is it? 11:46:39 <Vorpal> well *googles* 11:46:45 <Vorpal> hm, released in 1997 11:56:20 -!- sllide has quit (Ping timeout: 260 seconds). 12:11:53 <CakeProphet> Vorpal: you've played magicka? 12:12:00 <CakeProphet> it's a favorite of mine. 12:13:38 -!- hagb4rd has quit (Ping timeout: 260 seconds). 12:25:26 <Patashu> harry potter and the deadly rooms of death 12:25:32 <Patashu> he even gets a Really Big Sword 12:25:46 <Patashu> and has to sm.. sl... well it kind of works! 12:29:06 -!- Taneb has joined. 12:31:16 <Taneb> Does anyone know any combinatory logic system things other than BCKW and SKI? 12:31:23 <Taneb> And Iota's 12:31:59 <Patashu> they're all equivalent anyway :downs: 12:33:06 <olsner> Taneb: there are a bunch of single-combinator bases, e.g. Fokker's X combinator 12:33:10 <olsner> ... his paper also has a few alternative single-combinator bases he compares against 12:33:57 <olsner> and yes, any complete combinatory logic system is equivalent to all the other complete ones 12:34:14 <olsner> but that doesn't really make it any less interesting 12:42:30 -!- sebbu has quit (Read error: Connection reset by peer). 12:43:35 -!- sebbu has joined. 12:43:35 -!- sebbu has quit (Changing host). 12:43:35 -!- sebbu has joined. 12:45:09 <oerjan> Taneb: there's one without K that is not equivalent but nonetheless TC 12:45:46 <oerjan> Taneb: also, if you look at it the right way, Underload is one 12:47:23 <oerjan> (curry (i think) proved it TC by showing you could approximate K well enough for numbers, or something like that) 12:49:23 <Vorpal> oerjan, hm. What do you mean with equivalent if not equivalent computational class? 12:49:41 <oerjan> it cannot express the same lambda terms 12:49:45 <Vorpal> ah 12:50:19 <oerjan> http://en.wikipedia.org/wiki/Combinatory_logic#CLK_versus_CLI_calculus 12:52:05 <Vorpal> hm, interesting 12:56:20 <Deewiant> ?hoogle (a -> a) -> [a] -> [a] 12:56:20 <lambdabot> Prelude iterate :: (a -> a) -> a -> [a] 12:56:21 <lambdabot> Data.List iterate :: (a -> a) -> a -> [a] 12:56:21 <lambdabot> Prelude map :: (a -> b) -> [a] -> [b] 12:57:11 <oerjan> Deewiant: do you want something different from map? 12:57:25 <Deewiant> I want to modify the head only 12:57:32 <oerjan> ah. 12:58:05 <oerjan> there is a distinct lack of functions that act separately on head and tail 12:58:20 <Deewiant> Data.List.NonEmpty doesn't seem to have it either 12:59:03 <oerjan> :t uncurry (:) . first ?f . splitAt 1 12:59:04 <lambdabot> forall a. (?f::[a] -> a) => [a] -> [a] 12:59:10 <oerjan> oops 12:59:37 <oerjan> oh well, it's easy to write 13:00:21 <Deewiant> Should it be a noöp or an error on [] 13:01:34 <oerjan> that would depend on your use case, wouldn't it 13:01:53 <Deewiant> Just thinking what makes more sense for the general case 13:02:52 <oerjan> noop can easily be converted to the other form 13:03:19 <oerjan> :t uncurry (:) . first (map ?f) . splitAt ?n 13:03:20 <lambdabot> forall b. (?f::[b] -> b, ?n::Int) => [[b]] -> [[b]] 13:03:34 <oerjan> er 13:03:38 <oerjan> :t uncurry (++) . first (map ?f) . splitAt ?n 13:03:39 <lambdabot> forall b. (?f::b -> b, ?n::Int) => [b] -> [b] 13:04:30 <oerjan> :t uncurry (++) . (map ?f *** map ?g) . splitAt ?n 13:04:30 <lambdabot> forall b a. (?f::a -> b, ?g::a -> b, ?n::Int) => [a] -> [b] 13:04:49 <oerjan> moar generaller 13:09:06 -!- sebbu2 has joined. 13:09:09 <Deewiant> ?hoogle [a] -> Int -> Ordering 13:09:09 <lambdabot> Prelude (!!) :: [a] -> Int -> a 13:09:09 <lambdabot> Data.List (!!) :: [a] -> Int -> a 13:09:09 <lambdabot> Data.List genericIndex :: Integral a => [b] -> a -> b 13:10:34 <oerjan> :t null . drop n 13:10:35 <lambdabot> Couldn't match expected type `Int' against inferred type `Expr' 13:10:35 <lambdabot> In the first argument of `drop', namely `n' 13:10:35 <lambdabot> In the second argument of `(.)', namely `drop n' 13:10:38 <oerjan> :t null . drop ?n 13:10:38 <lambdabot> forall a. (?n::Int) => [a] -> Bool 13:11:51 <Deewiant> > map (null . drop 5) ["LESS","EQUAL","GREATER"] 13:11:53 <lambdabot> [True,True,False] 13:12:33 -!- sebbu has quit (Ping timeout: 260 seconds). 13:21:36 -!- Taneb has quit (Ping timeout: 252 seconds). 13:57:44 -!- oerjan has quit (Quit: leaving). 14:11:30 <Patashu> I am fucking terrible at combinatory logic 14:11:40 <Patashu> http://www.angelfire.com/tx4/cus/combinator/birds.html 14:11:52 <Patashu> How do I go through the process of evaluating Bluebird ((S(KS))K) to f x y 14:12:14 <Patashu> It should turn it into (f (g x)) since that's what B does 14:12:24 <Patashu> But I have no idea what receives what first and how much of it it wants and blah blah blah 14:12:31 <Patashu> Even thouhg I can look at the page and be like oh, S does this and K does this 14:12:37 <Patashu> My head is fucked by actually trying to do it 14:18:16 -!- Phantom_Hoover has joined. 14:29:53 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 15:06:04 -!- sebbu2 has changed nick to sebbu. 15:36:51 -!- MSleep has changed nick to MDude. 15:48:26 -!- azaq23 has joined. 16:01:30 -!- monqy has joined. 16:08:34 -!- Taneb has joined. 16:08:43 <Taneb> Hello! 16:09:13 <Taneb> You know, I almost had the middle name Elliott? 16:10:45 <monqy> Taneb Elliott Somethingorother 16:12:20 <Taneb> My initials would have been N.G.E.vD. 16:12:52 <monqy> so mcuh name 16:18:12 <Gregor> Taneb: 's name is now Ngevd. 16:18:15 <Taneb> I have here a record of the songs from Disney's the Jungle Book 16:18:19 -!- Taneb has changed nick to Ngevd. 16:20:08 <Gregor> How do you pronounce your name, Ngevd? 16:23:15 <Ngevd> First is a velar nasal 16:23:53 <Ngevd> Then an open-mid front unrounded vowel 16:24:13 <Ngevd> Then a voiced labiodental fricative 16:24:53 <Ngevd> Then a voiced alveolar plosive 16:24:58 <Ngevd> Ngevd 16:25:18 <Gregor> Oh good. I was afraid the 'g' might be pronounced independently of the 'ng' 16:25:44 -!- sebbu has quit (Read error: Connection reset by peer). 16:26:38 <Ngevd> A bit like ng-ev'd 16:27:32 <Ngevd> Does anyone know how to convert an LP into an iPod compatible format? 16:28:07 -!- sebbu has joined. 16:28:29 <monqy> LP? 16:28:40 <Gregor> You're probably stuck with finding a player with line-out and recording. 16:28:50 <Gregor> If there exist players with line out :P 16:29:10 <Ngevd> Shouldn't be too difficult to make 16:29:21 <Ngevd> However, I am not one of life's makers 16:29:32 <Ngevd> And it probably quite difficult to buy 16:29:53 <Ngevd> But how else will I listen to Eagles Greatest Hits Volume 2 while on the move? 16:30:01 <Gregor> http://www.thinkgeek.com/electronics/digital-conversion/c7fd/ 16:30:17 <Gregor> You can probably get these for less than this retarded price too :P 16:30:45 <Ngevd> I think there's actually someone near HEXHAM, THE CAPITAL OF ESOTERIC PROGRAMMING who does it for a living 16:31:53 <Gregor> Last summer I converted a bunch of beta tapes to DVD 16:34:22 <fizzie> I've once built the correct analog filter to make a regular line out into something that can be plugged into the "usual" LP player input of an amplifier (because the amplifier in question was from the 1970s or so and didn't really have any sensible "aux" inputs for a computer); the inverse shouldn't be too tricky. 16:35:44 <fizzie> "First, any self-respecting audiophile would be embarrassed to admit using a USB turntable, as there are no high-end models." 16:38:55 <Gregor> And what if you're not an audiophile :P 16:39:33 <fizzie> Then you are unimportant and not worth an answer, I believe. (I'm speaking from the viewpoint of this document, you understand.) 16:39:47 <fizzie> Anyway, you only need about $1000 to do it almost right, that's not too bad. 16:41:14 <fizzie> (Or $100 if you already have a good analog turntable.) 16:41:32 <Phantom_Hoover> <Ngevd> I think there's actually someone near HEXHAM, THE CAPITAL OF ESOTERIC PROGRAMMING who does it for a living 16:41:43 <Phantom_Hoover> Dude, Helsinki is the capital. 16:41:48 <Phantom_Hoover> Look at all the Finns here. 16:41:53 <Gregor> How about this: What if the LP format sucks ass, your records have been sitting around for years and are probably scuffed anyway, and audiophiles are retardedly trying to preserve what amounts to white noise? 16:43:49 -!- impomatic has joined. 16:43:53 <impomatic> Hi :-) 16:46:53 <Gregor> impomatic: Let us discuss the correct procedure for converting LP -> FLAC 16:48:11 <fizzie> The correct procedure is: you put the LP into a flatbed scanner, scan it as a Windows .bmp file, and then rename that file to .flac. 16:49:46 <Gregor> *clap clap* 16:50:08 <Gregor> `addquote <Gregor> Let us discuss the correct procedure for converting LP -> FLAC <fizzie> The correct procedure is: you put the LP into a flatbed scanner, scan it as a Windows .bmp file, and then rename that file to .flac. 16:50:10 <HackEgo> 669) <Gregor> Let us discuss the correct procedure for converting LP -> FLAC <fizzie> The correct procedure is: you put the LP into a flatbed scanner, scan it as a Windows .bmp file, and then rename that file to .flac. 16:50:54 <fizzie> What? It's lossless! 16:52:34 <Vorpal> no it isn't. The scanner will introduce some noise 16:52:44 <Vorpal> at the very least some thermal noise 16:53:21 <Vorpal> and even if you get rid of that you have various quantum noise thingies 16:56:37 <fizzie> No, no, it's called "free LOSSLESS audio codec". 16:56:54 <impomatic> What's LP, apart from "Limited Process"? :-) 16:57:22 <Deewiant> Long Playing 16:59:13 <Vorpal> impomatic, which in this case refer to a type of gramophone record 17:02:06 -!- ive has joined. 17:11:54 -!- impomatic has quit (Quit: impomatic). 17:12:09 <Gregor> We really need better terms for degrees of lossiness. 17:12:23 <Gregor> Since it's not the /format/ that causes loss, it's the /conversion/. 17:12:45 <Gregor> FLAC is lossless, but converting from an LP can't be, GIF is lossless but only supports a 256-color palette ... 17:22:06 <fizzie> Assuming we're inside a simulation anyway, converting from an LP sure can be lossless. 17:32:15 * Phantom_Hoover ponders again the perennial question of what ais' middle name is. 17:42:03 <Vorpal> Phantom_Hoover, does it matter? 17:42:34 <Gregor> Phantom_Hoover: Irene. His parents ... they weren't so good with names. 17:43:21 <Vorpal> fizzie, why? What if the simulation runs on a analogue computer? 17:43:39 <Phantom_Hoover> Gregor, not implausible, given that he did say that his parents gave both him and his brother gender-neutral names, although not his sister. 17:44:33 <fizzie> My guess is "I-don't-have-a-middle-name" is his middle name. 17:45:01 <Gregor> "Irene" is not a gender-neutral name :P 17:47:40 -!- SgeoN1 has joined. 17:47:56 <SgeoN1> You should become a magical girl. 17:48:16 <Vorpal> ... who? 17:48:31 <Gregor> EEEEEEEEEEEEEEEEEEEVERYONE 17:49:35 -!- Ngevd has quit (Ping timeout: 276 seconds). 17:49:38 <Phantom_Hoover> Lymee, aha, your sock is revealed! 17:50:20 <Vorpal> I don't understand windows IO handling. When windows is under heavy disk load, other programs that seemingly should not need to access the disk respond slowly too, that doesn't happen under linux. 17:50:24 <Vorpal> same disk too 17:50:33 <Vorpal> so wtf 17:50:56 <Lymee> My what? 17:56:03 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds). 18:02:34 -!- Taneb has joined. 18:06:10 <Taneb> Oh yeah, I changed my name 18:06:14 -!- Taneb has changed nick to Ngevd. 18:06:22 <Gregor> Welcome back, Ngevd! 18:19:26 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 18:24:11 -!- elliott has joined. 18:24:18 <elliott> Deewiant: http://hackage.haskell.org/packages/archive/bifunctors/0.1.2/doc/html/Data-Bifunctor-Apply.html 18:24:27 <elliott> There's your (three ampersands) 18:24:49 <elliott> f [three ampersands] g == ((f,g) <<.>>) 18:25:13 <Deewiant> Yeah I noticed that earlier today 18:25:25 <elliott> Deewiant: Hideous name though 18:25:30 <Deewiant> I also filed a bug about the fact that his definitions aren't as lazy as Control.Arrow's 18:26:17 <elliott> And here I am thinking I'm a genius for realising that what you wanted were essentially Biapplicatives, going to check bifunctors for a detail I needed to write them down, and then noticing they were already there :P 18:26:31 <elliott> Still need Trifunctors though right??? 18:26:42 <elliott> Also it's missing `both`. :p 18:27:11 <Deewiant> join (uncurry (<<.>>)) 18:27:47 <elliott> Deewiant: Yes, which is not nice to use 18:28:03 <elliott> Thus giving it a name :-P 18:28:17 <Deewiant> Yep :-P 18:28:41 <elliott> It'd be nice if Data.Bifunctor.Apply exported bilift = (<<.>>) 18:28:46 -!- ais523 has joined. 18:28:51 <elliott> Or at least I wouldn't want to write ((f,g) <<.>>) 18:29:27 <elliott> http://hackage.haskell.org/packages/archive/bifunctors/0.1.2/doc/html/Data-Bitraversable.html Prize to the first person to find a use for these :P 18:29:52 <SgeoN1> Why do electronics disintegrate in my hands? 18:30:43 <elliott> Deewiant: But I was thinking (before I realised all this) that I could snap up the "combinators" name on Hackage, since it's not taken; then I could include nice things like (.:) too. 18:30:58 <elliott> And names for flip (.) and flip ($). 18:31:04 <Deewiant> How cunning 18:31:14 <elliott> I detect sarcasm 18:31:53 <Deewiant> Well, more sinful than cunning 18:32:06 <elliott> What part is sinful 18:32:10 <elliott> Claiming the combinators name? 18:32:11 <Deewiant> "combinators" 18:32:18 <Deewiant> Nothing should be called that :-P 18:32:32 <SgeoN1> Got a good old email account phishing mail 18:32:39 <SgeoN1> Completely generic 18:32:50 <elliott> Deewiant: What would you call something that defined all the birds in To Mock a Mockingbird, except with reasonable names so they're not birds 18:32:59 <Deewiant> birdlike-combinators 18:33:07 <SgeoN1> When people reply, is there database automatically or manually filled? 18:33:11 <elliott> Deewiant: I UNBIRDED THEM 18:33:30 <SgeoN1> What would happen if I said my password is FUCKPHISHERS 18:33:52 <ais523> elliott: http://esoteric.voxelperfect.net/wiki/User:Ncrazyj isn't as good as some of the spam we've been getting, but I'm about to delete it, so if you care about saving a copy you'd better look now 18:34:34 <elliott> thank you kindly 18:35:50 <ais523> can I delete it now, then? 18:36:03 <elliott> Absolutely not. (Yes, I doubt I can stop you anyway.) 18:36:11 <elliott> (diff) (hist) . . N Talk:Brainlove‎; 23:47 . . (+102) . . Maharba (Talk | contribs) (New page: Don't let User:Phantom Hoover see this. —~~~~) 18:36:12 <elliott> Sage words 18:36:24 <elliott> I was hoping the word love would keep him away... --Aptennap 07:14, 18 September 2011 (UTC) 18:36:26 <elliott> NOTHING CAN SAVE YOU 18:36:47 <ais523> I raged at it in-channel 18:37:13 <ais523> although not very hard, as raging ais523 looks much the same as normal ais523 18:37:15 <elliott> We need to seriously deincentivise the creation of BF derivatives somehow. 18:37:17 -!- mycrofti1 has changed nick to mycroftiv. 18:37:29 <elliott> Like, if you make a brainfuck derivative, you have to provide a translation of your page in Swahili. 18:37:33 <ais523> well, it's not like all these BF derivatives hurt anyone 18:37:36 -!- derdon has joined. 18:37:41 <ais523> and it helps get their authors into esolangs 18:37:45 <elliott> ais523: They hurt me. 18:39:18 <Ngevd> Do MIBBLLII and I hate your bf-derivative I really do count as branfuck derivatives? 18:39:46 <elliott> I liked I hate your bf-derivative I really do before it turned out that the author actually likes BF derivatives 18:39:52 <elliott> :( 18:41:24 <elliott> 21:52:17: <ais523> bleh, a search for "which punctuation marks are uppercase?" gave me no results 18:41:27 <elliott> ais523: try ask jeeves 18:41:35 <elliott> 21:57:59: <zzo38> Is there any standard function for "foldr (.) id"? 18:41:38 <ais523> haha, I forgot that existed 18:41:42 <elliott> > ala Endo foldMap [succ, succ] 99 18:41:43 <lambdabot> Not in scope: `foldMap' 18:41:46 <elliott> > ala Endo mconcat [succ, succ] 99 18:41:46 <lambdabot> Couldn't match expected type `(a -> a) -> Data.Monoid.Endo a' 18:41:47 <lambdabot> again... 18:41:48 <elliott> > mconcat [succ, succ] 99 18:41:49 <lambdabot> Ambiguous type variable `a' in the constraints: 18:41:49 <lambdabot> `Data.Monoid.Monoid a' 18:41:49 <lambdabot> ... 18:41:53 <elliott> >_< 18:41:55 <elliott> wrong intsance 18:41:56 <elliott> ok wait I forget... 18:42:04 <elliott> hmm 18:42:10 <elliott> :t mconcatMap 18:42:11 <lambdabot> Not in scope: `mconcatMap' 18:42:13 <ais523> IIRC it's just an alias for some other search engine, but I'm trying it anyway 18:42:18 <elliott> > ala Endo (mconcat . map) [succ, succ] 99 18:42:19 <lambdabot> Couldn't match expected type `[b -> n']' 18:42:19 <lambdabot> against inferred type `[a ... 18:42:29 <elliott> > ala Endo (const mconcat) [succ, succ] 99 18:42:30 <lambdabot> No instance for (Control.Newtype.Newtype (a -> a) (t -> a1)) 18:42:30 <lambdabot> arising fro... 18:42:32 <elliott> ?hoogle concatMap 18:42:32 <monqy> :t ala 18:42:32 <lambdabot> Prelude concatMap :: (a -> [b]) -> [a] -> [b] 18:42:32 <lambdabot> Data.ByteString concatMap :: (Word8 -> ByteString) -> ByteString -> ByteString 18:42:32 <lambdabot> Data.Foldable concatMap :: Foldable t => (a -> [b]) -> t a -> [b] 18:42:33 <lambdabot> forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o' 18:42:39 <elliott> ?hoogle foldMap 18:42:39 <lambdabot> Data.Foldable foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m 18:42:39 <lambdabot> Data.Traversable foldMapDefault :: (Traversable t, Monoid m) => (a -> m) -> t a -> m 18:42:44 <elliott> > ala Endo Data.Foldable.foldMap [succ, succ] 99 18:42:44 <lambdabot> 101 18:42:47 <elliott> there we go 18:42:49 <elliott> monqy: http://hackage.haskell.org/packages/archive/newtype/0.2/doc/html/Control-Newtype.html 18:43:00 <ais523> oh wow, one of the results was even relevant 18:43:16 <elliott> ais523: nice 18:43:20 <ais523> not very /good/, but relevant: http://typophile.com/node/60376 18:43:56 <elliott> oh, oerjan started working this out later on 18:44:32 <elliott> 22:59:14: <CakeProphet> data Many a = One a | Many (Many a) 18:44:40 <elliott> CakeProphet: this is the partial computation monad 18:45:04 <elliott> CakeProphet: also known as resumption 18:45:08 <elliott> 23:01:08: <CakeProphet> count (One a) = 1; count (Many a) = 1 + count a 18:45:14 <elliott> that counts the number of steps needed to complete the computation 18:45:21 <elliott> 23:01:54: <oerjan> also it's isomorphic to that delayed monad thing 18:45:21 <elliott> yeah 18:47:07 <elliott> 23:32:12: <ais523> hmm, idea my supervisor had for sandboxing OCaml (whilst preventing uses we don't want of the standard library): reject all mentions of modules other than Pervasives, combined with rejecting the stuff in Pervasives we don't want them to use 18:47:15 <elliott> ais523: that's basically a one-time hack version of SafeHaskell :P 18:47:20 <elliott> which is in latest ghc 18:47:34 <ais523> hmm, glad to know the idea isn't completely stupid 18:47:48 <ais523> I may put a prctl() on there just to make sure 18:47:54 <elliott> ais523: just use UMLBox, dude 18:47:59 <elliott> it's a simple "make" to build 18:48:00 <ais523> I wonder if it's possible to run OCaml in one of those? 18:48:07 <elliott> and you can disable all file access 18:48:12 <elliott> and just use nice and sleep to handle the rest 18:48:19 <elliott> five line shell script 18:48:28 <elliott> no OCaml module hacks required 18:50:15 -!- copumpkin has joined. 18:50:23 <elliott> ais523: no? 18:51:11 <elliott> 00:56:27: <oerjan> <ais523> haha, INTERCAL will have that feature all to itself now! <-- i thought you were referring to CTCP SOURCE here 18:51:11 <elliott> 00:56:40: <ais523> no, to putting expressions on the LHS of an assignment 18:51:15 <elliott> ais523: the only thing gone is n+k patterns 18:51:23 <elliott> you can still redefine (+) locally just fine 18:51:33 <ais523> INTERCAL reverse assignments work like n+k patterns 18:51:36 <ais523> just, on anything 18:52:07 <ais523> (as long as it doesn't use the same variable or constant twice, e.g. .1$.1 <- #1$#2 isn't going to work well) 18:52:18 <elliott> that's just finding a fixed point 18:52:29 <elliott> 01:05:53: <Gregor> Surely IRC doesn't predate URLs ... 18:52:29 <elliott> URLs: 1994; IRC: 1988 18:52:30 <elliott> Gregor: so yes it does 18:53:04 <ais523> hmm, now I'm wondering when the Web was invented 18:53:22 <ais523> 1989 18:53:36 <ais523> ah, now why it requires an FTP server location makes a lot of sense 18:53:37 <elliott> Sheesh, I was just about to tell you. 18:53:48 <elliott> The web only went public in 1990 anyway. 18:54:32 <Ngevd> It was invented by someone from Hexham 18:54:37 <Ngevd> Well, it wasn't 18:54:41 <Ngevd> Same country 18:54:54 -!- elliott has quit (Read error: Connection reset by peer). 18:55:00 -!- elliott has joined. 18:56:03 <elliott> 01:32:20: * SgeoN1 badmoods 18:56:03 <elliott> not a verb 18:56:58 <elliott> 01:50:55: <monqy> intesting is _not a word_ 18:56:58 <elliott> it's what intestines do 18:57:06 <elliott> what's up intestines? oh nothing, just intesting 18:58:18 <elliott> `addquote <itidus21> :D :D oh man.. i wonder if they ever made chess variants based off of animes 18:58:19 <HackEgo> 670) <itidus21> :D :D oh man.. i wonder if they ever made chess variants based off of animes 18:58:36 <monqy> it is a good quote 18:59:36 <elliott> 02:55:59: <monqy> is suicide chess anything like strip chess 18:59:36 <elliott> suicide strip chess 19:00:06 <tiffany> intercal x_x 19:00:10 <monqy> hi 19:00:33 <ais523> what's wrong with INTERCAL? 19:00:46 <elliott> ais523: tiffany just says random words at random times followed by x_x, as far as I can tell 19:00:53 <tiffany> "A Sieve of Eratosthenes benchmark, computing all prime numbers less than 65536, was tested on a Sun SPARCStation-1. In C, it took less than half a second; the same program in INTERCAL took over seventeen hours.[6]" 19:01:01 <tiffany> how does that even 19:01:05 <elliott> ah yes, now we finally know what's wrong with intercal 19:01:07 <elliott> it's slower than C 19:01:16 <Gregor> Noooo! 19:01:17 <elliott> ais523: make C-INTERCAL produce faster programs and it'll be a great language 19:01:33 <tiffany> intercal uses <- for assignment 19:01:35 <tiffany> squirrel does too 19:01:36 <tiffany> ;-; 19:01:36 <ais523> elliott: C-INTERCAL is substantially faster, I remember running the same program a year ago 19:01:48 <monqy> tiffany: congratulations you've figured it out 19:01:59 <monqy> why intercal is a Bad Language 19:02:00 <elliott> that's the other bad thing about intercal, using <- to assign 19:02:01 <monqy> x_x 19:02:03 <ais523> well, there are only that many plausible syntaxes for assignment 19:02:11 <ais523> really, INTERCAL's expression syntax needs redoing 19:02:11 <elliott> RUINED FOREVER 19:02:18 <ais523> I'm really happy with the control flow 19:02:26 <tiffany> it's not a bad thing 19:02:30 <ais523> but the expressions, while interesting, are just obstructive for no good reason (other than being INTERCAL) 19:02:37 <monqy> I honestly prefer <- over = for assignment of mutable variables 19:02:49 <tiffany> it's that a programming language that i used to like a lot uses <- for assignment, which a parody language also uses 19:03:00 <monqy> oh no 19:03:08 <tiffany> squirrel uses variable <- value; and local variable=value; 19:03:11 <elliott> isn't squirrel that boring game extension languages 19:03:18 <elliott> yes languages PLURAL 19:03:23 <tiffany> squirrel's a 6k interpreted language 19:03:29 <tiffany> used in the source engine 19:03:31 <tiffany> and other thingies 19:03:37 <monqy> I remember squirrel being a boring game extension language last I checked 19:03:45 <ais523> I'm a fan of having separate "define initial (and thus eventual) value of immutable variable" and "assign to memory pointed to by variable name" operators 19:04:15 <monqy> mm 19:04:31 <ais523> most commonly, languages which make the distinction call them = and := 19:04:40 <monqy> tiffany: but does that make it interesting 19:04:48 <elliott> tiffany: so yes then 19:04:53 <monqy> the interpreter being 6k and used in places 19:05:07 <tiffany> I think I've grown closer to javascript 19:05:08 <elliott> i briefly considered using squirrel for mcmap i think but i didn't because it was bad 19:05:15 <elliott> oh well not as bad as javascript certainlt 19:05:16 <elliott> y 19:05:22 <monqy> heheheh 19:05:23 <tiffany> I was bored and wrote a 3D renderer with it using canvas and kind of like it 19:05:31 <ais523> 6k's quite big for an interp 19:05:37 <tiffany> 6k lines of code? 19:05:42 <tiffany> isn't lua like 50k? 19:05:49 <ais523> if you're aiming for small interp size 19:06:02 <tiffany> I wrote a super basic programming language in 40 lines of lua once 19:06:09 <ais523> rather than speed or clarity of input 19:06:39 <elliott> 03:02:44: <zzo38> Type of classInstances is classInstances :: Name -> [Type] -> Q [Name] different from the documentation, and the code producing error is $(classInstances ''Num [ConT ''Integer] >>= reify . head >>= runIO . print >> [| 0 |]) 19:06:41 <elliott> not a bug 19:06:44 <elliott> you're using an older GHC/TH 19:06:50 <elliott> http://hackage.haskell.org/packages/archive/template-haskell/2.5.0.0/doc/html/Language-Haskell-TH.html has the correct type for that version 19:07:08 <monqy> does zzo logread 19:07:16 <elliott> ?tell zzo38 the docs for classInstances aren't broken; you're just using an older GHC. see http://hackage.haskell.org/packages/archive/template-haskell/2.5.0.0/doc/html/Language-Haskell-TH.html for the documentation of your version 19:07:16 <lambdabot> Consider it noted. 19:07:34 <ais523> my record for small interp is 14 bytes (http://esoteric.voxelperfect.net/wiki/MiniMAX), but it doesn't do I/O and the source is in binary 19:07:35 -!- Ngevd has quit (Ping timeout: 276 seconds). 19:07:48 <tiffany> ._. 19:08:15 <ais523> there's a 36-byte one by someone else which avoids both issues 19:08:35 -!- rottytooth has joined. 19:08:38 <elliott> 03:07:17: <zzo38> OK, I managed to report bug now 19:08:38 <elliott> do I have to comment /there/ too? 19:08:40 <ais523> http://esoteric.voxelperfect.net/wiki/MinISCule 19:08:45 <elliott> hmm, rottytooth rings a bell 19:08:53 <elliott> but I'll `? welcome all the same 19:08:54 <elliott> `? welcome 19:08:55 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 19:09:04 <monqy> thanks `? welcome 19:09:04 <rottytooth> Hi there 19:09:41 <elliott> oh, he had an actual bug 19:09:43 <elliott> compiler panic 19:09:48 <ais523> hmm, seems calamari's website is down 19:09:59 <monqy> what ghc version though maybe it was fixed?? who knows..... 19:10:06 <elliott> 7.0.3 19:10:34 <ais523> elliott: valgrind panics and reports a bug when running in the Secret Project 19:10:37 <elliott> hmm, I should probably use enumerators for this 19:10:58 <ais523> but that's probably just an effect of the Debugger Repulsion Field 19:11:00 <elliott> ais523: did you report it? 19:11:03 <ais523> no 19:11:07 <elliott> lame :P 19:11:39 <ais523> I'm not convinced the Secret Project counts as a supported platform 19:12:50 <elliott> 04:09:19: <copumpkin> no, most programming (and proof assistants) model an intuitionist (constructive) logic 19:12:57 <elliott> copumpkin: you can always just add LEM as an axiom 19:13:16 <copumpkin> and stop being able to compute things 19:13:18 <ais523> which one's LEM? 19:13:24 <copumpkin> A or NOT A 19:13:28 <ais523> aha 19:13:35 <ais523> you're right 19:13:51 <ais523> now I'm wondering what the double negation shift looks like in Curry-Howard 19:13:54 <copumpkin> elliott: it's fine as long as you're only thinking about truth of statements 19:14:07 <copumpkin> but if you ever want to deal with anything algorithmically it's pretty useless 19:14:25 <ais523> (a basic rule of computer science seminars is, if you ever see someone write f(¬¬A) = ¬¬f(A) on the whiteboard, you run) 19:15:16 <ais523> hmm, OISCs are always going to win, in general, on compiler/interp size, right? 19:15:25 <ais523> as in, a simple OISC will beat a simple more-instruction-set-computer 19:15:28 <elliott> not necessarily 19:15:34 <elliott> ByteByteJump splits into two instructions fairly easily, IIRC 19:15:36 <ais523> and a complex one will typically beat a non-OISC of similar complexity 19:15:41 <elliott> that might be simpler than implementing the combined one 19:15:54 <elliott> because lots of OISCs are basically two instructions in disguise 19:16:01 <elliott> http://esolangs.org/wiki/ByteByteJump#The_two-instruction_ByteByte.2FJump 19:16:10 <elliott> depends on what you're implementing it in ofc 19:17:05 <elliott> 04:14:52: <zzo38> Wikipedia does mention "Correspondence between classical logic and control operators", it has to do with continuations, apparently. 19:17:05 <elliott> v 19:17:06 <elliott> http://okmij.org/ftp/Computation/lem.html 19:19:55 <elliott> ais523: quick, what's a Perl script to print if I have two newlines at the end of a file? 19:20:00 <elliott> as opposed to just one terminating newline 19:20:12 <ais523> to check for double-newline at the end of a file? 19:20:13 -!- Taneb has joined. 19:20:45 <elliott> yes 19:20:54 <ais523> umm... "undef $/; $_=<>; print "ends with double newline\n" if /\n/\n$/s 19:20:56 <ais523> " 19:20:58 <elliott> "Haskell frameworks -vs- Arc for web apps" oh no, someone let the kids into /r/haskell :/ 19:21:05 <ais523> err, I screwed up the quoting the program onto IRC 19:21:11 <ais523> undef $/; $_=<>; print "ends with double newline\n" if /\n/\n$/s; 19:21:12 <ais523> there we go 19:21:13 <elliott> thx 19:21:16 <ais523> I think, at least, it's untested 19:21:17 <monqy> people still care about arc? 19:21:33 <monqy> people cared about arc? 19:21:33 <elliott> Backslash found where operator expected at -e line 1, near "/\n/\" 19:21:33 <elliott> (Missing operator before \?) 19:21:33 <elliott> syntax error at -e line 1, near "/\n/\" 19:21:33 <elliott> Substitution pattern not terminated at -e line 1. 19:21:34 <elliott> :-P 19:21:40 <elliott> just need to remove the extra / 19:21:42 <ais523> undef $/; $_=<>; print "ends with double newline\n" if /\n\n$/s; 19:21:46 <ais523> it's actually an extra / 19:21:52 <ais523> oh right, that's what yous aid 19:21:55 <ais523> *you said 19:22:13 <ais523> just assume I'm drunk, it's simpler 19:22:17 <ais523> (I'm not, but I get this way anyway sometimes) 19:22:41 <Taneb> I need to change my nick permanently 19:22:48 -!- Taneb has changed nick to NGEvD. 19:22:53 <monqy> ngevd 19:22:59 <elliott> taneb: why 19:23:01 -!- NGEvD has changed nick to Ngevd. 19:23:19 <monqy> whos taneb 19:23:22 <elliott> taneb is nicer than ngevd imho 19:23:24 <elliott> as 19:23:25 <elliott> a name 19:23:37 <Ngevd> :t "Ping" 19:23:37 <lambdabot> [Char] 19:24:07 <elliott> "I see you didn't list javascript. For prototyping, it's hard to imagine how another existing language would make it much faster as it can be done with jQuery currently." 19:24:15 <elliott> jQuery: a good language to develop web apps in 19:26:04 -!- Ngevd has quit (Remote host closed the connection). 19:26:19 <monqy> bye ngevd 19:26:24 <elliott> rip ngevd 19:26:25 <elliott> died as he lived 19:26:29 <monqy> ngevd 19:27:18 <elliott> hmm, there are too many iteratee libraries :'( 19:27:36 <monqy> :( 19:28:14 -!- Ngevd has joined. 19:28:32 <elliott> i cannot decide between iteratee, enumerator, and iterIO :'( 19:28:58 <Ngevd> Right, Ngevd is what I am called on IRC now 19:29:05 <Ngevd> Unless I change it 19:29:11 <elliott> im dont like ngevd 19:29:13 <elliott> whym not taneb :( 19:29:16 <Ngevd> Taneb|Kindle doesn't like it 19:29:23 <monqy> ngevd|kindle 19:29:23 <elliott> why doesnt, he like it 19:29:52 <elliott> whym doesnt 19:29:54 <elliott> he like it 19:29:55 <elliott> :'( 19:29:56 <Ngevd> Awkward to type on a Kindle 19:30:23 <elliott> and 19:30:24 <elliott> ngevd isn't 19:30:53 <Ngevd> No, Ngevd is 19:30:55 <Ngevd> Taneb isn't 19:31:02 <elliott> oh 19:31:03 -!- dell has joined. 19:31:04 <elliott> this sounds 19:31:07 <elliott> like superiority for taneb 19:31:08 <elliott> hi dell 19:31:09 <elliott> `? welcome 19:31:10 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 19:31:50 <dell> i have simply dropped the idea of llvm-bf converter....i think asm-bf will be awesome! 19:31:52 <dell> ? 19:32:07 <elliott> oh 19:32:09 <elliott> were you dell last time 19:32:13 <elliott> i think you had a different nick then 19:32:13 <Ngevd> asm? 19:32:15 <ais523> hmm, that seems like a decent idea 19:32:18 <ais523> although could be difficult 19:32:26 <elliott> ais523: oh, i told dell to talk to you about gcc-bf, they were asking about it 19:32:41 <elliott> they wanted to do llvm-bf and I said to talk to you because you had considered it 19:32:41 <elliott> etc. 19:32:47 <dell> ais523:real mind fucker project 19:32:48 <elliott> but I guess that doesn't matter now if... what is asm-bf 19:32:56 <elliott> are you trying to convert xeightsix asm into bf 19:32:57 <dell> assembler to brainfuck 19:33:01 <elliott> which assembler 19:33:02 <dell> x86 19:33:05 <elliott> ah 19:33:07 <elliott> good 19:33:08 <ais523> really, BF isn't that bad, despite its name 19:33:10 <elliott> luck with that 19:33:21 <ais523> although x86 is possibly going to make life hard for yourself 19:33:28 -!- Nisstyre has quit (Ping timeout: 260 seconds). 19:33:35 <elliott> that makes it easier to drop, which is a good quality in projects 19:33:35 <ais523> I wonder what the simplest asm would be? Redcode? 19:33:40 <elliott> ais523: OISC, duh 19:33:42 <dell> i find llvm a little too complex to parse 19:33:47 <elliott> dell: LLVM has an API... 19:33:49 <ais523> I don't consider OSICs to be asms 19:33:59 <elliott> you could just write a backend the proper way 19:34:01 <elliott> like ais523 was doing with gc-cbf 19:34:03 <elliott> gcc-bf 19:34:08 <ais523> elliott: I looked into llvm-bf 19:34:18 <ais523> LLVM makes so many assumptions that aren't true about BF, I was heartbroken 19:34:25 <ais523> whereas gcc tries not to 19:34:32 <elliott> ais523: however hard it is, doing it by manually parsing LLVM IR is never going to be easier than writing a backend 19:34:34 <ais523> admittedly, the code doesn't actually /work/ 19:34:42 <ais523> elliott: right, that much is obvious 19:34:45 <ais523> so I didn't need to comment on it 19:35:01 <ais523> and just argued with the most recent statement that wasn't 19:35:18 -!- Ngevd has quit (Read error: Connection reset by peer). 19:35:18 -!- Ngevd_ has joined. 19:35:35 <elliott> what was that statement? 19:35:49 <elliott> I already told dell that you considered llvm-bf more of a pain to do than gcc-bf 19:35:53 <elliott> last time they were here 19:35:57 -!- zzo38 has joined. 19:36:02 <ais523> that llvm was worth using at all 19:36:40 <zzo38> LLVM is better designed than C, in my opinion. 19:36:40 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it. 19:36:52 <zzo38> @messages 19:36:52 <lambdabot> elliott said 29m 36s ago: the docs for classInstances aren't broken; you're just using an older GHC. see http://hackage.haskell.org/packages/archive/template-haskell/2.5.0.0/doc/html/Language- 19:36:52 <ais523> zzo38: I'm not sure that's a good comparison 19:36:52 <lambdabot> Haskell-TH.html for the documentation of your version 19:37:24 <ais523> it's like comparing gcc's internal intermediate representation with ADA 19:37:30 <ais523> *Ada 19:38:06 <elliott> I think Ada is better than cheese. 19:38:30 <dell> these days i get involved in college crap so much that not getting enough time 19:38:53 <zzo38> ais523: What I mean is, with a good macro system and literate programming environment, I think LLVM would be a good programming language to program in, instead of being limited to C. 19:38:59 <dell> i am still wondering whether to do this in python or C 19:39:08 <elliott> do it in asm MORE HARDCORE YEAAAAAAAAAAAAAAAAAAAAAH 19:39:10 <zzo38> dell: Doing what in Python or C? 19:39:17 <ais523> zzo38: I don't, it'd be rather inflexible and nonportable 19:39:23 <dell> x86 asm to bf 19:39:47 <ais523> I suppose you could write it in 32-bit LLVM 19:40:01 <ais523> dell: C is a really inappropriate lang for that, and Python is almost as bad 19:40:16 <ais523> I don't think I'd consider doing that in anything other than a functional language 19:40:19 <ais523> although, I wouldn't really consider it at all 19:40:27 <elliott> <me> haskell <ais> ocaml 19:40:30 <Gregor> dell: If you're gonna do an ASM->BF, may I recommend MIPS. 19:40:35 <elliott> <zzo> FORTH 19:40:43 <ais523> elliott: oh, Haskell and OCaml are both pretty similar for that sort of thing 19:40:46 <Ngevd_> I AM CURIOUS 'BOUT SOMETHING 19:40:56 <ais523> even though they're different languages in general 19:40:58 <Gregor> Ngevd_: How you got that stylish underscore? 19:40:58 <elliott> Gregor: He's set on x86, since that is surely easier than the LLVM-BF he's given up on. 19:41:04 <Gregor> elliott: lol 19:41:08 <Ngevd_> What do pythonbashers generally think of Boo? 19:41:15 <ais523> they generally haven't heard of it 19:41:22 <ais523> at least, if you count me as the main Pythonbasher here 19:41:25 <Gregor> Ngevd_: Mostly, "wtf is Boo" 19:41:46 <elliott> i looked at boo once it is so boring 19:41:55 <elliott> it's PYTHON... but SLIGHTLY DIFFERENT... 19:41:57 <elliott> and ONLY FOR .NET 19:42:02 <elliott> THIS IS WHAT THE WORLD NEEDS 19:42:05 <Ngevd_> It's strongly typed python, essentially 19:42:12 <Gregor> Yeah, "for CLI" pretty much means "I love sucking Microsoft's cock" 19:42:14 <elliott> oh is it strongly typed 19:42:17 <Gregor> Sooooooo, a big no on that one. 19:42:20 <elliott> it's PYTHON... but SLIGHTLY BETTER 19:42:21 <ais523> my objections to Python have pretty much nothing to do with its typing discipline 19:42:31 <ais523> there's a place for both statically and dynamically typed languages 19:42:40 <elliott> a, b = 0L, 1L #The 'L's make the numbers double word length (typically 64 bits) 19:42:40 <elliott> as opposed to "bignum", like Python 19:42:42 <elliott> this is kind of like Erlang 19:42:47 <elliott> let's use all of Prolog's syntax but none of its semantics 19:42:50 <ais523> (I sort of subscribe to the viewpoint that "strongly typed" has been used to mean so many different things that it's meaningless) 19:43:15 <elliott> ais523: IMO, the place for dynamically-typed languages is as a subset of statically-typed ones 19:43:26 <elliott> static and dynamic typing are basically two completely different things, anyway 19:43:29 <elliott> comparing them is near-meaningless 19:43:40 <elliott> if statements are a kind of dynamic typing, really 19:44:18 <copumpkin> I like to call dynamic types "monoidal programming" 19:44:22 <ais523> for compiled languages, the distinction is easy: a statically-typed language is one where, after compilation, you can take any variable in the program and know what type it is without having to actually run the program 19:44:39 <copumpkin> languages are not compiled 19:44:44 <copumpkin> implementations are 19:45:33 <ais523> well, yes 19:45:48 <ais523> languages that can reasonably directly be compiled then, I guess 19:45:57 <zzo38> But one thing I think missing in LLVM is explicit unions. You can still do unions by what it has, but I would prefer an explicit type for unions (this can also allow certain optimizations and analysis to be done) 19:47:00 -!- dell has quit (Quit: Leaving). 19:48:16 <zzo38> You could check many things at runtime, even in a system that doesn't actually have pointers, by representing a pointer by an object ID and offset. Object IDs are garbage collected. If you try to dereference a pointer with an invalid offset or invalid object ID, you get an error message. Same thing when using unions incorrectly. You can use it for both static and dynamic analysis. 19:52:14 -!- Nisstyre has joined. 19:55:38 -!- Ngevd_ has quit (Read error: Connection reset by peer). 19:59:15 <elliott> Hey Vorpal, you get to be the substitute fizzie 20:02:07 -!- sllide has joined. 20:02:25 <elliott> Pah 20:03:40 -!- Ngevd has joined. 20:03:43 <elliott> ais523: Go wake fizzie up 20:04:04 <ais523> how? it's not like he's in the room 20:04:21 <elliott> Well then find the room he's in and be in it so that you can wake him up 20:04:29 <ais523> he'd probably wake up naturally first 20:04:43 <elliott> That's for the universe to know and you to find out 20:07:46 <elliott> Hmm, seems nobody really uses iterIO 20:07:52 <elliott> But maybe everyone is just a bad person??? 20:08:08 -!- Ngevd has quit (Ping timeout: 252 seconds). 20:10:55 <elliott> monqy: Hey, pick the library for me. It is your duty. 20:12:48 <monqy> :( 20:12:55 <monqy> i know nothjing about their diffierences 20:13:05 <monqy> never even heard of the ones that aren';t iteratee 20:13:12 <elliott> Well, it's pretty much between enumerator and iterIO :-P 20:13:20 <elliott> enumerator is like iteratee but more things use it and it's simpler. 20:13:23 <elliott> iterIO is different. 20:13:35 <elliott> And has a lot of seeming advantages, e.g. http://www.scs.stanford.edu/~dm/iterIO/, http://hackage.haskell.org/packages/archive/iterIO/0.1/doc/html/Data-IterIO.html 20:13:43 <elliott> But I do not know :'( 20:14:04 <elliott> "Because of CPS, iteratee should be capable of delivering the best performance of the three iteratee packages. A disadvantage of iterIO's approach is that every invocation of lift must be propagated all the way up the call chain, where a small amount of overhead is added for each enclosing catchI or similar call. While iterIO can handle most successful IterR outcomes and caught exceptions locally without popping back up the call stack, there is a 20:14:04 <elliott> lso potentially overhead from actually checking that the outcome was successful at each bind site. (GHC's inliner may be able to avoid the check in some cases.) 20:14:04 <elliott> However, iteratee lacks several features of iterIO; offering these features would likely reduce the benefits of CPS and complicate code. For instance, there is no way to execute a pure iteratee without monadic actions (the benefit touted above and described below for LL(*) parsing). Moreover, iteratee's exception mechanism discards the current location in the input stream, making it unsuitable for failed parse alternatives. IterIO provides a gene 20:14:10 <elliott> ral control mechanism to make arbitrary requests from enumerators (such as seek, tell, getpeername, get SSL information, etc.); iteratee instead overloads the exception mechanism for control purposes, which prevents control operations from returning values. Thus, while iteratee can implement seek, it cannot, for instance, implement tell. 20:14:14 <elliott> The enumerator package's approach is closer to iterIO's, but makes every iteratee into a monadic action in the underlying monad m: 20:14:17 <elliott> -- From the enumerator package: 20:14:18 <elliott> newtype Iteratee a m b = Iteratee { runIteratee :: m (Step a m b) } 20:14:21 <elliott> Here Step is similar to iterIO's IterR type, but the m wrapper disallows iterIO's LL(*) parsing tricks. It also causes gratuitous invocation of m's bind function, which can be expensive when using stacks of monad transformers. Furthermore, enumerator discards the input state on all errors, making it impossible to resume from failures that leave the input in a known state (such as a parsing lookahead failure) 20:15:37 <elliott> " 20:16:01 <elliott> iterIO looks like a Fancy Better thing but I don't know if I should use it since it only has one release and nobody else has used it... 20:16:39 <monqy> that is not a good reason not to use it????? maybe???????? 20:16:49 <elliott> monqy: but it might have lots of bugs :( 20:16:55 <elliott> Whereas enumerator is used in a lot of high-profile packages like Yesod 20:17:07 <elliott> maybe iterIO will be really slow or something... 20:17:23 <Vorpal> <elliott> Hey Vorpal, you get to be the substitute fizzie <-- ? 20:17:51 <elliott> Vorpal: Turns out I could answer my own question 20:17:54 <elliott> Well, maybe 20:18:05 <elliott> I was wondering how many packets a Minecraft client would send before it waits for the server to respond before sending any more 20:18:09 <elliott> And I think the answer is just the login packets 20:18:43 <fizzie> I'm not going to be non-away today, sorry. 20:18:56 <fizzie> (Today I've been mostly Portal.) 20:19:26 <elliott> So irresponsible. 20:19:29 <fizzie> My guess is also that it just sends the login, if you have a completely quiet server. 20:19:35 <elliott> Your people NEED you. 20:20:06 <fizzie> Don't know about the case where you have a server that goes non-responsive in the middle of the game; in that case I think it might keep on sending movement stuff until some sort of a timeout. 20:23:58 <elliott> fizzie: The usecase is pretty much "testing my client parser stuff before writing the server packet code". :p 20:24:07 <elliott> Whereby code, I mean "protocol.txt-alike". 20:24:13 -!- sllide has quit (Ping timeout: 260 seconds). 20:24:21 <elliott> So I think I'll just write the server stuff. 20:24:54 -!- oerjan has joined. 20:25:15 <elliott> heloerjan 20:25:29 <elliott> `log hell?oerjan 20:25:33 <HackEgo> 2011-09-18.txt:20:25:15: <elliott> heloerjan 20:25:50 <oerjan> *gasp* 20:25:53 <elliott> :( 20:25:54 <elliott> `log hell?oerjan 20:25:56 <ais523> `pastelogs hell?oerjan 20:25:57 <elliott> i swear ive done it before 20:25:57 <HackEgo> 2011-09-18.txt:20:25:33: <HackEgo> 2011-09-18.txt:20:25:15: <elliott> heloerjan 20:25:59 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22953 20:26:01 <elliott> ais523: so cheating 20:26:07 <elliott> 2011-08-31.txt:20:45:31: <elliott> heloerjan 20:26:09 <elliott> :') 20:26:11 <Lymee> `log `log 20:26:12 <HackEgo> Mmmmm ... no. 20:26:16 <Lymee> >:c 20:26:22 <Lymee> I'll get you next time. 20:26:25 <ais523> 2011-08-31.txt:20:45:31: <elliott> heloerjan 20:26:26 <ais523> 2011-09-18.txt:20:25:15: <elliott> heloerjan 20:26:29 <ais523> once before 20:26:30 <elliott> Lymee: HackEgo doesn't like talking to you any more. 20:26:37 <elliott> ais523: yes, that's what I just quoted :P 20:26:45 <monqy> does `log `log not work anymore? 20:26:55 <ais523> I was wondering about it 20:27:02 -!- Ngevd has joined. 20:27:04 <ais523> but I think there's just some anti-Lymia feature 20:27:07 <oerjan> too bad there is no way to find out 20:27:12 <ais523> just like the bots don't talk to each other 20:27:15 <Ngevd> Hello! 20:27:20 <ais523> hi 20:27:21 <ais523> `log fungot 20:27:22 <oerjan> hello 20:27:22 <fungot> ais523: mr president, mrs soltwedel-schfer, perhaps i might continue with the member states, including austria. only by doing so the commission is not allowed to be marketed. this parliament has judged the customs union the economic benefits of the use of the best food industries in the same way as heterosexuals. nor can you say who is to carry out an analysis of the market. 20:27:25 <HackEgo> 2010-05-02.txt:17:50:20: <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 20:27:26 <elliott> ais523: it's an ignore list 20:27:30 <elliott> `log `log 20:27:32 <elliott> still works 20:27:34 <HackEgo> 2011-09-17.txt:13:54:08: <itidus21> `log recogni 20:27:35 <ais523> see what I mean? fungot didn't respond to hackego's mention of its name 20:27:36 <fungot> ais523: as to the " no" campaign was not pushing for a " no" to drugs and arms, which originates with this criminal structure in fnord that is alleged to have been in the vanguard for change as mr martens said, but it was, but she has managed to flout the treaty and widened in the concept of reducing the emission of greenhouse gases ( of which parliament forms a part of these amendments were adopted by the iter. i shall only gi 20:27:54 <ais523> ^ul (`log ^ul)S 20:27:54 <fungot> `log ^ul 20:27:58 <HackEgo> No output. 20:27:58 <elliott> "the " no" campaign was not pushing for a " no" to drugs and arms" 20:28:02 <fizzie> elliott: You could of course dump-to-a-file a mcmap session (it's just one line: "fwrite(net_dpacket.p->bytes, 1, net_dpacket.p->size, clientdumpfile);" in the PACKET_FROM_CLIENT case of proxy.c) and then test your thing with nc localhost 26655 < blah.dump. But since you need to do both directions at some point anyway... 20:28:02 <elliott> just say no to legs 20:28:08 <ais523> hmm, although hackego does respond to fungot, it seems 20:28:11 <fungot> ais523: the report on the current uclaf to be strengthened at european level. against that we have had in getting information with regard to monetary policy, a factor of six. i am asking, under rule 115, that we should offer help to alleviate the effects of global warming caused by concentrations of dangerous substances. i can reassure mrs keppelhoff-wiechert: the object of discussion at the intergovernmental conference, mr pre 20:28:14 <ais523> ^ul (`log \^ul)S 20:28:14 <fungot> `log \^ul 20:28:17 <HackEgo> 2011-02-10.txt:16:55:32: <Deewiant> elliott: On fungot's ^ul interpreter, we're talking 10s vs 15s or something 20:28:19 <elliott> fizzie: Ooh, clever. 20:28:26 <elliott> fizzie: It's easier than that though isn't it 20:28:30 <elliott> fizzie: I can just use nc or whatever 20:28:36 <elliott> nc mcserver port | nc -l port 20:28:39 <elliott> Erm 20:28:43 <elliott> Except with tee in there 20:28:46 <elliott> nc mcserver port | tee log | nc -l port 20:28:49 <elliott> Then connect to that with MC 20:29:20 <fizzie> No, because that won't feed the output of the final 'nc' back to the stdin of the first 'nc'. 20:29:27 <fizzie> And you need bidirectional forwarding there. 20:29:46 <oerjan> ^ul (!echo hi) 20:29:46 <ais523> fizzie: just use a fifo, and connect it in a loop 20:29:46 <elliott> fizzie: That just needs my "tie" tool. 20:29:50 <elliott> ais523: No FIFO required 20:29:51 <ais523> I do that all the time when making IRC bots 20:29:59 <oerjan> ^ul (!echo hi)S 20:29:59 <fungot> !echo hi 20:30:01 <EgoBot> hi 20:30:03 <elliott> tie is just pipe(), dup[two], and an exec 20:30:03 <ais523> elliott: indeed, but it's the easiest way to do it with standard UNIX commands 20:30:12 <elliott> and it just takes a shell line 20:30:18 <elliott> ais523: yeah, 'strue 20:30:19 <ais523> I wrote something tie-like in my first degree 20:30:33 <elliott> It was originally more complex because I thought it needed to take a list of shell statements to pipe 20:30:33 <ais523> and then discovered mkfifo, which saves having to get a separately-compiled program involved 20:30:37 <elliott> but I realised you could just join them with | 20:30:44 <elliott> ais523: tie is more elegant though :P 20:30:51 <elliott> I want a whole suite of pipe-wrangling tools 20:30:57 <ais523> heh, I wrote one 20:31:21 <ais523> the most general one there was "backpipe" which gave a bunch of FDs connected to each other, so that you could connect programs in arbitrary ways 20:31:30 <ais523> but it turns out to do the same thing as mkfifo, just more confusingly 20:32:10 <elliott> ais523: well, catbus connects each command in a list to every other command 20:32:17 <elliott> I never implemented it, mostly because I could never find a use for it 20:32:26 <elliott> nc -e can be recreated with tie, you don't need catbus 20:32:29 <elliott> tie 'nc server port | prog' 20:32:29 <elliott> or 20:32:31 <elliott> tie 'prog | nc server port' 20:32:42 <elliott> (you can rotate the pipeline passed to tie arbitrarily with no semantic effect) 20:33:20 <ais523> prog < fifo | nc server port > fifo 20:33:29 <elliott> yeah but that's grosser 20:33:31 <ais523> although it's probably a little neater with a UUOC 20:33:50 <Gregor> I pretty much just use socat. 20:33:59 <Gregor> It's major overkill for most things, but soooo delicious. 20:34:10 <elliott> socat is awful. 20:34:19 <Gregor> elliott: YOU'RE AWFUL 20:34:29 <elliott> But at least it's not GNU netcat, which is just plain defamation of the netcat name. 20:34:36 <elliott> $ mkfifo fifo; nc p.nerd.nu 25565 <fifo | nc -l 9999 | tee fifo >log 20:34:36 <elliott> This looks right, right? 20:34:52 <elliott> ("log" is meant to end up containing everything the Minecraft client sent; it will connect to port 9999) 20:35:56 <elliott> hmm... I can connect fine, at least 20:35:59 <elliott> s/ dollar sign// 20:36:00 <fizzie> I would've done "tee log >fifo", but there's no particular reason. 20:36:21 <ais523> fizzie: there is for interactive applications, I think; tee ends up buffering 20:37:02 <elliott> ais523: oh, it does? 20:37:03 <fizzie> I would hope bash can do it with an anonymous pipe too; if with nothing else, then with coproc, but coproc's horrible. I would hope you could get by with just "nc server port <&3 | nc -l listenport | tee logfile > &4" + some magic to make the pipe. 20:37:07 <elliott> ais523: will it flush once the nc -l quits? 20:37:19 <ais523> I don't know, but I hope so 20:37:49 <elliott> -rw-r--r-- 1 elliott elliott 41K 2011-09-18 21:38 log 20:37:49 <elliott> seems to have worked 20:37:51 <elliott> smaller than I was expecting, too 20:38:05 <elliott> although mostly ^As 20:38:15 <fizzie> Client-to-server direction is a lot less costly too. 20:38:19 <elliott> (Minecraft sends hundreds of pings per second for no obvious reason) 20:38:50 <elliott> I should probably take this to -minecraft to avoid annoying ais523, but at least it's fairly esoteric 20:39:16 <ais523> elliott: oh no, you've made me rage at SDL's event loop again 20:39:23 <elliott> wat 20:39:27 <ais523> I suppose I just hate tick-based event loops 20:39:29 <elliott> oh, right 20:39:39 <elliott> have I mentioned that @'s event loop is THE BEST? :-P 20:39:44 <elliott> (it doesn't have one) 20:39:44 <ais523> and much prefer the schedule-future-action-then-wait-until-next-scheduled-action version 20:40:07 <ais523> elliott: well, how does @ idle the processor if all process-equivalents are sleeping simultaneously, for whatever reason? 20:40:23 <oerjan> <Taneb> My initials would have been N.G.E.vD. 20:40:27 <ais523> I suppose, it doesn't have an explicit event loop, but it still needs a scheduler 20:40:33 <ais523> which has the same sort of issues that an event loop does 20:40:39 <oerjan> Nathan Galactus Elliott von Death 20:41:20 <Gregor> fizzie: I wonder ... if you did have a very high-quality scanner, COULD you make a converter from a scanned LP to a super-low-quality audio file? I wonder if you could guess the pits based on something. 20:41:57 <elliott> "Additional to the result of get it returns the number of consumed bytes and the rest of the input." No it doesn't, you're lying :-( 20:42:02 <elliott> Gregor: I think someone did that 20:42:14 <elliott> same person as the person who did "use a CRT as a radio transmitter" maybe? 20:42:17 <elliott> it sounded quite bad 20:42:27 <Ngevd> Evidence that elliott is my evil twin: 20:42:28 <elliott> <ais523> elliott: well, how does @ idle the processor if all process-equivalents are sleeping simultaneously, for whatever reason? 20:42:28 <fizzie> http://www.phys.huji.ac.il/~springer/DigitalNeedle/ 20:42:33 <fizzie> That seems to be the first likely hit. 20:42:37 <elliott> ais523: it's more like, to do event things you just register handlers at the low elvel 20:42:39 <elliott> level 20:42:42 <Ngevd> We both live in the same town, despite never having met 20:42:49 <elliott> ais523: or if you block, then your continuation just gets inserted as an event handler, and your (lightweight) thread killed 20:42:56 <Ngevd> We both have some connection to the name "Elliott" 20:43:06 <ais523> elliott: but you're going to need to implement the thing that dispatches events to the handler 20:43:12 <elliott> ais523: so if you block on waiting for the next event, your thread's continuation is installed as an event handler, and the thread is killed 20:43:19 <elliott> ais523: not really 20:43:22 <ais523> yep, I understand that much 20:43:28 <ais523> but something has to call the event handler 20:43:29 <elliott> ais523: /causing/ the event causes each handler to be spawned as a thread 20:43:35 <ais523> say a process does sleep(1000) 20:43:44 <ais523> what's responsible for calling the continuation it gives once the sleep ends? 20:43:47 <elliott> so, e.g., what does writing to a pipe do? spawn off all the read-handlers for that pipe with the data, nothing else 20:43:53 <elliott> ais523: the timer driver 20:44:00 <ais523> ah, OK 20:44:09 <ais523> so how does the timer driver idle when it doesn't have any timings to give right now? 20:44:11 <elliott> presumably you'd abstract over it to offer sleep to processes 20:44:12 <ais523> it can't do the equivalent of a sleep 20:44:29 <ais523> as it can't ask itself 20:44:37 <elliott> ais523: well, how do you talk to hardware timers nowadays? 20:44:40 <Ngevd> When questioned about this situation, elliott suggested a fight to the death, I suggested something more civilized 20:44:47 <elliott> presumably, there's an interface that doesn't involve polling constantly 20:44:52 <Ngevd> I have facial hair 20:44:55 <fizzie> Elsewhere, someone wanted a "line-in to CD" adapter in the same vein as those "line-in to tape" things you can buy to plug your MP3 player to an old tape-only car stereo; now *there's* quite a technical challenge. 20:44:56 <elliott> it might use interrupts 20:44:57 <Gregor> elliott, fizzie: Yessssssssssss 20:44:58 <ais523> elliott: ah, OK, it's triggered by interrupts? 20:45:01 <elliott> which are basically hardware event handlers 20:45:09 <oerjan> Ngevd: goatie? 20:45:11 <elliott> fizzie: that seems to be it 20:45:14 <oerjan> *goatee 20:45:16 <elliott> ais523: probably 20:45:28 <ais523> fizzie: ouch, that sounds basically impossible 20:45:35 <ais523> I think it'd have to be wireless 20:45:40 <Ngevd> oerjan: No, that requires more hair 20:45:42 <Gregor> lol, it's so gloriously bad. 20:45:48 <oerjan> ah. 20:45:48 <ais523> but even then it'd be basically impossible 20:45:49 <Gregor> But it is recognizably music! 20:45:51 <elliott> Gregor: You just need to anti-phaser it 20:45:56 <elliott> I presume that's possible 20:45:58 <elliott> Uh 20:45:59 <elliott> Phaser 20:46:04 <elliott> I mean the effect that you can hear on the first recording 20:46:13 <Ngevd> Some time in 2008-2009, elliott or someone with the same name as elliott kicked someone in the face 20:46:29 <elliott> that probably wasn't me 20:46:31 <Ngevd> Someone who later became good friends with me 20:46:36 <elliott> well, if it /was/ me, I don't remember it 20:46:54 <Gregor> The "someone" in that sentence is Taneb/Ngevd. 20:46:56 <ais523> there are quite a lot of people called elliott in the world 20:46:57 <elliott> ais523: anyway, @ handles push-based things better than things you need to poll, I think 20:47:03 <ais523> we've had two of them here 20:47:05 <elliott> ais523: but you can model a pull as a push 20:47:18 <Gregor> My cat just LEAPED off the windowsill, halfway across the room. 20:47:22 <Gregor> She had no reason at all to do that. 20:47:26 <Ngevd> Someone called Elliott Hird? 20:47:28 <elliott> ais523: just tell the driver you'd like to know X, and give a handler 20:47:37 <ais523> the other one had a different surname 20:47:38 <elliott> or whatever 20:47:44 <Gregor> Ngevd: The later "someone" I meant :P 20:47:55 <elliott> Gregor: She had the most important reason: she's a cat. 20:48:00 <Gregor> elliott: Tre. 20:48:01 <Gregor> *True 20:48:07 <Ngevd> That was neither me nor elliott 20:48:34 <ais523> Ngevd: are you claiming that you're the real Elliott Hird, and elliott is just some sort of imposter who happens to have the same name as you? 20:48:36 <fizzie> ais523: Well, I suppose it might depend on the structure of the reader. You don't really need a rotating fake-disc, "just" some sort of a fixed thing that reads the rotation of the central spine, and a thing clamped firmly on top of the radially moving read-head, that can both read the radial distance as well as change its reflectivity. Still. 20:48:45 <Ngevd> ais523: My name is Nathan 20:49:06 <Ngevd> ais523: I am claiming that elliott is my evil twin 20:49:08 <ais523> fizzie: I'm thinking more about the issue of connecting wires through all possible interfaces for inserting a CD into a reader 20:49:15 <ais523> also, you'd have to know where the read-head was 20:49:33 <fizzie> ais523: Well, yes, it'd work in pretty much one CD player model only. 20:49:37 <ais523> and it could be at any place rotationally around the disk 20:49:40 <ais523> oh, I see 20:49:44 <ais523> I thought you meant a general one 20:49:45 <olsner> hmm, do evil people think that good people are evil? 20:49:51 <elliott> ?hoogle (a,b) -> (b->c) -> (a,c) 20:49:51 <lambdabot> Data.Graph.Inductive.Query.Monad mapSnd :: (a -> b) -> (c, a) -> (c, b) 20:49:51 <lambdabot> Control.Arrow (>>^) :: Arrow a => a b c -> (c -> d) -> a b d 20:49:51 <lambdabot> Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 20:49:54 <fizzie> Well, a general one would of course be more desirable. 20:49:57 <elliott> gah 20:50:00 <elliott> Deewiant: 20:50:16 <Deewiant> flip second 20:50:27 <elliott> Deewiant: I want it flipped :P 20:50:29 <elliott> I'm trying to write 20:50:31 <elliott> | otherwise = do 20:50:32 <elliott> (a, dump') <- runGetState (get :: Get ClientPacket) dump 0 20:50:32 <elliott> (a:) <$> parseDump dump' 20:50:34 <elliott> nicerly 20:50:34 <olsner> (e.g. when there's an evil twin, does the evil twin think he has a good twin or that his good twin is his evil twin?) 20:50:57 <elliott> second parseDump $ runGetState (get :: Get ClientPacket) dump 0 20:51:05 <elliott> then I need (a,[a]) -> [a] 20:51:11 <elliott> oh hmm 20:51:16 <elliott> second parseDump <$> runGetState (get :: Get ClientPacket) dump 0 20:51:19 <elliott> uncurry (:) . second parseDump <$> runGetState (get :: Get ClientPacket) dump 0 20:51:19 <elliott> I think 20:51:20 <fizzie> ais523: "Perhaps if you had some sort of a separate CD-shaped medium upon which you could (in advance) "print" the required impressions, maybe with some sort of a laser... uh, wait." 20:51:21 <Deewiant> ?ty uncurry (:) 20:51:22 <lambdabot> forall a. (a, [a]) -> [a] 20:51:45 <Lymee> :t (:) 20:51:46 <lambdabot> forall a. a -> [a] -> [a] 20:51:55 <Lymee> Oh that 20:52:09 <Lymee> :t fix(:) 20:52:09 <lambdabot> Occurs check: cannot construct the infinite type: a = [a] -> [a] 20:52:10 <lambdabot> Probable cause: `:' is applied to too few arguments 20:52:10 <lambdabot> In the first argument of `fix', namely `(:)' 20:52:10 <elliott> Main.hs:13:38: 20:52:10 <elliott> Couldn't match expected type `[ClientPacket]' 20:52:10 <elliott> with actual type `Either String [ClientPacket]' 20:52:10 <elliott> Expected type: ByteString -> [ClientPacket] 20:52:10 <elliott> Actual type: ByteString -> Either String [ClientPacket] 20:52:14 <elliott> Deewiant: Not quite :( 20:52:15 <Lymee> :t fix(flip :) 20:52:16 <lambdabot> forall (f :: * -> *) a b. (Functor f) => [f (a -> b) -> a -> f b] 20:52:18 <elliott> I think I do need something monadic 20:52:39 <oerjan> <olsner> hmm, do evil people think that good people are evil? <-- at least they pretend to think that. 20:52:49 <Lymee> @hoogle fix 20:52:50 <lambdabot> Data.Function fix :: (a -> a) -> a 20:52:50 <lambdabot> Control.Monad.Fix fix :: (a -> a) -> a 20:52:50 <lambdabot> module Control.Monad.Fix 20:52:57 <oerjan> <SgeoN1> Why do electronics disintegrate in my hands? 20:52:58 <Ngevd> Not enough people are signing my epetition 20:53:01 <oerjan> pauli effect? 20:55:09 -!- ais523 has quit (Remote host closed the connection). 20:56:29 <oerjan> a non-spam esoforum message appears! 20:57:36 <monqy> of course it's a brainfuck derivative. 20:58:22 <oerjan> :t fix.(:) 20:58:22 <lambdabot> forall a. a -> [a] 20:58:39 <monqy> repeat? 20:58:42 <oerjan> yep 20:59:09 <oerjan> :t fix.(++) -- cycle 20:59:10 <lambdabot> forall a. (Monoid a) => a -> a 20:59:16 <oerjan> ...or that. 20:59:24 <monqy> mcycle 21:00:16 <elliott> micyle 21:00:40 <zzo38> olsner: I would think you cannot tell the answer to "when there's an evil twin, does the evil twin think he has a good twin or that his good twin is his evil twin?" in general; you need to determine by each specific case 21:00:41 <Lymee> > head 20 $ fix.(:) 1 21:00:42 <lambdabot> Couldn't match expected type `a -> a' against inferred type `[t]' 21:01:02 <oerjan> Lymee: precedence error 21:01:07 <Lymee> > take 20 $ fix.(:) 1 21:01:08 <lambdabot> Couldn't match expected type `[a -> a]' 21:01:08 <lambdabot> against inferred type `[t] ... 21:01:13 <Lymee> > take 20 $ (fix.(:)) 1 21:01:15 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 21:02:10 <oerjan> :t fix.(>>) -- forever 21:02:11 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b 21:09:08 <elliott> gah 21:09:49 <elliott> cereal's error messages are _not_ helpful. 21:12:07 <elliott> fizzie: wait, Minecraft prefixes the length of strings in /codepoints/? 21:12:08 <elliott> not /bytes/? 21:12:22 <elliott> THANK GOD, IT ALMOST AVOIDED USING LENGTH PREFIXES! 21:12:33 <elliott> IT WAS ALMOST SIMPLE TO PARSE THIS ONE FIELD TYPE!!!! ALMOST!! 21:12:55 <monqy> minecraft 21:13:07 <elliott> OK, this has ceased to be esoteric, now it's just annoying, I'm going to -minecraft to avoid incurring ais' wra- oh, he's gone 21:13:13 <elliott> STAYING HERE THEN HAHAHAHAHAHAHA 21:13:47 <elliott> hmm, apparently all the strings are 240 bytes or less, which might come in handy... 21:14:51 <elliott> oerjan: "Note: this structure is not thread safe. It is not safe to use value of this type simultaneously from multiple threads." 21:14:57 <elliott> oerjan: suffer with me pls 21:15:03 <elliott> (yes, it has _pure_ functions operating on it) 21:15:07 <elliott> "pure" 21:15:31 <elliott> OK, well at least it's UCS-2, so there's no surrogate. 21:15:32 <elliott> surrogates. 21:15:37 <elliott> So it does /kind of/ prefix the length in bytes. 21:18:08 <elliott> oh my, 1407808682066025 is a very long string 21:18:23 <elliott> oh 21:18:24 <elliott> hey monqy 21:18:30 <monqy> hii 21:18:39 <elliott> how many bits are there in a short? hint: the answer is not 64 21:18:54 <monqy> trick question it's system dependant 21:19:06 <monqy> or is it not 21:19:11 <monqy> i'm bad at bit sizes 21:19:35 <fizzie> elliott: Well, it's actually in UTF-16 elements, so you just multiply by two to get bytes. 21:19:45 <elliott> fizzie: DING DING DING WRONG 21:19:54 <olsner> at least 16 bits per short, iirc 21:20:03 <elliott> fizzie: It's in UCS-2 elements, so that works. 21:20:10 <elliott> fizzie: Were it UTF-16, that would not work. 21:20:12 <elliott> Surrogate.s 21:20:15 <elliott> s/\.s/.s/ 21:20:17 <elliott> s/\.s/s./ 21:20:48 <olsner> if your bytes are 16-bit, two bytes is enough for any UTF-16 surrogate pair 21:20:53 <fizzie> elliott: No, it's a Java string; they are UTF-16, just that everything counts surrogate pairs as two elements. 21:20:58 <elliott> $ dist/build/mchost/mchost < log 21:20:58 <elliott> CHandshake "ehird" 21:20:58 <elliott> CLogin 17 "ehird" 0 0 0 0 0 0 21:20:58 <elliott> too few bytes 21:20:58 <elliott> From:demandInput 21:20:58 <elliott> Well... it's a start. 21:21:01 <elliott> fizzie: Oh. Weird. 21:21:23 * elliott makes his TH code generate Debug.Trace.trace calls. 21:21:24 <elliott> So gross. 21:22:53 <fizzie> java.lan.String has a separate API which returns codepoints (as 'int's) decoding the surrogate pairs, but I don't think people generally bother to use it, because it's so clumsy (offsets are still counted as 'char's and all). Still, officially it's UTF-16. 21:23:01 <fizzie> s/lan/lang/ 21:23:05 <Ngevd> There should be more Esoteric Markup Languages 21:23:40 <elliott> getClauseExp = [| Debug.Trace.trace (showHex $(litE (integerL (fromIntegral ptype))) "") $(foldl apE (appE (varE 'pure) (conE pname)) . map fieldGet $ fields) |] 21:23:41 <elliott> Yesssssssssssssssss 21:23:44 <monqy> markup is kind of boringggggggggg 21:23:59 <elliott> getClauseExp = [| Debug.Trace.trace (showHex ($(litE (integerL (fromIntegral ptype))) :: Int) "") $(foldl apE (appE (varE 'pure) (conE pname)) . map fieldGet $ fields) |] 21:23:59 <elliott> EVEN BETTER 21:24:01 <monqy> nice TH 21:24:13 <zzo38> I implemented Maybe as an instance of Quasi (in Template Haskell) 21:24:16 <elliott> Yay, I misparse 0D. 21:24:37 <Ngevd> Goodnight 21:24:39 <elliott> Oh, float/double confusion. 21:24:39 <monqy> zzo38: oh? 21:24:39 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 21:24:41 <elliott> Ngevd: goodnight 21:24:52 <zzo38> elliott: Yes. runIO is the only unimplemented method. 21:25:00 <elliott> I am not monqy. 21:25:11 <zzo38> monqy: Yes. 21:25:40 <monqy> how do the rest work, then? 21:26:24 <elliott> :t encodeFloat 21:26:24 <zzo38> It is this: instance Quasi Maybe where { qNewName = const Nothing; qReport _ _ = Just (); qRecover = flip mplus; qReify = const Nothing; qClassInstances _ _ = Nothing; qLocation = Nothing; qRunIO _ = error "Cannot run I/O in Maybe"; }; 21:26:25 <lambdabot> forall a. (RealFloat a) => Integer -> Int -> a 21:26:32 <elliott> What. 21:26:37 <elliott> Oh, hmm. 21:26:38 <elliott> instance Serialize Double where 21:26:38 <elliott> put d = put (decodeFloat d) 21:26:39 <elliott> get = liftM2 encodeFloat get get 21:26:41 <elliott> instance Serialize Float where 21:26:43 <elliott> put f = put (decodeFloat f) 21:26:45 <elliott> get = liftM2 encodeFloat get get 21:26:47 <elliott> This is not right. 21:26:49 <elliott> I think? 21:26:52 <elliott> Is this right? 21:26:54 <elliott> :t decodefloat 21:26:54 <lambdabot> Not in scope: `decodefloat' 21:26:56 <elliott> :t decodeFloat 21:26:57 <lambdabot> forall a. (RealFloat a) => a -> (Integer, Int) 21:26:58 <zzo38> In the state monad I could probably make better implementations of these things. 21:27:07 <elliott> Yeah, that's not right. 21:27:24 <monqy> your instance looks kind of useless :( 21:27:34 <monqy> are there any Quasi laws 21:27:47 <zzo38> monqy: I don't know. But if there is, I hope to fix it. 21:28:01 <elliott> -- Conversions use 'STUArray' and the 'ST' monad to reinterpret bytes 21:28:02 <elliott> -- and get /what we assume to be/ the IEEE 754 binary representation 21:28:02 <elliott> -- of single and double precision floating point numbers. 21:28:03 <zzo38> One reason I have it is simply to get an Exp from a [| ... |] 21:28:04 <elliott> bad doggy :( 21:28:15 <elliott> fizzie: Hey, you should port your float/double code to Haskell :-P 21:29:17 -!- ive has quit (Ping timeout: 276 seconds). 21:33:24 <zzo38> How do I make an instance of a state monad? 21:33:45 <oerjan> @src MonadState 21:33:45 <lambdabot> Source not found. You untyped fool! 21:33:49 <oerjan> bah 21:33:54 -!- pikhq has quit (Ping timeout: 252 seconds). 21:34:05 <oerjan> :t put 21:34:06 <lambdabot> forall s (m :: * -> *). (MonadState s m) => s -> m () 21:34:12 <oerjan> it's that class, anyway 21:34:55 <zzo38> I want to make "instance Quasi (State QuasiState)" but it won't accept that. 21:35:49 <oerjan> zzo38: do you have FlexibleInstances option? 21:36:44 <zzo38> OK, it seems to work now. 21:37:03 <oerjan> otherwise there are some stupid ancient restrictions on instances and their types 21:37:14 <zzo38> Why? 21:38:02 <oerjan> standards compliance i assume 21:40:34 <oerjan> originally it was presumably to make type classes easy to implement 21:42:46 <oerjan> and Haskell 2010, the first revision in 12 years, only did a couple tiny changes to the fundamentals 21:43:07 <oerjan> (of the language, i don't think they touched type classes) 21:45:30 <oerjan> mainly they just incorporated the ffi and hierarchical module addendas, i think. and removed n+k patterns. 21:45:55 <oerjan> or was n+k later... 21:46:58 <elliott> there was a syntax change, I think 21:47:05 <elliott> to that stupid layout rule that nobody uses 21:47:07 <elliott> ("reparse if fail") 21:47:13 <elliott> or was it just making dangling else work 21:47:16 <elliott> as it does in all implementations 21:47:16 <elliott> dunno 21:47:24 <elliott> but yeah, Haskell has never been easy to implement :P 21:47:27 <oerjan> not the reparse if fail 21:47:32 <elliott> FlexibleInstances really needs to be default. 21:47:36 <oerjan> it was the operator precedence iirc 21:47:48 <oerjan> it was detached from the main parsing, to make things sane 21:47:52 <elliott> fizzie: Um, is there an 0x84 packet type? 21:47:55 <elliott> It's certainly not on the wiki. 21:48:15 <elliott> mcmap doesn't know it either. Hmph. 21:48:46 <elliott> Pretty sure I'm not desync'd either: 21:48:49 <elliott> CPlayerPosition 281.69999998807907 27.0 28.62000000476837 46.51032322405371 True 21:48:49 <elliott> CRespawn 21:48:49 <elliott> CKeepAlive 16777344 21:48:49 <elliott> CKeepAlive 0 21:48:49 <elliott> Failed reading: Unknown packet type 0x84 21:48:49 <elliott> Empty call stack 21:49:13 <elliott> Oh hmm what 21:49:27 <elliott> , packet 0x09 "CRespawn" [] -- dunno 21:49:29 <elliott> Not helpful, past me 21:49:38 <oerjan> also pattern guards. http://www.haskell.org/onlinereport/haskell2010/haskellli2.html#x3-5000 21:50:37 <monqy> not much in there, but at least the changes were good.... 21:50:59 <elliott> Pattern guards are standard now? Great 21:51:23 <elliott> Okay, entity_animate is sent by the client, apparently. :/ 21:54:15 <oerjan> the dangling else wasn't mentioned, but it see from http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-320003.6 that it was changed 21:54:35 <elliott> cool 21:55:05 <elliott> http://hackage.haskell.org/trac/haskell-prime/wiki/DoAndIfThenElse 21:55:05 <elliott> http://hackage.haskell.org/trac/haskell-prime/wiki/NondecreasingIndentation 21:55:13 <elliott> I think the first was accepted too 21:55:22 <elliott> at least, I use that style in one place in Shiro :-P 21:57:05 -!- derdon has quit (Remote host closed the connection). 22:00:19 <oerjan> elliott: i don't think NondecreasingIndentation is there 22:00:34 <elliott> ok 22:01:27 <zzo38> Now I managed to make instance Quasi (State QuasiState) 22:01:47 <oerjan> *i see from 22:02:16 <zzo38> It doesn't implement recover, reify, classInstances, or runIO. It might be possible to implement later, though. 22:02:25 <zzo38> If I know what its implementation should be. 22:03:20 <oerjan> elliott: also "that stupid layout rule which no one uses" is probably used quite a bit. one-liners in particular. 22:03:33 <elliott> oerjan: It's not used at all because nobody implements it. 22:03:44 <elliott> They implement similar behaviour in a different manner. 22:03:48 <oerjan> wat 22:04:03 <elliott> Go ask the GHC devs whether they implement layout by reparsing on failure 22:04:06 <elliott> Deewiant: I'm afraid I'm likely to make my TH generate less applicative output :-) 22:04:23 <elliott> Deewiant: (I'm micro-optimising ahead of my time for the hell of it and the Applicative stuff is not inlined out) 22:04:39 <oerjan> elliott: i thought you were talking about the insertion of } at syntax error... 22:05:47 -!- Zuu has joined. 22:06:08 <elliott> oerjan: I think I am; I'm not sure of the specifics 22:06:39 <oerjan> http://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3 22:07:02 <oerjan> hm i guess i should look at h98 version 22:08:23 <zzo38> With the Maybe instance I can do that: extractQ :: Q a -> a; extractQ = maybe (error "No value in Quasi") id . runQ; 22:08:45 -!- pikhq has joined. 22:09:14 <oerjan> elliott: what they _did_ remove is the dependency on operator fixities, which indeed no one implemented, because it's insane 22:10:24 <zzo38> What is the dependency on operator fixities? 22:11:09 <oerjan> http://haskell.org/onlinereport/syntax-iso.html end of section 9.3 22:13:02 <oerjan> basically when operator fixities were allowed to affect whether there is the kind of syntax error which needs inserting a }, things get horribly complicated (especially since fixities can be defined anywhere, even later in the file or in a local scope), so no one ever implemented it that way 22:14:19 <oerjan> i've heard rumors of someone managing to make a paradoxical case where the } insertion affected the size of the local scope of a definition such at the } should be inserted iff it wasn't :P 22:14:27 <oerjan> *such that 22:15:42 <oerjan> or something like that, i may be confusing somewhat with my own thoughts on the matter 22:16:06 <elliott> oerjan: that's beautiful :P 22:16:11 <elliott> maybe that was what was being talked about, then 22:25:18 <oerjan> if the fixities are not considered, then the underlying layout-free haskell syntax presumably becomes context-free and handleable by a yacc-style parser. since i vaguely think that's how ghc does it. 22:27:26 <zzo38> OK, I can understand why to remove the stuff mentioned at the end of section 9.3 because it can be difficult to implement, I read about how some things are implemented in GHC, and fixities are not known at parsing time, so that would make it difficult to implement. 22:27:49 <oerjan> yeah 22:31:40 -!- sebbu2 has joined. 22:31:40 -!- sebbu2 has quit (Changing host). 22:31:40 -!- sebbu2 has joined. 22:32:46 -!- sebbu has quit (Ping timeout: 260 seconds). 22:33:35 <elliott> [GblId, Arity=2, Caf=NoCafRefs, Str=DmdType LU(SAAAAAAAA)] 22:33:41 <elliott> SAAAAAAAA! 22:34:20 <oerjan> sounds like the core is preparing to attack 22:34:23 <elliott> at this point oerjan notices I'm reading core and fears for the safety of neighbouring towns 22:34:25 <elliott> snap 22:35:39 <oerjan> The Core - the story of how haskell destroyed northern england 22:36:01 <elliott> oerjan: here's a sad thing: GHC turns my "case" on a bunch of Word8 constants (with a single default case) into a bunch of nested if/then/elses, at least at the Core level, rather than some sort of jump table 22:36:12 <oerjan> it was all a plot by the glaswegians 22:36:28 <elliott> I might have to write my own, say by creating a Data.Vector of monadic actions 22:36:48 <elliott> or one of GHC's low-level array things 22:37:31 <oerjan> huh 22:37:35 -!- zzo38 has quit (Remote host closed the connection). 22:38:01 -!- Patashu has joined. 22:38:24 <oerjan> even after optimization? (not that i know this stuff) 22:38:30 <oerjan> food -> 22:39:27 <elliott> oerjan: yes, -O2 22:41:33 -!- Jafet has quit (Quit: Leaving.). 22:42:18 <oerjan> elliott: no i mean, are you printing the core after the optimization stage, i think there are different options... 22:43:29 <elliott> -ddump-simpl 22:43:43 <elliott> -ddump-simpl 22:43:43 <elliott> Dump final simplifier output 22:43:43 <elliott> [dynamic] 22:43:44 <elliott> so yes 22:43:52 <elliott> apparently GHC never does it, alas 22:43:58 <elliott> but backends might, I guess 22:49:10 -!- FireFly has quit (Quit: FireFly). 22:52:56 -!- ive has joined. 22:54:51 -!- NihilistDandy has joined. 22:56:02 -!- NihilistDandy has quit (Client Quit). 22:56:26 -!- NihilistDandy has joined. 23:13:54 -!- augur has quit (Remote host closed the connection). 23:28:21 <elliott> ?t \f x y -> flip f x `fmap` y 23:28:21 <lambdabot> Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v 23:28:24 <elliott> ?ty \f x y -> flip f x `fmap` y 23:28:26 <lambdabot> forall a a1 b (f :: * -> *). (Functor f) => (a -> a1 -> b) -> a1 -> f a -> f b 23:28:30 <elliott> ?hoogle (a -> a1 -> b) -> a1 -> f a -> f b 23:28:30 <lambdabot> Control.Monad liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r 23:28:30 <lambdabot> Control.Applicative liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c 23:28:30 <lambdabot> Prelude scanr :: (a -> b -> b) -> b -> [a] -> [b] 23:28:35 <elliott> Hmph. 23:30:40 -!- sllide has joined. 23:33:04 <oerjan> :t \f x y -> Prelude.flip f x `fmap` y 23:33:04 <lambdabot> forall a b c (f :: * -> *). (Functor f) => (a -> b -> c) -> b -> f a -> f c 23:33:06 -!- Jafet has joined. 23:33:12 <oerjan> oh 23:34:22 <oerjan> @pl \f x -> fmap . flip f x 23:34:22 <lambdabot> ((fmap .) .) . flip 23:34:47 -!- sebbu2 has changed nick to sebbu. 23:35:14 -!- augur has joined. 23:35:34 <oerjan> @pl \fmap flip -> ((fmap .) .) . flip 23:35:34 <lambdabot> (.) . (.) . (.) 23:38:02 <elliott> nice 23:39:33 <oerjan> :t flip 23:39:33 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 23:40:19 <monqy> @pl \ f x y -> flip f x `fmap` y 23:40:19 <lambdabot> (fmap .) . flip 23:40:28 <oerjan> :t \f x y -> flip x (f `fmap` y) 23:40:28 <lambdabot> forall (f :: * -> *) b a b1 (f1 :: * -> *). (Functor f1, Functor f) => (a -> b1) -> f (f1 b1 -> b) -> f1 a -> f b 23:40:30 <monqy> @pl \ fmap flip -> (fmap .) . flip 23:40:30 <lambdabot> (.) . (.) 23:40:35 <oerjan> argh 23:40:45 <oerjan> oh wait 23:40:59 <oerjan> :t \f x y -> f `fmap` y `flip` x 23:41:00 <lambdabot> forall a a1 b (f :: * -> *). (Functor f) => (a -> a1 -> b) -> a1 -> f a -> f b 23:41:06 <oerjan> *MWAHAHAHAHA* 23:41:15 -!- sllide has quit (Read error: Connection reset by peer). 23:41:37 <oerjan> @pl \f x y -> f `fmap` y `flip` x 23:41:38 <lambdabot> flip . (flip .) . fmap 23:42:13 * oerjan sits down to watch heads explode 23:42:15 <monqy> :t fmap fmap fmap 23:42:16 <lambdabot> forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) 23:42:55 <monqy> :t fmap fmap (fmap fmap fmap) 23:42:56 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) 23:43:26 <monqy> this is good 23:44:09 <oerjan> caleskell flip should definitely be an operator somewhere 23:44:22 <monqy> is it useful 23:44:39 <elliott> :t flip 23:44:39 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 23:44:47 <elliott> yeah 23:44:52 <elliott> ?hoogle f (a -> b) -> a -> f b 23:44:52 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 23:44:53 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 23:44:53 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 23:44:58 <elliott> wait, how does that work? 23:44:59 <elliott> there's no pure 23:45:06 <monqy> oh yeah that thing 23:45:15 <monqy> looks useful but flip is a bad name for it 23:45:19 <elliott> ?djinn Functor f => f (a -> b) -> a -> f b 23:45:19 <lambdabot> Error: Class not found: Functor 23:45:23 <elliott> oerjan: help 23:45:52 <oerjan> :t \ff x -> fmap ($x) ff 23:45:53 <lambdabot> forall a b (f :: * -> *). (Functor f) => f (a -> b) -> a -> f b 23:45:59 <monqy> i was just about to say that 23:46:06 <monqy> except with a isntead of x and f instead of ff 23:46:14 <monqy> and a space between \ and f 23:46:21 <monqy> and $ and a 23:46:42 <elliott> oerjan: I was about to ask a question about zip and map but then I realised that I was using mapM so it was irrelevant :( 23:46:54 <monqy> ?pl \ f a -> fmap ($ a) f 23:46:54 <lambdabot> flip (fmap . flip id) 23:47:17 <monqy> irrelevant? 23:47:26 <oerjan> elliott: i think fmap and caleskell flip together implement the intuition that when you combine applicatives where all except one term is a pure, only Functor is really needed. 23:47:35 <elliott> monqy: oh right 23:47:39 <elliott> oh oerjan did it 23:47:40 <elliott> before 23:47:41 <elliott> ok 23:47:42 <elliott> yes 23:47:49 <elliott> oerjan: yeah 23:48:00 <elliott> oerjan: I kind of find Functors ugly :( 23:48:08 <elliott> because of the weird restriction to one-argument functions 23:48:16 <elliott> it would be nice if there was a way to get N-argument functions without pure 23:48:26 <elliott> maybe just f a -> f b -> f (a,b) 23:52:01 <oerjan> you can get that with just <*> and <$>, i think 23:52:25 <elliott> oerjan: how 23:52:27 <elliott> hmm 23:52:28 <elliott> oh right you can 23:52:49 <elliott> so the question is, what can you implement (<$>) for but not (<*>)? and is it interesting at all? :P 23:53:19 <oerjan> well Functors are mathematically fundamental 23:53:23 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 23:53:59 <elliott> oerjan: yeah, I'm just wondering if they're Haskelly fundamental :P 23:54:54 <oerjan> hm i think (,) a is an example 23:55:06 <shachaf> oerjan: No, (,) is an Applicative. 23:55:10 <shachaf> It's Writer. 23:55:19 <elliott> shachaf: that requires a constraint though 23:55:23 <oerjan> shachaf: not without Monoid restriction on a 23:55:30 <oerjan> you need some way to combine two a's 23:55:37 <shachaf> Well, OK. 23:55:42 <shachaf> Map k has an instance of Functor. 23:56:12 <oerjan> that's pretty obviously an Applicative too, i think 23:56:39 <oerjan> in an analogous way as ZipList, just throw away non-common keys 23:57:42 <oerjan> might even be a Monad 23:58:34 <oerjan> oh wait, no return/pure is the problem 23:59:11 <oerjan> scratch that 2011-09-19: 00:01:54 <elliott> well yes but I'm saying no pure 00:01:56 <elliott> not saying Applicative 00:03:03 <oerjan> <elliott> so the question is, what can you implement (<$>) for but not (<*>)? 00:03:33 <elliott> yes 00:03:34 <oerjan> i think Map k has a perfectly fine <*> 00:04:01 <itidus21> A block of granite is flexible in that it can be carved in a myriad of ways. Using carving tools it can become a sculpture of anything. This is a non-reversible operation. One is forced to choose between the virginity of the granite block, or the actualization of a sculpture. 00:05:03 <monqy> I'm guessing Set doesn't count, since you don't exactly have <$> for it either 00:05:08 <Gregor> itidus21: FUCK THE STONE 00:05:10 <itidus21> I guess another thing you can do is divide the block up into different rearrangeable sections. 00:05:23 <itidus21> Gregor: ;_; sorry 00:05:32 <Gregor> lolwut 00:05:33 <monqy> for similar reasons as to why you wouldn;t have <*> 00:05:43 <oerjan> a stone raped Gregor when he was little 00:05:51 <itidus21> i have worshipped hte stone too much 00:05:59 <Gregor> I was using "fuck" in the classical sense of "fornicate at" 00:06:04 <itidus21> oh! 00:06:34 <oerjan> it was all the rage among the classical greek. 00:06:49 <Gregor> oerjan: Fornicating at stuff? 00:06:54 <itidus21> sorry guys.. thats my hijacking the conversation. but you probably all needed a small break. 00:07:02 <itidus21> letting the tension go a bit 00:07:06 <oerjan> Gregor: why else do you think they made all those nude statues. 00:07:12 * Gregor nods sagely. 00:07:34 <monqy> uughhhh all these applicative laws involve pure 00:07:39 <itidus21> there was no porn back then 00:08:20 <CakeProphet> there was 00:08:22 <elliott> monqy: I guess that's a problem 00:08:41 <CakeProphet> http://en.wikipedia.org/wiki/History_of_erotic_depictions 00:08:45 <oerjan> monqy: you might be able to use <$> instead some places? 00:08:48 <monqy> hm 00:08:49 <monqy> perhaps 00:08:57 <elliott> oerjan: why would this be taking up eighty percent of my time in a profiling: 00:08:57 <elliott> printDump :: ByteString -> IO () 00:08:57 <elliott> printDump dump 00:08:57 <elliott> | B.null dump = return () 00:08:57 <elliott> | otherwise = 00:08:57 <elliott> case SE.runGetState (SE.get :: Get ClientPacket) dump 0 of 00:08:59 <elliott> Left err -> hPutStr stderr err >> exitFailure 00:09:01 <elliott> Right (p, dump') -> print p >> printDump dump' 00:09:09 <itidus21> im a _pseudo_-chinese philosopher 00:09:16 <elliott> not the runGetState itself 00:09:19 <elliott> but the actual function 00:09:52 <oerjan> famous chinese philosopher Su Do 00:10:04 <itidus21> lol 00:10:09 <monqy> (.) <$> u <*> v = u <*> (v <*> w) 00:10:19 <oerjan> which somehow gets corrupted into Itidus in latin. 00:10:22 <elliott> oerjan: whyyyyyyyyyyyyyyyyyyyyyy 00:10:33 <monqy> The Law 00:10:48 <monqy> maybe I can squeeze some more laws out of this if I stare hard enough 00:10:50 <itidus21> i + s/teiida/tidus + s/20/21 00:11:09 <monqy> maybe it doesn't need any more laws 00:11:17 <elliott> monqy: what is w 00:11:25 <monqy> a typo 00:11:30 <elliott> what's it meant to be 00:11:37 <monqy> (.) <$> u <*> v <*> w = u <*> (v <*> w) 00:12:26 <oerjan> elliott: this doesn't look like my area of expertise 00:12:51 <elliott> oerjan: oh well :P 00:13:03 <monqy> trying to squeeze another law: 00:13:05 <Jafet> elliott: so spend eighty percent of your time optimizing it 00:13:06 <itidus21> ITIDVSXXI 00:13:24 <CakeProphet> `addquote <oerjan> famous chinese philosopher Su Do 00:13:26 <HackEgo> 671) <oerjan> famous chinese philosopher Su Do 00:13:32 <elliott> `delquote 671 00:13:34 <HackEgo> ​*poof* 00:13:50 <CakeProphet> elliott: you are an evil archival dictator 00:13:58 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C; main = print (unsafeCoerce (2 :: Int) :: Test) 00:14:24 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (2 :: Int) :: Test) 00:14:29 <EgoBot> A 00:14:33 <elliott> huh 00:14:35 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (0 :: Int) :: Test) 00:14:36 <CakeProphet> oerjan: ban elliott for gross lack of quoting you 00:14:40 <EgoBot> A 00:14:41 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (99 :: Int) :: Test) 00:14:46 <EgoBot> A 00:14:49 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (999 :: Int) :: Test) 00:14:54 <EgoBot> A 00:14:55 <monqy> im bad at law squezeing :( 00:14:58 <elliott> oerjan: help :( 00:14:59 <itidus21> i spent a lot of time scouring walk-in-bookstores for chinese philosophy books.. in hindsihgt i kinda wish i had amazon access instead 00:15:03 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (B :: Test) :: Int) 00:15:05 <oerjan> monqy: basically i think you can reshape everything into f <$> x1 <*> x2 <*> ... <*> xn form 00:15:08 <EgoBot> 4828174336 00:15:14 <elliott> oh no 00:15:16 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (C :: Test) :: Int) 00:15:21 <EgoBot> 35757122814038016 00:15:23 <elliott> oh no 00:15:31 <monqy> oerjan: what's everything 00:15:31 <elliott> > gcd 4828174336 35757122814038016 00:15:32 <lambdabot> 2048 00:15:38 <elliott> > map (div 2048) [4828174336, 35757122814038016] 00:15:39 <lambdabot> [0,0] 00:15:45 <elliott> > map (`div` 2048) [4828174336, 35757122814038016] 00:15:46 <lambdabot> [2357507,17459532624042] 00:15:47 <itidus21> philosophy texts don't show up as pirated ebooks often enouhg 00:15:49 <elliott> oerjan: help 00:16:02 <elliott> i guess they're pointers 00:16:05 <oerjan> monqy: any applicative expression using <$> and <*>. 00:16:07 <elliott> except 00:16:10 <CakeProphet> elliott: I would think so 00:16:11 <elliott> they're not 00:16:13 <elliott> because A isn't 00:16:15 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (A :: Test) :: Int) 00:16:19 <EgoBot> 35962179842425344 00:16:31 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99*2048) :: Test) :: Int) 00:16:42 <oerjan> monqy: flattening it, so to speak 00:16:44 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99*2048) :: Int) :: Test) 00:16:49 <EgoBot> A 00:16:54 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((999*2048) :: Int) :: Test) 00:16:55 <CakeProphet> oerjan: help I can't quote you. 00:16:58 <itidus21> 4828174336 = 0001 0001 1111 1100 1000 0001 1000 0000 0000 00:16:58 <EgoBot> A 00:17:00 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((9999*2048) :: Int) :: Test) 00:17:05 <EgoBot> A 00:17:07 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99999*2048) :: Int) :: Test) 00:17:12 <EgoBot> A 00:17:16 <monqy> A 00:17:17 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((999999*2048) :: Int) :: Test) 00:17:22 <EgoBot> A 00:17:29 <itidus21> :-?? 00:17:31 <elliott> help oerjan help 00:17:47 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((2^9) :: Int) :: Test) 00:17:48 <CakeProphet> I guess GHC just assigns some weird integer value for enum-like constructors? 00:17:53 <EgoBot> A 00:17:56 <Jafet> http://uncyclopedia.org/wiki/AAAAAAAAA! 00:17:56 <elliott> CakeProphet: i suspect they /are/ pointers, but tagged 00:17:57 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((2^(9+9)) :: Int) :: Test) 00:18:02 <EgoBot> A 00:18:13 <elliott> Jafet: hi how do i coerce a small integer to a data type thnx 00:18:37 <CakeProphet> toEnum 00:18:40 <oerjan> elliott: didn't someone say this stuff only worked with data types of at most 4 constructors, which Int obviously isn't 00:18:52 <Jafet> !haskell data Test = A | B | C deriving (Show, Enum); main = mapM_ (print.toEnum) [0..2] 00:19:13 <CakeProphet> I think you just want map there... 00:19:16 <elliott> oerjan: well that's why I'm doing arithmetic 00:19:18 <Jafet> Int has one constructor, namely I# 00:19:20 <elliott> Jafet: NOT EFFICIENT ENOUGH 00:19:22 <CakeProphet> er, nevermind. 00:19:56 <CakeProphet> elliott: I bet a GADT can be used to solve this issue. 00:19:57 <Jafet> !haskell data Test = A | B | C deriving (Show, Enum); main = mapM_ (putStr.show.(toEnum::Int->Test)) [0..2] 00:20:02 <EgoBot> ABC 00:20:13 <CakeProphet> GADTs are sufficient for all porpoises. 00:20:18 <elliott> Jafet: NOT EFFICIETNT ENOUGHGH 00:20:38 <Jafet> MOAR NITROGLYCERIN 00:21:27 <CakeProphet> elliott: what do you need Ints for? 00:21:41 <elliott> CakeProphet: Network protocol. 00:21:59 <CakeProphet> instance Show Test where ... :P 00:22:08 <elliott> What? 00:22:19 <CakeProphet> convert them into strings of integers. best plan. 00:22:21 <CakeProphet> most efficient. 00:22:45 <elliott> I don't think you know what I'm talking about. 00:22:48 <CakeProphet> nope 00:22:50 <oerjan> CakeProphet: sounds like the reflection package 00:23:15 <CakeProphet> elliott: I'm going entirely off of "network protocol" as the explanation for what you're doing. 00:23:27 <oerjan> CakeProphet: also when quoting me, you might want to include enough context to make it actually funny 00:23:39 <elliott> oerjan: what sounds like that? 00:23:44 <elliott> CakeProphet: No, you know the exact function I was trying to write. 00:23:46 <elliott> But w/e. 00:23:52 <oerjan> elliott: <CakeProphet> convert them into strings of integers. best plan. 00:24:15 <CakeProphet> Ancient Roman oil lamp (circa 1st Century AD) depicting woman having sexual intercourse with two men simultaneously 00:25:19 <Jafet> They didn't have man pages. 00:26:00 <oerjan> hm... 00:26:11 <elliott> oerjan: ah 00:26:57 <CakeProphet> oerjan: I'm too lazy to do that. also I had just joined in and thus didn't have any context and still found it funny. 00:27:33 <oerjan> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (A :: Test) :: Either Int ()) 00:27:38 <EgoBot> Left 00:27:46 <oerjan> ...so much for that. 00:27:59 <oerjan> oh wait 00:28:20 <oerjan> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (Left (A :: Test)) :: Int) 00:28:24 <EgoBot> 139868736410664 00:28:30 <oerjan> :( 00:29:11 <CakeProphet> data Test p = Test Int deriving blah blah blah 00:29:18 <CakeProphet> type Phantom1 = ... 00:29:20 <CakeProphet> type Phantom2 = ... 00:29:24 <CakeProphet> best plan. 00:29:45 <CakeProphet> phantom types are always the answer. 00:29:48 <oerjan> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (Right (A :: Test)) :: Int) 00:29:52 <EgoBot> ​-2305842462150928042 00:30:41 <oerjan> it would appear there's no compatible structure to exploit... 00:31:05 <CakeProphet> er wait, not phantom types 00:31:06 <CakeProphet> but 00:31:14 <CakeProphet> newtype Test = Test Int 00:31:19 <CakeProphet> a = Test 0 00:31:22 <CakeProphet> b = Test 1 00:31:23 <CakeProphet> ... 00:31:28 <oerjan> given Int = I# Int# , an unboxed field, that may not be too surprising 00:32:14 <monqy> http://esoteric.voxelperfect.net/wiki/User:OArnoldoWhiteheada 00:32:23 <CakeProphet> I'm assuming the idea is to efficiently convert zero-argument type constructors to integers... 00:32:35 <CakeProphet> so why not just represent them as integers and name each one via functions? 00:32:52 <oerjan> CakeProphet: no pattern matching for one thing... 00:33:03 <CakeProphet> ah yes. 00:33:34 <CakeProphet> well you can pattern match them just not in a fun way. 00:34:26 <CakeProphet> -XPatternSynonyms :P 00:34:49 <monqy> what 00:34:54 <CakeProphet> but yeah you probably just want to use toEnum and be happy. 00:35:02 <CakeProphet> (Note for monqys: not an actual thing) 00:35:20 <monqy> oh 00:35:53 <CakeProphet> elliott and I were talking about pattern synonyms a few days ago. 00:36:21 <monqy> http://personal.cis.strath.ac.uk/~conor/pub/she/patsy.html these ones or pattern synonyms in general 00:36:25 <CakeProphet> and now we have an example of where they would be useful. 00:36:30 <elliott> i was telling you they were great and you were being lame 00:36:33 <elliott> and misunderstanding 00:36:33 <elliott> and bad 00:36:35 <elliott> :'( 00:36:37 <CakeProphet> sure. 00:36:57 <CakeProphet> I'm always bad. 00:37:31 <CakeProphet> elliott: also you should definitely logread the 4 or 6 hours of last night where I basically hijack the channel for the purposes of portal chess. 00:37:35 <CakeProphet> and find holes in it plz 00:37:37 <elliott> I did. 00:37:38 <elliott> It was really annoying. 00:38:10 <CakeProphet> or possible improvements plz 00:40:01 <elliott> I have none. 00:40:13 <CakeProphet> so then it is clearly a perfect game, yes? 00:40:28 <CakeProphet> otherwise you would have something to say. :) 00:40:49 <elliott> clearly 00:41:02 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:41:25 <CakeProphet> perhaps I should ask instead 00:41:27 <CakeProphet> what is wrong with it? 00:41:36 <CakeProphet> I guess that's similar to "find holes" 00:41:41 <CakeProphet> but less specific 00:41:56 <oerjan> it's not a hole, it's a portal! 00:44:20 <CakeProphet> ...surely elliott is not passing up this great opportunity. 00:44:34 <CakeProphet> what better things could he have to do? 00:46:00 <oerjan> monqy: (.) <$> u <*> v <*> w = u <*> (v <*> w) + some variations with <$> on the right side should suffice to flatten everything 00:47:19 <elliott> I wonder if I shouldn't use String for strings guaranteed to be 120 characters or less. 00:47:26 <elliott> Rather than Text. :p 00:47:57 <oerjan> u <$> (v <*> w) = (u .) <$> v <*> w 00:48:05 <elliott> Though I guess it's no big deal. 00:48:10 <CakeProphet> Text.Array sounds like the right choice. 00:48:34 <oerjan> u <$> (v <$> w) = (u . v) <$> w (Functor law) 00:48:48 <CakeProphet> but yes also not a big deal. 00:49:16 <CakeProphet> oerjan: where are these laws documented I never see them. 00:50:00 <oerjan> CakeProphet: these ones i'm just reconstructing, but the ones with pure in them i think i've seen... 00:50:11 <CakeProphet> ah 00:50:39 <oerjan> u <*> (v <$> w) = (. v) <$> u <*> w 00:50:49 <oerjan> monqy: i think those four are all needed 00:51:29 <CakeProphet> is length on arrays O(1) in Haskell? 00:51:51 <oerjan> yeah 00:52:08 <CakeProphet> so it stores the link as an Integer I'd hope? 00:52:13 <CakeProphet> otherwise array sizes are fixed. 00:52:21 <oerjan> ...they are fixed. 00:52:27 <CakeProphet> er I mean 00:52:29 <oerjan> well, per array 00:52:38 <CakeProphet> otherwise there's a fixed maximum array size. 00:52:57 <oerjan> CakeProphet: well i think it's Int, really. 00:53:08 <oerjan> they're supposed to fit in memory. 00:53:25 <CakeProphet> > 2^32 00:53:26 <lambdabot> 4294967296 00:53:31 <CakeProphet> NOT GOOD ENOUGH. 00:53:45 <oerjan> CakeProphet: also that's just underneath. there's an entire Ix class for types that may be used for array indices. 00:53:51 <oerjan> > maxBound :: Int 00:53:52 <lambdabot> 9223372036854775807 00:54:05 <CakeProphet> such short-sightedness 00:54:33 <CakeProphet> it won't be long before we have thousands of terabytes of memory. 00:54:56 <monqy> int may be bigger by then 00:55:01 <monqy> who knows!!! 00:56:22 <CakeProphet> no all systems will be 64-bit obviously 00:56:42 <elliott> CakeProphet: You're not far off; existing computers have a hundred terabytes of RAM. 00:56:44 <elliott> Well, at least one. 00:56:50 <elliott> I can't find RAM information for Jaguar or Fujitsu K. 00:56:59 <elliott> But Roadrunner has 103.6 Tio of RAM. 00:57:10 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/haskell98-2.0.0.0/Ix.html 00:57:15 <elliott> Admittedly it's not all on the one motherboard. 00:57:31 <elliott> And accessing RAM at the opposite end of the complex is probably _not_ as fast as you expect RAM to be. 00:57:54 <CakeProphet> but still reasonably fast I'd imagine. 00:57:58 <oerjan> CakeProphet: http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.0.0/Control-Applicative.html lists the laws 00:58:06 <elliott> CakeProphet: Well, not really. 00:58:14 <elliott> The request and response have to go over Infiniband. 00:58:23 <Jafet> Numa numa yay 00:58:30 <elliott> It's faster than Ethernet, but... 00:58:43 <elliott> It might even be faster than reading from disk; Inifiniband is pretty good. 00:58:45 <monqy> i misread as infinibad 00:58:50 <CakeProphet> is the speed of light not good enough for you? 00:58:50 <elliott> But it'll be orders of magnitude off local RAM. 00:58:55 <Jafet> The same thing already happens on a single motherboard 00:59:02 <elliott> CakeProphet: Light is pretty slow. 00:59:08 <elliott> Jafet: That's a rather lower distance. 00:59:10 <Jafet> See the multi-socket Xeon or Opteron boards 00:59:19 <elliott> Wikipedia says Roadrunner's complex is 6,000 sq ft. 00:59:24 <elliott> Or 560 square metres. 00:59:30 <CakeProphet> elliott: you have high expectations for "fast" :P 00:59:32 <elliott> I'd like to see a motherboard _that_ big. 00:59:39 <elliott> CakeProphet: So do computers. 01:00:00 <Jafet> Latency isn't really that important for memory. 01:00:05 <CakeProphet> s/computers/humans that use computers/ 01:00:10 <Jafet> It just means you have to pipeline moar. 01:00:20 <Jafet> And not share cache lines. 01:00:56 <CakeProphet> also what do you mean faster than reading from disk? isn't that slow? 01:01:03 <CakeProphet> oh you're saying accessing memory from across the complex 01:01:06 <CakeProphet> might be faster than that. 01:01:39 <Jafet> It might be nearly as fast if every node had a flash disk 01:03:17 <CakeProphet> I don't think Adobe flash is a good persistent storage device. :3 01:03:36 <CakeProphet> (>:3) 01:03:54 <elliott> Jafet: You mean completely in place of RAM? 01:03:58 <elliott> Not over SATA, that's for sure. 01:04:11 <oerjan> shiver me timbers, it's that day again 01:04:30 <elliott> oerjan: wat 01:04:36 <CakeProphet> oerjan: ahoy mate it is. 01:04:38 <Jafet> Also, 100T of flash isn't cheap neither 01:05:12 <CakeProphet> oerjan: well, not in these waters it ain't. But soon! 01:05:33 <elliott> s/neither/either/ 01:05:38 <elliott> oerjan: oh right 01:05:42 <elliott> oerjan: plz refrain 01:05:51 <itidus21> registers are fast. 01:06:00 <CakeProphet> elliott: help what is negations. 01:06:05 <CakeProphet> itidus21 has a good point 01:06:07 <monqy> CakeProphet: please refrain as well 01:06:07 <oerjan> elliott: arrright! errr, i mean... 01:06:11 <CakeProphet> they could just replace everything with registers. 01:06:17 <elliott> Yes. 01:06:31 <elliott> Well, compilers tend to already assume machines have infinite registers. 01:06:43 <elliott> (They just pretend they have infinite registers, then do register allocation and spill over to the stack to match these to real registers.) 01:06:44 <CakeProphet> good plan 01:06:46 <elliott> Well, a finite but arbitrary amount. 01:07:32 <CakeProphet> itidus21: also, registers are fast because they are pretty much part of the CPU. 01:07:59 <CakeProphet> and so don't have to travel, or deal with other physical nuisances. 01:08:04 <itidus21> travel = latency 01:08:16 <CakeProphet> sure. 01:08:32 <itidus21> im not certain on that though 01:08:40 <itidus21> if you queue up a stream of data is it fast? 01:08:41 <CakeProphet> it's part of it. 01:08:46 <CakeProphet> also what? 01:09:03 <itidus21> i guess you can't just "queue up a stream of data" 01:09:08 <itidus21> my head has the wrong conception 01:09:13 <CakeProphet> "queue up a stream of data" is abstract-speak. latency is considered with physical implementation. 01:09:22 <CakeProphet> *concerned 01:10:27 <itidus21> quantum computers ahoy then? 01:10:40 <CakeProphet> what 01:11:05 <itidus21> perhaps quantum computers are fast 01:11:42 <CakeProphet> sure 01:14:33 <CakeProphet> monqy: ya can't tell me when to avast ya scurvy rat-nosed scalawag. 01:14:53 <monqy> :| 01:15:13 -!- Jafet1 has joined. 01:15:25 <elliott> fizzie: Ping 01:15:49 -!- Jafet has quit (Ping timeout: 260 seconds). 01:16:17 <elliott> If this system is equivalent to 25000 PS3, then where is the cost justification? 25000 PS3s = $10 million (at $400/PS3), while this machine cost a 100 million... that's 1000% more expensive... Which gives two possible explainations: 25000 PS3 estimate is wrong, or people who made this machine are idiots 99.240.71.232 (talk) 01:00, 17 September 2008 (UTC) 01:16:32 <elliott> Behold the intelligence of Wikipedia talk page commentors. 01:17:07 -!- Jafet1 has changed nick to Jafet. 01:17:52 <Jafet> But can it run Crysis. 01:18:15 <CakeProphet> 1000% more expensive 01:18:16 <elliott> Hurr hurr 01:18:22 -!- copumpkin has joined. 01:18:44 <CakeProphet> (at $400/PS3) 01:18:47 <monqy> more ps3s 01:19:34 <CakeProphet> s/Crysis/Dwarf Fortress/ 01:20:14 <itidus21> if thats the case im guessing ps3 cost reduction is from selling a lot 01:20:19 <CakeProphet> can it run the entire generated world of dwarf fortress all at once? (is that even a thing you can do with DF?) 01:20:42 <CakeProphet> it should be. 01:21:29 <itidus21> 51.8 million ps3's have been sold 01:21:37 <itidus21> that probably helps keep costs down 01:21:59 <CakeProphet> #esoteric - masters of economic theory 01:23:57 <oerjan> CakeProphet: well we could only be marginally worse... 01:24:58 <itidus21> "Move along, these are not the gaming rigs you are looking for." 01:26:03 <CakeProphet> oerjan: argh, hold fast and quit ye optimism. 01:26:29 <elliott> http://www.minecraftwiki.net/images/8/8c/Items_slot_number.JPG 01:26:33 <elliott> What an incredibly rational numbering system. 01:26:35 <oerjan> CakeProphet: how is that optimism 01:26:50 <CakeProphet> oerjan: I don't bloody know I'm a pirate! 01:27:03 <CakeProphet> elliott: makes sense to me. 01:27:08 <CakeProphet> also it's all rationals 01:27:15 <CakeProphet> so... I guess you weren't being sarcastic? 01:27:43 <elliott> CakeProphet: Note how it randomly skips from thirty-five to eighty. 01:27:46 <elliott> Then from eighty-three to a hundred. 01:27:53 <elliott> And then starts going upwards rather than left-downwards. 01:28:07 <CakeProphet> well yes there's that. that's to disinguish different slot locations. I suppose the choose of 80 and 100 are somewhat arbitrary however. 01:28:19 <CakeProphet> *choice 01:28:30 <elliott> Why doesn't it distinguish the immediately-accessible inventory from the rest of it, then? 01:28:36 <elliott> There's no corresponding jump; it just goes from eight to nine. 01:28:49 <CakeProphet> that's fine it can do that... :P 01:28:51 <itidus21> so what does 80 81 82 83 produce 01:28:56 <CakeProphet> those are crafting slots. 01:28:58 <CakeProphet> for crafting 01:28:59 <CakeProphet> things. 01:29:04 <itidus21> well what has been crafted? 01:29:07 <itidus21> seems like nothing 01:29:07 <CakeProphet> nothing 01:29:10 <CakeProphet> that is a diagram 01:29:30 <itidus21> they need to take out 83 and replace it with Add 01:29:39 <CakeProphet> .. 01:29:41 <itidus21> ^Sum 01:29:43 <CakeProphet> ... 01:30:10 <itidus21> it's basically application 01:30:16 <CakeProphet> argh! man ye cannons we spotted an itidus 01:30:18 <itidus21> except not 01:30:27 <itidus21> 4 term application 01:30:31 <CakeProphet> stop. 01:30:55 <itidus21> ok i see where im going wrong 01:31:01 <itidus21> i ought to stop 01:31:07 <CakeProphet> it's minecraft. not a programming language (well... elliott shhhh). 01:32:01 <CakeProphet> elliott: I do find it odd that 100-103 goes from bottom to top instead of top to bottom like eveything else. 01:33:18 <CakeProphet> I wonder what happens when you try to store something in 36-79 01:33:42 <elliott> DEATH. 01:34:05 <itidus21> {5,10,Sum,Increment} = 16 01:34:32 <CakeProphet> (5,10,Multiply,Increment) = ??? 01:34:36 <CakeProphet> help order of operations 01:34:57 <oerjan> 51 01:35:06 <monqy> itidus21: what 01:35:14 <itidus21> 5*10= 50 + 1 = 51; 5+1=6*10 = 60 01:35:28 <CakeProphet> oerjan: what rules did you use because it could also be 55 or 60. 01:35:43 <itidus21> sorry i didnt use proper = 01:35:49 <oerjan> ah it's a set? 01:35:57 <CakeProphet> it's ah uh.... 01:36:03 <CakeProphet> minecraft crafting window. 01:36:06 <CakeProphet> thing 01:36:12 <CakeProphet> with a list of 4 items 01:36:17 <CakeProphet> >_> 01:36:18 * itidus21 is just thinking of practical uses 01:36:51 <itidus21> {0, Inc} = 1 01:36:51 <CakeProphet> oerjan: so basically it's not anything so the rules are ambiguous is what I meant. 01:36:54 <oerjan> CakeProphet: clearly this is a case for gamma calculus. 01:37:01 <itidus21> {0, Inc, Inc, Inc} = 3 01:37:09 <monqy> itidus21: what are you doing 01:37:27 <itidus21> i'm doing it wrong 01:37:31 <itidus21> :P 01:37:48 <CakeProphet> Some fundamental requirements of workflow enactment are autonomous, distributed, decentralized control that can cope with partial lack of information and can adapt to a dynamically changing environment. 01:37:52 <CakeProphet> oerjan: help 01:38:41 <CakeProphet> The lambda-gamma calculus: A language adequate for defining recursive functions 01:38:49 <itidus21> {5, Stick, Stick, } 01:38:54 <CakeProphet> I wonder if this author realizes that the lambda calculus is adequate for defining recursive functions 01:39:03 <monqy> itidus21: what 01:39:18 <itidus21> monqy: it's a uhmm.. 01:39:32 -!- SgeoN1 has quit (Read error: Connection reset by peer). 01:39:34 <itidus21> crafting of a '5' and 'stick' and 'stick' 01:39:35 <oerjan> CakeProphet: i'm not sure all the google links are relevant. or any. but it should be a chemistry analogue. 01:39:50 <CakeProphet> oerjan: yes that's what this one is about 01:39:59 <CakeProphet> http://www.gridworkflow.org/snips/gridworkflow/space/Gamma-calculus 01:41:57 <itidus21> well minecraft follows arbitrary rules as far as i know 01:43:05 -!- oerjan has quit (Quit: Good night). 01:43:25 <CakeProphet> oerjan quits 01:43:57 <itidus21> i havent actually got minecraft, but it is a nice quality that crafting is a finite system 01:44:07 <itidus21> at least i hope it is finite 01:44:25 <CakeProphet> help what is he talking about 01:44:41 <itidus21> crafting table.. taking a number of elements. creating a single element 01:45:06 <CakeProphet> explain how an infinite system would work. 01:45:36 <sebbu> autogenerated & autoexpand 01:45:48 <sebbu> or realtime processing 01:46:28 <itidus21> well suppose that there were infinite possible results of crafting 01:46:44 <sebbu> any element mixed with any other would make a element 01:46:57 <sebbu> eventually you should by able to transmut them in circle 01:47:06 <CakeProphet> that's not infinite. 01:47:13 <itidus21> it could be 01:47:23 <itidus21> oops 01:47:31 <itidus21> uhhhmmm 01:47:54 <sebbu> if it create new element 01:48:01 <itidus21> if you allowed the element/object descriptor size to be unbounded 01:48:03 <sebbu> and the transmutation can add AND remove element 01:48:13 <sebbu> can be infinite 01:48:41 <itidus21> i dunno.. what does minecraft terminology call those objects? 01:48:42 <sebbu> (but i doubt it'ld be a good apport to the game) 01:48:47 <itidus21> im not actually a minecraft player 01:49:06 <itidus21> i guess it doesn't need a precise name. object works 01:49:14 <elliott> item 01:49:15 <elliott> probably 01:49:19 <itidus21> haha 01:49:44 -!- Jafet has quit (Ping timeout: 260 seconds). 01:49:59 <elliott> hilarious. 01:50:16 <itidus21> wiki says, among other definitions, Item is: entry in a list, or one object in a collection of objects 01:50:48 <itidus21> Item (gaming), the objects in a video game collected by the player character to increase the score or progress through the story 01:51:01 <elliott> "The item the player is currently holding. Note that this should be 0 for "no item", unlike -1 used in other packets. A negative value crashes clients." 01:51:02 <sebbu> (this channel is the only one where people are speaking right now among all the channel i'm on) 01:51:03 <elliott> I HATE YOU NOTCH 01:51:06 <elliott> I HATE YOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 01:51:30 <monqy> notch.................................................. 01:51:40 <itidus21> `log notch 01:51:41 <monqy> speaking of elliottcraft 01:51:44 <HackEgo> 2011-09-19.txt:01:51:03: <elliott> I HATE YOU NOTCH 01:51:48 <itidus21> `log notch 01:51:52 <HackEgo> 2011-01-07.txt:18:51:39: <Phantom_Hoover> Wait, is Notch actually against *redstone circuits* 01:51:58 <itidus21> `log notch 01:52:01 <HackEgo> 2010-12-21.txt:22:34:52: <elliott> Goosey: Because god dammit Notch. 01:52:03 -!- Jafet has joined. 01:52:06 <itidus21> `log notch 01:52:10 <HackEgo> 2010-11-18.txt:23:16:35: <fizzie> Though based on Notch's tweets, he has it sort-of working and it will be in next patch. 01:54:17 <itidus21> talk page "The article talks about items in RPGs, but then does not link to either an article about them nor go into any depth." -- pissed off wikipedian 01:55:14 <sebbu> try other wiki, like wikia, or some rpg dev communities :p 01:55:24 <monqy> why is item (video game) even a thing 01:55:28 <monqy> er 01:55:31 <monqy> item (gaming) 01:55:54 <monqy> "Item (gaming), the objects in a video game collected by the player character to increase the score or progress through the story" 01:55:59 <monqy> sounds like a thing itidus21 would say 01:56:02 -!- sebbu has quit (Read error: Connection reset by peer). 01:56:03 <monqy> somehow 01:56:14 -!- variable has quit (Quit: I found 1 in /dev/zero). 01:56:24 -!- sebbu has joined. 01:56:24 -!- sebbu has quit (Changing host). 01:56:24 -!- sebbu has joined. 01:56:38 -!- invariable has joined. 01:57:11 -!- invariable has changed nick to variable. 02:00:01 <elliott> elliottcable news: elliottcable has a channel named after himself. I will now land-grab #elliott. 02:01:42 <elliott> shachaf: Accept that invite so I can kick you. 02:02:07 <elliott> Oops, I should have used the message "u mad". 02:02:10 <elliott> I mad. :( 02:02:25 <shachaf> Whoops, you can't kick me. 02:02:29 <shachaf> elliott mad! 02:02:44 <elliott> @admin - shachaf 02:02:44 <lambdabot> Not enough privileges 02:02:49 <shachaf> @admin + shachaf 02:02:53 <elliott> Useful. 02:02:56 <elliott> Now do it to me. 02:03:02 <CakeProphet> oh baby. 02:03:07 <shachaf> @@ (@admin + elliott) (@admin - elliott) 02:03:08 <lambdabot> Plugin `compose' failed with: Privledged commands cannot be composed 02:03:09 <elliott> @admin - shachaf 02:03:09 <lambdabot> Not enough privileges 02:03:19 <elliott> I wonder if @@ is atomic. 02:03:27 <elliott> Maybe if it didn't block that, I could get in in the millisecond between the two commands. 02:03:38 <shachaf> @admin + elliott 02:03:39 <shachaf> @admin - elliott 02:03:39 <CakeProphet> hey I bet it's atomic. 02:03:41 <elliott> @admin - shachaf 02:03:41 <lambdabot> Not enough privileges 02:03:43 <elliott> oijsadiosdjofidjoigjdg 02:03:46 <elliott> IM GOING TO RIP YOUR SKULL OUT 02:03:48 <shachaf> "millisecond"? 02:04:01 <elliott> Sorry, Haskell is slow, isn't it? Second. 02:04:01 <shachaf> MOAR LYK MEGASECOND AMIRITE? 02:04:10 <elliott> Oh, that was your joke. :/ 02:04:20 <shachaf> elliott: My joke was about *something* being slow. 02:04:26 <CakeProphet> I thought he was confused about why it would take an entire millisecond... 02:04:30 <elliott> Your FACE is slow. 02:04:34 <elliott> CakeProphet: ME too. 02:04:38 <elliott> s/ME/Me/ 02:04:39 <shachaf> : 02:04:40 <shachaf> - 02:04:41 <shachaf> ( 02:04:47 <elliott> That... is the slowest face. 02:04:58 <shachaf> : 02:04:59 <shachaf> 02:04:59 <shachaf> - 02:05:00 <shachaf> 02:05:01 <shachaf> ( 02:05:07 <CakeProphet> : 02:05:09 <elliott> Also that. 02:05:13 <shachaf> @admin + elliott 02:05:13 <shachaf> @admin - elliott 02:05:14 <elliott> CakeProphet is just a :. 02:05:15 <elliott> @admin - 02:05:15 <lambdabot> Not enough privileges 02:05:20 <shachaf> @admin + elliott 02:05:21 <shachaf> @admin - elliott 02:05:34 <CakeProphet> 02:05:39 <elliott> Don't even GIVE A SHIT 02:05:44 <elliott> "Damage" field This field is also used to store item metadata. E.g. you mined birch wood(its id is the same as normal wood) so you must set damage to the metadata of birch wood(2). The same case is wool. Id is the same but data is different.For example: you mined blue wool so your damage field should send value 0xB. 02:05:47 <elliott> FML. 02:05:56 <monqy> admin + monqy 02:06:06 <shachaf> @admin + elliott 02:06:35 <shachaf> la la la 02:06:38 <CakeProphet> - 02:06:48 <elliott> @admin - shachaf 02:06:51 <elliott> @admin - dons 02:06:52 <lambdabot> Not enough privileges 02:06:54 <monqy> finally 02:06:55 <elliott> @admin - mauke everyone 02:07:01 <elliott> What, I am below the dons. 02:07:06 <elliott> @admin - mauke 02:07:06 <lambdabot> Not enough privileges 02:07:10 <elliott> Aw. :/ 02:07:20 <elliott> @vixen-on plz 02:07:20 <lambdabot> Unknown command, try @list 02:07:22 <elliott> cry 02:07:23 <elliott> @list 02:07:24 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS 02:07:34 <CakeProphet> 02:07:35 <elliott> @uptime 02:07:35 <lambdabot> uptime: 5d 10h 33m 21s, longest uptime: 1m 10d 23h 44m 29s 02:07:40 <elliott> @listchans 02:07:40 <lambdabot> ##freebsd ##logic ##proggit ##villagegreen #agda #arch-haskell #darcs #dtp2010 #esoteric #fedora-haskell #friendly-coders #functionaljava #gentoo-haskell #gentoo-uy #ghc #gp2010 #happs #haskell # 02:07:41 <lambdabot> haskell-blah #haskell-books #haskell-fr #haskell-freebsd #haskell-in-depth #haskell-overflow #haskell.au #haskell.cz #haskell.de #haskell.dut #haskell.fr #haskell.hr #haskell.se #hscraft-srv # 02:07:41 <lambdabot> learnanycomputerlanguage #lesswrong #macosx #macosxdev #rosettacode #scala #scalaz #scannedinavian #teamunix #unicycling #uscs2010 #xmonad #yi weird# 02:07:47 <elliott> weird# is some channel. 02:07:56 <CakeProphet> I'm joining. 02:07:56 <shachaf> unboxed# 02:08:21 <monqy> #learnanycomputerlanguage what 02:08:27 <CakeProphet> elliott: a brilliant observation. 02:08:34 <CakeProphet> ( 02:08:39 <CakeProphet> my slow face is complete. 02:08:40 <elliott> shachaf: It's a channel where all the people inside have their guts spewed out directly into the user list. 02:08:43 <elliott> It's kind of hideous. 02:09:06 <CakeProphet> #functionaljava what 02:09:14 <CakeProphet> that's not a thing 02:09:26 <shachaf> It's a thing. 02:09:46 <CakeProphet> also what is #lesswrong 02:09:51 <CakeProphet> sounds like elitist pricks. 02:10:10 <CakeProphet> not at all like the rest of Freenode. 02:10:52 <shachaf> It's lesswrong.com, man. 02:11:58 <CakeProphet> it appears to be some sort of elitist IRC club. 02:13:02 <elliott> I can't tell whether CakeProphet is making a joke wrt Less Wrongers' holier-than-thouness or is just dim. 02:13:13 <elliott> Actually I can never understand whether CakeProphet is joking or just dim. 02:13:27 <CakeProphet> ...my humor often relies on playing stupid. 02:13:38 <shachaf> DIM CakeProphet AS INTEGER 02:14:09 <CakeProphet> they are voiced I think 02:14:13 <elliott> CakeProphet: That's hard to pull off when you're stupid. 02:14:15 <CakeProphet> it's a "karma-limited channel" 02:14:27 <elliott> (My humour often relies on being an asshole without any emoticons.) 02:14:41 <CakeProphet> :) :) :) :) :) :) :) 02:14:44 <CakeProphet> that's easy to do. 02:14:53 <Gregor> FFFFFFFFFFFFUUUUUUUUu 02:14:59 <Gregor> I typed /list weird# 02:15:04 <Gregor> I'm probably about to be kicked. 02:15:12 <CakeProphet> bahahaha 02:15:23 <Gregor> WHY WOULD THAT LIST EVERY CHANNEL 02:15:25 <Gregor> WHYYYYYYYYYYYYYYYYYYYY 02:15:29 <CakeProphet> elliott: are you perhaps suggesting that I am too stupid to pull off playing stupid? 02:15:39 <CakeProphet> I am shocked 02:15:43 <CakeProphet> I thought we friendship. :( 02:16:20 <monqy> are you playing dumb now too 02:16:26 <Gregor> Hey ... I'm still alive. 02:17:17 <elliott> Gregor: Uh 02:17:22 <CakeProphet> monqy: no, elliott and I are great franz 02:17:22 <elliott> Gregor: I /list occasionally for the hell of it 02:17:33 <CakeProphet> I'm even in his channel about elliottcable 02:17:35 <elliott> It's perfectly fine, freenode is not gigantic and the internet is fast :P 02:17:48 <elliott> Many clients expose a fancy GUI /list, even 02:18:06 <elliott> See Server → List of Channels... in X-Chat 02:18:08 <elliott> s/X-/X/ 02:18:12 <CakeProphet> Freenode apparently doesn't have squery 02:18:40 <CakeProphet> well, it doesn't have ALIS 02:18:43 <tswett> elliott: say. What was that one VM or programming language project where the idea is to expose everything about everything to the program? 02:18:54 <tswett> Like Smalltalk, except you can access those things Smalltalk doesn't let you access? 02:19:09 <CakeProphet> I think C? :> 02:19:42 <elliott> tswett: Do you mean VPRI's cola work? 02:19:49 <CakeProphet> well, C doesn't have reflection I guess. 02:19:53 <tswett> elliott: yes, that sounds right. 02:19:58 <elliott> http://piumarta.com/software/cola/ 02:20:11 <CakeProphet> reflective-C 02:20:21 <elliott> The VPRI is where Alan Kay's at these days, FWIW. 02:20:29 <tswett> Yes, yes. Everything is late-bound. That's it. 02:20:48 <tswett> You're the man now, dog. Thank you. 02:21:15 <tswett> Come to think of it, I've praised you a little too effusively. I'm not *that* pleased. If you'll permit me to compensate slightly... 02:21:19 <tswett> elliott: fuck you. 02:21:26 <tswett> There. Perfect. Carry on. 02:22:01 <elliott> tswett: Excellent. 02:22:11 <CakeProphet> elliott is a pretty cool guy. eh links websites and doesn't afraid of anything. 02:22:14 <elliott> `addquote <tswett> Come to think of it, I've praised you a little too effusively. I'm not *that* pleased. If you'll permit me to compensate slightly... <tswett> elliott: fuck you. <tswett> There. Perfect. Carry on. 02:22:16 <HackEgo> 671) <tswett> Come to think of it, I've praised you a little too effusively. I'm not *that* pleased. If you'll permit me to compensate slightly... <tswett> elliott: fuck you. <tswett> There. Perfect. Carry on. 02:22:24 <Gregor> elliott: I thought it would SendQ me to hell :P 02:22:36 <elliott> Gregor: Isn't that SENDING too much :P 02:22:42 <CakeProphet> elliott: archival. fascist. 02:22:51 <tswett> No, I think SendQ is when you're receiving too much. 02:22:52 <Gregor> elliott: Faaaaaaaaaaaaaair point. 02:22:59 <tswett> I.e. the server is sending you too much. 02:23:00 <elliott> CakeProphet: I omitted nothing. 02:23:01 <Gregor> elliott: "Kicked for flooding" is sending too much 02:23:05 <Gregor> SendQ is the server's send queue 02:23:26 <tswett> You're both wrong. About *everything*. 02:23:38 <CakeProphet> monqy is the mon queuey 02:23:42 -!- kmc has quit (Quit: Leaving). 02:23:46 <monqy> hi what 02:24:17 <CakeProphet> `log hi 02:24:21 <tswett> A quinquagintillion is a queuein queueuagintillion, I suppose. 02:24:23 <HackEgo> 2005-09-30.txt:18:01:28: <Keymaker> but the main thing is ready 02:24:41 <elliott> `log \bhi\ 02:24:42 <elliott> `log \bhi\b 02:24:43 <HackEgo> egrep: Trailing backslash 02:24:46 <HackEgo> 2010-02-12.txt:20:43:01: <alise> Oh, hi, scarf. 02:25:00 <CakeProphet> `log . 02:25:08 * CakeProphet whistles. 02:25:08 <HackEgo> shuf: memory exhausted 02:25:18 <monqy> poor shuf 02:25:32 <tswett> May he rest in piece. 02:25:39 <elliott> `log 02:25:40 <tswett> [sic] 02:25:41 <HackEgo> 2007-08-15.txt:23:17:35: <jix> so people think it's a real person... at least for some time 02:25:46 <elliott> That's what `log is for. 02:25:49 <elliott> tswett: shuf is male? 02:25:57 <tswett> Well... a piece of him is. 02:26:12 <CakeProphet> `log (.*?).*?(?<=...) 02:26:12 <elliott> Weird. 02:26:15 <HackEgo> 2010-10-05.txt:16:13:52: <alise> ais523: changing "< end" to "<= end-1" fixed it. 02:26:30 <CakeProphet> `log (.*?)+?(?<=...). 02:26:34 <HackEgo> 2011-01-08.txt:18:57:40: <elliott> |^(0) => #2 <= {(0,0): inc(#0); (0,1): inc(inc(#1))} 02:26:44 <tswett> Actually, I don't know anything about this shuf person. Who is he? 02:27:16 <CakeProphet> Gregor's slave. his memory is exhausted so he's not really sure who he is. 02:27:40 <elliott> `log 2010-10-05.txt:16:13:52: 02:27:43 <HackEgo> 2011-09-19.txt:02:27:40: <elliott> `log 2010-10-05.txt:16:13:52: 02:27:46 <elliott> `logurl 2010-10-05.txt:16:13:52: 02:27:48 <HackEgo> http://codu.org/logs/log/_esoteric/2010-10-05 02:28:06 <tswett> Now, I wonder, why the 'L' is an integer represented by a pointer whose *lowest* bit is 1, in Smalltalk? 02:28:20 <elliott> tswett: That makes sense. 02:28:33 <elliott> Systems only allocate even pointers, usually. 02:28:45 <tswett> If you do that, then integer-pointers have to be converted before they can be treated as integers. 02:28:52 <elliott> So having the pointer tag be 0 avoids de-masking a pointer before dereferencing it. 02:28:57 <elliott> tswett: Yes, they do. 02:29:02 <elliott> That's better than pointer-pointers needing conversion. 02:29:06 <elliott> This is the standard system. 02:29:16 <tswett> Yes, that is true. 02:29:32 <CakeProphet> integers to pointers are the worst. 02:29:58 <tswett> Yeah, the worst integers are the ones that intege to pointers. 02:30:39 <CakeProphet> no they're the worst of worse things. 02:31:07 <tswett> (As everyone knows, "to intege" means "to be whole".) 02:31:27 <monqy> !wacro 02:31:28 <EgoBot> PMERSGFM 02:31:32 <monqy> speaking of the worst things 02:31:50 <CakeProphet> but all integers must have an integirth. 02:32:25 <tswett> Yes, PMERSGFM is also definitely one of the worst things. 02:32:31 <CakeProphet> !wacro 02:32:31 <EgoBot> CBCN 02:32:33 <CakeProphet> !wacro 3 5 02:32:34 <EgoBot> APB 02:32:35 <CakeProphet> !wacro 3 5 02:32:36 <EgoBot> AOE 02:32:37 <CakeProphet> !wacro 3 5 02:32:37 <EgoBot> DSMBE 02:32:38 <CakeProphet> !wacro 3 5 02:32:39 <EgoBot> BBA 02:32:39 <CakeProphet> !wacro 3 5 02:32:40 <monqy> baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad 02:32:40 <EgoBot> GPB 02:32:42 <CakeProphet> !wacro 3 5 02:32:42 <EgoBot> VHMC 02:32:44 <CakeProphet> !wacro 3 5 02:32:45 <EgoBot> MMRR 02:32:47 <CakeProphet> !wacro 3 5 02:32:48 <EgoBot> BPMA 02:32:54 <CakeProphet> these are all perfectly acceptable acronyms. 02:33:15 <tswett> !warco 35 02:33:20 <tswett> !wacro 35 02:33:21 <EgoBot> BTSDFSDBCDTHAEUCCIRCMOEBT 02:33:30 <monqy> !wacro 25 02:33:31 <EgoBot> NKUSPBLMBFAFASVKICIVCCUFS 02:33:37 -!- SgeoN1 has joined. 02:33:48 <CakeProphet> !show wacro 02:33:48 <EgoBot> perl (sending via DCC) 02:33:58 <CakeProphet> beautiful code. 02:34:21 <Lymee> CBCN < Chinese Bakery Cake Network 02:34:22 <Lymee> Or something 02:34:35 <CakeProphet> monqy has high expectations for acronyms. 02:34:44 <CakeProphet> and does not realize that most acronyms are actually not pronouncable or clever in any way. 02:35:01 <monqy> most acronyms suck 02:35:18 <CakeProphet> monqy: then you can admit that this is a faithful acronym generator. 02:35:22 <monqy> scuba? good. laser? good. pmersgfm? bad. 02:35:41 <CakeProphet> !wacro 3 5 02:35:42 <EgoBot> CASB 02:35:43 <CakeProphet> !wacro 3 5 02:35:44 <EgoBot> WCP 02:35:45 <CakeProphet> !wacro 3 5 02:35:46 <EgoBot> GWCA 02:35:46 <CakeProphet> !wacro 3 5 02:35:47 <EgoBot> UTW 02:35:48 <CakeProphet> !wacro 3 5 02:35:49 <EgoBot> BLCTP 02:35:50 <CakeProphet> !wacro 3 5 02:35:51 <EgoBot> RLTD 02:35:58 <CakeProphet> BLCTP could easily be a transfer protocol 02:36:00 <tswett> Casualty Actuary Society, Bitch. 02:36:29 <tswett> We Calculate Pensions. Go With Casualty Actuary. 02:36:41 -!- Patashu has quit (Ping timeout: 258 seconds). 02:36:47 <CakeProphet> Big Lounging Cat Transfer Protocol 02:37:06 <CakeProphet> Universal Turing Waffle 02:37:20 <monqy> Grant Wacro Complete Annihilation 02:37:48 <monqy> its a sign 02:37:56 <tswett> Royal Lagoon Transformation Dance. 02:38:09 <tswett> The most important dance. 02:38:15 <CakeProphet> !wacro 3 6 02:38:16 <EgoBot> GCGPD 02:38:19 <CakeProphet> !wacro 3 6 02:38:19 <EgoBot> CCS 02:38:20 <CakeProphet> !wacro 3 6 02:38:21 <EgoBot> TKW 02:38:21 <CakeProphet> !wacro 3 6 02:38:22 <EgoBot> LRJE 02:38:23 <CakeProphet> !wacro 3 6 02:38:24 <EgoBot> TPPP 02:38:25 <CakeProphet> !wacro 3 6 02:38:26 <EgoBot> CBNT 02:38:27 <CakeProphet> !wacro 3 6 02:38:28 <EgoBot> ECSCJ 02:39:07 <CakeProphet> monqy is jealous. 02:39:08 <monqy> Cool Cat Splendor 02:39:25 <CakeProphet> because he's never coded anything bad. 02:39:26 <tswett> Transfer Protocol Protocol Protocol. 02:40:46 <monqy> turquoise paper party palace 02:41:16 <tswett> The most important palace. 02:41:23 <CakeProphet> Centralized Bureau of Neglect and Torment 02:41:59 <Lymee> CCS means one and only one thing to me. >> 02:42:01 <CakeProphet> To Kill a Wacro 02:42:13 <monqy> hm? 02:42:27 <Lymee> A certain anime. 02:42:28 <monqy> how can it mean only one thing!! 02:42:30 <monqy> oh 02:42:31 <Lymee> Doh! 02:42:40 <CakeProphet> !wacro 3 6 02:42:41 <EgoBot> HZLMJA 02:42:48 <CakeProphet> the best one yet. 02:42:54 <CakeProphet> !wacro 3 6 02:42:55 <CakeProphet> !wacro 3 6 02:42:55 <EgoBot> FFS 02:42:55 <CakeProphet> !wacro 3 6 02:42:55 <EgoBot> PUQE 02:42:56 <EgoBot> KLD 02:43:05 <CakeProphet> bahahaha 02:43:06 -!- rottytooth has left. 02:43:18 <CakeProphet> FFS. PUQE. 02:43:24 <monqy> kld 02:44:16 <monqy> hurriedly, zealous leprachauns make jam always 02:44:21 <tswett> Hey Zappa Lame Michael Jackson Authority. 02:44:29 <tswett> Kill Languising Daemons. 02:44:41 <tswett> It's a cross between languishing and disguising. 02:45:28 <CakeProphet> Finite Fourier Sandwich 02:45:49 <monqy> Please Understand Queen Elizabeth 02:46:05 <monqy> !wacro 4 7 02:46:06 <EgoBot> BBDR 02:46:09 <tswett> The most important kind of elizabeth. 02:46:22 <tswett> Be Back; Dumping Raccoons 02:46:28 <monqy> !wacro 4 7 02:46:29 <EgoBot> CMLA 02:46:49 <monqy> !wacro 4 7 02:46:50 <EgoBot> CDSDAG 02:47:22 <monqy> !wacro 4 7 02:47:23 <EgoBot> UPHESG 02:47:38 <tswett> Unless Pedro Has Escaped, Smoke Gum. 02:47:53 <tswett> Cancel My Latest Appointment. How plausible. 02:48:08 <tswett> Then again, why would you ever cancel a past appointment? 02:48:24 <tswett> Lost time is never found again. Ben Franklin discovered this. 02:48:28 <CakeProphet> a past appointment 02:48:33 <CakeProphet> not a past fulfilling of said appointment 02:48:38 <CakeProphet> thus completely reasonable. 02:48:39 <CakeProphet> ... 02:48:42 <CakeProphet> or something. 02:49:04 <CakeProphet> CMLA is also Catholic 02:49:07 <CakeProphet> Metro League of Atlanta 02:49:12 <monqy> boring 02:49:38 <CakeProphet> monqy is just never satisfied with anything. 02:49:43 <monqy> ever 02:50:40 <CakeProphet> you should program something. 02:50:43 <CakeProphet> I AM INTRIGUED 02:50:50 <CakeProphet> BY WHAT YOU MIGHT PRODUCE. 02:50:54 <CakeProphet> like banans and oranges. 02:50:56 <elliott> This is the most tedious thing ever. 02:51:19 <CakeProphet> elliott: perl 02:52:05 <elliott> What. 02:52:12 <monqy> Cakeprophet Desires Salvation, Destroys Acronym Generator 02:52:17 <CakeProphet> put some kind of --autogenerated code goes here comment 02:52:27 <CakeProphet> and then write a Perl script to auto-generate code. 02:52:36 <CakeProphet> using -pi 02:52:39 <tswett> What does "wacro" stand for, anyway? 02:52:45 <CakeProphet> weighted acronym 02:52:51 <monqy> wreallybad acronym 02:53:27 <CakeProphet> the letters are given weighted probabilities based on frequency as a starting letter of entries in /usr/share/dict/words 02:53:33 <elliott> CakeProphet: I'm already using TH. 02:53:43 <CakeProphet> oh... yes that's probably a better choice. 02:53:54 <monqy> perl to generate th 02:53:54 <CakeProphet> I should learn me some TH for great good sometime. 02:55:40 <CakeProphet> tswett: the first incarnation was called !simpleacro but is now !acro 02:55:41 <CakeProphet> !acro 02:55:44 <EgoBot> VRWHT 02:55:48 <CakeProphet> as you can see it's not so great. 02:55:53 <CakeProphet> !acro 02:55:54 <CakeProphet> !acro 02:55:55 <CakeProphet> !acro 02:55:55 <CakeProphet> !acro 02:55:56 <CakeProphet> !acro 02:55:57 <EgoBot> BIN 02:55:57 <EgoBot> AYVGX 02:55:58 <EgoBot> NMSHGRN 02:55:59 <EgoBot> IKSBWCOBGR 02:55:59 <EgoBot> XPPFGZGTR 02:56:17 <CakeProphet> !show acro 02:56:17 <EgoBot> haskell let pick a = System.Random.randomRIO (0, length a - 1) >>= return . (a !!) in do {len <- pick [2..10]; putStrLn =<< (Control.Monad.replicateM len $ pick ['A'..'Z'])} 02:56:40 <CakeProphet> hmmm... is Char a Random? 02:56:58 <CakeProphet> :t randomR 02:56:58 <lambdabot> forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g) 02:57:10 <CakeProphet> > randomR ('a', 'z') (mkStdGen 123981294812412415123) 02:57:10 <lambdabot> ('x',31932274 40692) 02:57:18 <CakeProphet> ...oh, well that would simplify things greatly. 03:00:46 <CakeProphet> now I wonder if that's an inclusive range. 03:00:51 <CakeProphet> I believe so. 03:00:59 <elliott> I think so. 03:01:08 <elliott> > randomR (0,0) (mkStdGen 0) 03:01:09 <lambdabot> (0,40014 40692) 03:01:13 <elliott> > randomR (0,1) (mkStdGen 0) 03:01:14 <lambdabot> (1,40014 40692) 03:01:17 <elliott> Yes. 03:01:19 <CakeProphet> otherwise what the hell would randomR (True, False) even mean. 03:01:51 <copumpkin> yay, best Show instance evar 03:02:37 <elliott> copumpkin: Totally 03:02:45 <elliott> You just need an instance Num (... -> ...) 03:02:51 <Lymee> > randomR (False,True) (mkStdGen 0) 03:02:51 <elliott> That constructs a StdGen 03:02:52 <lambdabot> (True,40014 40692) 03:02:53 <Lymee> > randomR (False,True) (mkStdGen 0) 03:02:54 <lambdabot> (True,40014 40692) 03:02:57 <Lymee> > randomR (False,True) (mkStdGen 0) 03:02:58 <lambdabot> (True,40014 40692) 03:03:02 <elliott> Lymee: Haskell is a pure language. 03:03:02 <Lymee> > randomR (False,True) (mkStdGen 1) 03:03:03 <lambdabot> (True,80028 40692) 03:03:05 <Lymee> oh derp 03:03:08 <CakeProphet> lol 03:03:12 <Lymee> elliott, I missed the "0" part 03:03:13 -!- Jafet1 has joined. 03:03:14 <Lymee> > randomR (False,True) (mkStdGen 2) 03:03:15 <lambdabot> (True,120042 40692) 03:03:19 <Lymee> > randomR (False,True) (mkStdGen 3) 03:03:19 <lambdabot> (True,160056 40692) 03:03:22 <elliott> Lymee: That wouldn't stop it being pure. 03:03:34 <Lymee> > map (randomR (False,True) . mkStdGen) [1..] 03:03:35 <CakeProphet> Lymee: yeah you'll have to change the seed a lot. 03:03:36 <lambdabot> [(True,80028 40692),(True,120042 40692),(True,160056 40692),(True,200070 40... 03:03:37 <elliott> > map randomR (False,True) . mkStdGen $ [0..99] 03:03:38 <lambdabot> Couldn't match expected type `[(a, a)]' 03:03:38 <lambdabot> against inferred type `(GHC... 03:03:43 <elliott> Dammit, Lymee beat me to it. 03:03:45 * CakeProphet noticed this earlier. 03:03:47 <elliott> > map (fst . randomR (False,True) . mkStdGen) $ [0..99] 03:03:47 <Lymee> > map (fst . randomR (False,True) . mkStdGen) [1..] 03:03:48 <lambdabot> [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True... 03:03:49 <lambdabot> [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True... 03:03:52 <elliott> Nice. 03:04:03 <Lymee> > map (fst . randomR (True, False) . mkStdGen) [1..] 03:04:05 <lambdabot> [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True... 03:04:13 <elliott> That'll be the same as (True,True). 03:04:38 <elliott> @check \i -> let gen = mkStdGen i in randomR (True,True) gen == randomR (True,False) gen 03:04:39 <lambdabot> No instance for (GHC.Classes.Eq System.Random.StdGen) 03:04:39 <lambdabot> arising from a use... 03:04:45 <elliott> @check \i -> let gen = mkStdGen i in fst (randomR (True,True) gen) == fst (randomR (True,False) gen) 03:04:45 <lambdabot> "OK, passed 500 tests." 03:05:36 <CakeProphet> !addinterp haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z')) 03:05:37 <EgoBot> ​There is already an interpreter for haskell! 03:05:45 <CakeProphet> !delinterp acro 03:05:45 <EgoBot> ​Interpreter acro deleted. 03:05:49 <CakeProphet> !addinterp acro haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z')) 03:05:49 <EgoBot> ​Interpreter acro installed. 03:05:52 <CakeProphet> !acro 03:06:16 <monqy> rip acro 03:06:41 <CakeProphet> erm... 03:06:48 <elliott> !haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z')) 03:07:02 <elliott> it is broken 03:07:08 <CakeProphet> yes I know I'm looking at the error right now. 03:07:11 <CakeProphet> trying to make sense of it. 03:07:43 <CakeProphet> :t randomRIO 03:07:44 <lambdabot> forall a. (Random a) => (a, a) -> IO a 03:07:49 -!- Jafet has quit (Ping timeout: 260 seconds). 03:08:13 <CakeProphet> oh I see. 03:08:35 <CakeProphet> :t replicateM =<< randomRIO (2,10) 03:08:35 <lambdabot> Couldn't match expected type `m a -> Int' 03:08:35 <lambdabot> against inferred type `IO t' 03:08:35 <lambdabot> In the second argument of `(=<<)', namely `randomRIO (2, 10)' 03:08:52 <CakeProphet> erm, nevermind no I don't 03:09:13 <CakeProphet> :t replicateM >>= randomRIO (2,10) 03:09:14 <lambdabot> Couldn't match expected type `(m a -> m [a]) -> Int -> b' 03:09:14 <lambdabot> against inferred type `IO t' 03:09:14 <lambdabot> In the second argument of `(>>=)', namely `randomRIO (2, 10)' 03:09:15 <CakeProphet> lol 03:09:32 <CakeProphet> HELP 03:09:44 <CakeProphet> :t replicateM 03:09:45 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a] 03:09:55 <CakeProphet> :t (=<<) 03:09:56 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> m a -> m b 03:12:30 <CakeProphet> !delinterp acro 03:12:30 <EgoBot> ​Interpreter acro deleted. 03:12:33 <CakeProphet> !addinterp acro haskell import System.Random; import Control.Monad; main = (`replicateM` (putChar =<< randomRIO('A','Z'))) =<< randomRIO (2, 10) 03:12:33 <EgoBot> ​Interpreter acro installed. 03:12:36 <CakeProphet> !acro 03:12:41 <EgoBot> TJT 03:12:52 <CakeProphet> ...I am not so great at Haskell still. 03:12:58 <CakeProphet> combinator overload. 03:17:03 <monqy> !acro 03:17:08 <EgoBot> MYDZDPYHZV 03:17:18 <monqy> :( 03:17:59 <CakeProphet> @undo do {n <- randomRIO (2,10); replicateM n (putChar =<< randomRIO ('A','Z')} 03:17:59 <lambdabot> Unbalanced parentheses 03:18:05 <CakeProphet> @undo do {n <- randomRIO (2,10); replicateM n (putChar =<< randomRIO ('A','Z'))} 03:18:06 <lambdabot> randomRIO (2, 10) >>= \ n -> replicateM n (putChar =<< randomRIO ('A', 'Z')) 03:18:12 <elliott> ?pl randomRIO (2, 10) >>= \ n -> replicateM n (putChar =<< randomRIO ('A', 'Z')) 03:18:12 <lambdabot> flip replicateM (putChar =<< randomRIO ('A', 'Z')) =<< randomRIO (2, 10) 03:18:20 <elliott> ?pl randomRIO (2, 10) >>= \ n -> replicateM n (randomRIO ('A', 'Z') >>= putChar) 03:18:20 <lambdabot> flip replicateM (putChar =<< randomRIO ('A', 'Z')) =<< randomRIO (2, 10) 03:18:20 <CakeProphet> oh, okay... so basically what I did. 03:18:53 <monqy> why is ?pl obsessed with =<< 03:19:01 * CakeProphet prefers it as well. 03:19:05 <CakeProphet> usually 03:19:07 <CakeProphet> it depends 03:19:30 <monqy> because it's in the same order as all the other stuff that is usually in the wrong ordeR?? 03:19:32 <CakeProphet> >>= is nice to visualize pipelining. 03:19:41 <CakeProphet> while =<< looks more like a function application 03:21:52 <CakeProphet> f =<< m reads pretty naturally though. 03:22:48 <monqy> it's okay if it's small like that 03:23:03 <monqy> but when writing out a big,, it's really backwards annoying 03:23:12 <CakeProphet> it depends on which side of the expression is big. 03:23:20 <SgeoN1> I'm wondering what distro to put on USB for the time being. I'll be stuck with it for a while. 03:23:28 <CakeProphet> I think it's easier to read when the left-hand side is the smaller expression. 03:23:34 <elliott> monqy: (.) is backwards in the same way 03:23:37 <elliott> SgeoN1: ubuntu or debian 03:23:39 <SgeoN1> I do want to try Ubuntu's new thing. 03:23:44 <elliott> if ubuntu, use gnome. 03:23:50 <monqy> elliott: 20:20:44 < monqy> because it's in the same order as all the other stuff that is usually in the wrong ordeR?? 03:23:56 <CakeProphet> SgeoN1: ubuntu's new thing is bad. 03:23:56 <elliott> monqy: right 03:23:59 <monqy> i was SECRETLY REFERENCING (.) 03:24:04 <SgeoN1> Would Linux Mint be that bad? 03:24:34 <CakeProphet> SgeoN1: I use what is now called the "classic interface" in Ubuntu 10.10 (aka GNOME) 03:24:37 <monqy> CakeProphet: when you have long chains it's easier to read >>=wise than =<<wise 03:24:53 <elliott> SgeoN1: linux mint is stupid 03:25:01 <CakeProphet> again, depends on which expressions are large. 03:25:04 <monqy> what's the point of linux mint anyway 03:25:06 <elliott> and pointless 03:25:09 <elliott> monqy: nothing 03:25:12 <elliott> it has literally no point 03:25:21 <monqy> this is what confused me. I couldn't figure out the point. 03:25:23 <elliott> other than "lol we ship slightly more non-free drivers by default except actually ubuntu ships all them anyway" 03:25:24 <SgeoN1> I think I like having just one bar 03:25:33 <elliott> SgeoN1: yeah you can do that with gnome in hmm 03:25:36 <elliott> about ten seconds 03:25:44 <elliott> and xfce comes lik ethat by default 03:25:47 <elliott> soOOOOOoooooooOOOOoooOOOoooOOooooooooo 03:25:55 <CakeProphet> Pure:Dyne is pretty neat. 03:26:07 <CakeProphet> comes with a bunch of music software. 03:26:20 <CakeProphet> and is below Ubuntu on the repo chain. 03:26:38 <CakeProphet> also has good realtime scheduling support. 03:26:53 <CakeProphet> which is kind of silly for a distro that's intended to be used on a CD / USB 03:27:03 <SgeoN1> Can I easily switch between classic and new? 03:27:09 <CakeProphet> yes 03:27:13 <CakeProphet> it's an option on the login screen 03:27:14 <CakeProphet> at the bottom. 03:27:23 <CakeProphet> the new interface is baaaaad 03:27:34 <CakeProphet> it's like "lolololol let's emulate Apple poorly because that's the new trend" 03:27:40 <monqy> woohoo 03:27:49 <monqy> I've never tried it? what's so bad about it? I'd probably hate both? 03:28:02 <elliott> it's awful 03:28:11 <elliott> in every way but not the ways CakeProphet says 03:28:18 <CakeProphet> of course. 03:28:53 <CakeProphet> it's just... obviously it's not a mature piece of software. 03:28:58 <elliott> it doesn't matter 03:28:58 <CakeProphet> unlike GNOME. 03:29:00 <elliott> it's terrible 03:29:04 <elliott> if it were polished 03:29:06 <elliott> it would remain terrible 03:29:11 <CakeProphet> ...yes, but better nonetheless. 03:29:15 <monqy> polished 03:29:41 <CakeProphet> in any case just keep using GNOME forever 03:29:48 <CakeProphet> and not Unity 03:29:58 <CakeProphet> though I think Unity is on top of gnome... whatever. 03:30:18 <SgeoN1> Should I use Ubuntu 11.04, is there cool stuff besides the new thing or stick with 10.04 LTS which I don't need to download something 03:31:00 <CakeProphet> oh wait... I'm not using 10.10 I'm using 11.04 03:31:17 <CakeProphet> I lose track of these versions... 03:31:20 <elliott> SgeoN1: I use 10.10. I wouldn't use 10.04, it's rather outdated by now. 03:31:44 <elliott> 11.04 with GNOME is probably fine; I downgraded because I didn't like the change to the default terminal scrollbar colour, and because the pointer seemed to be moving annoyingly faster. 03:31:51 <elliott> Note that I was already incredibly aggravated at that point. 03:32:20 * CakeProphet hasn't much of a difference besides minor cosmetic changes to gnome in 11.04 03:32:24 <CakeProphet> +noticed 03:33:26 <CakeProphet> the scrollbars are different yes. 03:33:27 <elliott> The 10.10 packages are pretty out of date. I'll probably move to Debian when I finally send this thing off and get it back. 03:33:41 <elliott> CakeProphet: Yeah, but the terminal scrollbars are black. 03:33:44 <elliott> I don't think any other scrollbar is black. 03:33:47 <CakeProphet> yeah 03:33:51 <CakeProphet> scrollbars are for jumps. 03:33:53 <CakeProphet> ...er 03:33:55 <CakeProphet> chumps 03:34:23 <elliott> They're useful for jumping, too. 03:34:43 <CakeProphet> I use page up / page down for that... which annoyingly doesn't work in terminal 03:36:36 <CakeProphet> ...uh, rsync does not appear to be paying attention to my exclude file. 03:39:09 -!- azaq23 has quit (Ping timeout: 276 seconds). 03:39:39 <SgeoN1> I assume that I'll notice Unity's badness quickly, or is it more subtle and will grate on me later? 03:39:50 <CakeProphet> elliott: to exclude all subdirectories of a directory do I need to specify dir/*? 03:39:55 <CakeProphet> SgeoN1: you will notice immediately 03:40:13 -!- sebbu2 has joined. 03:40:13 -!- sebbu2 has quit (Changing host). 03:40:13 -!- sebbu2 has joined. 03:40:45 <elliott> SgeoN1: You have no taste, so who knows. 03:40:57 <elliott> Maybe it will be so new and shiny that you are seduced and you will spend the rest of your life using it. 03:41:07 <CakeProphet> horrible. 03:41:32 <CakeProphet> okay qadding the *'s fixed it. 03:42:30 <CakeProphet> a lot of this crap I don't really want to backup but I'm too lazy to add like 20 exclude entries. 03:42:56 -!- sebbu has quit (Ping timeout: 260 seconds). 03:44:41 <elliott> CakeProphet: dude, just use an existing rsync-based backup solution 03:44:52 <elliott> one that does hardlink snapshotting for you 03:45:04 <elliott> I hear good things about rdiff-backup: http://www.nongnu.org/rdiff-backup/ 03:46:38 <Gregor> "rsync-based backup solution"??? 03:46:39 <CakeProphet> I pretty much already have this set up though... 03:46:43 <Gregor> rsync already is a backup solution. 03:46:49 <CakeProphet> yeah.. 03:47:06 <elliott> Gregor: Not really. 03:47:14 <elliott> It doesn't do snapshotting, for one. 03:47:35 <CakeProphet> not really what I want. 03:47:46 <elliott> Why not 03:47:48 <Gregor> elliott: My backup of Codu is rsync -> git. 03:47:54 <Gregor> For luls! 03:47:54 <SgeoN1> MonoDevelop doesn't support C# 4.0 ? Bleh 03:48:00 <elliott> Gregor: Why git 03:48:13 <Gregor> elliott: Because neither hg nor git can store themselves in themselves, and I never use git :P 03:48:25 <elliott> Why can hg not store itself inside itself 03:48:34 <Gregor> I honestly have no friggin' clue. 03:48:36 <elliott> And why are you under the impression that git is a decent deduplicative storage system 03:48:36 <Gregor> Well, no. 03:48:56 <Gregor> Both of them just arbitrarily say "lol no" if you try to store their dot directory. 03:49:07 <CakeProphet> elliott: it's not necessary and I already have rsync set up. 03:49:26 <Gregor> elliott: Mainly because I've been doing this for over a year and it hasn't gone crazy. 03:49:33 <elliott> CakeProphet: Let me know when you run out of disk space and/or lose an important backup because you delete them way too frequently 03:49:44 <elliott> Gregor: That doesn't mean it isn't using a billion times more disk than necessary :P 03:49:55 <elliott> (Billion may be exaggerated, but c'mon, git is based around storing entire trees.) 03:50:05 <elliott> Do you at least git-gc it? 03:50:27 <Gregor> Yes, once per week. 03:50:42 <CakeProphet> I don't have my external plugged in most of the time so the cron script rarely runs. 03:50:42 <elliott> Fair enough then, though it's still awful. : 03:50:43 <elliott> :p 03:50:45 <CakeProphet> I usually manually run it. 03:51:22 <CakeProphet> and I'm not going to run out of disk space because I only keep one backup. 03:51:42 <CakeProphet> though with my external I could easily keep about 3 or 4 rotating backups. 03:52:15 <CakeProphet> more if I used diffs... which is probably what rdiff-backup does. 03:52:53 <elliott> Do you actually know what snapshotting is? 03:53:18 <elliott> I mean, yes, it does diffs, but you can get snapshotting just with hardlinks. 03:53:34 <CakeProphet> yes it copies a read-only version of the directory.. 03:53:44 <elliott> What? 03:53:50 <CakeProphet> that is what snapshotting is... 03:54:06 <CakeProphet> it takes a "snapshot" of the directory before it copies it, to prevent writes from fucking up the transfer. 03:54:17 <CakeProphet> >_>? 03:54:26 <Gregor> elliott: At present, my .git directory is a bit over 2x the size of my current snapshot, and it's been doing nightly snapshots for 2 years 5 months. I think it's doin' just fine :P 03:54:30 <elliott> CakeProphet: Yes, but you expect a snapshot-based backup system to not re-backup unchanged files. 03:54:39 <elliott> i.e. almost every file on your system. 03:54:42 <elliott> i.e. backups are much smaller. 03:54:54 <CakeProphet> rsync does this anyways. 03:55:04 <CakeProphet> not with diffs. 03:55:08 <CakeProphet> just by checking modification times. 03:55:42 <CakeProphet> I just ran a backup that took about a minute. 03:55:46 <CakeProphet> first backup took several hours. 03:55:49 <elliott> >_< 03:55:52 <elliott> Yes, but you're overwriting your previous backup. 03:55:57 <elliott> So it's not a snapshot at all. 03:56:09 <CakeProphet> didn't say it was. 03:57:01 -!- Jafet1 has quit (Quit: Leaving.). 03:57:03 <CakeProphet> okay if I ever have a huge system with lots of important data that is frequently deleted then I will use rdiff-backup, okay? 04:04:04 <SgeoN1> Ugh, arty, not enough space. Going to put TinyCore onto USB then deal with things from there 04:05:08 <elliott> "arty"? 04:06:00 <SgeoN1> Autocorrevt 04:06:12 <SgeoN1> Was warty or something 04:06:22 <SgeoN1> Argh 04:07:47 <SgeoN1> Would it really be a bad idea to use TinyCore as a primary OS? 04:08:02 <elliott> I nominate Gregor to babysit SgeoN1, I'm busy. 04:08:12 <elliott> s/,/;/ 04:08:47 <SgeoN1> I forgot why I hated puppy 04:11:40 <CakeProphet> SgeoN1: whenever you finish all of thatI recommend nautilus-open-terminal 04:14:50 <SgeoN1> NO UNETBOOTIN I DO NOT WANT MICROCORE 04:16:20 <elliott> monqy: id really needs renaming :'( 04:16:29 <elliott> SgeoN1: i think unetbootin's copy of tiny core is ancient, give it the iso 04:16:31 <monqy> :( 04:17:06 <elliott> monqy: it 04:17:09 <elliott> monqy: mconfcointliscts :( 04:17:14 <SgeoN1> I did give it the iso 04:17:34 <SgeoN1> I don't remember the differences between tcblah 04:20:55 * SgeoN1 tries startx 04:21:04 <SgeoN1> Not found 04:21:06 -!- MDude has changed nick to MSleep. 04:21:26 <SgeoN1> I chose tca. Command line thing for that mentions MultiCore 04:21:58 <elliott> Hey Gregor 04:21:59 <elliott> Hey 04:22:00 <elliott> Gregor 04:22:01 <elliott> Gregor 04:22:02 <elliott> Rename my type 04:23:28 <SgeoN1> I'm going to do what I should have done before 04:23:38 <SgeoN1> Wait, that may or may not work 04:24:09 <SgeoN1> Can I have unetbootin's target ISO stored on the USB drive? 04:25:25 <elliott> It copies the ISO's contents to the drive. 04:25:55 <SgeoN1> OK, tinycore's working 04:27:05 <elliott> wow, 2-3 finger trees were only invented in 2006? 04:31:13 -!- sebbu3 has joined. 04:31:13 -!- sebbu3 has quit (Changing host). 04:31:13 -!- sebbu3 has joined. 04:34:14 -!- sebbu2 has quit (Ping timeout: 260 seconds). 04:41:01 <CakeProphet> elliott: if I made some sort of portal chess program would you play it? 04:41:13 <CakeProphet> I was thinking IRC bot, or web-based. 04:42:29 <elliott> Maybe. 04:45:12 <CakeProphet> I have no idea how to write an AI for it though so it would have to be multiplayer for sure. 04:50:23 -!- zzo38 has joined. 04:50:36 <itidus21> no need for AI if you have I 04:51:00 <zzo38> You can define a monad treating unit and join and fmap as basic, or return and (>>=) as basic, but can you define a moand treating (return .) and (<=<) as basic? 04:51:30 -!- augur has quit (Remote host closed the connection). 04:53:37 <elliott> (return .) == fmap 04:53:41 <elliott> or hm 04:53:44 <elliott> :t (return .) 04:53:46 <lambdabot> forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f a -> f (m a) 04:53:50 <elliott> argh 04:53:53 <elliott> :t (return Prelude..) 04:53:54 <lambdabot> forall b (m :: * -> *) a. (Monad m) => (a -> b) -> a -> m b 04:53:56 <elliott> yeah 04:54:02 <elliott> so it's fmap and (>=>) 04:54:08 <elliott> i doubt it 04:54:11 <elliott> because that doesn't give you return 04:55:04 <zzo38> I don't think that is the type of fmap 04:55:43 <zzo38> fmap is (a -> b) -> f a -> f b 04:56:02 <zzo38> (return .) is you remove the first f 04:57:02 <SgeoN1> Going to download Ubuntu to USB and use Unetbootin on that. I think it unpacked stuff to temporary, so... 04:57:08 <SgeoN1> Tmp dammit 04:57:10 <CakeProphet> elliott: also do you know of any libraries that would be useful for a web-based chess-like game? 04:57:18 <CakeProphet> I was probably just going to JS tomfoolery. 04:57:20 <CakeProphet> +do 04:57:30 <elliott> jQuery? :-P 04:58:42 <zzo38> Why are you trying to make a web-based chess-like game? You could use other programs too such as local file (or remote file). 04:58:53 <elliott> zzo38: sorry, I was wrong, that isn't fmap, yeah 04:59:09 <CakeProphet> well the idea is to make it accessible to people who might say, not care very much. 04:59:18 <elliott> yeah (f .) ~ f 04:59:30 <elliott> to go (f .) -> f: g id 04:59:34 <elliott> to go from f -> (f .) = (f .) 04:59:44 <elliott> where g is (f .) in the first one 04:59:58 <CakeProphet> also being web-based makes it simpler to set up online multiplayer such that someone could just create a game with anyone else who were on the site. 05:00:13 <CakeProphet> *was 05:00:39 <zzo38> CakeProphet: O, I think using MUD service or something like that work better; I believe FICS does something like that (although it does have a Java client too; you could do that, I suppose). 05:00:52 <CakeProphet> ...nah not as many people use MUDs. 05:01:11 <zzo38> It has a Java client, so if you have Java you do not need a MUD client. 05:01:20 <CakeProphet> yeah Java is an option. 05:01:27 <CakeProphet> so is Flash but flash is icky. 05:01:37 <zzo38> And if you have a MUD client you do not need Java or a web browser program. 05:01:49 <zzo38> You could use Flash if you want, but I suggest using Java. 05:02:12 * CakeProphet is completely new to web interfaces so he'll likely do it the wrong way at first. 05:03:03 <zzo38> That is why it should be done as a MUD service. And then write the Java or whatever on top of that (you can easily have webpages that automatically run the Java program properly) 05:03:59 <CakeProphet> you mean like... barebones telnet right? am I interpreting MUD correctly? 05:04:29 <zzo38> CakeProphet: FICS is linemode, so if you have a linemode telnet client that will work. 05:04:58 <CakeProphet> hmmm okay 05:04:59 <zzo38> (You could support charmode as well if you wanted to, I suppose) 05:05:14 <elliott> OK, this trackpad is almost broken. 05:05:27 <elliott> This laptop: I am sick of it. 05:05:42 <zzo38> Then fix it or get a new one. 05:06:01 <CakeProphet> zzo38: how do you create games with other people using FICS? 05:06:22 <elliott> zzo38: I am, I've just been busy using it. 05:06:36 <zzo38> CakeProphet: I have not used it in a long time and forget what the command is, but you can use help command to access the help it tell you what it is. 05:07:43 <elliott> Metadata has a massively quirky packing format, the details of which are not quite all understood. However, successful parsing of metadata is possible, according to the following rules. 05:07:43 <elliott> A metadata field is a byte. The top three bits of the byte, when masked off and interpreted as a three-bit number from 0 to 7, indicate the type of the field. The lower five bits are some sort of unknown identifier. The type of the byte indicates the size and type of a payload which follows the initial byte of the field. 05:07:43 <elliott> The metadata format consists of at least one field, followed by either another field or the magic number 0x7F. 0x7F terminates a metadata stream. 05:07:45 <elliott> Thus, the example metadata stream 0x00 0x01 0x7f is decoded as a field of type 0, id 0, with a payload of byte 0x00. 05:07:48 <elliott> oh dear god 05:07:50 <CakeProphet> also Java could easily be converted to an android app. my portal chess empire will soon kick off. 05:07:58 <elliott> CakeProphet: "Easily" 05:08:09 <elliott> Except that the entire Android API is wildly different from standard Java stuff. 05:08:14 <CakeProphet> elliott: you are correct. 05:08:20 <elliott> So not easily at all. 05:08:25 <zzo38> I can understand if you have f = (return .) then you have return = f id but can you convert (<=<) (or (>=>)) to other forms? 05:08:26 * CakeProphet has made Android apps so actually knows this. 05:08:43 <elliott> zzo38: dunno 05:08:50 <CakeProphet> elliott: with enough boilerplate code anything is possible in Java. :P 05:09:01 <CakeProphet> JUST GOTTA THINK WITH CLASSES. 05:09:04 <CakeProphet> DAWG 05:09:34 <zzo38> CakeProphet: Yes, you could use Android as well; anyone with a keyboard Android device could use MUD client or the other one whichever you prefer, and if you have no keyboard you can just use the Java program. 05:10:18 -!- kmc has joined. 05:10:19 <CakeProphet> the average person would not use a MUD client. also, the average person is important to the success of the CakeProphet Portal Chess Empire(tm). 05:10:32 <zzo38> Using (return .) and (<=<) seem like a category where you have morphism conversion and morphism composition. 05:10:36 <CakeProphet> which will no doubt blossom in a few months. 05:10:38 <zzo38> CakeProphet: That is why you need a Java client!! 05:10:43 <CakeProphet> correct. 05:11:23 <zzo38> You can have menus and whatever to access commands, graphics interface, sound effect, etc. But still make the underlying protocol a MUD service (this is what FICS does too). 05:11:37 <CakeProphet> yes I will need a good explosion sound effect for when portals explode. 05:11:38 <CakeProphet> :P 05:11:57 <CakeProphet> zzo38: I am understanding what you said. no need to clarify. 05:12:05 <zzo38> OK 05:12:59 <fizzie> elliott: Also known as ENTITY_DATA in protocol.c; it's not *that* hard to skip, but I presume you want to de/serialize it to some Haskell type representation. More fun for you. 05:13:07 <CakeProphet> I like how the FICS website has some woman playing chess on it. 05:13:25 <CakeProphet> probably to persuade socially inept chess nerds that they will find their soulmate through FICS. 05:14:23 <elliott> fizzie: It's... what is even this format? 05:14:28 <elliott> Seriously. What is it. 05:14:40 <elliott> CakeProphet: I'm pretty sure there are, in fact, women who play chess. 05:14:42 <fizzie> CakeProphet: Our CS department website photos tend to do that too. 05:14:53 <elliott> fizzie: What is this. Website. 05:15:00 <CakeProphet> elliott: what? unspeakable. 05:15:04 <elliott> ... 05:15:05 <elliott> Website? 05:15:06 <zzo38> elliott: You don't know answer to my question? 05:15:07 <elliott> I mean format. 05:15:09 <elliott> zzo38: I don't. 05:15:22 <elliott> fizzie: Seriously. This is the screwiest format... ever. 05:15:23 <pikhq> CakeProphet: I can confirm that there are, in fact, women who play chess. 05:15:24 <fizzie> elliott: It's just this thing, you know. 05:15:34 <CakeProphet> pikhq: that's unpossible 05:15:38 <CakeProphet> I am completely unconvinced at the unpossible. 05:15:56 <elliott> Ironic sexism: bringing funny to your IRC since 1990. 05:16:00 <elliott> fizzie: It's. 05:16:02 <zzo38> Since you already have return from that, can it be converted to a statement in intuitionistic logic by Curry-Howard? 05:16:03 <elliott> fizzie: It's not a thing I like. 05:16:06 <itidus21> `log impossible is 05:16:06 <elliott> fizzie: I don't like the thing. 05:16:11 <HackEgo> 2007-08-03.txt:21:51:44: <ehird`> bsmntbombdood, but this is clearly in an alternate universe where the impossible is possible 05:16:11 <elliott> fizzie: Help. 05:16:21 <zzo38> Actually I don't know if Curry-Howard is sufficient. 05:16:23 <itidus21> `log impossible is 05:16:26 <HackEgo> 2011-09-19.txt:05:16:23: <itidus21> `log impossible is 05:16:30 <itidus21> `log impossible is 05:16:34 <HackEgo> 2011-09-19.txt:05:16:06: <itidus21> `log impossible is 05:16:38 <itidus21> shee 05:16:40 <itidus21> t 05:16:46 <itidus21> `log impossible is 05:16:49 <HackEgo> 2011-09-15.txt:22:12:10: <itidus21> maybe impossible is a limit 05:16:54 <pikhq> No, it's just as utterly implausible as the move 0-0-0-0-0-0. 05:16:55 <itidus21> `log impossible is 05:16:59 <HackEgo> 2011-09-19.txt:05:16:26: <HackEgo> 2011-09-19.txt:05:16:23: <itidus21> `log impossible is 05:17:09 <CakeProphet> elliott: just pretending to be incredulous as usual. 05:17:15 <CakeProphet> the sexism was an artifact. 05:17:22 <itidus21> dewuihdeu (\iewjiwejdiwjijdiwdjwidjiewjdiwdi.x) huiehuie dehhu 05:17:23 <zzo38> pikhq: I think someone once played that move, although the modern rules clarify that such move is not permitted. 05:17:38 <elliott> A metadata field is a byte. The top three bits of the byte, when masked off and interpreted as a three-bit number from 0 to 7, indicate the type of the field. The lower five bits are some sort of unknown identifier. The type of the byte indicates the size and type of a payload which follows the initial byte of the field. 05:17:38 <elliott> The metadata format consists of at least one field, followed by either another field or the magic number 0x7F. 0x7F terminates a metadata stream. 05:17:42 <elliott> Thus, the example metadata stream 0x00 0x01 0x7f is decoded as a field of type 0, id 0, with a payload of byte 0x00. 05:17:49 <elliott> fizzie: Can you explain this? 05:17:52 <zzo38> (In fact that move resulted in checkmate; I think it was the only move in that position that resulted immediately in checkmate) 05:17:56 <elliott> I don't get how the payload comes before the type. 05:17:57 <pikhq> zzo38: It was part of a solution to a chess problem, and no longer permitted. 05:17:59 <elliott> fizzie: Is the example just wrong? 05:18:08 <CakeProphet> pikhq: if I create portal chess software will you play it? 05:18:13 <zzo38> pikhq: I know that 05:18:15 <CakeProphet> also if I write rules so that you know how to play it? 05:18:28 <zzo38> CakeProphet: I would like to see the complete rules. 05:18:40 <fizzie> elliott: The example is wrong; the payload is 0x01. 05:19:03 <CakeProphet> zzo38: they'll be a bit tricky to describe technically. 05:19:13 <elliott> fizzie: Right. 05:19:13 <CakeProphet> the loop breaking rules are somewhat messy. 05:19:25 <elliott> fizzie: I'm... I hate this format. 05:19:29 <elliott> fizzie: Of all the formats: this is the worst. 05:19:40 <fizzie> elliott: Note that it's funnily impossible to have a 'float'-type field in there with the five-bit ID of 0x1f, because that would happen to match the 0x7F. 05:19:41 <CakeProphet> basically the bidirectional loops have a number of variant rules you could adopt. 05:19:52 <elliott> fizzie: The IDs are just ignored by the client, right? 05:20:03 <CakeProphet> because it's ambiguous what happens in that situation when you place a portal in a loop that is travel back and forth instead of in a single direction. 05:20:11 <fizzie> elliott: No clue, since I make no attempts to decode it. 05:20:19 <elliott> Heh. 05:20:25 <CakeProphet> so you just have to say "okay this is what happens" 05:20:36 <CakeProphet> and there's so far 4 ways to do that. I picked one for the standard rules. 05:20:51 <fizzie> elliott: http://mc.kev009.com/Protocol#Metadata says the ID is "either an index or bitmask". 05:21:04 <elliott> fizzie: And the strings are encoded in the usual Minecraft way, right? 05:21:52 <CakeProphet> elliott: yes block formatting 05:22:12 <zzo38> I don't completely understand the rule but I can think one way might be the way to program it: you figure out what number is needed and hardcode that value. After that many steps, save the current direction and position. Now you recognize infinite loop if you reach that point a second time. 05:22:18 <itidus21> the good thing about minecraft is that since it's not free, you won't get advertising bots 05:22:41 <elliott> > 9 `shiftL` 99 05:22:42 <lambdabot> Ambiguous type variable `a' in the constraint: 05:22:42 <lambdabot> `Data.Bits.Bits a' 05:22:42 <lambdabot> a... 05:22:44 <elliott> > 9 `shiftL` 99 :: Int 05:22:44 <lambdabot> 0 05:22:46 <elliott> > 9 `shiftL` 99 :: Integer 05:22:46 <lambdabot> 5704427701027032306735164424192 05:22:48 <CakeProphet> zzo38: oh the infinite loop itself is not a problem and is part of the rules/strategy. 05:22:48 <elliott> > 9 `shiftR` 99 :: Integer 05:22:49 <lambdabot> 0 05:22:49 <fizzie> elliott: http://mc.kev009.com/Mob_Types seems to indicate that wolves come with 3 fields of IDs 16, 17 and 18; it could be it's checked. 05:23:04 <CakeProphet> zzo38: the problem is there are certain ways to break a loop via portal that are ambiguous. 05:23:16 <CakeProphet> specifically if you have, on any file/row/diagonal the following setup 05:23:19 <CakeProphet> >-------< 05:23:21 <elliott> fizzie: FML 05:23:30 <CakeProphet> where > and < are arrows and the ---- is the projectile path (the loop) 05:23:36 <fizzie> elliott: If I read the protocol.c right, string fields actually are prefixed by the length in bytes (not in UCS-2 elements) in the metadata format. 05:23:41 <CakeProphet> if you place a portal inside the loop. what happens? 05:23:50 <fizzie> But of course protocol.c might easily be wrong. 05:24:01 <CakeProphet> does the portal redirect the projectile? does it get captured? both? or should you flip a coin? 05:24:01 <elliott> fizzie: I 05:24:02 <elliott> HATE 05:24:02 <elliott> MY 05:24:04 <elliott> LIFE 05:24:06 <CakeProphet> these are the 4 rule variations I've come up with. 05:24:17 <CakeProphet> the first one being the standard one. 05:24:19 <elliott> fizzie: It's probably not wrong since mcmap actually works. 05:24:22 <elliott> Sometimes. 05:24:24 <fizzie> "case 4: t = buf_get_jshort(state); if (!buf_skip(state, t)) return 0; break;" 05:24:54 <elliott> What's the mask for five bits again? 05:25:23 <fizzie> 0x1f. 05:25:36 <elliott> Thanks. 05:25:58 <fizzie> elliott: The only non-empty string field is for a tamed wolf; has anyone tried to see a tamed wolf through mcmap yet? 05:26:19 <elliott> Not that I know of. :p 05:26:43 <fizzie> Could be stealthily wrong, then. 05:26:44 <elliott> fizzie: case 4: read string (UCS-2) from stream 05:26:50 <elliott> Nothing _seems_ to stay it's any different from the usual strings. 05:26:53 <elliott> I'd expect that point to come up. 05:30:44 <fizzie> elliott: Could be. Sadly DataOutputStream's writeChars doesn't prefix the length, so there's no "standard" way. (Unlike the writeUTF method, which prefixes a two-byte length in bytes.) 05:30:50 <CakeProphet> !wacro 3 6 05:30:51 <EgoBot> DCECO 05:31:01 <CakeProphet> monqy: ^^^ 05:31:08 <monqy> thanks 05:31:13 <monqy> it's amost good 05:31:30 <fizzie> I'm mildly surprised mc UTF-8 strings aren't prefixed by the length in characters; that woud have been so typical. 05:31:31 <monqy> the consonatnt cluster at the beginning though? two plosives? really? 05:31:59 <monqy> unless the first c isn't but that's dumb too 05:32:09 <CakeProphet> no it's not. 05:32:13 <elliott> fizzie: http://sprunge.us/OiGK 05:32:16 <elliott> fizzie: Behold the ugliest. 05:32:21 <monqy> c is a pretty useless letter 05:32:24 <elliott> Also, MC UTF-8 strings don't exist any more. 05:32:25 <elliott> Thank fucking god. 05:33:01 <CakeProphet> minecraft needs more portals. 05:33:13 <monqy> does it not already have them? shameful 05:33:35 <CakeProphet> it has doors 05:33:39 <CakeProphet> but those don't count as portals. 05:33:52 <CakeProphet> just in the lame pre-21st century way. 05:33:57 <elliott> It... 05:33:57 <elliott> Has portals. 05:34:03 <CakeProphet> not the same 05:34:04 <elliott> As a separate thing to doors. 05:34:05 <CakeProphet> hell portals are lame. 05:34:11 <elliott> They're called Nether portals. 05:34:16 <CakeProphet> don't care 05:35:04 <fizzie> Some of them moddifications do tele-portals. 05:35:34 <CakeProphet> do they preserve momentum? 05:35:53 <elliott> MC/Protocol.hs:361:7: Not in scope: `PF.byteArray' 05:35:53 <elliott> MC/Protocol.hs:367:7: Not in scope: `PF.multiBlockChangeData' 05:35:53 <elliott> MC/Protocol.hs:391:7: Not in scope: `PF.explosionData' 05:35:53 <elliott> MC/Protocol.hs:427:7: Not in scope: `PF.windowItemData' 05:35:53 <elliott> MC/Protocol.hs:456:7: Not in scope: `PF.mapData' 05:35:58 <fizzie> Probably not. 05:36:03 <elliott> fizzie: Would you be willing to sell alcohol to a minor? I kind of need it. 05:36:15 <CakeProphet> elliott: perl is your friend. 05:36:22 <elliott> CakeProphet: How can Perl help here? 05:36:23 <CakeProphet> perl is better than stiff drinks. 05:36:34 <fizzie> elliott: NO it's the PRETTY. The only thing it needs is a third mini-format inside. Maybe "type 7" fields could be gzipped XML fragments? 05:36:36 <CakeProphet> elliott: while I assume you need to change something about the exports or rename a bunch of identifiers. 05:37:00 <elliott> fizzie: Please kill me. 05:37:07 <elliott> CakeProphet: No, I need to implement a shitload of horrible packet field types. 05:37:23 <zzo38> Just select which way the ambiguity on the game is resolved by a variant before the game starts, I suppose. Or, make it the player making the move selects only one rule as they are making a move. 05:37:52 <CakeProphet> zzo38: the first suggestion is basically what I already do 05:38:03 <CakeProphet> I have the standard rule and then optional varints that should be decided upon beforehand 05:38:07 <CakeProphet> second idea is horrible. 05:38:16 <zzo38> OK 05:38:57 <CakeProphet> elliott: you could just do the packet stuff as a perl script. :D 05:39:01 <CakeProphet> there, now perl is helping. 05:39:09 <elliott> CakeProphet: Shut up, I'm ratty. 05:39:41 <fizzie> elliott: Ooh, map data is also pretty funny if you want to properly decode it. 05:40:08 <CakeProphet> regex is the best way to decode everything. 05:40:29 <fizzie> "If the first byte of the text is 0, the next two bytes are X start and Y start and the rest of the bytes are the colors in that column. 05:40:33 <fizzie> If the first byte of the text is 1, the rest of the bytes are in groups of three: (data, x, y). The lower half of the data is the type (always 0 under vanilla) and the upper half is the direction." 05:40:53 <elliott> fizzie: I'm seriously going to commit suicide. 05:40:56 <elliott> This is 05:40:57 <elliott> The worst 05:40:58 <elliott> Protocol. 05:41:03 <elliott> Find me a worser protocol. I dare you. 05:41:06 <CakeProphet> perl would make it easy. 05:41:09 <CakeProphet> :):):) 05:41:13 <CakeProphet> :D:D:D 05:41:16 <itidus21> elliott: ymsg 05:41:23 <CakeProphet> :>:>:> 05:41:32 <elliott> itidus21: ? 05:41:35 <elliott> "getLengthPrefixedByteString" -- ah yes, the good names. 05:41:42 <itidus21> yahoo messenger protocol 05:41:55 <elliott> itidus21: What's it like 05:42:12 <itidus21> they hacked it up years ago much like whats being done for minecraft :D 05:42:15 <CakeProphet> I bet whatever WoW uses is pretty bad. 05:42:22 <itidus21> this led to the creation of many third party clients 05:42:48 <elliott> itidus21: I'm talking about worse as in the technical details of the protocol. 05:42:49 <itidus21> i dont actually know what its like 05:43:00 <itidus21> it might not be that bad... probably got worse with time 05:43:18 <itidus21> finne 05:43:29 <itidus21> ... i failed to find a worse one,. 05:43:36 <itidus21> i relent 05:44:15 * itidus21 checks google for relent meaning. 05:44:19 <itidus21> im not sure if it applies. 05:44:51 <elliott> MC/Protocol.hs:367:7: Not in scope: `PF.multiBlockChangeData' 05:44:52 <elliott> MC/Protocol.hs:391:7: Not in scope: `PF.explosionData' 05:44:52 <elliott> MC/Protocol.hs:427:7: Not in scope: `PF.windowItemData' 05:44:52 <elliott> MC/Protocol.hs:456:7: Not in scope: `PF.mapData' 05:44:53 <elliott> And so it thins. 05:45:08 <elliott> OK, explosion looks pretty easy. 05:46:22 <elliott> fizzie: So is the explosion data composed of signed or unsigned bytes? :p 05:47:17 <CakeProphet> itidus21: to relent means to give up. 05:47:26 <fizzie> I've been assuming all bytes signed, pretty much. Even though some might not be. 05:47:37 <itidus21> well yeah i give up 05:47:51 <fizzie> windowItemData is not too bad either, if it's that inventory contents thing; there's a count, and then a list of that many of those "one short, followed by a byte+short" item things. 05:47:56 <CakeProphet> itidus21: though it usually connotates something mean that you're giving up. as in relentless which is when it's commonly used. 05:48:15 <fizzie> s/followed/optionally followed/ 05:48:52 <itidus21> i withdraw, yield, submit, concede, relent 05:49:11 <elliott> I've been working on this thing like two, three days, it's almost a thousand lines, and still no world of grass. :/ 05:49:12 <CakeProphet> itidus21: avast ye scurvy marmit. 05:49:36 <CakeProphet> elliott: perhaps you should take a break. 05:49:45 <elliott> CakeProphet: That would not get me closer to the world of grass. 05:49:50 <itidus21> elliott: go swaggering with your posse 05:49:59 <CakeProphet> but it would perhaps prevent you from going insane. 05:50:28 <elliott> CakeProphet: Too late. 05:50:53 <fizzie> elliott: I don't suppose you considered stealing these from the other Haskell mc projects? Oh, right, of course not; they'd have done it wrong. (Admittedly the one I've seen wasn't that pretty either, and could well be dead now.) 05:51:27 <itidus21> a haskell mc project? 05:51:30 <itidus21> cool 05:52:06 <elliott> fizzie: Consider that the conception of this was "I am totally out of fucks; let's hack up my own cheap thing". 05:52:18 <elliott> Then perhaps it will yield fucks to give. 05:54:29 <fizzie> If you want a "cheap thing", why are you bothering with all the field types you could just keep as opaque blobs?-) 05:54:43 <SgeoN1> Maybe I'll go eat while this thing takes eternity to shrink a 29.98 gb partition to 5.37 05:54:47 <itidus21> `log cheap thing 05:54:50 <HackEgo> 2009-04-21.txt:23:18:37: <ehird> ais523: the really cheap thing misses the point, since they just pirated it instead. 05:55:08 <elliott> fizzie: Not _that_ cheap. 05:55:27 <itidus21> `log cheap thing 05:55:31 <HackEgo> 2011-09-19.txt:05:54:47: <itidus21> `log cheap thing 05:55:35 <SgeoN1> Oh it finished 05:55:52 <SgeoN1> Time to make casper-rw 05:55:55 <itidus21> `log minecraft 05:55:59 <HackEgo> 2010-12-18.txt:16:42:10: <elliott> oh MINECRAFT okay 05:56:09 <itidus21> `log elliottcraft 05:56:09 <SgeoN1> Anything horribly wrong with ext4? 05:56:13 <HackEgo> 2011-08-28.txt:22:24:41: <Phantom_Hoover> elliott, isn't that basically elliottcraft in a nutshell? 05:56:15 <elliott> SgeoN1: Use jfs. 05:56:18 <fizzie> Cheap thing -> https://github.com/mpolney/mcproxy/blob/master/Protocol/SMP.hs 05:56:23 <itidus21> `log elliottcraft 05:56:27 <HackEgo> 2011-08-19.txt:20:00:21: <elliott__> I could have the thing blocking Elliottcraft (the GPipe patch) probably done within a few hours, but it hasn't popped up as something that sounds like fun for a while, so it hasn't been done yet, oops 05:56:40 <SgeoN1> Why? 05:56:51 <elliott> SgeoN1: Because it's the best Linux filesystem. 05:57:02 <elliott> fizzie: For some definition of cheap. 05:57:17 <elliott> fizzie: That doesn't even do client packets, I think. 05:57:31 <fizzie> It's a proxy, it should. 05:57:32 <elliott> Hmm, it does. But only one of them. 05:57:37 <elliott> Oh, it's old. 05:57:37 <fizzie> Well, "do". 05:57:42 <elliott> Anyway, it's: bad. 05:57:49 <fizzie> Yeah, I was expecting it could be dead. 05:58:07 <fizzie> I took some initial mcmap protocol info from there. 05:58:23 <elliott> Huh, it can do keyboard examples. 05:58:29 <elliott> fizzie: Heh, it predates mcmap? 05:58:31 <SgeoN1> Should I leave a gb free for swap? 05:58:42 <elliott> SgeoN1: How much RAM? 05:58:46 <elliott> And did you use JFS, because it is the best. 05:58:53 <elliott> Also ext4 is designed for obsoletion. 05:58:56 <SgeoN1> I forgot how to check 05:59:03 <elliott> SgeoN1: free -m 05:59:12 <elliott> (It's meant to be the "stopgap" towards btrfs, which is unstable and Oracle-controlled. JFS = good.) 05:59:21 <elliott> fizzie: That certainly doesn't predate mcmap. 05:59:27 <fizzie> elliott: Oh, it was https://gist.github.com/727175 instead. 05:59:27 <elliott> I checked the repo. 05:59:29 -!- GreaseMonkey has joined. 05:59:30 -!- GreaseMonkey has quit (Changing host). 05:59:30 -!- GreaseMonkey has joined. 05:59:30 <SgeoN1> 992 05:59:45 <elliott> fizzie: Oh, I saw that. 06:00:11 <fizzie> I was blinded by all the "Int32 String Int32 Int32 Int32 Int8 Int8 Int16". 06:00:28 <elliott> There's a reason I decided to auto-generate the parser. :p 06:00:33 <elliott> (And deparser.) 06:00:44 <elliott> let blks = zipWith3 (\ (a, b, c) d e -> (a, b, c, d, e) `asTypeOf` (a, a, a, a, a)) pos t md 06:00:44 <elliott> Noice. 06:02:13 <fizzie> Musts to wurk now. 06:03:39 -!- augur has joined. 06:03:57 <elliott> Maps If the first byte of the text is 0, the next two bytes are X start and Y start and the rest of the bytes are the colors in that column. 06:03:57 <elliott> If the first byte of the text is 1, the rest of the bytes are in groups of three: (data, x, y). The lower half of the data is the type (always 0 under vanilla) and the upper half is the direction. 06:03:57 <elliott> What. 06:04:14 <CakeProphet> @pl (\ (a, b, c) d e -> (a, b, c, d, e) `asTypeOf` (a, a, a, a, a)) 06:04:14 <lambdabot> (line 1, column 9): 06:04:14 <lambdabot> unexpected "," 06:04:14 <lambdabot> expecting letter or digit, operator or ")" 06:04:14 <lambdabot> ambiguous use of a non associative operator 06:04:37 <SgeoN1> Is it a bad idea to have a swap partition on a flash drive? 06:04:54 <CakeProphet> no. 06:05:08 <CakeProphet> swap on a flash drive would be faster than disk writes I believe. (...?) 06:05:21 <zzo38> "Can I have a glass of water?" "Do you want a plate or a fork?" 06:05:33 <SgeoN1> Faster isn't the issue, wear on the drive is 06:05:46 <CakeProphet> oh 06:05:47 <CakeProphet> nah... 06:06:39 <pikhq> Honestly, swap is basically irrelevant anymore. 06:07:01 <SgeoN1> Even with just 1gb ram w 06:07:10 <elliott> 1gb ram? Allocate two gigs swap. 06:07:21 <elliott> That's an anaemic amount of RAM. 06:07:42 <elliott> Aenaemic. Does that mean what I think it means? 06:07:47 <elliott> s/Aenaemic/Anaemic/ 06:07:47 <pikhq> Yeah, at that point GCC might OOM... 06:07:53 <SgeoN1> For some reason I was under the impression that swap should = physical 06:08:50 <elliott> Did you use jfs. It is the best. 06:09:10 <SgeoN1> I can disable swap if I need to right? 06:09:23 <elliott> Yes. 06:09:26 <elliott> Why would you need to? 06:09:40 <SgeoN1> Damage to flash drove 06:09:43 <SgeoN1> Drive 06:09:47 <elliott> What? 06:09:50 <SgeoN1> This flash drive is expensove 06:09:53 <CakeProphet> it takes about 100,000 flashes. 06:10:01 <pikhq> What SSD is it? 06:10:01 <CakeProphet> before that happens. 06:10:08 <CakeProphet> depending on the drive. 06:10:19 <elliott> There's no way you're going to break the SSD. 06:10:20 <SgeoN1> Pikhq, how do I determine 06:10:30 <CakeProphet> SgeoN1: but yes "swapoff -a" will disable swap. 06:10:37 <elliott> Wait, how do you have an expensive SSD on a shitty computer? 06:10:59 <SgeoN1> It's just a thumb drive 06:11:01 <CakeProphet> elliott: he's using a USB port I'd imagine. 06:11:07 <CakeProphet> they're pretty cool 06:11:10 <CakeProphet> you should check them out. 06:11:19 <elliott> CakeProphet: He said it was expensive. 06:11:21 <SgeoN1> Costs less than aa brand new computer I'm only going to be using for a month 06:11:21 <CakeProphet> I use one to attach a 1.5 TB hard drive to my laptop. 06:11:28 <CakeProphet> elliott: hey some people are poor. 06:11:31 <pikhq> SgeoN1: Oh. Um. Swap will rape it. 06:11:46 <elliott> CakeProphet: Sure. 06:11:57 <elliott> CakeProphet: What's the most expensive pen drive though, really? 06:12:20 <CakeProphet> probably like $20 06:12:45 <CakeProphet> 32 GB thumb drive for $32 06:12:47 <SgeoN1> I'm going to leave 2gb unused but no swap partition. I can add one later, right? 06:13:07 <CakeProphet> with 1gb I highly recommend some form of swap. 06:13:18 <pikhq> CakeProphet: Depends on the distro, actually. 06:13:20 <elliott> SgeoN1: Dude, put some swap on the actual hard drive. 06:13:30 <SgeoN1> There is no hard drive. 06:13:38 <elliott> SgeoN1: What the fuck is this machine? 06:13:40 <SgeoN1> See if you can remember why. 06:13:52 <elliott> Have you considered putting a new hard drive in. 06:14:15 <CakeProphet> I'm going on the assumption that Sgeo is poor. 06:14:37 <SgeoN1> Not poor, it's just painful to ask my dad for stuff 06:14:55 <CakeProphet> most adults have more money than they put on... 06:15:15 <CakeProphet> I don't even work full time and buying a 1.5 TB external was almost negligible. 06:16:47 <elliott> SgeoN1: I thought you got your own card finally. 06:16:53 -!- ive has quit (Ping timeout: 260 seconds). 06:17:02 <elliott> CakeProphet: Selection bias. 06:17:07 <SgeoN1> Unknown keyword in configuration file 06:17:11 <elliott> What. 06:17:14 <elliott> Hey, what's eight plus four. I'm in tedium mode, can't do thinking. 06:17:15 <SgeoN1> What the fucking fuck 06:17:22 <SgeoN1> 12 06:17:32 <elliott> Thanks bro. 06:18:19 <CakeProphet> elliott: yes I am a scientist always. 06:19:03 <elliott> CakeProphet: "That's a fancy word so your observation of my fallacy is irrelevant"? 06:19:03 <elliott> ?hoogle zip3 06:19:04 <lambdabot> Prelude zip3 :: [a] -> [b] -> [c] -> [(a, b, c)] 06:19:04 <lambdabot> Data.List zip3 :: [a] -> [b] -> [c] -> [(a, b, c)] 06:19:04 <lambdabot> Prelude unzip3 :: [(a, b, c)] -> ([a], [b], [c]) 06:19:16 <CakeProphet> I, in no way, use anecdotal evidence to help myself understand the world. 06:20:10 <CakeProphet> :t sequence 06:20:11 <lambdabot> forall (m :: * -> *) a. (Monad m) => [m a] -> m [a] 06:20:13 <SgeoN1> Thank you Google. 06:20:14 <elliott> Obviously this is what I was criticising. 06:20:16 <elliott> Obviously. 06:20:20 <CakeProphet> zip kind of reminds me of sequence. 06:20:32 <CakeProphet> er, unzip 06:21:58 <CakeProphet> elliott: I just find it silly to treat something like this scientifically. I'm not trying to say you're wrong. 06:22:02 -!- kmc has quit (Quit: Leaving). 06:22:03 <SgeoN1> return kind of reminds me of Just (note: this should not be used to imply I think cps thing is similar) 06:22:06 <CakeProphet> and yes, I know what a selection bias is. 06:22:35 <elliott> CakeProphet: It is absolutely nothing to do with science, I was attempting to convey in a simple manner that "most adults have more money than they put on..." is so ridiculously reliant on various social factors relating to you that it means almost nothing. 06:22:53 <zzo38> In the Maybe monad, return = Just 06:23:08 <CakeProphet> >_> 06:23:33 <CakeProphet> elliott: I'm sorry but all of those sentences are so reliant on social factors that I'm having trouble understanding them. 06:23:37 <CakeProphet> I time travelled from the 10th century. 06:23:50 <elliott> fizzie: Oi. 06:23:56 <elliott> CakeProphet: Yeah, I don't have time for this. 06:24:34 <zzo38> Apparently to do classical logic in Curry-Howard you use call/cc; how exactly does that work? 06:24:35 <CakeProphet> help what is this thing I'm typing into. 06:24:53 <zzo38> IRC 06:26:30 <CakeProphet> elliott: in the future I will try not to rely too much on my experience. 06:27:02 <CakeProphet> which is, of course, applicable to every human being on the planet. 06:27:14 <elliott> $ MultiBlockChangeData (zipWith3 makeItem coords types metadata) 06:27:14 <elliott> where -- FIXME: might be Word16 06:27:14 <elliott> unpackCoords :: Int16 -> (Word8,Word8,Word8) 06:27:14 <elliott> unpackCoords sh = (fromIntegral (sh `shiftL` 12), fromIntegral ((sh `shiftL` 8) .&. 0xF), fromIntegral (sh .&. 0xF)) 06:27:14 <elliott> makeItem :: (Word8,Word8,Word8) -> Int8 -> Int8 -> MultiBlockChangeItem 06:27:16 <elliott> makeItem (x,y,z) blockType metadata = MultiBlockChangeItem x y z (Block (BlockID blockType) metadata) 06:27:19 <elliott> askldfjgnh 06:27:21 <elliott> instance Serialize MultiBlockChangeData where 06:27:23 <elliott> get = do 06:27:25 <elliott> count <- fromIntegral <$> (SE.get :: Get Int16) 06:27:27 <elliott> coords <- replicateM count (unpackCoords <$> SE.get) 06:27:29 <elliott> types <- replicateM count SE.get 06:27:31 <elliott> metadata <- replicateM count SE.get 06:27:34 <elliott> return $ MultiBlockChangeData (zipWith3 makeItem coords types metadata) 06:27:35 <elliott> where -- FIXME: might be Word16 06:27:37 <elliott> unpackCoords :: Int16 -> (Word8,Word8,Word8) 06:27:41 <elliott> unpackCoords sh = (fromIntegral (sh `shiftL` 12), fromIntegral ((sh `shiftL` 8) .&. 0xF), fromIntegral (sh .&. 0xF)) 06:27:44 <elliott> makeItem :: (Word8,Word8,Word8) -> Int8 -> Int8 -> MultiBlockChangeItem 06:27:46 <elliott> makeItem (x,y,z) blockType metadata = MultiBlockChangeItem x y z (Block (BlockID blockType) metadata) 06:27:49 <elliott> jkasnLDFGHKLGDD; 06:27:50 <CakeProphet> wow that's beautiful. 06:27:51 <elliott> Sorry, fell asleep at the wheel. 06:28:26 <CakeProphet> are you sure there's not some clever way to reuse a bunch of code for all of this? 06:28:33 <CakeProphet> and avoid the boilerplate? 06:29:03 <zzo38> If Haskell had better macros you might be able to do so. 06:29:53 <elliott> CakeProphet: All of these data types are pretty much wildly different for no reason, so no. 06:30:11 <itidus21> just occured to me if i ever get really bored i could do war and peace the graphic novel 06:30:13 <elliott> Right, to hell with map data; I'm parsing it into a raw bytestring for now and fixing it later. 06:30:32 <itidus21> i would read it through once.. and then a second time as i developed the graphic novel 06:31:13 <CakeProphet> elliott: wildly? at least it's exciting then. 06:31:22 <elliott> CakeProphet: Not that wildly. 06:31:56 <itidus21> writing entertainment software in haskell is akin to alchemy. 06:32:04 <monqy> what 06:32:11 <monqy> itidus21 you don';t even know haskselle 06:32:15 <CakeProphet> so perhaps 5 coals on this hookah was overkill. 06:32:25 <itidus21> alchemy isn't a bad thing 06:32:35 <CakeProphet> monqy: you can't argue with itidus21's reason. 06:32:38 <elliott> how do you know it's alchemy, you know almost nothing about haskell 06:33:02 <itidus21> cos knowing shit is too much work. 06:33:35 <CakeProphet> it's like alchemy in that itidus21 doesn't understand either. 06:34:02 <itidus21> in other words, it's much easier for me to say float sqrt(int x) { return 6874.236; }than to write an actual float sqrt(int x); 06:34:12 <elliott> is that a metaphor for what you do on IRC 06:34:33 <itidus21> more than IRC 06:34:41 <itidus21> i used to believe my own lies IRL once 06:34:46 <CakeProphet> it's metonymy for itidus21 is a sqrt function. 06:35:26 <pikhq> itidus21: alchemy :: a -> b 06:35:44 <CakeProphet> alchemy lead :: Gold 06:35:51 <itidus21> it's as if i am on the precipice of doing actual work, but i am frozen in my tracks 06:36:23 <CakeProphet> fungot: blahblahbaljbakherihe 06:36:24 <fungot> CakeProphet: i am aware, commissioner, ladies and gentlemen, the problem of peripherality. technological advance particularly in the world' s largest trading power is to be included. following on from transparency, we are seeing today in most of our countries must co-ordinate their research, development, environmental protection, the regulation which we all seem to be blowing in this chamber who would be affected, and continues 06:37:38 <CakeProphet> I am blowing a lot of regulations right now. 06:37:49 <itidus21> im considering meditation 06:37:50 <CakeProphet> who would be affected, and continues. 06:37:57 <SgeoN1> Maybe I should be using Lubuntu? 06:38:00 <fizzie> At wurk. 06:38:43 <SgeoN1> This is so ducking slow 06:38:50 <itidus21> my working definition of alchemy is, in striving for the impossible countless wonderful discoveries are made 06:38:56 <CakeProphet> SgeoN1: are you perhaps using a duck typed language? 06:39:09 <SgeoN1> Duck you 06:39:13 <CakeProphet> quack. 06:39:43 <itidus21> except that writing entertainment software in haskell isn't impossible so the metaphor breaks at that point 06:39:54 <CakeProphet> what entertainment software are you talking about. 06:40:06 <CakeProphet> fungot: fuuuuuck 06:40:06 <fungot> CakeProphet: mr president, i have told this house: it is to be deleted from the motion for a resolution that this house will take note of the question to the council. 06:40:14 <CakeProphet> ^europarl homestuck 06:40:18 <CakeProphet> fungot: lalalalala girst 06:40:19 <fungot> CakeProphet: mr president, commissioner, ladies and gentlemen, you have today before you for the 66 votes. those who sometimes worry that in seeking such guarantees parliament is trying to make a few comments. how can we help to provide an insight into how brussels manages to take over public sectors which are highly dependent on transatlantic travel. other eu airlines also make a success of the programme. 06:40:24 <CakeProphet> ^style homestuck 06:40:24 <fungot> Selected style: homestuck (Homestuck pages 1901-4673) 06:40:25 <CakeProphet> fungot: lalalalala girst 06:40:25 <fungot> CakeProphet: have a look.... :) ham, potatoes, and squash. jade's radioactive, omnipotent, space-warping dog named... 06:40:26 <itidus21> in this, i am suggesting chemistry and traditional chinese medicine to be fruits of various forms of alchemy 06:40:38 <fizzie> CakeProphet: "^europarl homestuck"? 06:40:49 <CakeProphet> fizzie: sometimes my fingers move faster than I think. 06:40:57 <fizzie> Yes, but. 06:41:03 <CakeProphet> shhhhh 06:41:16 <itidus21> ok.. bravo haskell 06:41:19 <itidus21> for great good 06:41:38 <CakeProphet> are you learning it now finally? 06:43:20 <itidus21> i gather haskell is subservient to LC 06:44:16 <itidus21> if i discuss this topic.. there will be agony all around 06:44:43 <elliott> ?hoogle getArgs 06:44:44 <lambdabot> System.Environment getArgs :: IO [String] 06:44:54 <CakeProphet> itidus21: that doesn't really mean anything so no. 06:44:56 <itidus21> wiki tells me backus's function-level programming is not the same thing as functional programming languages 06:45:12 <elliott> fizzie: The best europarl. 06:45:42 <CakeProphet> fungot: lalalalalaa weersddf 06:45:50 <itidus21> haskell can be broken down into a set of assembly language instructions 06:45:55 <elliott> -- TODO FIXME: Parse this properly rather than this ridiculously lazy hack 06:45:55 <elliott> data MapData = MapData !ByteString deriving (Eq, Show) 06:45:55 <elliott> instance Serialize MapData where 06:45:55 <elliott> get = MapData <$> getLengthPrefixedByteString 06:45:55 <elliott> put (MapData s) = putLengthPrefixedByteString s 06:45:58 <elliott> fizzie: Behold my map data parser. 06:46:06 <CakeProphet> itidus21: -sigh- 06:46:10 <itidus21> layers 06:46:20 <itidus21> human readable layer translated into machine code 06:47:58 <itidus21> therefore, an assembly language programmer could perform the same computations as a haskell programmer.. but he is unlikely to because of the obvious reasons which led to haskell language existing 06:48:50 <CakeProphet> itidus21: yes Haskell is compiled. 06:48:56 <CakeProphet> generally. 06:49:03 <CakeProphet> GHC compiles it. 06:49:06 <itidus21> interpreters still ultimately are machine code 06:49:12 <CakeProphet> though Hugs for example interprets it. 06:49:45 <elliott> SHandshake (LoggedIn "\1536\NUL\NUL\NUL\16384\NUL\EOT\NUL\NUL\288\8086\768\2048\42752\13568\42752\13824\42752\13312\42752\13571\DC4\167cWelcome, ehird\167c! \768\10496\42752\26112\21504\30976\28672\25856\8192\42752\25344\12032\26624\25856\27648\28672\42752\26112\8192\26112\28416\29184\8192\24832\8192\27648\26880\29440\29696\8192\28416\26112\8192\25344\28416\27904\27904\24832\28160\25600\29440\11776\8195\&0Visit nerd.nu for information on other se 06:49:45 <elliott> rvers. \768\5888\42752\14080\22784\28416\29952\8192\26624\24832\30208\25856\8192\28160\28416\8192\28160\25856\30464\8192\27904\24832\26880\27648\11800\NUL<\13055\65519\57600\EOT\33023\65515\38645\DC1\NUL\DLE\65407\7168\NUL\15360\54781\36096\CAN\NULM\23807\65520\63232\b\NUL\ACK\34376\NUL\DEL\7168\NUL\19712\253\36096\CAN\NULX\23807\65522\11776\a\63488\EOT\48513\NUL\DEL\7168\NUL\22528\1799\49662\35864\NULg\23807\65524\26112\a\57344\STX\3613\NUL\DEL\ 06:49:46 <elliott> 7168\NUL\26368\253\36096\CAN\NULe\13567\65525\38400\b\255\65529\16546\NUL\DEL\7168\NUL\25858\3325\3 06:49:48 <elliott> fizzie: 'Hokay, that is definitely not right. 06:50:16 <CakeProphet> itidus21: you can program right? these aren't new ideas to you are they? 06:50:29 <elliott> elliott@katia:~/Code/mchost$ mkfifo fifo; nc p.nerd.nu 25565 <fifo | tee serverlogtwo | nc -l 9999 >fifo 06:50:32 <elliott> fizzie: Does that look right to you? :p 06:51:26 <itidus21> well, driving a car (something i can't do).. all you have to physically do is turn a wheel, change gears, and press pedals, and i suppose percieving the universe too while driving.. ie being concious 06:51:31 <itidus21> focusing on the road 06:52:06 <elliott> ok 06:52:26 <itidus21> however... haskell coders are better at driving the PC in some computations than asm coders 06:52:33 <CakeProphet> no. 06:52:36 <elliott> ok 06:52:52 <SgeoN1> I go to install Chromium. I decide to view the info for Dooble. I see reviews that are clearly for Chromium. 06:52:53 <CakeProphet> language and programming skill are independent of each other. 06:53:15 <elliott> CakeProphet: Not entirely. 06:55:09 <elliott> Hmph, what _is_ it with handshakes these days? 06:55:21 <CakeProphet> elliott: black people added all sorts of crazy shit is what happened. 06:55:26 <elliott> I guess my handshake thing is broken 06:55:46 <elliott> str <- getTextUTF16be 06:55:46 <elliott> case str of 06:55:46 <elliott> "-" -> return NoAuthentication 06:55:46 <elliott> "+" -> return Authenticate 06:55:46 <elliott> _ -> return (LoggedIn str) 06:55:48 <elliott> looks ok to me :( 06:56:06 <CakeProphet> would be nice to have some kind of case-bind 06:56:22 <itidus21> well should i consider a lambda expression as an infinite tree? 06:56:27 <CakeProphet> no 06:56:37 <CakeProphet> a finite tree. 06:57:02 <itidus21> but to use the tree you keep growing it? 06:57:32 <CakeProphet> no you would expand and reduce it as necessary. 06:58:07 <CakeProphet> well... I suppose it /could/ be a lazily evaluated tree... 06:58:08 <itidus21> well, an expression is surely of no use on its own 06:58:17 <CakeProphet> itidus21: here read this: http://mitpress.mit.edu/sicp/full-text/book/book.html 06:58:51 <itidus21> second person to refer me to that book. it must be good :D 06:58:53 <elliott> i think sicp might be at a slightly higher level than itidus21 is at. 06:59:18 <itidus21> tidus was one day complaining that no book walks you through completely creating a compiler 06:59:25 <itidus21> in another channel 06:59:33 <itidus21> and 2 books were mentioned 06:59:41 <CakeProphet> that book does I believe. 06:59:46 <itidus21> oh wait.. thats a lambda on the front 07:00:00 <itidus21> with a sun around it 07:00:15 <CakeProphet> yes programming is wizardry not alchemy. 07:01:19 <itidus21> i'll yield on my alchemy comment just to play fair 07:01:32 <itidus21> ^s/fair/nice 07:02:24 <CakeProphet> elliott: I think SICP starts off simply enough to allow itidus21 to catch on. 07:02:38 <CakeProphet> and then it gradually builds on previous concepts. 07:03:06 <fizzie> elliott: That "Welcome, ehird" thing in your SHandshake is part of the server-to-client chattery; it shouldn't be in your 'str'. 07:03:30 <elliott> fizzie: Yes, but more importantly, it shouldn't start with \1536. 07:03:35 <elliott> It should be -, +, or a hash. Probably -. 07:03:41 <elliott> So I am ``not knowing of what is happening''. 07:05:10 <CakeProphet> ``'' 07:05:13 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `'': not found 07:05:31 <fizzie> What's your getTextUTF16be like? (Also altenratively: hexdump -C serverlogtwo | head -n 20 or so.) 07:05:35 <itidus21> CakeProphet: i have this concept in the backlog of programming where errors are acceptable 07:05:38 <fizzie> ALTEN RATIVE. 07:05:47 <itidus21> sorry rewording now to make more sense 07:05:48 -!- ive has joined. 07:05:48 <elliott> fizzie: 07:05:49 <elliott> getTextUTF16be :: Get Text 07:05:49 <elliott> getTextUTF16be = do 07:05:49 <elliott> len <- SE.get :: Get Word16 07:05:49 <elliott> TE.decodeUtf16BEWith TEE.ignore <$> SE.getBytes (fromIntegral len * 2) 07:06:00 <CakeProphet> itidus21: can you please what that sentence even means. 07:06:03 <elliott> (That TEE.ignore thing just replaces erroneous UTF with the empty string.) 07:06:14 <itidus21> CakeProphet: i have this concept on the drawing board, of making a programming system where errors are acceptable 07:06:20 <elliott> 00000000 02 00 10 00 39 00 35 00 34 00 34 00 61 00 32 00 |....9.5.4.4.a.2.| 07:06:20 <elliott> 00000010 39 00 39 00 65 00 36 00 31 00 35 00 66 00 31 00 |9.9.e.6.1.5.f.1.| 07:06:20 <elliott> 00000020 36 00 38 01 00 0e b8 b0 00 00 00 00 00 00 00 84 |6.8.............| 07:06:20 <elliott> 00000030 5f ed 00 00 00 00 00 02 80 3c 06 00 00 00 00 00 |_........<......| 07:06:20 <elliott> 00000040 00 00 40 00 00 00 00 04 00 00 00 00 01 20 1b 87 |..@.......... ..| 07:06:20 <elliott> 00000050 03 00 08 00 a7 00 35 00 a7 00 36 00 a7 00 34 00 |......5...6...4.| 07:06:22 <elliott> 00000060 a7 00 35 03 00 14 00 a7 00 63 00 57 00 65 00 6c |..5......c.W.e.l| 07:06:24 <elliott> 00000070 00 63 00 6f 00 6d 00 65 00 2c 00 20 00 65 00 68 |.c.o.m.e.,. .e.h| 07:06:26 <elliott> 00000080 00 69 00 72 00 64 00 a7 00 63 00 21 00 20 03 00 |.i.r.d...c.!. ..| 07:06:28 <elliott> 00000090 29 00 a7 00 66 00 54 00 79 00 70 00 65 00 20 00 |)...f.T.y.p.e. .| 07:06:50 <elliott> fizzie: It does seem like it's started logging "too late". But all I did was: ... well, I quoted the command earlier; can't find it now. 07:06:55 <CakeProphet> itidus21: what kinds of errors. 07:07:04 <fizzie> elliott: Well, the handshake looks fine: 02, 0x0010 = 16 characters, then "00 39 00 35 00 34 00 34 00 61 00 32 ...". 07:07:23 <itidus21> CakeProphet: the idea is simple. program in problem domains where errors don't matter 07:07:23 <elliott> fizzie: But it should start with"+". 07:07:25 <elliott> "This is the first packet sent when the client connects and is used for Authentication. If the hash is '-', then the client continues without doing name authentication. If the hash is a '+', the client sends the server password in the login request. (Note that this hash, as of the latest version of the Beta server, is a randomly generated long in hexadecimal form, and has nothing to do with the client or the server he is connected to)" 07:07:36 <CakeProphet> itidus21: such. as. 07:07:38 <elliott> itidus21: any such domain is trivially implemented by this program: main = return () 07:07:46 <elliott> it does nothing; if this is an error, it does not matter, because errors are acceptable 07:07:51 <elliott> s/with"+"/with "+"/ 07:07:55 <fizzie> elliott: No, it should be a hash. '+' is only used for password-without-minecraft.net-name-verification. 07:07:57 <itidus21> humm 07:08:08 <fizzie> "A unique, per-connection hash, or '-', or '+'" 07:08:32 <itidus21> rendering a frame in a video game doesn't really matter if it is wrong.. 07:08:41 <CakeProphet> uh.. 07:09:01 <itidus21> player might get a bit emotionally upset.. or may experience upset eyes from trying to watch poorly rendered frames 07:09:18 <CakeProphet> poorly rendered is not wrongly rendered though 07:09:20 <itidus21> but overall, it doesn't matter if it's right 07:09:32 <CakeProphet> I can't play a game if it renders a black screen. 07:09:49 <CakeProphet> or crashes in the process of rendering. 07:10:24 <itidus21> a few aspects are.. errors should be restricted.. like it shouldn't bring down the whole system 07:10:40 <CakeProphet> are you familiar with exception handling? 07:10:45 <itidus21> and shouldn't be anything which needs security 07:11:12 <itidus21> well.. some things don't really need to be handled 07:11:20 <itidus21> its more or less ok ifthey're wrong 07:11:30 <elliott> <fizzie> elliott: No, it should be a hash. '+' is only used for password-without-minecraft.net-name-verification. 07:11:33 <elliott> fizzie: That exists? 07:11:37 <elliott> Is that new? 07:12:12 -!- ive has quit (Quit: leaving). 07:12:19 <itidus21> CakeProphet: the model for my idea is a person playing music.. its basically ok if they make a mistake, depending on the audience 07:12:20 <fizzie> I believe it's the old thing, but I'm no expert. In any case, the hash is supposed to be either only "-", only "+" or that random hex-string you've got there. 07:12:33 <CakeProphet> itidus21: 07:12:54 <zzo38> Can you do comma categories in Haskell? 07:12:58 <fizzie> elliott: Not that I can immediately explain where that "\1536\NUL\NUL\NUL\16384..." comes from. In bytes it's that "06 00 00 00 00 00 00 00 40 00 ..." thing which starts a bit after halfway of the fourth line of your hexdump. 07:13:18 <elliott> Hmm. Why on _earth_ is the handshake being read wrong? 07:13:19 * elliott tweaks the getter 07:13:52 <itidus21> CakeProphet: so as if to say.. the next note played can be ok even if the last note was not ok... and the next frame rendered can be ok even if the last one wasn't 07:14:36 <CakeProphet> that's just an emergent property of a specific system, or proper error handling. not something you can design to work always for any program ever, as it would work in a programming language. 07:14:44 <fizzie> I would understand if it started with the correct hash (that'd be just broken length field), but starting the string 54 bytes too late is rather strange. 07:15:28 <fizzie> Sorry, 55. I think. 07:15:35 <elliott> get = LoggedIn `fmap`getTextUTF16be 07:15:37 <elliott> does not help at all. 07:15:42 <CakeProphet> itidus21: basically you want erroneous operations to return some kind of null or identity/zero value. In that case you want Perl. 07:15:50 * elliott tries making the field a string field. 07:16:20 <elliott> That doesn't help either. :/ 07:16:34 <itidus21> my ideas are almost always really bad. im cool with knowing this. 07:16:38 <elliott> fizzie: Are you _sure_ that string looks right? :p 07:16:45 <fizzie> Well, it looks right to me. 07:16:52 <elliott> My client dump strings all parse perfectly: 07:17:03 <elliott> 00000000 02 00 05 00 65 00 68 00 69 00 72 00 64 01 00 00 |....e.h.i.r.d...| 07:17:03 <elliott> 00000010 00 11 00 05 00 65 00 68 00 69 00 72 00 64 00 00 |.....e.h.i.r.d..| 07:17:04 <elliott> 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d 40 |...............@| 07:17:04 <elliott> 00000030 72 b6 00 00 00 00 00 40 44 80 00 00 00 00 00 40 |r......@D......@| 07:17:04 <elliott> 00000040 45 4f 5c 29 00 00 00 40 44 ec 00 00 00 00 00 43 |EO\)...@D......C| 07:17:07 <elliott> And that starts with a handshake too. 07:17:55 <fizzie> I mean, "02 00 10 00 39 00 35 00 34 00 34 00 61 00 32 00 39 00 39 00 65 00 36 00 31 00 35 00 66 00 31 00 36 00 38" -- you're supposed to read the byte 02, go all "ah, a handshake", then read a bigendian Word16 0x0010 = 16, then read 32 bytes ("00 39 .. 00 38") and decode those as UTF-16. 07:18:11 <CakeProphet> I need some kind of lock that prevents me from using irc for a while that also isn't /quit 07:18:32 <fizzie> The handshake in that, "02 00 05 00 65 00 68 00 69 00 72 00 64", is very similar. 07:18:43 <fizzie> (And after both there's a login packet starting with 01.) 07:18:45 <CakeProphet> hmmm... 07:18:55 <elliott> , packet 0x02 "SHandshake" 07:18:55 <elliott> [ PF.handshake "handshake" -- FIXME: handshake is a rubbish name 07:18:55 <elliott> ] 07:18:56 <elliott> :/ 07:19:04 -!- CakeProphet has left ("fungot"). 07:19:07 -!- CakeProphet has joined. 07:19:22 <elliott> fizzie: I guess I'll debugtrace the byte count it thinks it gets. 07:19:23 <zzo38> CakeProphet: What exactly do you intend to make? 07:19:37 <CakeProphet> I was seeing if fungot read part lines. 07:19:55 <zzo38> No, I think it read only PRIVMSG lines as far as I can tell. 07:20:00 <fizzie> ^source 07:20:00 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 07:20:13 <CakeProphet> fizzie: I'm not even going to begin to read that. :P 07:20:15 <fizzie> Check on line 105. 07:20:28 <fizzie> 15G0"GSMVIRP"Q| and so on. 07:20:40 <elliott> fizzie: Okay, _what_. 07:20:43 <fizzie> If not, it just goes back to read the next message. 07:20:48 <elliott> 16 07:20:48 <elliott> 0 07:20:48 <elliott> 32828 07:20:48 <elliott> SHandshake (LoggedIn "9544a299e615f168") 07:20:48 <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0 07:20:49 <elliott> SHandshake (LoggedIn "\1536\NUL\NUL\NUL\16384\NUL\EOT\NUL\NUL\288\7047\768\2048\42752\13568\42752\13824\42752\13312\42752\13571\DC4\167cWelcome, ehird\167c! \768\10496\42752\26112\21504\30976\28672\25856\8192\42752\25344\12032\26624\25856\27648\28672\42752\26112\8192\26112\28416\29184\8192\24832\8192\27648\26880\29440\29696\8192\28416\26112\8192\25344\28416\27904\27904\24832\28160\25600\29440\11776\8195\&0Visit nerd.nu for information on other se 07:20:54 <elliott> rvers. \768\5888\42752\14080\22784\28416\29952\8192\26624\24832\30208\25856\8192\28160\28416\8192\28160\25856\30464\8192\27904\24832\26880\27648\11800\SO\16373\14079\65530\46592\ENQ\768\r\43526\NUL\DEL\7168\3647\62975\60155\9984\34328\SO\16374\13311\65532\52736\ETX\9472\f\46950\NUL\DEL\7168\3647\62976\28415\54272\6424\SO\16371\14079\65529\NUL\1152\NUL\3766\17664\NUL\32540\SO\16371\65383\64909\65521\6144\3766\9522\65535\64629\NUL\736\NUL\4517\5324 07:20:59 <elliott> 8\4352\ 07:21:01 <elliott> I changed nothing. Why did the parse change? 07:21:03 <elliott> What is going _on_? 07:21:21 * elliott does a clean rebuild out of superstition. 07:21:31 -!- CakeProphet has quit (Quit: aiwriavniuqenehweer). 07:21:34 <elliott> OK, now it reliably parses the above. 07:21:40 <elliott> SHandshake (LoggedIn "9544a299e615f168") 07:21:40 <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0 07:21:40 <elliott> SHandshake (LoggedIn "\1536\NUL\NUL\NUL\16384\NUL\EOT\NUL\NUL\288\7047\768\2048\42752\13568\42752\13824\42752\13312\42752\13571\DC4\167cWelcome, ehird\167c! \768\10496\42752\26112\21504\30976\28672\25856\8192\42752\25344\12032\26624\25856\27648\28672\42752\26112\8192\26112\28416\29184\8192\24832\8192\27648\26880\29440\29696\8192\28416\26112\8192\25344\28416\27904\27904\24832\28160\25600\29440\11776\8195\&0Visit nerd.nu for information on other se 07:21:44 <elliott> rvers. \768\5888\42752\14080\22784\28416\29952\8192\26624\24832\30208\25856\8192\28160\28416\8192\28160\25856\30464\8192\27904\24832\26880\27648\11800\SO\16373\14079\65530\46592\ENQ\768\r\43526\NUL\DEL\7168\3647\62975\60155\9984\34328\SO\16374\13311\65532\52736\ETX\9472\f\46950\NUL\DEL\716 07:21:48 <elliott> So that's a slightly less ridiculous parsing. 07:21:53 <fizzie> At least SHandshake, SLogin, broken SHandshake makes more sense, since that explains why it starts "\1536\NUL\NUL\NUL\16384..." 07:22:10 <elliott> Ye-ees, but it still doesn't explain why the broken. 07:23:23 <elliott> <Hmph. 07:23:26 <elliott> s/<// 07:25:00 <fizzie> The login packet is: 01, 00 0e b8 b0 (played id), 00 00 (unused), 00 00 00 00 00 84 5f ed (seed), 00 00 00 00 (server mode: survival), 00 (dim: normal), 02 (unknown byte), 80 (world height: 128), 3c (max players: 60) 07:25:11 <elliott> That seems right. 07:25:24 <fizzie> For some reason, your thing starts to read a new packet from that 02 byte on. 07:25:32 <elliott> Oh. What? 07:25:50 <elliott> , packet 0x01 "SLogin" 07:25:50 <elliott> [ PF.entityID "entity" 07:25:50 <elliott> , PF.string "unused" 07:25:50 <elliott> , PF.long "mapSeed" -- as above 07:25:50 <elliott> , PF.bool "isCreative" -- as above 07:25:51 <elliott> , PF.worldID "world" 07:25:53 <elliott> , PF.byte "unknown" 07:25:55 <elliott> , PF.ubyte "worldHeight" 07:25:57 <elliott> , PF.ubyte "maxPlayers" 07:25:59 <elliott> ] 07:26:01 <elliott> It... shouldn't be doing anything tricksy there. 07:26:16 <elliott> Uh, wait. 07:26:19 <elliott> How come the world height isn't in 07:26:21 <elliott> <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0 07:26:22 <elliott> ? 07:26:48 <fizzie> Weird. 07:27:11 <fizzie> I suppose it parses your client-side login just fine, and that has the same fields? 07:27:24 <fizzie> Well, same-ish. 07:27:28 <fizzie> Same data types, anyhow. 07:27:47 <elliott> CHandshake "ehird" 07:27:48 <elliott> CLogin 17 "ehird" 0 0 0 0 0 0 07:27:52 <elliott> I'm... not so sure. 07:27:58 <elliott> Unless they're meant to be 0. 07:28:06 <fizzie> They are, yes. 07:28:37 -!- CakeProphet has joined. 07:28:38 -!- CakeProphet has quit (Changing host). 07:28:38 -!- CakeProphet has joined. 07:28:41 <elliott> Right. 07:28:53 <elliott> So something is rotten in the state of... uh, I can't bring myself to say Minecraftia. 07:29:30 <elliott> newtype WorldID = WorldID Int8 deriving (Eq, Show, Serialize) 07:29:30 <elliott> Well, that's right. 07:29:47 <fizzie> Lunchtime, have fun with it. :p 07:29:51 -!- sebbu2 has joined. 07:29:51 -!- sebbu2 has quit (Changing host). 07:29:51 -!- sebbu2 has joined. 07:30:23 -!- itidus21 has left ("Leaving"). 07:30:40 <elliott> I shall never: forgive fizzie. 07:30:42 <fizzie> Anyhow, based on those bytes I think you should end up with "SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 128 60". 07:31:21 <elliott> Um. 07:31:25 <elliott> fizzie: "02 (unknown byte)" 07:31:28 <elliott> Did that become a 0? 07:31:34 <fizzie> Oh. Whoops. 07:31:36 <fizzie> Right. 07:31:46 <fizzie> Well, 2, 128, 60 then. 07:31:50 <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 2 128 60 07:31:52 <elliott> Hmmmmmmm. 07:32:03 <fizzie> IT KEEPS HAPPENING 07:32:10 <elliott> No that didn't happen. 07:32:13 <elliott> That's just what I'm aiming for. 07:32:15 <fizzie> Ah. Aw. 07:32:22 <fizzie> I was hoping you had some nondeterminism there. 07:32:29 <elliott> That would be nice. 07:32:35 <elliott> It's the only thing that could improve this, uh, experience. 07:32:44 -!- sebbu3 has quit (Ping timeout: 260 seconds). 07:32:49 <fizzie> Anyway, the seed is right; 0x0000000000845fed == 8675309. 07:33:24 <fizzie> It's as if it has stopped reading after the WorldID and padded the rest with zeros. 07:33:36 <elliott> Yes, but... that shouldn't be happening. 07:33:40 <elliott> That's not... a thing that happens. 07:33:43 <fizzie> (And then continued from after the WorldID as if it was a new packet from there.) 07:33:47 <elliott> There is no code to suddenly stop reading and keep 0ing. 07:33:53 <elliott> It is a feature I neglected to write. 07:34:03 <fizzie> I shall lurch anyhow. -> 07:34:04 -!- Vorpal has joined. 07:34:28 <olsner> elliott: are you sure you read all the bytes from the socket? :) 07:34:43 <Vorpal> wtf, windows 8 looks like a disaster from the screenshots. 07:35:12 <Vorpal> it /seems/ like it is basically running something like android or iOS on a desktop... Which is stupid. 07:35:31 <olsner> maybe that's not a relevant failure in the haskell socket libs, but in C it's easy to accidentally only fill in part of a buffer 07:35:35 <elliott> olsner: It's not socket. 07:35:38 <elliott> I'm reading from a dumped file. 07:35:43 <elliott> (reverse-i-search)`| tee': mkfifo fifo; nc p.nerd.nu 25565 <fifo | tee serverlogtwo | nc -l 9999 >fifo 07:35:48 <elliott> Please feel free to point out errors. 07:36:19 <Vorpal> elliott, eh, are you trying to reply minecraft server data? 07:36:24 <elliott> I've successfully dumped a client log with: 07:36:25 <Vorpal> replay* 07:36:26 <elliott> (reverse-i-search)`anotherlog': mkfifo fifo; nc p.nerd.nu 25565 <fifo | nc -l 9999 | tee fifo >anotherlog 07:36:29 <elliott> so I think this should be fine. 07:36:30 <elliott> Vorpal: No. 07:36:35 <Vorpal> ah okay 07:36:49 <Vorpal> elliott, I would just use tcpdump to do it. Seems easier 07:36:57 <olsner> Vorpal: yes - the UI is inspired by, if not based on, windows phone 7 07:37:11 <elliott> Vorpal: Show me the tcpdump line. 07:37:19 <elliott> I know how to use nc, pipes, and tee; I don't know how to use tcpdump. 07:37:22 <Vorpal> elliott, I would launch wireshark and use that for it 07:37:41 <Vorpal> since wireshark uses tcpdump as a backend iirc, or something compatible at least 07:37:53 <Vorpal> olsner, yeah, that model doesn't really fit a desktop with a mouse though 07:38:01 <elliott> Vorpal: How is this simpler than tee? 07:38:03 <Vorpal> olsner, you don't need huge buttons unless you have a touchscreen. 07:38:13 <Vorpal> elliott, not simpler, but it would definitely work 07:38:19 <elliott> Vorpal: This does work. 07:38:30 <Vorpal> elliott, oh okay, sounded like it didn't in one direction 07:38:33 <elliott> $ dist/build/mchost/mchost client < anotherlog | head 07:38:33 <elliott> CHandshake "ehird" 07:38:33 <elliott> CLogin 17 "ehird" 0 0 0 0 0 0 07:38:33 <elliott> CPlayerPositionLook 299.375 41.0 42.62000000476837 41.84375 351.4492 13.349988 False 07:38:33 <elliott> CPlayerPositionLook 299.375 41.0 42.62000000476837 41.84375 351.4492 13.349988 False 07:38:34 <elliott> CPlayerPosition 299.375 40.92159999847412 42.54160000324249 41.84375 False 07:38:36 <elliott> CPlayerPosition 299.375 40.76636799395752 42.386367998725895 41.84375 False 07:38:38 <elliott> CPlayerPosition 299.375 40.53584062504456 42.15584062981293 41.84375 False 07:38:42 <elliott> CPlayerPosition 299.375 40.231523797587016 41.85152380235539 41.84375 False 07:38:44 <elliott> CPlayerPosition 299.375 39.85489329934836 41.47489330411673 41.84375 False 07:38:46 <elliott> CPlayerPosition 299.375 39.40739540236494 41.02739540713331 41.84375 False 07:38:48 <elliott> What is broken is my code. 07:38:52 <elliott> But only for certain server packets. 07:38:54 <elliott> If I knew it'd be fixed. 07:39:03 <Vorpal> right 07:40:10 <Vorpal> olsner, oh and the modal program thingy that windows 8 seems to have, that is even more wtf for a desktop or laptop. 07:40:25 <elliott> Vorpal: you're really late for the windows 8 discussion. 07:40:31 <Vorpal> elliott, oh? 07:40:41 <elliott> come back like two weeks ago 07:40:47 <Vorpal> elliott, I have been busy, only just now caught up with things. 07:41:11 <Vorpal> elliott, anyway, what is your opinion on it? 07:41:22 <elliott> `log windows 8 07:41:40 <elliott> `log windows 8 07:41:43 <elliott> HackEgo: Oi. 07:41:43 <HackEgo> 2011-03-30.txt:17:34:50: <HackEgo> 339) * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) <nyuszika7h> Gregor: Windows 8 Beta? o_O <Gregor> A small benefit of my brief time as an intern at MS. 07:41:44 <HackEgo> 2011-09-19.txt:07:40:25: <elliott> Vorpal: you're really late for the windows 8 discussion. 07:41:51 <elliott> That's. 07:41:53 <elliott> Not helpful. 07:41:55 <elliott> `log windows 8 07:41:59 <HackEgo> 2010-11-18.txt:19:48:21: <elliott> Gregor: Only 2 gigs of RAM for Windows 8? 07:42:02 <elliott> `log windows 8 07:42:05 <HackEgo> 2010-06-14.txt:20:46:29: <fizzie> It will be somewhat interesting to see what Windows 8 will be "in reality". 07:42:08 <elliott> `log windows 8 07:42:08 <elliott> `log windows 8 07:42:09 <elliott> `log windows 8 07:42:09 <elliott> `log windows 8 07:42:09 <elliott> `log windows 8 07:42:14 <HackEgo> 2011-09-19.txt:07:40:25: <elliott> Vorpal: you're really late for the windows 8 discussion. 07:42:14 <HackEgo> 2011-03-30.txt:17:34:47: <Gregor> `addquote * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) <nyuszika7h> Gregor: Windows 8 Beta? o_O <Gregor> A small benefit of my brief time as an intern at MS. 07:42:15 <HackEgo> 2011-09-19.txt:07:41:40: <elliott> `log windows 8 07:42:16 <HackEgo> 2011-09-13.txt:19:31:55: <ais523> hmm, according to discussion in Slashdot, Windows 8 has no Start menu, even if you put it into old-fashioned desktop mode 07:42:16 <HackEgo> 2011-03-13.txt:13:33:46: <elliott> Phantom_Hoover: i just want Windows 8 Cloud 07:42:22 <elliott> Oh for chrissakes. 07:42:55 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 07:43:23 -!- Vorpal has joined. 07:43:28 <Vorpal> fuck this connection 07:43:42 <Vorpal> last line I saw was <Vorpal> elliott, anyway, what is your opinion on it? 07:43:55 <elliott> http://codu.org/logs/_esoteric/ 07:43:59 <Vorpal> right 07:44:26 <Vorpal> 07:42:14: <HackEgo> 2011-03-30.txt:17:34:47: <Gregor> `addquote * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) <nyuszika7h> Gregor: Windows 8 Beta? o_O <Gregor> A small benefit of my brief time as an intern at MS. <-- IRC#? 07:44:29 <Vorpal> wtf is IRC# 07:45:03 <elliott> a smell benefit of Gregor's brief time as an intern at MS 07:45:05 <elliott> ... 07:45:05 <elliott> small 07:45:08 <elliott> Gregor has no smell benefits. 07:45:39 <monqy> ms comic chat revival? 07:45:48 -!- Vorpal has quit (Read error: Connection reset by peer). 07:46:27 <elliott> the joke is that vorpal is dumb 07:47:22 <monqy> rip 07:49:38 <zzo38> It seems that the Q monad for Template Haskell is really a wrapper for a class. I didn't know such a thing exists. 07:49:46 <elliott> existential 07:50:02 <olsner> Sweden is supposed to have good internet, I wonder how vorpal failed to get it and got bad internet instead 07:50:55 <elliott> he lives in a rural nowhere motto "for dumb vorpals" 07:51:05 <olsner> well, maybe he just forgot to scroll down and thought he got disconnected, then restarted IRC because of it 07:51:39 <monqy> but forgot the restart part 07:51:51 <monqy> or was that the other one 07:52:24 <olsner> not important 07:53:25 <zzo38> It is the wrapper for the Quasi class. So is there some hidden Quasi instance for working with Haskell programs? 07:53:26 <olsner> also, smell benefits :D 07:55:20 <elliott> zzo38: it is probably instantiated to IO in practice 07:55:24 <elliott> or at least that is my hunch 07:55:52 <zzo38> IO cannot do reify or some of its other commands 07:55:58 <elliott> hmm 07:56:02 <elliott> probably some horrific internal ghc thing then :) 07:57:37 <zzo38> Is this correct and can there be any implementation of the ones I did not implement? instance Quasi (State QuasiState) where { qNewName n = modify (\x -> x {qs_nextName = qs_nextName x + 1}) >> fmap (mkNameU n) (fmap qs_nextName get); qReport b s = modify (\x -> x {qs_report = qs_report x ++ [(b, s)]}); 07:57:56 <zzo38> qRecover _ = error "Cannot recover in QuasiState"; qReify _ = error "Cannot reify in QuasiState"; qClassInstances _ = error "Cannot get class instances in QuasiState"; qLocation = fmap qs_location get; qRunIO _ = error "Cannot run I/O in QuasiState"; }; 07:58:40 <monqy> uggh how is Q not an instance of MonadIO 07:59:43 <zzo38> monqy: I don't know. It does have a runIO command, is that sufficient to make MonadIO? 08:00:02 <monqy> yes 08:00:24 <monqy> class Monad m => MonadIO m where liftIO :: IO a -> m a 08:00:32 <monqy> runIO :: IO a -> Q a 08:01:17 <zzo38> So, liftIO = runIO is that correct? In which library/module is MonadIO? 08:02:00 <monqy> Control.Monad.IO.Class looks like 08:02:05 <zzo38> But note that runIO is not always defined when runQ is used; sometimes it will be error. 08:02:53 <zzo38> Such as, I defined Maybe and (State QuasiState) as instances of Quasi, neither of which can perform I/O. 08:03:02 <monqy> your instances are incomplete 08:03:22 <zzo38> I know. 08:03:24 <monqy> and I don't see how this has any bearing on making a MonadIO instance 08:03:31 <zzo38> But even the IO instance of Quasi is incomplete. 08:03:38 <monqy> what 08:03:42 <monqy> do you mean by that 08:03:48 <zzo38> monqy: But, yes, I do suppose it can in fact be made a MonadIO instance anyways. 08:04:05 <monqy> the only case in which it wouldn't work is when it wouldn't work anyway 08:04:06 <zzo38> The IO instance of Quasi cannot perform everything either. 08:04:08 <monqy> because of incomplete 08:04:20 <monqy> what do you mean by "IO instance" 08:04:38 <zzo38> I mean the instance Quasi IO 08:04:57 <monqy> oh 08:05:44 <monqy> so I see 08:06:37 <zzo38> What uses does the MonadIO class currently have? 08:08:04 <zzo38> OK, I made Q to be an instance of MonadIO in my ExtraTH program now. 08:08:07 <monqy> instances of MonadIO can perform with liftIO, so you can make functions such that anything which can perform IO can run IO actions. also I think there are instances such that it liftIO will work deep into monad stacks? 08:08:39 <monqy> same deal with MonadWhatever classes 08:13:36 <zzo38> With something like (\x -> x {qs_nextName = qs_nextName x + 1}) is there something that allows you do specify only qs_nextName once and (+ 1) and it will act like same thing? 08:18:43 <monqy> lenses 08:19:19 <monqy> data-lens and friends 08:19:32 <zzo38> Yes I know about lenses, but is there something for record syntax 08:19:54 <monqy> not that I know of 08:20:03 <monqy> why do you need record syntax? 08:20:18 <zzo38> I will try to write one with Template Haskell to see if it can do so. 08:25:49 -!- elliott has quit (Ping timeout: 260 seconds). 08:37:03 -!- ais523 has joined. 08:39:34 -!- SgeoN1 has quit (Quit: Bye). 08:40:07 -!- monqy has quit (Quit: hello). 08:44:24 <zzo38> recUpd :: Name -> Q Exp; -- :: (f -> f) -> r -> r; 08:45:17 <zzo38> recUpd n = do { f <- newVar; r <- newVar; let { a = AppE (VarE f) $ AppE (VarE n) (VarE r) } in lamE [varP f, varP r] $ recUpdE (varE r) [return (n, a)]; }; 08:46:05 -!- ais523 has quit (Read error: Connection reset by peer). 08:46:42 -!- ais523 has joined. 08:53:06 <zzo38> I made improvement to Metamind and Illithid Savant class, of D&D game, beyond what I had before. 08:54:27 -!- copumpkin has quit (Ping timeout: 252 seconds). 08:54:51 -!- copumpkin has joined. 08:55:08 <zzo38> I looked at Wikipedia article about comma category. Now I know what commutative diagrams do (by looking at the other article too). 09:17:45 -!- augur has quit (Remote host closed the connection). 09:43:32 -!- augur has joined. 10:24:30 -!- zzo38 has quit (Remote host closed the connection). 10:34:09 -!- sebbu2 has quit (Ping timeout: 260 seconds). 10:35:48 -!- sebbu2 has joined. 10:35:48 -!- sebbu2 has quit (Changing host). 10:35:48 -!- sebbu2 has joined. 10:39:56 <fizzie> Heh, a poll where the question says "choose two best options", and the list of options is a single-select radiobutton group. 10:46:24 <CakeProphet> haha clevur 10:59:51 -!- zanzarel has joined. 11:01:18 <cheater> linking to lenin, molotov and stalin from my article on opensource software 11:13:11 -!- hagb4rd has joined. 11:15:57 -!- Jafet has joined. 11:21:55 -!- ais523 has quit (Read error: Connection reset by peer). 11:24:49 -!- Patashu has joined. 11:25:07 -!- ais523 has joined. 11:27:47 -!- GreaseMonkey has quit (Quit: The Other Game). 11:28:00 -!- ais523_ has joined. 11:28:01 -!- ais523 has quit (Disconnected by services). 11:28:03 -!- ais523_ has changed nick to ais523. 11:28:41 <ais523> note to my University: it is not useful to change the configuration required to access my email, then send an email to my email address telling me what I need to change 11:29:06 <ais523> better would be to do it the other way round, and have both systems working in parallel for a couple of weeks 11:33:29 <Jafet> Probably a race condition somewhere 11:34:07 -!- variable has quit (*.net *.split). 11:36:08 <ais523> nah, I think they just expected people to actually use Outlook Web Access rather than IMAP 11:45:45 -!- sebbu2 has changed nick to sebbu. 11:50:14 -!- zanzarel has quit (Quit: Leaving). 11:56:03 -!- oerjan has joined. 12:01:47 <oerjan> <monqy> uggh how is Q not an instance of MonadIO 12:02:30 <oerjan> @tell monqy <monqy> uggh how is Q not an instance of MonadIO <-- it might be because ghc no longer includes by default the package where MonadIO is defined 12:02:30 <lambdabot> Consider it noted. 12:03:58 <oerjan> @hoogle liftIO 12:03:58 <lambdabot> Control.Monad.Trans liftIO :: MonadIO m => IO a -> m a 12:11:20 -!- boily has joined. 12:16:08 -!- hagb4rd has quit (Ping timeout: 260 seconds). 12:20:43 -!- NihilistDandy has quit (Quit: leaving). 12:20:56 -!- sllide has joined. 12:41:25 -!- copumpkin has quit (Ping timeout: 252 seconds). 12:41:49 -!- copumpkin has joined. 12:44:31 <oerjan> :t foldM 12:44:32 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a 12:45:25 <ais523> <http://www.catb.org/~esr/faqs/smart-questions.html> If you're sending e-mail from a Windows machine, turn off Microsoft's problematic “Smart Quotes” feature (From Tools > AutoCorrect Options, clear the smart quotes checkbox under AutoFormat As You Type.). This is so you'll avoid sprinkling garbage characters through your mail. 12:45:34 <ais523> there is something so beautiful about the misencoding there 12:45:54 <ais523> (there are misencoded quotes all over that document, but seeing them in that context is hilarious) 12:47:03 <oerjan> a classic 12:47:37 <ais523> that page also obnoxiously puts title= attributes on every paragraph with the section header 12:47:48 <ais523> meaning that it's kind-of hard to find anywhere safe to put the mouse 12:48:17 <fizzie> Well, the document itself does have <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> and the quotes are proper UTF-8; unfortunately the server headers seem to specify ISO-8859-1. 12:48:44 <Jafet> <?xml version="1.0" encoding="UTF-8"?> 12:48:58 <Jafet> Nothing like reassuring the parser that, yes, this is utf-8 12:48:58 <fizzie> Oh, it has that too. 12:49:13 <Jafet> Despite a deranged httpd's assertions to the contrary 12:50:11 <ais523> shouldn't the meta override the server headers? 12:50:24 <oerjan> ais523: IT WAS YOUR BROWSER ALL ALONG 12:50:50 <ais523> my browser normally obeys the normal rules for detecting encodings 12:51:50 <fizzie> "HTTP/1.1 recipients MUST respect the charset label provided by the sender; and those user agents that have a provision to "guess" a charset MUST use the charset from the content-type field if they support that charset, rather than the recipient's preference, when initially displaying a document. See section 3.7.1. " 12:54:40 <fizzie> As for overriding: "The http-equiv attribute can be used in place of the name attribute and has a special significance when documents are retrieved via the Hypertext Transfer Protocol (HTTP). HTTP servers may use the property name specified by the http-equiv attribute to create an [RFC822]-style header in the HTTP response." 12:55:36 <fizzie> So it's entirely the server's prerogative. 12:55:40 <Jafet> Love standards... so many... choice... 13:03:18 -!- hagb4rd has joined. 13:35:19 -!- DH____ has joined. 13:57:13 <CakeProphet> https://github.com/rfw/metafun/blob/master/metafun/list.hxx 14:00:49 <Patashu> What is that 14:01:00 <CakeProphet> :) 14:02:09 -!- variable has joined. 14:05:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:07:42 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:15:41 <oerjan> comment from reddit.com/r/physics: 'Given my experience with simulations I imagine the outcome would be something like: "The latest simulations suggest our universe is heading towards a segfault.."' 14:29:42 -!- copumpkin has joined. 14:32:41 -!- oerjan has quit (Quit: leaving). 14:39:20 -!- sebbu2 has joined. 14:39:20 -!- sebbu has quit (Ping timeout: 240 seconds). 14:39:31 -!- sebbu2 has quit (Changing host). 14:39:31 -!- sebbu2 has joined. 14:40:03 -!- sebbu2 has changed nick to sebbu. 15:19:16 -!- Ngevd has joined. 15:19:53 <Ngevd> Hello! 15:21:37 <ais523> hi 15:23:06 -!- MSleep has changed nick to MDude. 15:24:34 <Ngevd> ais523, I think there's some spam on the wiki 15:25:06 <ais523> could well be; I check every edit, but there's a delay for them to be loaded into my RSS feed reader 15:25:25 <Ngevd> I know, I admin the Mezzawiki 15:25:28 <ais523> right, indeed, deleted it 15:25:40 <Ngevd> Which has had very few edits recently... 15:30:30 <Ngevd> So, what's happening in THE WORLD OF ESOTERIC PROGRAMMING, then? 15:31:35 <ais523> less than probably should 15:41:33 <Ngevd> What ever happed to the Essies? 15:42:59 <ais523> people lost interest, I think 15:43:18 <Ngevd> Shame 15:46:45 -!- CakeProphet has quit (Ping timeout: 260 seconds). 15:48:18 -!- CakeProphet has joined. 15:48:18 -!- CakeProphet has quit (Changing host). 15:48:18 -!- CakeProphet has joined. 15:50:49 -!- azaq23 has joined. 15:52:03 -!- azaq23 has quit (Client Quit). 15:52:11 -!- azaq23 has joined. 16:13:30 <Gregor> Recipe for fun: Get a Zune HD foisted on you. Install Windows 7 in a VM so you can try it. Discover just how abysmally bad it is, put it in a box, forget about it for >1yr. Remove from box, boot VM for first time in a year, try to use it again. 16:13:41 <Gregor> <Microsoft> lol, you can't do SHIT. Hahaha 16:20:45 -!- FireFly has joined. 16:36:31 -!- ive has joined. 16:42:29 -!- Wamanuz2 has joined. 16:42:30 -!- Wamanuz has quit (Read error: Connection reset by peer). 16:58:33 -!- calamari has joined. 17:01:33 -!- ais523 has quit (Remote host closed the connection). 17:05:10 <CakeProphet> @hoogle (%%) 17:05:10 <lambdabot> No results found 17:14:30 -!- Ngevd has quit (Ping timeout: 252 seconds). 17:29:27 -!- pean has joined. 17:32:36 -!- pean has left. 17:37:01 -!- sebbu2 has joined. 17:37:01 -!- sebbu2 has quit (Changing host). 17:37:01 -!- sebbu2 has joined. 17:37:36 -!- sebbu has quit (Ping timeout: 252 seconds). 17:46:52 -!- ais523 has joined. 17:52:05 -!- Ngevd has joined. 17:53:59 -!- calamari has quit (Quit: Leaving). 17:56:20 -!- impomatic has joined. 17:56:23 -!- impomatic has left. 18:10:37 -!- Ngevd has quit (Ping timeout: 259 seconds). 18:25:09 <CakeProphet> > fix (2:) 18:25:09 <lambdabot> [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,... 18:25:50 <CakeProphet> > fix error 18:25:50 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E... 18:31:42 <CakeProphet> :t erorr 18:31:43 <lambdabot> Not in scope: `erorr' 18:31:44 <CakeProphet> :t error 18:31:45 <lambdabot> forall a. [Char] -> a 18:31:53 <CakeProphet> :t fix 18:31:54 <lambdabot> forall a. (a -> a) -> a 18:32:05 <CakeProphet> I'm actually a little mystified as to how that works.. 18:32:56 <CakeProphet> oh wait, nevermind, I'm not. 18:34:58 -!- augur has quit (Remote host closed the connection). 18:40:28 <fizzie> In DWIMskell, "fix error" just rewrites your source file and corrects your mistakes. 18:44:26 -!- Ngevd has joined. 18:50:13 -!- sebbu3 has joined. 18:50:13 -!- sebbu3 has quit (Changing host). 18:50:13 -!- sebbu3 has joined. 18:51:27 -!- sebbu2 has quit (Ping timeout: 260 seconds). 18:54:24 <Ngevd> Oh I am bored 18:55:47 -!- DH____ has quit (Read error: Connection reset by peer). 18:55:51 -!- AndChat| has joined. 18:56:30 <ais523> Ngevd: I was going to recommend NetHack, when I saw this was #esoteric 18:56:33 <ais523> but I may as well recommend it anyway 18:56:35 <ais523> go play NetHack 18:56:43 <Ngevd> I could never get the hang of it 18:56:50 <ais523> hmm, fair enough 18:57:56 <Ngevd> I will try, though 18:58:37 <ais523> I actually develop a NetHack variant, AceHack, which can be played online at telnet://acehack.rawrnix.com 18:58:45 -!- variable has quit (Quit: I found 1 in /dev/zero). 18:59:06 -!- variable has joined. 18:59:17 <Ngevd> Can you reccomend a character's race, role, gender and alignment for me? 18:59:33 <ais523> female lawful dwarven valkyrie 18:59:35 <ais523> 'tis the easiest combo 19:00:49 <Ngevd> Hold on, University Challenge 19:00:59 -!- Ngevd has changed nick to Taneb|Hovercraft. 19:01:38 <ais523> heh, it's on here too 19:02:16 -!- yorick has quit (Quit: Poef!). 19:08:15 -!- augur has joined. 19:15:10 -!- lifthrasiir has quit (Ping timeout: 276 seconds). 19:16:08 -!- lifthrasiir has joined. 19:17:37 -!- SimonRC has quit (Ping timeout: 260 seconds). 19:19:22 -!- Taneb|Hovercraft has quit (Ping timeout: 260 seconds). 19:24:56 <myndzi\> Item lists are now sorted into alphabetical order 19:25:09 <myndzi\> wouldn't random make more sense if you're trying to prevent people from gleaning information? 19:25:11 -!- myndzi\ has changed nick to myndzi. 19:25:29 <myndzi> i suppose the problem is randomizing it only once, perhaps 19:25:40 <myndzi> but that could be done when you make the bones file(?) 19:25:53 <ais523> alpha prevents information just as well 19:26:01 <ais523> *information leakage 19:26:09 -!- zzo38 has joined. 19:26:21 <myndzi> how so? it g ives you information about what the item is by its name 19:26:25 <myndzi> assuming you knew what you had 19:26:33 <myndzi> which is the problem it was designed to avoid 19:26:45 <myndzi> or wait 19:26:52 <myndzi> i suppose you mean by its "unknown" name 19:26:57 <ais523> yep 19:26:58 <myndzi> not its actual or original name 19:27:02 <myndzi> ok ;) 19:27:05 <ais523> in fact, by the name the character sees it as 19:27:15 <myndzi> right 19:27:15 <ais523> which is the description if unknown, and actual if known 19:28:00 <myndzi> is nethack not in development anymore? lots of these seem like they would be sensible patches for the game itself rather than some fork 19:28:18 <CakeProphet> @pl (\x y -> (compare `on` snd) x y `mappend` (compare `on` fst) x y) 19:28:18 <lambdabot> ap (ap . (mappend .) . (compare `on` snd)) (compare `on` fst) 19:28:23 <ais523> it's in development, as far as anyone can tell, but there's no releases, and no public repo 19:28:29 <myndzi> oh 19:28:30 <ais523> so the development is entirely useless from anyone else'se point of view 19:28:40 <ais523> and it's been like that for something like eight years now 19:28:52 <myndzi> lol :( 19:29:12 <ais523> `addquote <myndzi> lol :( 19:29:14 <HackEgo> 672) <myndzi> lol :( 19:29:18 <ais523> this is everything that's wrong with modern Internet language 19:29:32 <myndzi> no u 19:29:36 <fizzie> There are quite a lot of bug reports that are known to be fixed in the version no-one gets to see. 19:29:39 <myndzi> <devolves into unintelligible trollspeak> 19:29:55 <olsner> fizzie: the fixed version of the modern internet language? 19:30:19 <fizzie> olsner: Right. It's a shame you'll never see it, it's beautiful. 19:30:24 <myndzi> it's actually interesting if you think about it 19:31:28 <myndzi> what purpose did that text serve? it confirmed that i'd read your response, had nothing further to say, and adds that it was both humorous and unfortunate to me 19:31:32 <myndzi> in six characters, that's not bad 19:31:49 <myndzi> so i'm not so sure i can agree that it's "wrong" 19:31:57 <myndzi> though by all means, like everything it can be abused 19:32:15 <fizzie> It's an old philosophical question: If a bug gets fixed in a revision that no-one will ever see, is the commit message still stupid and misleading? 19:32:20 <myndzi> and to be honest i haven't been able to break the smileys habit on irc, though i don't type like that in e-mail or pretty much anywhere else where i would capitalize a sentence 19:34:10 -!- SimonRC has joined. 19:34:24 -!- Ngevd has joined. 19:35:23 <myndzi> Wielded silver arrows now deal silver damage the same way wielded silver nonweapons do. (Even though bashing with arrows isn't particularly affective, the silver is enough to hurt certain monsters no matter how clumsily it makes contact.) 19:35:26 <myndzi> didn't you watch LOTR? ;) 19:35:34 <myndzi> wielding arrows are piercing weapons 19:35:42 <myndzi> also: effective, if you care 19:35:51 <Ngevd> Oh, this is annoying 19:37:03 <Ngevd> Nethack: in a room with the exit staircase, a dead goblin, some money, a fountain, and a creaky floorboard 19:37:33 <myndzi> take money, drink fountain, exit ... profit? 19:37:34 <myndzi> ;p 19:37:48 <ais523> eat the goblin 19:37:52 <ais523> and then search the walls for secret doors 19:37:58 <ais523> (assuming the goblin died recently) 19:38:09 <ais523> vertical walls are more likely to have secret doors than horizontal walls 19:38:19 <myndzi> ^ more useful advice than i can offer 19:38:31 <myndzi> i've always been fascinated by nethack, but never played it much 19:38:39 <Ngevd> Hang on, how do I check for hidden walls? 19:38:45 <myndzi> s for search? 19:39:00 <myndzi> i'm more interested in the distinction between vertical walls and horizontal walls 19:39:10 <ais523> yep, s for search 19:39:13 <myndzi> oh, from overhead view 19:39:15 <Ngevd> North-south, east-west 19:39:18 <myndzi> yeah 19:39:23 -!- oerjan has joined. 19:39:23 <ais523> myndzi: it's not deliberate, AFAIK, just a side-effect of the map generation algo 19:39:32 <Ngevd> Found a locked door 19:39:34 <myndzi> nah, i thought you meant vertical as in floor-to-ceiling 19:39:40 <myndzi> like, how would you tell? 19:39:45 <myndzi> also wouldn't it be the same thing? 19:39:48 <myndzi> but i understand 19:40:02 <fizzie> Horizontal walls, also called floors. 19:40:02 <myndzi> and yeah, text screens are wider than tall, so it makes sense to have a horizontal preference 19:40:20 <myndzi> fizzie: well, walls take up two axes so horizontal could be a wall as well 19:40:27 <myndzi> horizontal AND vertical = wall! 19:40:29 <ais523> Ngevd: you can kick it down 19:40:30 <CakeProphet> > sortBy (\x y -> fst $ randomR (LT, GT) (mkStdGen x^y)) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6] 19:40:30 <ais523> control-D 19:40:31 <lambdabot> No instance for (GHC.Num.Num System.Random.StdGen) 19:40:31 <lambdabot> arising from a use of... 19:40:33 <CakeProphet> halp 19:41:22 <CakeProphet> > toEnum 1 :: Ordering 19:41:23 <lambdabot> EQ 19:41:25 <CakeProphet> > toEnum 0 :: Ordering 19:41:26 <lambdabot> LT 19:41:42 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) (mkStdGen x^y)) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6] 19:41:42 <oerjan> CakeProphet: that's ((mkStdGen x)^y) 19:41:43 <lambdabot> No instance for (GHC.Num.Num System.Random.StdGen) 19:41:43 <lambdabot> arising from a use of... 19:42:13 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) ((mkStdGen x)^y)) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6] 19:42:14 <lambdabot> No instance for (GHC.Num.Num System.Random.StdGen) 19:42:14 <lambdabot> arising from a use of... 19:42:35 <oerjan> CakeProphet: no, i mean, that's what it parses as, and it's not sensible 19:42:52 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) (mkStdGen (x^y))) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6] 19:42:53 <lambdabot> [6,5,21,6,5,2,6,5,2,5,2,5,2,5,4,1] 19:42:55 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) (mkStdGen (x^y))) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6] 19:42:56 <lambdabot> [6,5,21,6,5,2,6,5,2,5,2,5,2,5,4,1] 19:43:01 <CakeProphet> bahahahaha 19:43:06 <CakeProphet> best sort ever. 19:43:16 <oerjan> CakeProphet: not that i see how (mkStdGen (x^y) is any better 19:43:44 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) (mkStdGen (x*y))) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6] 19:43:45 <lambdabot> [6,5,2,6,5,2,5,21,6,5,2,5,2,5,4,1] 19:44:21 <Ngevd> What#s a rust trap? 19:45:04 <oerjan> CakeProphet: i mean, i see no reason why that should be an order relation 19:45:41 <CakeProphet> oerjan: you think too narrowly. 19:45:44 -!- Zuu has quit (Ping timeout: 244 seconds). 19:45:45 <CakeProphet> :P 19:45:55 <CakeProphet> THIS IS A GREAT ORDERING OF OUR TIMES 19:46:04 <myndzi> i had to look up the vibrating square 19:46:11 <myndzi> and i am left to wonder how anyone would figure this crap out on their own 19:46:23 <oerjan> CakeProphet: oh i've experimented with sortBy crazy relations myself, just to find out what it compared. 19:46:32 <CakeProphet> yeah that's what I'm doing 19:46:35 <CakeProphet> also being sleep deprived. 19:47:43 <Ngevd> Don't know what to do next 19:48:39 -!- ineiros_ has joined. 19:49:13 <oerjan> <CakeProphet> @hoogle (%%) 19:49:21 <oerjan> what would that be supposed to do 19:51:30 <Ngevd> Floor two! 19:51:55 <oerjan> <CakeProphet> @pl (\x y -> (compare `on` snd) x y `mappend` (compare `on` fst) x y) 19:54:32 <oerjan> :t (mappend `on` ($ ?y).($ ?x).(compare `on`)) snd fst 19:54:33 <lambdabot> forall a. (?y::(a, a), ?x::(a, a), Ord a) => Ordering 19:55:10 <Ngevd> AAAH! 19:55:12 <Ngevd> A HOBBIT! 19:55:20 <Ngevd> What do I do, ais523? 19:55:27 <zzo38> join = id <=< id is that correct? 19:55:54 <oerjan> zzo38: hm maybe 19:56:01 <oerjan> :t id <=< id 19:56:02 <lambdabot> forall (m :: * -> *) c. (Monad m) => m (m c) -> m c 19:56:06 <oerjan> yeah 19:56:29 <ais523> Ngevd: attack it 19:56:38 <ais523> unless it's peaceful, in which case ignore it 19:56:51 <copumpkin> :t (id =<<) 19:56:52 <lambdabot> forall (m :: * -> *) b. (Monad m) => m (m b) -> m b 19:56:54 <Ngevd> Can't I recruit it to my cause? 19:57:02 <Ngevd> To find the Amulet of Yendor? 19:57:09 <ais523> not without appropriate magic 19:57:14 <Ngevd> Aww 19:57:14 <ais523> and even so, it wouldn't live long 19:57:35 <zzo38> Don't waste your magic on such thing 19:59:24 <fizzie> "If it moves, kill it." (Well, maybe not quite.) 20:00:06 <zzo38> "It it move, kill you." 20:00:25 <Ngevd> Okay, floor three seems annoyingly empty 20:01:08 <Ngevd> No wait, I died from food poisoning 20:01:37 <fizzie> I recently managed to have a terminal (no pun intended) issue that sneakily went and pretty much randomized my options; in particular it went and turned 'confirm' off, and then I bumped into the minetown priest, and (while blind) managed to also kill one of the minetown guards. Now they're... not happy with me. 20:05:15 <ais523> Ngevd: don't eat undead that you've made dead again, don't eat things unless you killed them yourself recently 20:05:34 <ais523> fizzie: if you can steal from a shopkeeper then pay them off again, that makes them peaceful again, but it can be hard to pull off 20:05:37 <ais523> otherwise, run away 20:05:46 <Ngevd> ais523: Thanks for the advice 20:05:58 <myndzi> the funny thing about nethack is 20:06:02 <ais523> AceHack warns you against mistakes like that 20:06:11 <myndzi> it does a pretty good job in many cases of emulating things that would be common sense in real life 20:06:18 <myndzi> but you don't expect them of a video g ame 20:06:23 <myndzi> so you do stupid things 20:06:24 <myndzi> ;D 20:06:38 <myndzi> "you mean my actions have consequences?!" 20:07:40 <ais523> well, you can destroy the entire Yendorian financial system, and kill pretty much every monster in the dungeon, and the consequences generally aren't noticeable 20:08:46 <myndzi> ha, well, i was thinking on a bit smaller of a scale 20:08:58 <fizzie> ais523: Well, I did run (walk) away, and I think that game (haven't touched it in a while) is in the castle now and doing fine, but I don't happen to have any candles. 20:09:21 <myndzi> just waiting for someone to merge nethack with dwarf fortress, haha 20:09:59 <ais523> actually, it's possible to extinct a species of monster eventually if you keep killing things 20:10:13 <myndzi> i did know that at least 20:10:22 <myndzi> i remember a friend who was trying to extinct everything once 20:10:25 <myndzi> it was pretty amusing 20:10:29 <myndzi> he kept summoning and one-shotting them 20:10:47 <ais523> extinctionist is a well known stupid ascension trick 20:10:49 <myndzi> his stash room was full of boulders from killing giants etc. 20:10:52 <ais523> someone even did pacifist extinctionist once 20:10:53 <fizzie> mooz has played at least on extinctionist. 20:10:58 <fizzie> s/on/one/ 20:11:09 <ais523> which is a beautifully ridiculous combination 20:11:13 <oerjan> <ais523> someone even did pacifist extinctionist once <-- O_o 20:11:19 <myndzi> how... you make everything kill each other? 20:11:21 <ais523> yep 20:11:26 <myndzi> how does the last one die 20:11:32 <myndzi> throw him a poisoned water flask? lol 20:11:34 <fizzie> Since it takes a while, there was quite a lot of other stupid things he did. I think he completely dug out + lit every diggable level of Gehennom. 20:11:39 <ais523> I'm not sure 20:12:04 <ais523> probably get a nonextinctable monster like Rodney to make the kill 20:12:09 <myndzi> lead it down a trap or hole maybe 20:12:18 <myndzi> or that 20:13:13 <fizzie> Random log-quote: [2006-12-12 13:47:01] <fizzie> I wonder why the Wikipedia category "Species extinct in the wild" has the page "User talk:TrogdorPolitiks". 20:13:21 <fizzie> (The statement is no longer true.) 20:15:47 <oerjan> `log 20:15:49 <HackEgo> 2010-02-09.txt:20:54:46: <cpressey> Turing complete = Turing degree 0' 20:28:16 -!- elliott has joined. 20:28:32 <elliott> That PH sure is a long time Ireland. 20:30:15 <oerjan> an irish wake is not something to be rushed. 20:31:16 <elliott> 12:02:30: <oerjan> @tell monqy <monqy> uggh how is Q not an instance of MonadIO <-- it might be because ghc no longer includes by default the package where MonadIO is defined 20:31:21 <elliott> oerjan: um template-haskell is a hackage package now too 20:31:37 <elliott> but yeah, it doesn't depend on transformers 20:32:22 -!- Zuu has joined. 20:32:33 <oerjan> elliott: the ghc documentation has TH modules but not transformer ones listed 20:33:31 <elliott> 13:57:13: <CakeProphet> https://github.com/rfw/metafun/blob/master/metafun/list.hxx 20:33:31 <elliott> boring, done tons of times before :P 20:33:33 <elliott> oerjan: well right 20:34:48 <elliott> 16:13:30: <Gregor> Recipe for fun: Get a Zune HD foisted on you. Install Windows 7 in a VM so you can try it. Discover just how abysmally bad it is, put it in a box, forget about it for >1yr. Remove from box, boot VM for first time in a year, try to use it again. 20:34:48 <elliott> 16:13:41: <Gregor> <Microsoft> lol, you can't do SHIT. Hahaha 20:35:00 <elliott> Gregor: What's the relevance of the Zune here -- oh, you installed Windows in the VM so you can use the Zune. 20:35:30 <elliott> 19:00:49: <Ngevd> Hold on, University Challenge 20:35:30 <elliott> 19:00:59: -!- Ngevd is now known as Taneb|Hovercraft. 20:35:30 <elliott> 19:01:38: <ais523> heh, it's on here too 20:35:35 <elliott> ais523: you realise you live in the same country 20:35:46 <ais523> elliott: I know, I mean physically in this room there's a TV 20:35:53 <elliott> gasp 20:35:54 <ais523> and it was showing University Challenge at the time 20:36:11 <elliott> 19:29:12: <ais523> `addquote <myndzi> lol :( 20:36:12 <elliott> 19:29:14: <HackEgo> 672) <myndzi> lol :( 20:36:12 <elliott> 19:29:18: <ais523> this is everything that's wrong with modern Internet language 20:36:15 <elliott> ais523: by wrong, you mean right 20:36:25 <elliott> 19:29:32: <myndzi> no u 20:36:27 <elliott> myndzi: u mad 20:36:28 <oerjan> NO UNIVERSITY CHALLENGE HERE 20:36:30 <elliott> (I have embraced the demon.) 20:36:33 <ais523> I just can't figure out what the line means at all 20:36:49 <oerjan> wrong country, no tv in my room and several hours later might explain it. possibly. 20:36:50 <elliott> ais523: I can, but it's hard to describe without the incredibly useful "lol" and ":(" 20:37:01 <elliott> it's like ":(", but it's been modified slightly 20:37:08 <elliott> there's an inkling of a :/ type situation 20:37:27 <elliott> and it sort of has a deamplified sarcastic laughter in the background, but softened rather than harsh, at the badness of the situation 20:37:33 <elliott> something hinting at cosmic irony 20:37:35 <elliott> YOU'RE WELCOME 20:37:48 <ais523> thanks for the description 20:37:53 <ais523> night everyone 20:37:55 -!- ais523 has quit (Remote host closed the connection). 20:38:09 <elliott> 19:31:28: <myndzi> what purpose did that text serve? it confirmed that i'd read your response, had nothing further to say, and adds that it was both humorous and unfortunate to me 20:38:09 <elliott> also this 20:38:15 <elliott> also I scared ais away with my psychobabble 20:38:49 -!- Ngevd has quit (Ping timeout: 252 seconds). 20:39:05 <oerjan> hey it's topical, he should be able to stand it if he voluntarily joins the channel 20:39:07 <zzo38> If you defined join in that way would fmap be fmap x = id >=> return . x 20:39:27 <oerjan> :t id >=> return . ?x 20:39:28 <lambdabot> forall (m :: * -> *) b a. (Monad m, ?x::b -> a) => m b -> m a 20:39:43 <oerjan> so it seems 20:41:20 <zzo38> Why doesn't that ?x stuff working in my computer? I just used \ to display the type instead 20:41:33 <oerjan> ImplicitParameters extension 20:41:45 <zzo38> OK 20:42:23 <zzo38> Then I suppose you can define a monad in terms of (return .) and (<=<) 20:42:43 <oerjan> :t (return .) 20:42:44 <lambdabot> forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f a -> f (m a) 20:42:54 <oerjan> sigh, caleskell 20:42:57 <oerjan> :t (return Prelude..) 20:42:58 <lambdabot> forall b (m :: * -> *) a. (Monad m) => (a -> b) -> a -> m b 20:43:36 -!- Phantom_Hoover has joined. 20:43:36 <oerjan> :t (return .) id 20:43:37 <lambdabot> forall a (m :: * -> *). (Monad m) => a -> m a 20:43:43 <zzo38> You can get return from (return .) by, if you have f = (return .) then you have return = f id 20:43:50 <zzo38> Because that is the identity laws of categories 20:44:01 <oerjan> i just did that :P 20:44:14 <elliott> oh Phantom_Hoover came back 20:44:21 <elliott> speak of the devil 20:44:22 <elliott> i guess 20:44:23 <elliott> he returns 20:44:25 <elliott> from eireriealdn 20:44:55 <oerjan> :t (const ?x >=> ?f) undefined 20:44:56 <lambdabot> forall (m :: * -> *) b c. (?x::m b, ?f::b -> m c, Monad m) => m c 20:45:11 <Phantom_Hoover> Is this like the last time you spoke of the devil by insulting me. 20:45:17 <oerjan> and that's one way to get >>= 20:45:30 <Phantom_Hoover> Help my key is unreliable. 20:46:16 <oerjan> the key is such a fickle beast 20:46:34 <Phantom_Hoover> It is indeed. 20:51:30 <zzo38> Defining monad in terms of (return .) and (<=<) seems a way to directly convert morphisms?? 20:52:42 <oerjan> zzo38: ah yes, (return .) is a mathematical functor from the category with . as composition to the one with <=< as composition 20:53:30 <oerjan> (the latter is the kleisli category, if you haven't seen it, although it's mentioned in the Control.Arrow module) 20:53:47 <oerjan> (with a newtype wrapper) 20:53:52 <oerjan> :t Kleisli 20:53:53 <lambdabot> forall a (m :: * -> *) b. (a -> m b) -> Kleisli m a b 20:55:48 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.0.0/Control-Arrow.html#t:Kleisli 20:56:21 <oerjan> but then i expect you have, since you're investigating <=< in the first place 21:00:48 <zzo38> Yes I know that <=< and >=> is the Kleisli composition. 21:01:26 <zzo38> Now I can understand better. 21:01:51 <zzo38> And I have seen the Kleisli type 21:02:37 -!- zzo38 has quit (Remote host closed the connection). 21:04:24 -!- monqy has joined. 21:15:54 <elliott> can i have caret plz 21:16:07 <oerjan> > 17*8-7*11 21:16:08 <lambdabot> 59 21:16:11 <elliott> thats not caret 21:16:22 -!- oerjan has set topic: Freudian armchair psycho-babble | It is the 90s and there is time for an international hub for esoteric programming language design and deployment @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/. 21:16:29 <Deewiant> elliott: git add -p instead of git commit --interactive 21:17:54 <elliott> Deewiant: Hmm, that looks nicer 21:18:02 <elliott> Deewiant: Is there any way to amend a previous commit by splitting it into patches? :-P 21:18:37 <Deewiant> rebase :-P 21:19:12 <elliott> :'( 21:27:06 -!- sllide has quit (Read error: Connection reset by peer). 21:32:50 <Gregor> <elliott> Gregor: What's the relevance of the Zune here -- oh, you installed Windows in the VM so you can use the Zune. // the "it" in that sentence was the Zune, not the VM, although as it turns out the former naturally implied the latter. 21:33:50 <elliott> Deewiant: I don't support an interactive rebase will do it :P 21:34:48 <Deewiant> suppose* 21:35:01 <Deewiant> Just "edit" the commit you want to split 21:36:48 <elliott> Deewiant: But that involves git commit --amending it... am I supposed to just copy the files out, revert some changes, and then manually copy the changes I want in another commit back in? 21:37:31 <Deewiant> Oh right, hmm 21:37:42 <Deewiant> I suppose you can git reset --soft there 21:38:11 <elliott> Hmm, I've never used reset --soft before 21:38:12 <elliott> What's that do 21:38:16 <elliott> Manpage isn't very helpful 21:38:53 <Deewiant> "Sets the current head to the specified commit" "Does not touch the index file nor the working tree at all" :-P 21:39:41 -!- kmc has joined. 21:39:59 <pikhq> elliott: git reset --soft changes the head pointer to point at the commit you hand it. And nothing else. 21:40:10 <elliott> Deewiant: Right, okay, but if I then, say, remove twenty lines I want to be in a different commit, that would then obliterate them 21:40:20 <elliott> I must instead copy those lines elsewhere, outside of the repo, so that I can later restore them 21:40:36 <Deewiant> "Does not touch the ... working tree at all" 21:40:44 <elliott> ... 21:40:47 <elliott> Deewiant: Right, okay, but if I then, say, remove twenty lines I want to be in a different commit, that would then obliterate them 21:40:49 <elliott> I must instead copy those lines elsewhere, outside of the repo, so that I can later restore them 21:40:56 <elliott> The whole point is to reduce the size of the commit 21:40:56 <Deewiant> elliott: What is "that" 21:41:02 <elliott> Which involves editing the files 21:41:06 <elliott> Deewiant: ..."so that" 21:41:11 <elliott> In order so that I may be able to later restorethem 21:41:14 <pikhq> elliott: What part of changing the head pointer obliterates changes? 21:41:15 <Deewiant> elliott: "that owuld then obliterate" 21:41:19 <Deewiant> would* 21:41:27 <elliott> Deewiant: Removing those twenty lines and amending the commit would obliterate those lines 21:41:46 <elliott> Such that I would not then be able to create a new commit after that one with those changes without memorising them 21:41:49 <elliott> pikhq: It's what I do after that 21:41:49 <Deewiant> You don't want to amend after the reset --soft 21:41:55 <Deewiant> Just commit ordinarily 21:41:58 <pikhq> elliott: Ah, right. 21:42:09 <elliott> Deewiant: And git will magically figure out which parts of the commit I want? 21:42:16 <elliott> Or do you mean commit --interactive 21:42:35 <elliott> The problem is that just hunk-based selection probably isn't enough 21:42:43 <pikhq> Here is where you mutter "git's UI sucks balls". 21:42:48 <elliott> I'll need to do some selective manual reverting of changes so that each commit builds cleanly 21:42:55 <Deewiant> With add -p you can edit the hunks manually 21:43:09 <elliott> Thank god, I was almost afraid I'd be able to do this from the comfort of my editor 21:43:27 <elliott> I think I'll stick with the "manually copy the tree out and incrementally bring this closer" 21:43:36 <elliott> Oh yeah, what happens to the commit date if I add new commits in-between 21:44:12 <elliott> The situation is basically 21:44:22 <elliott> http://sprunge.us/JhTb 21:44:30 <elliott> The commits made in the last few minutes are just fine 21:44:44 <elliott> That commit made some hours ago is way too big and needs splitting up with manual editing to mimic a less slapdash developmental style :-P 21:45:03 <elliott> I am fine with the commit date of the resulting split patches being "now", and bumping the commit date of all the later patches 21:46:09 -!- kmc has quit (Quit: Leaving). 21:46:24 <elliott> This is a pain :P 21:46:25 <Deewiant> Editing in add -p /does/ open an editor :-P 21:46:44 <elliott> I like git to think I'm a vim user for commit messages, but I'm not 21:46:53 <elliott> Deewiant: More importantly, it'll need multi-file edits 21:46:58 <elliott> And cabal-dev invocations to attempt rebuilds 21:46:59 <elliott> etc. 21:47:21 <Deewiant> Sounds like you should maybe do a new branch and cherry-pick or something 21:47:29 <elliott> So, OK, here's the real situation: How do I obliterate the last N patches without throwing away the changes 21:47:30 <elliott> As in 21:47:34 <elliott> Don't touch the working tree 21:47:39 <elliott> But obliterate those commits and reset the HEAD 21:47:49 <elliott> And then I'll just selectively re-commit everythin 21:47:50 <elliott> g 21:47:55 -!- FireFly has quit (Quit: FireFly). 21:48:17 <Deewiant> elliott: git reset --soft :-P 21:49:21 <elliott> Heh 21:49:25 <elliott> I didn't realise reset could change history 21:49:34 <elliott> --soft sounds rather more hard than what --hard does 21:50:21 <Deewiant> --hard does the same thing as --soft but also throws away your changes, that seems harder 21:50:36 <elliott> Then that doesn't do what I need; --hard doesn't change HEAD 21:50:44 <elliott> Unless I'm sorely mistaken 21:51:29 <Deewiant> reset changes the head, always 21:52:05 <Deewiant> --soft makes it not change the index, --hard makes it also change the working tree 21:52:20 <elliott> I use "git reset --hard" to remove changes from the working tree after I make some changes and they suck 21:52:23 <elliott> Without changing the repository 21:52:23 <elliott> Is that wrong 21:53:06 <Deewiant> No, that's equivalent to "git reset --hard HEAD" which obviously doesn't change the head in practice :-P 21:53:19 <elliott> Ah 21:53:30 <elliott> OK, time to do this shit, as they say in the hood 21:53:52 <elliott> Deewiant: btw, I take it the commit objects will remain around until a git-gc? 21:54:16 <Deewiant> And even thereafter unless I misunderstand gc 21:54:28 <elliott> How do I get rid of 'em then, git pack? 21:54:42 <pikhq> Deewiant: If the commit objects aren't referred to by anything, gc will remove them. 21:54:47 <Deewiant> Do enough shit that they fall out of the reflog 21:54:54 <elliott> Deewiant: Gross 21:54:55 <Deewiant> pikhq: But aren't they referred to by the reflog 21:55:05 <pikhq> Quite possibly. 21:55:05 <Deewiant> elliott: You don't need to explicitly get rid of them 21:55:18 <elliott> Deewiant: Will they get pushed to github if I push 21:55:19 <Deewiant> They'll disappear if you don't use them 21:55:21 <Deewiant> No 21:55:26 <elliott> Hmmmmmmm 21:55:28 <elliott> Alright then 21:55:31 <Deewiant> Unless you leave a branch pointing to them or something 21:55:32 <elliott> I might just re-clone :-P 21:55:36 <Deewiant> (And then push that branch) 21:55:40 <pikhq> They expire after a given time, so it's not like you really need to think about it. 21:55:51 <elliott> elliott@katia:~/Code/mchost$ git reset --soft fe5730069ce57be21cbc2fddb5115094679e1ab8 21:55:51 <elliott> elliott@katia:~/Code/mchost$ git diff 21:55:51 <elliott> elliott@katia:~/Code/mchost$ 21:55:53 <elliott> Deewiant: Help 21:56:03 <Deewiant> git status 21:56:17 <elliott> # Changes to be committed: 21:56:18 <elliott> # (use "git reset HEAD <file>..." to unstage) 21:56:18 <elliott> # 21:56:18 <elliott> #modified: MC/Protocol.hs 21:56:18 <elliott> #modified: MC/Protocol/Fields.hs 21:56:18 <elliott> #modified: MC/Protocol/Types.hs 21:56:20 <elliott> #modified: Main.hs 21:56:22 <elliott> Hmmm 21:56:38 <elliott> So I just need to git reset HEAD them to get them back in the diff? 21:56:42 <elliott> God I suck at git 21:56:48 <Deewiant> Or git diff --cached 21:57:02 <Deewiant> If you just want to look at them, that is 21:57:08 <pikhq> Or you could have done git reset --mixed, to drop the staged changes, too. 21:57:13 <Deewiant> You can even git reset -p (inverse of add -p) if you're feeling adventurous 21:57:31 <elliott> Should I feel upset about the resulting stream of commits not being authentically chronological 21:57:34 <Deewiant> Right, plain git reset (it defaults to --mixed) would probably have been better 21:57:36 <elliott> As in 21:57:42 <Deewiant> But it's equivalent to doing another reset now 21:57:51 <pikhq> Probably the worst bit of git is that it in no way makes its own data model actually visible; you pretty much need to remember what each command actually does to the data. 21:57:55 <elliott> I did a bunch of fixes between adding ServerProtocol and before exporting ServerProtocol 21:57:55 <pikhq> Rather than it being clear. 21:58:05 <elliott> But I'm going to do it this time as me exporting ServerProtocol as soon as I write it 21:58:10 <elliott> Is that bad, am I a bad person, I feel bad 21:58:17 <pikhq> Imagine if it were "git set-head" instead of "git reset --soft", for instance. 21:58:42 <Deewiant> I wonder if somebody's written a set of aliases like that 21:58:49 <Deewiant> (And published it) 21:58:58 <elliott> Pls. report on my badness 21:59:26 <Deewiant> Shrug 22:00:26 <pikhq> Hmm. Actually, maybe have it be a bit clearer still. You name the data structure being modified and then the modification to do. 22:01:01 <pikhq> e.g. "git working checkout" to do a checkout into your working tree, "git stage add" to add things to the staging area, "git stage commit" to commit the staging area... 22:01:18 <Deewiant> Many operations are too complicated to express like that, though 22:01:25 <elliott> I'm feeling bad still 22:01:26 <Deewiant> Like the swiss army knife that is rebase 22:01:27 <pikhq> For instance? 22:01:32 <pikhq> Oh, effing rebase. 22:01:44 <elliott> Validate me or I'm switching to darcs 22:02:18 <Deewiant> You're worried about exporting something in an earlier commit now? :-P 22:02:32 <pikhq> I'd probably want to split rebase into a few different commands, TBH. 22:02:35 <elliott> Yes 22:02:40 <elliott> It's like lying 22:02:42 <elliott> I'm a aliar 22:02:44 <elliott> s/aliar/liar/ 22:02:55 <Deewiant> Doesn't seem bad to me 22:03:02 <elliott> At least splitting isn't very lie-like, it only lies about my committing practices, not my development order 22:03:08 <Deewiant> pikhq: rebase --interactive is immensely convenient as one command 22:03:29 <pikhq> Deewiant: It's also quite different from git rebase without --interactive. 22:03:36 <Deewiant> True 22:04:22 <Deewiant> Maybe something like "git everything interactive-rebase" ;-) 22:04:23 <pikhq> I'd probably split it up into "git branch rebase" and "git branch rewrite" or something. 22:04:54 <pikhq> Though "branch" doesn't seem quite right, because branch isn't really a git data structure. 22:05:26 <pikhq> "history" is at least less of a misnomer. 22:07:27 <pikhq> Hmm. The "git commit" vs. "git commit -a" comes out nicely. "git stage commit" vs. "git working commit". 22:07:50 <Deewiant> What about "git commit file" 22:08:30 <pikhq> Clearly misguided. "git commit" would be a class of commands that operate on commit objects. 22:08:42 <Deewiant> I meant, what would it be 22:09:08 <Deewiant> It's equivalent to stash, add file, commit, stash pop 22:09:13 <elliott> How does one hard reset a single file 22:09:22 <elliott> git refuses to do it :P 22:09:26 <pikhq> Probably "git working commit file". 22:09:28 <Deewiant> git status tells you 22:09:38 <elliott> Oh, right 22:10:36 <elliott> Aww, you can't do "git diff ../derivative-of-this-repo ." :/ 22:11:04 <Deewiant> But you can do that without the "git" ;-P 22:11:05 <Lymee> Somebody need to write git repodiff or something 22:11:31 <elliott> Deewiant: Does that support patience diff?????? 22:11:32 <elliott> I think not 22:11:45 <Deewiant> Probably not 22:12:02 <elliott> --- ./.git/COMMIT_EDITMSG 2011-09-19 23:10:44.580093001 +0100 22:12:02 <elliott> +++ ../mchost.new/.git/COMMIT_EDITMSG 2011-09-19 23:05:02.490093001 +0100 22:12:02 <elliott> @@ -1,8 +1,8 @@ 22:12:02 <elliott> -Make fields in MC.Protocol.Types strict 22:12:02 <elliott> +Turn some simple wrapper data types into newtypes 22:12:02 <lambdabot> -1,8 +1,8 22:12:03 <elliott> # Please enter the commit message for your changes. Lines starting 22:12:05 <elliott> # with '#' will be ignored, and an empty message aborts the commit. 22:12:07 <elliott> # On branch master 22:12:09 <elliott> -# Your branch is ahead of 'origin/master' by 3 commits. 22:12:11 <elliott> +# Your branch is ahead of 'origin/master' by 7 commits. 22:12:13 <elliott> # 22:12:15 <elliott> # Changes to be committed: 22:12:17 <elliott> # (use "git reset HEAD <file>..." to unstage) 22:12:19 <elliott> Binary files ./.git/index and ../mchost.new/.git/index differ 22:12:21 <elliott> diff -ru ./.git/logs/HEAD ../mchost.new/.git/logs/HEAD 22:12:23 <elliott> Thanks Deewiant, you're so right, I can do that with just "diff" 22:12:25 <elliott> WORKS PERFECT FIRST TIME 22:12:34 <elliott> -x .git woo 22:12:44 <elliott> File ./fifo is a fifo while file ../mchost.new/fifo is a fifo 22:12:44 <elliott> A large difference 22:12:45 <Deewiant> Don't blame me if you don't have diff aliased to the appropriate thing 22:13:26 <elliott> I wonder why git-diff doesn't work on things that aren't git repos. 22:13:45 <Deewiant> Does any other <VCS> diff? :-P 22:14:24 <elliott> Well, git diff is better than diff(1) 22:14:35 <elliott> And git is stupid, so the algorithm should not be git-specific at all 22:14:59 <elliott> Oh my god, Debian really does call ack "ack-grep" 22:15:07 <elliott> Wait, why did I install that, I want diff 22:15:08 <elliott> diff is not grep 22:15:22 <elliott> I am not think good right now 22:21:14 -!- SgeoN1 has joined. 22:21:57 <SgeoN1> I told my dad about the swap space issue, he said not to worry about it. I think he'll buy me another flash or HD if this wears out. 22:22:09 <SgeoN1> Can wear out be detected? 22:23:29 <SgeoN1> I'll also try switching to Lubuntu. 22:25:14 <elliott> Deewiant: git add -p, git commit --amend should do the right thing, right? 22:25:47 <elliott> As in "only amend in the stuff I select, leave the other stuff untouched in my working tree" 22:26:43 <elliott> Seems so 22:29:12 * Phantom_Hoover → sleep 22:29:15 -!- Phantom_Hoover has quit (Quit: Leaving). 22:38:09 -!- ineiros has quit (Ping timeout: 240 seconds). 22:39:44 -!- ineiros has joined. 22:49:04 <oerjan> eek, web is gone 22:54:44 <elliott> ? 22:55:44 <oerjan> i smell a dns issue 22:55:59 <oerjan> i cannot open new connections 22:56:44 <olsner> look up some IP address and see if you can connect to it by IP 22:59:40 -!- Jafet has quit (Quit: Leaving.). 23:02:40 <elliott> $ dist/build/mchost/mchost server < serverlog 23:02:40 <elliott> SHandshake (LoggedIn "9544a299e615f168") 23:02:40 <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0 23:02:40 <elliott> mchost: Data.Text.Array.new: size overflow 23:02:40 <elliott> Heh 23:02:49 <elliott> fizzie: The server sends string lengths as signed shorts, not unsigned, right? 23:03:02 <elliott> Obviously no real string will be long enough to show the difference, just checking. :p 23:06:55 <fizzie> Since, as you say, no strings are long enough, it's a bit of a philosophical question. Someone should check the deobfuscated source just to be sure. We do assume signed in mcmap. 23:07:28 <oerjan> that's weird now my putty shortcuts work again, but still not web 23:07:37 <elliott> If a string falls in the forest and nobody is around to hear it, is its length still measured in signed shorts? 23:07:55 <elliott> fizzie: So, it's after the worldid that parsing fucks up, you concluded, yes? 23:09:02 <fizzie> Yes. Because the unknown 02 is/was what's interpreted as the type byte for a new 0x02 SHandshake. 23:09:30 <oerjan> google by ip doesn't work either 23:09:32 <fizzie> (At least it sounded like that.) 23:09:50 <elliott> fizzie: Time to use -ddump-splices to look at what the generated code looks like, then. 23:10:22 <elliott> 1## 23:10:23 <elliott> -> do { entity[aj6v] <- Data.Serialize.get; 23:10:23 <elliott> unused[aj6w] <- getTextUTF16be; 23:10:23 <elliott> mapSeed[aj6x] <- Data.Serialize.get; 23:10:23 <elliott> isCreative[aj6y] <- Data.Serialize.get; 23:10:23 <elliott> world[aj6z] <- Data.Serialize.get; 23:10:25 <elliott> unknown[aj6A] <- Data.Serialize.get; 23:10:27 <elliott> worldHeight[aj6B] <- Data.Serialize.Get.getWord8; 23:10:31 <elliott> maxPlayers[aj6C] <- Data.Serialize.Get.getWord8; 23:10:33 <elliott> return 23:10:35 <elliott> (SLogin 23:10:37 <elliott> entity[aj6v] 23:10:39 <elliott> unused[aj6w] 23:10:41 <elliott> mapSeed[aj6x] 23:10:43 <elliott> isCreative[aj6y] 23:10:45 <elliott> world[aj6z] 23:10:47 <elliott> unknown[aj6A] 23:10:49 <elliott> worldHeight[aj6B] 23:10:51 <elliott> maxPlayers[aj6C]) } 23:10:53 <elliott> Well, that certainly looks right. 23:10:55 <elliott> Erm. 23:10:57 <elliott> maxPlayers isn't a ubyte is it 23:11:01 <elliott> Huh, it is 23:11:13 <elliott> SLogin !EntityID !Data.Text.Internal.Text !GHC.Int.Int64 !Bool !WorldID !GHC.Int.Int8 !GHC.Word.Word8 !GHC.Word.Word8 | 23:11:21 <elliott> That also looks right. At least to me. 23:11:33 <elliott> Ah hmm ah hmm 23:11:33 <elliott> Hmm 23:11:34 <elliott> Ah 23:11:34 <elliott> Hmm 23:11:38 <elliott> Hmmmmmmmmmmmm 23:11:50 <elliott> fizzie: Note that "Bool" there 23:11:54 <elliott> Bools are usually bytes in the Minecraft protocol 23:12:08 <elliott> -- Bools are encoded as a byte in the range 0 .. 1 23:12:08 <elliott> instance Serialize Bool where 23:12:08 <elliott> put = putWord8 . fromIntegral . fromEnum 23:12:08 <elliott> get = liftM (toEnum . fromIntegral) getWord8 23:12:38 -!- Patashu has joined. 23:12:57 <fizzie> What's that WorldID like? Just another name for a byte? 23:13:14 <elliott> Yes. 23:13:23 <elliott> Yes, this is almost certainly the problem. The seed parses fine because big endian. 23:13:27 <elliott> And thus we have a desync. 23:15:03 <elliott> fizzie: Ah good, now it fails after parsing some entity data 23:15:21 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:15:38 <fizzie> Ho-hum, right; the server mode is an int is what you meant. 23:17:40 -!- ive has quit (Ping timeout: 260 seconds). 23:23:11 <SgeoN1> This does feel more comfortable with swap. 23:23:31 <SgeoN1> Free -m doesn't state that there's any swap usage though, so I'm cknfused 23:23:37 <oerjan> hm some sites work now 23:24:49 <hagb4rd> can do ansic style too? the dump thang 23:25:29 -!- sebbu3 has changed nick to sebbu. 23:26:02 <hagb4rd> no, it's not that important..i'll go out for a walk and a drink 23:26:05 <hagb4rd> cu later 23:26:15 <elliott> ?pl fmap f (g x) 23:26:15 <lambdabot> fmap f (g x) 23:26:18 <elliott> oerjan: hepl 23:26:20 <elliott> hagb4rd: The dump thing? 23:26:41 <elliott> oerjan: i'm trying to en-nicen 23:26:42 <elliott> WindowItems <$> (replicateM (fromIntegral count) $ do 23:26:42 <elliott> let getShort = SE.get :: Get Int16 23:26:42 <elliott> sh <- SE.lookAhead getShort 23:26:42 <elliott> if sh < 0 23:26:42 <elliott> then getShort >> return Nothing 23:26:44 <elliott> else Just <$> SE.get) 23:26:46 <elliott> the parens are... unnice... 23:26:53 <hagb4rd> hi elliott.. i'll explain this later on, if u like 23:26:57 <elliott> hagb4rd: ok 23:27:05 <elliott> fmap WindowItems . replicateM (fromIntegral count) $ do 23:27:08 <elliott> oerjan: that works but is kinda ugly :/ 23:27:25 <elliott> I guess I'll just go with that 23:27:40 <oerjan> elliott: `replicateM` 23:27:56 <oerjan> should work there 23:28:44 <oerjan> in the spot of the $ 23:30:25 <SgeoN1> Why is casper-rw not part of disk space according to Ubuntu 23:30:31 <elliott> oerjan: you mean 23:30:33 <elliott> WindowItems <$> fromIntegral count `replicateM` do 23:30:34 <elliott> ... 23:30:34 <elliott> ? 23:30:36 <oerjan> yep 23:30:41 * elliott tries it 23:30:47 <elliott> i'm not convinced it's nicer though :P 23:30:59 <oerjan> alternative, `id` instead of $ 23:31:16 <oerjan> but i somehow doubt you think that's better :P 23:31:21 <elliott> nice :P 23:31:28 <elliott> hmm, it does indeed work 23:31:33 <elliott> but I think my solution is more readable :P 23:31:41 <oerjan> what solution 23:31:51 <elliott> fmap WindowItems . replicateM (fromIntegral count) $ do 23:31:55 <oerjan> oh well 23:32:13 <oerjan> oh hm 23:32:27 <SgeoN1> Argh, I need a home-rw too I guess 23:35:27 -!- calamari has joined. 23:36:57 <oerjan> hm my tests make me suspect i cannot correct directly to sites outside norway. not due to dns, as google.no doesn't work, but statoil.com does. 23:37:18 <elliott> :D 23:37:29 <elliott> s/correct/connect/ btw 23:37:35 <oerjan> er right 23:37:35 <elliott> oerjan: sounds like a router is down 23:37:39 <oerjan> yeah 23:37:42 <elliott> but that is soooo cool :DDDDDD 23:37:43 <elliott> geographical internet 23:37:52 <elliott> reminds me of that sysadmin story thing that maybe someone remembers 23:38:35 <oerjan> however i can connect from nvg to google.no just fine, so it's not _from_ all norwegian sites. 23:40:41 <elliott> well that just means that nvg have a different isp to you. 23:40:41 <oerjan> quite possibly just my isp, since when the failure started i couldn't reach norwegian sites either. 23:40:43 -!- copumpkin has joined. 23:40:48 <oerjan> yeah 23:40:54 <elliott> you're essentially using nvg as a router in place of your isp's :P 23:40:57 <elliott> or your isp's isp's 23:41:05 <oerjan> nvg is in the university network, almost certainly 23:41:13 -!- Jafet has joined. 23:41:30 <oerjan> which is in a sense norway's oldest isp, i think :P 23:42:06 <oerjan> or close to it 23:44:55 <oerjan> oh i reached liu.se 23:45:13 <elliott> How long until oerjan figures out we caged Scandinavia? 23:45:33 <oerjan> well i couldn't reach bbc earlier 23:45:45 <elliott> BBC: a Scandinavian institution. 23:45:49 <oerjan> still no haskell.org 23:46:06 <oerjan> elliott: well it was the first clearly european domain i tried 23:46:22 <oerjan> (outside norway) 23:46:24 <elliott> Heh 23:47:32 <oerjan> www.turku.fi failed 23:49:01 <oerjan> ok ku.dk works 23:50:48 <oerjan> it does indeed look distinctly scandinavian 23:51:36 <oerjan> hamburg.de fails 23:52:05 <oerjan> hm could it be that it depends on more than just country 23:52:27 <elliott> oerjan: It depends on the exact tangle of ISPs :P 23:52:38 <elliott> Cables and routers and blah blah blah. 23:52:59 <oerjan> oxford.ac.uk fails 23:53:24 <oerjan> elliott: i just realized all the working scandinavian ones were universities 23:53:46 <elliott> oerjan: maybe there's some sort of scandinavian university network thing 23:54:04 <oerjan> www.maersk.dk fails 23:54:10 -!- augur has quit (Remote host closed the connection). 23:54:23 <oerjan> elliott: that was what i was thinking, however i hadn't actually tested any non-universities 23:54:59 <elliott> oerjan: you could use nvg as an http proxy, if you'd like it fixed sooner rather than later 23:55:36 <oerjan> hm ikea.se fails but that's aliased to akamai something 23:55:36 -!- AndChat| has quit (Read error: Connection reset by peer). 23:55:43 <oerjan> heh 23:55:44 <elliott> Akamai is a content distribution network. 23:55:49 <elliott> They're not Scandinavian. :p 23:55:49 -!- DH____ has joined. 23:55:51 <elliott> oerjan: I wasn't joking 23:56:01 <elliott> Would take a few commands and a setting in IE 23:56:05 <oerjan> that was what i recalled, i think reddit uses them 23:56:12 <elliott> Yeah. 23:57:30 <oerjan> no hurry yet, i'll just read vg.no 23:57:30 -!- DH____ has quit (Read error: Connection reset by peer). 23:57:49 -!- DH____ has joined. 2011-09-20: 00:02:57 -!- pikhq has quit (Ping timeout: 240 seconds). 00:03:11 -!- pikhq has joined. 00:04:46 -!- DH____ has quit (Read error: Connection reset by peer). 00:06:03 <oerjan> wat wikipedia loaded 00:06:51 <oerjan> i guess it really is random 00:07:30 <elliott> <stdin>:17: trailing whitespace. 00:07:30 <elliott> 00:07:30 <elliott> warning: 1 line adds whitespace errors. 00:07:32 <elliott> Deewiant: help 00:08:00 <elliott> oh I see 00:11:09 <oerjan> now i can read about cheerful things like rhabdomyolysis 00:34:41 -!- DH____ has joined. 00:39:35 -!- augur has joined. 00:44:19 -!- DH____ has quit (Ping timeout: 260 seconds). 00:48:56 -!- DH____ has joined. 00:52:33 -!- Wamanuz2 has quit (Remote host closed the connection). 00:53:12 -!- Wamanuz2 has joined. 00:56:42 -!- Jafet has quit (Quit: Leaving.). 01:01:06 -!- Jafet has joined. 01:13:09 -!- elliott has quit (Read error: Connection reset by peer). 01:13:43 -!- elliott has joined. 01:14:34 -!- elliott has quit (Remote host closed the connection). 01:14:35 -!- elliott_ has joined. 01:16:23 -!- ive has joined. 01:31:43 -!- DH____ has quit (Read error: Connection reset by peer). 01:31:55 -!- DH____ has joined. 01:43:42 <Gregor> Haha, the hack to make the Zune give up its Zune UI and expose the underlying Windows CE UI works. 01:43:50 <elliott_> lol 01:44:24 <Gregor> But whereas the Zune UI makes one think "I want to kill myself", the Windows CE UI makes one think "I want to kill myself, but first kill my parents as punishment for bringing into this world someone who would one day own a Windows CE device." 01:44:39 <elliott_> `addquote <Gregor> But whereas the Zune UI makes one think "I want to kill myself", the Windows CE UI makes one think "I want to kill myself, but first kill my parents as punishment for bringing into this world someone who would one day own a Windows CE device." 01:44:41 <HackEgo> 673) <Gregor> But whereas the Zune UI makes one think "I want to kill myself", the Windows CE UI makes one think "I want to kill myself, but first kill my parents as punishment for bringing into this world someone who would one day own a Windows CE device." 01:45:13 <pikhq> Which CE UI? 01:45:25 <Gregor> pikhq: 6.0 01:45:54 <Gregor> (Whatever that means, I have no idea what the giant compendium of names for CE all mean) 01:46:01 <Gregor> It claims to be "Windows CE 6.0" 01:47:21 <Gregor> I mean, it basically looks like Windows 95, except then somebody decided to move all the buttons into the stupidest possible position. 01:47:36 <pikhq> So, something like http://upload.wikimedia.org/wikipedia/en/7/72/Wince50.PNG 01:48:14 <Gregor> It looks a bit more ... Idonno, something than that, but not much. 01:48:25 <pikhq> That's CE 5. 01:48:26 <Gregor> Like the systray is embossed, and the start menu actually says "start" 01:49:51 <Gregor> pikhq: Upon further investigation, it seems that they never bothered to make any changes to the "explorer" UI for Windows CE 6, since all of their CE 6 devices don't use it. 01:50:06 <Gregor> So although it's slightly different from that screenshot, it's not much. 01:50:27 <pikhq> There's also Pocket PC, Windows Mobile, and Windows Phone UIs for the damned OS. 01:50:40 <pikhq> Microsoft seems to love fucking with the UI. 01:50:54 <tiffany> and.. all of these are based on the same "micro"kernel? 01:50:57 <Gregor> Apparently Windows Mobile 6 is based on Windows CE 5 (logic) 01:51:07 <pikhq> tiffany: Yes, it's all CE. 01:51:12 <Gregor> Windows Phone 7 is based on Windows CE 6 (more logic) 01:51:32 <tiffany> (100mb of overhead isn't really too micro... :/) 01:51:50 <pikhq> Also, CE doesn't even claim to be a microkernel. 01:51:57 <tiffany> o.o 01:52:07 <Gregor> Still, what this gives me the ability to do is program for the Zune with GCC. 01:52:14 <Gregor> Bootloader, here I (don't) come! 01:52:19 <pikhq> And the overhead of CE is ~1 meg. Everything else on it, not so much. 01:57:00 <CakeProphet> so I think I've discovered a link between hammerspace and hammertime. 01:57:07 <CakeProphet> a 4-dimensional hammerspace-time continuum. 01:57:32 -!- Jafet has quit (Quit: Leaving.). 02:02:46 <Patashu> wooah 02:11:46 -!- variable has quit (Ping timeout: 252 seconds). 02:11:49 -!- invariable has joined. 02:17:55 -!- augur has quit (Remote host closed the connection). 02:19:52 <oerjan> > zip (1:2:undefined) [3,4] 02:19:53 <lambdabot> [(1,3),(2,4)*Exception: Prelude.undefined 02:20:01 <oerjan> > zip [3,4] (1:2:undefined) 02:20:02 <lambdabot> [(3,1),(4,2)] 02:21:34 <elliott_> ?check \f xs ys -> zipWith f xs ys == liftM2 f xs ys 02:21:34 <lambdabot> Overlapping instances for GHC.Show.Show (a -> b -> c) 02:21:34 <lambdabot> arising from a use... 02:21:47 <elliott_> ?check \xs ys -> zipWith (/) xs ys == liftM2 (/) xs ys 02:21:48 <lambdabot> "Falsifiable, after 2 tests:\n[2.25]\n[-1.2,-1.0]\n" 02:21:50 <elliott_> lame 02:21:58 <elliott_> > liftM2 f [a,b,c] [x,y,z] 02:21:59 <lambdabot> Ambiguous occurrence `a' 02:21:59 <lambdabot> It could refer to either `L.a', defined at <local... 02:22:02 <elliott_> >_< 02:22:06 <elliott_> > liftM2 f [L.a,b,c] [x,y,z] :: [Expr] 02:22:07 <lambdabot> Couldn't match expected type `b -> ()' 02:22:07 <lambdabot> against inferred type `Simpl... 02:22:13 <elliott_> gah 02:22:20 <CakeProphet> @undefine 02:22:38 <oerjan> elliott_: erm it's lame that the [] monad isn't the ZipList monad? 02:23:02 <elliott_> YES. 02:23:18 <oerjan> shocking. 02:23:47 <oerjan> ?check zipWith === liftM2 02:23:48 <lambdabot> Not in scope: `===' 02:23:49 <elliott_> btw you're still sure that ZipList is a monad? :P 02:24:04 <oerjan> i've never seen a proof that it isn't :P 02:26:19 <oerjan> > scanl1 (zipWith (const id)) ["abc", "defg", "hij", "klmno", "pqrs"] 02:26:20 <lambdabot> ["abc","def","hij","klm","pqr"] 02:26:42 <CakeProphet> uh... why would the zip 02:26:48 <CakeProphet> list have a different bind than a regular list? 02:27:05 <oerjan> CakeProphet: because it has a different Applicative 02:27:08 <CakeProphet> they're basically the same type, with the same functor. 02:27:18 <CakeProphet> oh... I didn't realize that would change the monad. 02:27:30 <oerjan> @src ap 02:27:31 <lambdabot> ap = liftM2 id 02:27:57 <oerjan> the Applicative is given by the Monad, conceptually 02:30:04 -!- invariable has changed nick to variable. 02:31:16 <CakeProphet> @pl ZipList fs <*> ZipList xs = ZipList (zipWith id fs xs) 02:31:16 <lambdabot> (line 1, column 27): 02:31:16 <lambdabot> unexpected "=" 02:31:16 <lambdabot> expecting variable, "(", "`", "!!", ".", operator or end of input 02:32:17 <CakeProphet> @pl (\fs xs -> ZipList (zipWith id (getZipList fs) (get ZipList xs)) 02:32:17 <lambdabot> (line 1, column 65): 02:32:17 <lambdabot> unexpected end of input 02:32:17 <lambdabot> expecting variable, "(", operator or ")" 02:32:21 <CakeProphet> @pl (\fs xs -> ZipList (zipWith id (getZipList fs) (get ZipList xs))) 02:32:22 <lambdabot> (ZipList .) . (. get ZipList) . zipWith id . getZipList 02:32:30 <CakeProphet> = liftM2 id 02:32:57 <CakeProphet> er... 02:32:58 <CakeProphet> :t get 02:32:59 <lambdabot> forall (m :: * -> *) s. (MonadState s m) => m s 02:33:01 <CakeProphet> wat 02:33:11 <CakeProphet> getZipList /= get ZipList 02:33:11 <oerjan> CakeProphet: on would be useful there 02:33:23 <oerjan> i don't think @pl uses that 02:33:51 <oerjan> also, @pl has no idea about most functions 02:33:58 <CakeProphet> right I mistyped. 02:33:59 <oerjan> and even less about types 02:34:39 <CakeProphet> so uh.... liftM2 = zipWith here? 02:34:44 <CakeProphet> the rest is just wrapper stuff. 02:34:54 <CakeProphet> :t liftM2 02:34:55 <lambdabot> forall a1 a2 r (m :: * -> *). (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r 02:34:57 <oerjan> yes 02:35:01 <CakeProphet> :t zipWith 02:35:01 <lambdabot> forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] 02:35:06 <CakeProphet> @src lifeM2 02:35:06 <lambdabot> Source not found. This mission is too important for me to allow you to jeopardize it. 02:35:09 <CakeProphet> @src liftM2 02:35:09 <lambdabot> liftM2 f m1 m2 = do { x1 <- m1; x2 <- m2; return (f x1 x2) } 02:35:47 <CakeProphet> uuuuh. 02:36:00 <CakeProphet> @src zipWith 02:36:00 <lambdabot> zipWith f (a:as) (b:bs) = f a b : zipWith f as bs 02:36:00 <lambdabot> zipWith _ _ _ = [] 02:36:59 <CakeProphet> perhaps if I stare long enough. 02:37:01 <CakeProphet> it will come to me. 02:37:07 <oerjan> > let ZipList l >>_ f = ZipList . diag . scanl1 (zipWith (const id)) $ map f l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in ZipList [1,2,3] >>_ flip replicateM "abcd" 02:37:07 <lambdabot> <no location info>: Parse error in pattern 02:37:11 <oerjan> oops 02:37:20 <oerjan> oh 02:37:45 <oerjan> > let ZipList l >>+ f = ZipList . diag . scanl1 (zipWith (const id)) $ map f l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in ZipList [1,2,3] >>+ ZipList . flip replicateM "abcd" 02:37:46 <lambdabot> Precedence parsing error 02:37:46 <lambdabot> cannot mix `>>+' [infixl 9] and `L..' [infixr... 02:38:09 <oerjan> > (0$0 >>=) 02:38:10 <lambdabot> The operator `GHC.Base.>>=' [infixl 1] of a section 02:38:10 <lambdabot> must have lower pr... 02:38:20 <oerjan> > let infixl 1 >>+; ZipList l >>+ f = ZipList . diag . scanl1 (zipWith (const id)) $ map f l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in ZipList [1,2,3] >>+ ZipList . flip replicateM "abcd" 02:38:21 <lambdabot> Couldn't match expected type `[a]' 02:38:21 <lambdabot> against inferred type `Control.A... 02:38:25 <CakeProphet> @undo liftM2 f m1 m2 = do { x1 <- m1; x2 <- m2; return (f x1 x2) } 02:38:25 <lambdabot> liftM2 f m1 m2 = m1 >>= \ x1 -> m2 >>= \ x2 -> return (f x1 x2) 02:38:30 <CakeProphet> @src zipWith 02:38:30 <oerjan> gah 02:38:30 <lambdabot> zipWith f (a:as) (b:bs) = f a b : zipWith f as bs 02:38:30 <lambdabot> zipWith _ _ _ = [] 02:38:38 <CakeProphet> uuuuuuh. 02:39:51 <CakeProphet> @@ @pl @undo liftM2 f m1 m2 = do { x1 <- m1; x2 <- m2; return (f x1 x2) } 02:39:51 <lambdabot> liftM2 = liftM2 02:39:53 <CakeProphet> ... 02:40:08 <CakeProphet> THANKS 02:40:11 <oerjan> CakeProphet: (<*>) = zipWith ($), for that applicative 02:40:56 -!- augur has joined. 02:41:15 <oerjan> > let infixl 1 >>+; ZipList l >>+ f = ZipList . diag . scanl1 (zipWith (const id)) $ map (getZipList . f) l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in ZipList [1,2,3] >>+ ZipList . flip replicateM "abcd" 02:41:16 <lambdabot> No instance for (GHC.Show.Show 02:41:16 <lambdabot> (Control.Applicative.Zip... 02:41:24 <oerjan> yay it types 02:41:31 <oerjan> > ZipList [1,2] 02:41:31 <lambdabot> No instance for (GHC.Show.Show (Control.Applicative.ZipList t)) 02:41:32 <lambdabot> arising ... 02:41:45 <oerjan> > let infixl 1 >>+; ZipList l >>+ f = ZipList . diag . scanl1 (zipWith (const id)) $ map (getZipList . f) l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in getZipList $ ZipList [1,2,3] >>+ ZipList . flip replicateM "abcd" 02:41:47 <lambdabot> ["a","ab","aac"] 02:42:04 <CakeProphet> um 02:42:09 <oerjan> hm 02:42:10 <CakeProphet> what is that even doing. 02:42:21 <oerjan> indeed, i did a monad too much 02:42:26 <oerjan> > let infixl 1 >>+; ZipList l >>+ f = ZipList . diag . scanl1 (zipWith (const id)) $ map (getZipList . f) l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in getZipList $ ZipList [1,2,3] >>+ ZipList . flip replicate "abcd" 02:42:27 <lambdabot> ["abcd"] 02:42:42 <oerjan> wat 02:43:52 <oerjan> oh right 02:44:08 <oerjan> > let infixl 1 >>+; ZipList l >>+ f = ZipList . diag . scanl1 (zipWith (const id)) $ map (getZipList . f) l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in getZipList $ ZipList [1,2,3] >>+ ZipList . flip take "abcd" 02:44:09 <lambdabot> "a" 02:44:22 <oerjan> > let infixl 1 >>+; ZipList l >>+ f = ZipList . diag . scanl1 (zipWith (const id)) $ map (getZipList . f) l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in getZipList $ ZipList [3,2,1] >>+ ZipList . flip take "abcd" 02:44:23 <lambdabot> "ab" 02:44:37 <CakeProphet> surely that's breaking a law. :P 02:45:05 <oerjan> the scanl1 part is intended to fix some breakage that _does_ arise otherwise 02:45:31 <CakeProphet> so uh, can you explain that function to me? 02:45:37 <CakeProphet> it's rather cryptic 02:45:51 <oerjan> well, for any monad, x >>= f = join (fmap f x) 02:45:59 <CakeProphet> ah 02:46:05 <oerjan> so most of that is to define join 02:46:24 <CakeProphet> zipWith (const id) just ignores the second list yes? 02:46:29 <CakeProphet> er, first one? 02:46:43 <oerjan> _almost_, but it uses it to truncate the _length_ 02:47:29 <CakeProphet> ah right. 02:47:32 <monqy> const id is the same as flip const 02:47:32 <lambdabot> monqy: You have 1 new message. '/msg lambdabot @messages' to read it. 02:47:39 <oerjan> intuitively, the join for this monad is taking the diagonal of a list of lists 02:47:41 <CakeProphet> monqy: yes I know. 02:47:42 <monqy> oh my 02:47:52 <CakeProphet> oerjan: neat. 02:48:08 * CakeProphet would not have come to that conclusion for... well ever. 02:48:37 <monqy> lambdabot doesn't send that in notice? shameful 02:48:44 <monqy> the message, I mean 02:49:08 <Gregor> Discovery: A giant tub of chicken livers = $1.19 02:49:31 <Gregor> I am going to make a /stupid/ amount of liver paste. 02:49:34 <CakeProphet> oerjan: so uh... is that it? Monad for ZipList? 02:49:35 <monqy> anyway yeah I forgot transformers wasn't included with ghc or something like that 02:49:36 <CakeProphet> or is something wrong? 02:49:51 <monqy> or a dependency of template-haskell or whatever the th package is 02:49:55 <oerjan> CakeProphet: i hope nothing's wrong with that scanl adjustment 02:49:58 <monqy> whichever 02:50:30 <oerjan> if you take the diagonal naively, there is sometimes something wrong with the third monad law 02:50:53 <monqy> which is that, and is the problem nontermination 02:51:19 <oerjan> monqy: do you see anything that could not terminate in that definition :P 02:51:40 <monqy> I don't know which it is! 02:51:42 <monqy> I also haven't been paying attention 02:51:56 <oerjan> > let infixl 1 >>+; ZipList l >>+ f = ZipList . diag . scanl1 (zipWith (const id)) $ map (getZipList . f) l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in getZipList $ ZipList [3,2,1] >>+ ZipList . flip take "abcd" 02:51:58 <lambdabot> "ab" 02:52:01 -!- calamari- has joined. 02:52:04 <oerjan> that one 02:52:15 <monqy> oh >>+ is bind? 02:52:18 <oerjan> yes 02:52:22 -!- calamari- has quit (Client Quit). 02:52:29 <oerjan> well, i hope so 02:52:46 <oerjan> it works to define the Applicative from it. even without the scanl1 part. 02:53:39 <CakeProphet> gotta check the laws 02:53:46 <oerjan> this is because the list of lists which arises from applicative use is always rectangular, so the scanl1 part has no effect 02:54:40 <oerjan> @do liftM2 id x y 02:54:41 <lambdabot> liftM2 id x y 02:54:43 <oerjan> bah 02:54:56 <oerjan> @src liftM2 02:54:56 <lambdabot> liftM2 f m1 m2 = do { x1 <- m1; x2 <- m2; return (f x1 x2) } 02:55:06 <oerjan> @undo do { x1 <- m1; x2 <- m2; return (f x1 x2) } 02:55:06 <lambdabot> m1 >>= \ x1 -> m2 >>= \ x2 -> return (f x1 x2) 02:55:38 <CakeProphet> is liftM2 = zipWith (with wrapping ignored) 02:55:48 <oerjan> @pl m1 >>= \ x1 -> m2 >>= \ x2 -> return (f x1 x2) 02:55:48 <lambdabot> (`fmap` m2) . f =<< m1 02:56:02 <oerjan> CakeProphet: yes 02:56:46 <oerjan> and that again = join (fmap ((`fmap` m2) . f) m1) 02:57:13 <CakeProphet> publish a paper now. :P 02:57:27 <oerjan> you may check that the argument of join is a rectangular list 02:57:32 <oerjan> no. 02:57:53 <oerjan> anyway this is surely known by everyone who has tried to define the monad before. 02:58:25 <CakeProphet> perhaps it's not very obvious and not a lot of people have figured it out 02:58:35 <oerjan> from that, if you put in f = (,), it will be obvious that join _has_ to take the diagonal elements to give the usual applicative. 02:58:54 <oerjan> because those are the only spots where the right values for the result arise 03:01:04 <oerjan> oh. another way to see it is that since the part inside is only functors, it is in fact the same expression you join as for the _usual_ [] monad 03:01:50 <oerjan> which is the list comprehension [[f x y | y <- m2]| x <- m1] 03:02:10 <CakeProphet> hmmm, I believe zipper is a monad. has anyone ever written this? 03:02:18 <CakeProphet> I mean it's pretty obvious... 03:02:25 <monqy> zipper, a monad? 03:02:30 <oerjan> *ZipList 03:02:32 <monqy> which zipper is this 03:02:36 <monqy> oh ziplist 03:02:42 <CakeProphet> no I'm talking about zippers. 03:02:46 <monqy> oh zippers 03:02:50 <oerjan> oh. 03:03:09 <oerjan> if you say so. 03:03:12 <CakeProphet> you could have multiple monad definitions I believe. >_> 03:03:15 <monqy> I've only heard about them being comonads? or something like that? 03:04:05 <monqy> I forget the definition of a zipper :( 03:04:06 <oerjan> it follows from all this that the join of a monad is determined from the applicative on "rectangular" m (m x) values. 03:04:42 <CakeProphet> an yes "rectangular" 03:05:13 <oerjan> which is a value of the form [[f x y | y <- m2]| x <- m1], where you use monad comprehensions instead of just lists, i think. 03:05:36 <CakeProphet> well if bind simply passed the current value of the zipper to the monadic function, would that break laws? 03:05:54 <CakeProphet> and then returned whatever the function returned. 03:05:57 <oerjan> except that these values only need Functor to construct them. 03:06:34 <CakeProphet> oh, yes it would... 03:06:39 <oerjan> CakeProphet: you are talking about actual zippers, not ziplists? 03:06:48 <CakeProphet> yes 03:07:05 <CakeProphet> well left identity and right identity work. 03:07:24 <oerjan> CakeProphet: wouldn't you need multiple holes? 03:07:33 <CakeProphet> why? 03:08:05 <oerjan> because x >>= f , where f is a function which produces zippers with their one hole in different places... 03:08:21 <oerjan> how do you combine that into just one hole. 03:08:24 -!- Jafet has joined. 03:08:35 <CakeProphet> f would only get called once 03:08:40 <CakeProphet> it literally just gets passed the current hole 03:08:44 <CakeProphet> and returns the return of bind. 03:08:53 <oerjan> ...oh. 03:09:07 <oerjan> um the current hole with a value, then. 03:09:10 <CakeProphet> yes. 03:09:23 <CakeProphet> don't zippers always have a current value? 03:09:33 <CakeProphet> data Zipper t = Zipper [t] t [t] 03:09:35 <CakeProphet> like so? 03:09:40 <oerjan> not necessarily... 03:09:42 <monqy> that's a zipper on lists 03:09:46 <CakeProphet> oh. 03:10:04 <CakeProphet> that's the only zipper I'm familiar with. 03:10:27 <monqy> well it's not the only zipper 03:11:25 <CakeProphet> ah right you could have data Zipper t = Zipper [t] [t] 03:11:29 <monqy> what 03:11:29 <CakeProphet> which would allow to possibility of empty. 03:11:34 <monqy> that's 03:11:35 <monqy> not what I meant 03:11:39 <monqy> zippers aren't just for lists 03:11:39 <CakeProphet> yes I know 03:11:45 <CakeProphet> I get what you said 03:11:48 <CakeProphet> this is a separate thought 03:12:14 <monqy> also for zippers 03:12:16 <monqy> on lists 03:12:17 <monqy> first 03:12:20 <monqy> what's your functor instance 03:12:21 <monqy> then 03:12:24 <monqy> what's your monad instance 03:12:25 <oerjan> anyway a zipper with a value, then you could splice >>= result in, i guess 03:12:34 <oerjan> oh _wait_ 03:12:38 -!- Jafet has quit (Client Quit). 03:13:02 -!- calamari has quit (Quit: Leaving). 03:13:04 <CakeProphet> data Zipper t = Zipper [t] t [t] 03:13:10 <CakeProphet> current (Zipper _ x _ ) = x 03:13:23 <oerjan> CakeProphet: problem, (>>=) :: Zipper t -> (t -> Zipper u), what if t is not ~ u 03:13:39 <oerjan> *CakeProphet: problem, (>>=) :: Zipper t -> (t -> Zipper u) -> Zipper u, what if t is not ~ u 03:13:41 <CakeProphet> ~ u? 03:13:45 <monqy> the same as u 03:13:58 <CakeProphet> oh, yes that is a problem. :P 03:14:01 <monqy> I forgot about dealing with types that way. I was going to illustrate the same problem but a different way 03:14:18 <monqy> by taking the functor instance and then showing how doing it his way with a good functor instance would break monad laws 03:14:29 <monqy> of course it's much easier to notice the types problem 03:14:30 <CakeProphet> so yeah that bind doesn't work 03:14:51 <CakeProphet> and doing a map over all of the values in the zipper doesn't work because each returned zipper can have different holes and such. 03:15:28 <CakeProphet> unless you just ignore that and concatenate their current values together while keeping the same location in the original zipper 03:15:31 <CakeProphet> if that makes sense. 03:16:49 <oerjan> you need to preserve the holes for the return x >>= f case 03:16:49 <CakeProphet> (Zipper l x r) >>= f = Zipper (map (current.f) l) (f x) (map (current.f) r) 03:17:57 <CakeProphet> I think that would work?? 03:18:30 <oerjan> what's current 03:18:40 <CakeProphet> current (Zipper _ x _ ) = x 03:18:49 <CakeProphet> return a = Zipper [] a [] 03:19:09 <CakeProphet> er 03:19:11 <oerjan> CakeProphet: (f x) doesn't have the right type 03:19:11 <CakeProphet> (f x) 03:19:13 <CakeProphet> isn't possible 03:19:13 <CakeProphet> yeah 03:19:26 <CakeProphet> (current.f) then 03:19:52 <CakeProphet> which I think satisfies left/right identity... somehow. 03:20:27 <CakeProphet> ...no 03:20:54 <CakeProphet> f (z) = [1,2,3] (current z) [1,2,3] 03:20:59 <CakeProphet> then the identities don't work. 03:22:14 <CakeProphet> return a >>= f = Zipper [] a [] 03:22:27 <CakeProphet> f a = Zipper [1,2,3] a [1,2,3] 03:23:22 <CakeProphet> my original definitioin for bind that only applied f to the current value would work if you had 03:23:34 <CakeProphet> data Zipper t a = Zipper [t] a [t] 03:23:40 <CakeProphet> but that's... probably not very useful. 03:23:58 <CakeProphet> also it has the wrong kind. 03:25:10 <elliott_> there is a genrric zipper monas 03:25:11 <elliott_> d 03:25:17 <oerjan> @let infixl 1 >>+; l >>+ f = diag . scanl1 (zipWith (const id)) $ map f l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] 03:25:18 <lambdabot> Defined. 03:25:26 <monqy> elliott_: a relievf 03:25:33 <monqy> whats the formal defintion of a ziepr 03:25:41 <elliott_> see http://conway.rutgers.edu/~ccshan/wiki/blog/posts/WalkZip3/ and previous posts 03:25:42 <monqy> im not know :( 03:26:24 <elliott_> http://okmij.org/ftp/continuations/zipper.html#traversable has simpler and more restricted generic zipper but i don't think it's a monad 03:26:37 <elliott_> blog posts i linked are sequel to that 03:26:44 <oerjan> @check (x >>+ f >>+ g) == ((x :: [Int]) >>+ \t -> (f t :: [Int]) >>+ g :: [Int]) 03:26:44 <lambdabot> Not in scope: `>>+'Not in scope: `>>+'Not in scope: `>>+'Not in scope: `>>+' 03:26:52 <oerjan> ffff 03:27:05 <CakeProphet> is there a name for monads that can't change type in their bind...... as in m a -> (a -> m a) -> m a 03:27:11 <oerjan> :t (>>+) 03:27:11 <lambdabot> forall a1 a. [a1] -> (a1 -> [a]) -> [a] 03:27:54 <oerjan> @check let infixl 1 >>+; l >>+ f = diag . scanl1 (zipWith (const id)) $ map f l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in (x >>+ f >>+ g) == ((x :: [Int]) >>+ \t -> (f t :: [Int]) >>+ g :: [Int]) 03:27:54 <monqy> CakeProphet: what 03:27:54 <lambdabot> Couldn't match expected type `[a]' 03:28:33 <monqy> CakeProphet: if you're going mathy you're dealing with the functor stuff with unit and join 03:28:40 <oerjan> :t let infixl 1 >>+; l >>+ f = diag . scanl1 (zipWith (const id)) $ map f l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in (x >>+ f >>+ g) == ((x :: [Int]) >>+ \t -> (f t :: [Int]) >>+ g :: [Int]) 03:28:41 <lambdabot> Couldn't match expected type `[a]' against inferred type `Expr' 03:28:41 <lambdabot> In the first argument of `(>>+)', namely `x' 03:28:41 <lambdabot> In the first argument of `(>>+)', namely `x >>+ f' 03:28:48 <oerjan> argh 03:28:58 <CakeProphet> monqy: as in a monad with the restriction that monadic functions applied to bind preserve the type of the monad. 03:29:01 <monqy> CakeProphet: and a functor from a category to itself is called an endofunctor i think?? 03:29:10 <oerjan> @check let infixl 1 >>+; l >>+ f = diag . scanl1 (zipWith (const id)) $ map f l where diag ((x:xs):xss) = x:diag (map (drop 1) xss); diag _ = [] in \x f g -> (x >>+ f >>+ g) == ((x :: [Int]) >>+ \t -> (f t :: [Int]) >>+ g :: [Int]) 03:29:11 <lambdabot> Overlapping instances for GHC.Show.Show 03:29:11 <lambdabot> (GHC.T... 03:29:25 -!- MDude has changed nick to MSleep. 03:29:41 <oerjan> BURN 03:29:55 <monqy> anyway i need to actually learn category theory 03:29:55 <monqy> but how 03:29:58 <monqy> :( 03:30:15 <CakeProphet> math Ph.D 03:30:20 <elliott_> oerjan: it tries to `show` couterexamples 03:30:23 <elliott_> counter 03:30:38 <elliott_> so inputs must have Show 03:30:44 <CakeProphet> > :t (`show`) 03:30:45 <lambdabot> <no location info>: parse error on input `:' 03:30:50 <CakeProphet> :t (`show`) 03:30:51 <lambdabot> parse error on input `)' 03:31:00 <pikhq> God, Windows must be a pain to develop. 03:31:06 <pikhq> They're up to 5 fucking APIs now. 03:31:27 <pikhq> DOS, Win16, Win32, CLR, and WinRT. 03:31:34 <oerjan> elliott_: some _idiot_ decided to overlap the function Shows :( 03:32:16 <CakeProphet> oerjan's conquest of monadic ziplist glory is met with fierce and imposing obsctacles. How will he proceed? 03:32:36 <SgeoN1> WinRT? 03:32:37 <oerjan> probably by banning everyone in the channel and going down in flames. 03:32:44 <monqy> how does function show even suposesd to work 03:32:44 <elliott_> oerjan: you can use quickcheck locally, but i am sceptical functions have a useful Arbitrary instance anyhow 03:33:02 <oerjan> elliott_: that's what CoArbitrary _is_ for 03:33:26 <CakeProphet> Arbitrary a where whatever :: a -> a -> Maybe a -> ???!?!?!!?!? 03:33:38 <elliott_> oerjan: oh 03:33:44 <SgeoN1> Argh I think I just may try to get Puppy Linux working, or something 03:34:04 <SgeoN1> This is painful. I can't get Lubuntu to boot into X 03:34:09 -!- hagb4rd has quit (Ping timeout: 240 seconds). 03:34:16 <SgeoN1> Oh, here we go 03:35:21 <CakeProphet> I like how do notation usually makes thing more annoying looking. 03:35:39 <CakeProphet> well... not usually 03:35:44 <CakeProphet> it makes the monad laws looks cumbersome. 03:35:57 <oerjan> food -> 03:35:57 <monqy> why are you donotationing the monad laws 03:36:11 <SgeoN1> How do I double check that casper is in use without rebooting? 03:36:33 -!- azaq23 has quit (Ping timeout: 240 seconds). 03:39:09 <CakeProphet> monqy: I'm not but haskellwiki does. 03:39:10 -!- azaq23 has joined. 03:39:16 <CakeProphet> under the section "practical meaning of the monad laws" 03:39:19 <monqy> :( 03:39:22 <CakeProphet> as if it makes it more practical or something. 03:39:25 <monqy> :( 03:39:41 <CakeProphet> "In this notation the laws appear as plain common sense." 03:40:18 <monqy> they only appear as plain common sense to me when they're pointfree :| 03:40:33 <CakeProphet> how do you write them pointfree... 03:40:37 <SgeoN1> Well, /proc/cmdline mentions persistent. That's a good sign right? 03:40:56 <monqy> CakeProphet: how do you write them in do-notation 03:41:10 <CakeProphet> http://www.haskell.org/haskellwiki/Monad_Laws 03:43:56 <monqy> return x >>= f ≡ f x; m >>= return ≡ m; (m >>= f) >>= g ≡ m >>= (f >>= g) 03:44:01 <monqy> happey?? 03:44:24 <CakeProphet> that's "point-free"? 03:44:31 <monqy> what did you expect 03:44:36 <CakeProphet> no points. 03:45:01 <monqy> oops!!! 03:45:10 <CakeProphet> @pl (\f x -> x >>= f) 03:45:10 <lambdabot> (=<<) 03:45:16 <coppro> haha 03:45:34 <CakeProphet> (=<<) = ($) 03:45:36 <CakeProphet> obviously 03:45:50 <CakeProphet> er wait 03:45:56 <CakeProphet> @pl (\f x -> return x >>= f) 03:45:56 <lambdabot> id 03:45:57 <CakeProphet> oops 03:46:00 <CakeProphet> id = ($) 03:46:03 <CakeProphet> there we go 03:46:42 <CakeProphet> @pl (\m -> m >>= return) 03:46:43 <lambdabot> id 03:46:51 <CakeProphet> id = id 03:46:55 <CakeProphet> is the second one 03:46:58 <CakeProphet> :P 03:47:08 <monqy> CakeProphet: if you'd like your "point-free" definitions, try section "But it doesn't look exactly like an "associative law"..." 03:47:26 <CakeProphet> yeah >=> make more sense for point freedom. 03:47:48 <CakeProphet> (return >=>) = id 03:47:55 <monqy> the haiku form is good 03:48:04 <CakeProphet> worst haiku ever. 03:48:10 <monqy> no it's good shut up 03:48:30 <CakeProphet> you have no taste in poetry 03:49:02 <CakeProphet> poeterry 03:49:06 <CakeProphet> pottery 03:50:48 -!- zzo38 has joined. 03:51:31 <zzo38> How much do you know about high-quality medieval clothing? (This question is for the D&D game, actually) 03:52:14 <monqy> extreme roleplaying? 03:52:32 <monqy> I'll never understand 03:53:05 <CakeProphet> zzo38: I am teh expert 03:53:11 <CakeProphet> monqy: know I think he wants to know for realism 03:53:15 <CakeProphet> not for LARPing or anything. 03:53:31 <zzo38> Yes, correct; it is not LARPing. 04:06:22 <monqy> curious, a spambot made a spam userpage, and then another spambot made a spam talk page for it, which looks like the original but with the links or something like that shuffled around a bit 04:07:21 <oerjan> the spambot mating dance 04:07:39 <oerjan> call david attenborough 04:10:17 -!- hagb4rd has joined. 04:10:51 -!- hagb4rd has quit (Client Quit). 04:11:52 -!- hagb4rd has joined. 04:12:53 -!- mike has joined. 04:13:19 -!- mike has changed nick to Guest99864. 04:13:50 <Guest99864> Hi all 04:15:48 <Gregor> `? welcome 04:15:49 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 04:17:41 <elliott_> hi 04:19:56 -!- MDude has joined. 04:21:17 <monqy> hi guest 04:23:46 -!- MSleep has quit (Ping timeout: 252 seconds). 04:25:43 -!- Guest99864 has quit (Quit: Page closed). 04:25:50 <elliott_> rip guest 04:26:19 -!- michaelh has joined. 04:26:28 -!- michaelh has quit (Client Quit). 04:26:41 <elliott_> rip same guy prolly 04:27:19 -!- oerjan has quit (Quit: rip to shreds). 04:30:19 -!- kmc has joined. 04:32:27 -!- michael1411 has joined. 04:37:42 -!- zzo38 has quit (Ping timeout: 252 seconds). 04:38:08 -!- zzo38_ has joined. 04:38:13 -!- zzo38_ has changed nick to zzo38. 04:39:54 <pikhq> What. If all Catholic bishops agree on a matter of faith and morals at any given time, it becomes the irrevocable, infallible, canonical belief of the Catholic Church forevermore. 04:40:12 <coppro> whee 04:40:39 <pikhq> I do believe this implies that it is official Catholic doctrine that the world is flat, and that disease is caused by miasma. 04:41:58 <elliott_> hard to prove that 04:42:01 -!- michael1411 has quit (Quit: Page closed). 04:42:08 <elliott_> also miasma isn't really a matter of faith and morals is it 04:42:11 <elliott_> maybe worldflatness 04:42:26 <pikhq> Okay, world flatness was treated as such, miasma not so much. 04:43:11 <elliott_> you just need to define faith and morals according to modern-day conception 04:43:17 <elliott_> in which the flatness of the world is not considered a matter of faith 04:43:18 <elliott_> tada 04:43:27 <pikhq> It was once, ergo it is forevermore. 04:43:43 <elliott_> it wasn't 04:43:56 <elliott_> it wasn't a matter of [modernday]faith and [modernday]morals 04:43:58 <hagb4rd> whats about the flatness of this insight, anyone found out yet? 04:44:03 <elliott_> where [modernday] indicates using today's definition 04:44:09 <elliott_> hagb4rd: so what was that ansi c dump stuff about 04:44:25 <hagb4rd> woa, you're scary elliott 04:44:28 <elliott_> wat 04:44:46 <hagb4rd> you are frightening me 04:44:54 <elliott_> how 04:45:18 <hagb4rd> with your britwa sharpened mind 04:45:25 <elliott_> wat 04:45:26 <hagb4rd> no 04:45:32 <hagb4rd> its out of topic now 04:45:58 <pikhq> It might also be infallible doctrine that Jesus did not walk the Earth, which produces some major headaches. 04:46:07 <elliott_> hagb4rd: you said you'd explain it later 04:46:12 <elliott_> it is now later, i'm askin' 04:46:21 <pikhq> (this is hard to tell, because it depends on heavily ambiguous records) 04:46:28 <elliott_> since I don't actually know what the context was it would be hard for me to steer the topic to that 04:46:40 <elliott_> but if you let me know what the context was I will make it on topic 04:47:00 <hagb4rd> i know..you can do that..that's right, but i want to discuss religion now 04:47:04 <hagb4rd> no 04:47:28 <elliott_> i don't see why your conversations in other channels would affect what you talk about in here 04:47:47 <pikhq> For instance, since it is claimed that the Church's authority comes from Jesus *as a person* bestowing it upon St. Peter, the first Pope, if it is also the case that it is claimed Jesus never existed then the Church goes up in a puff of logical smoke. 04:48:08 <hagb4rd> thery're all like, yes looking to say sth wise 04:48:17 <hagb4rd> but im out for sth true 04:48:22 <hagb4rd> can udig it? 04:48:34 <elliott_> hagb4rd: what? 04:48:42 <hagb4rd> so 04:48:44 <hagb4rd> ansic 04:49:02 <hagb4rd> i hate k&r style 04:49:50 <elliott_> what's the dump you were talking about 04:50:05 <hagb4rd> i've drunken to much to care bout now..i want to know more about jesus walking the earth now 04:50:29 <elliott_> you've drunken too much to make any sense, too 04:50:34 <hagb4rd> please focus on the mwean things 04:50:40 <elliott_> mwean? 04:50:44 <hagb4rd> and let me just shut up 04:51:09 <elliott_> pikhq: i think he wants you to talk about jesus 04:51:16 <hagb4rd> lol.. 04:51:26 <pikhq> hagb4rd: Well, it's kinda interesting; the writings of Paul (the first Christian records we have *at all*) do not seem to claim that Jesus was anything but a supernatural spirit. The concept of Jesus as a human being seems to have only come about decades later. 04:51:33 <hagb4rd> thx elliott, please dont get mad bout this 04:51:52 <elliott_> why would i get mad 04:53:04 <hagb4rd> jesus, yes.. he was human 04:53:11 <hagb4rd> and that is fantastic 04:53:32 <hagb4rd> more than beeing able to speak with fish.. like seaman does 04:53:42 <elliott_> `addquote <hagb4rd> jesus, yes.. he was human <hagb4rd> and that is fantastic <hagb4rd> more than beeing able to speak with fish.. like seaman does 04:53:43 <HackEgo> 674) <hagb4rd> jesus, yes.. he was human <hagb4rd> and that is fantastic <hagb4rd> more than beeing able to speak with fish.. like seaman does 04:54:04 <monqy> reminded me of itidus there 04:54:29 <monqy> is that what drunken does 04:57:28 -!- DH____ has quit (Read error: Connection reset by peer). 04:57:39 -!- DH____ has joined. 04:58:41 <zzo38> I think () is final objects in Hask but are there initial objects? But I don't really know for sure, I don't really know a lot of things about category theory 05:00:43 <zzo38> Is newtype an isomorphism? 05:09:04 <zzo38> It says it isn't inital or terminal because of undefined. 05:09:11 <elliott_> who's it 05:10:05 <zzo38> But, is it, if you ignore undefined, and work only with fully defined programs? 05:27:14 <Gregor> Now, in spite of Windows CE's abysmal UI, the combination of that and an FTP server is making the Zune approach being a sufferable device. 05:27:23 <Gregor> At least I can get media to it without booting Windows. 05:27:27 <Gregor> (Except on it :P ) 05:41:23 <pikhq> Now get Rockbox on it. 05:43:05 <Gregor> If there was Rockbox for Windows CE, that would be great. 05:43:13 <Gregor> But I don't think they have Rockbox-as-an-app. 05:43:26 <Gregor> And I'm sure as hell not figuring out how to chainload this thing :P 05:44:22 -!- Zuu has quit (Read error: Connection reset by peer). 05:49:22 -!- Zuu has joined. 05:49:31 -!- Zuu has quit (Changing host). 05:49:31 -!- Zuu has joined. 05:52:57 <elliott_> ?hoogle Bool -> Maybe a -> Maybe a 05:52:58 <lambdabot> Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a 05:52:58 <lambdabot> Data.Maybe fromMaybe :: a -> Maybe a -> a 05:52:58 <lambdabot> Control.Monad unless :: Monad m => Bool -> m () -> m () 06:03:32 -!- azaq23 has quit (Quit: Leaving.). 06:05:12 -!- CakeProphet has quit (Ping timeout: 252 seconds). 06:22:17 <zzo38> I think I managed to make it derive instances of Language.Haskell.Syntax.TH.Lift 06:39:23 <zzo38> I think this is wrong: z' = foldl AppE x'' $ map (AppE (VarE 'lift) . VarE) z; 06:39:50 <zzo38> Because I need to apply AppE in the generated code, too. 06:43:43 -!- cheater has quit (Ping timeout: 252 seconds). 06:44:40 <monqy> why would you want to derive Lift? dataToExpQ/dataToQa are good enough for converting simple data things, and for anything else, I imagine a manual instance would be necessary 06:45:36 <monqy> like if you want antiquotation you'd either need a manual instance or I guess you might be able to make an automated derivation that handled antiquotation cases maybe??? 06:47:50 <monqy> where by hnadled antiquotation cases I mean you give it a constructor and it treats the contents in a special way (if it handles Exp, leave as-is; for String, use haskell-src-exts or something) 06:48:20 <monqy> or you could one where the user provides such cases and you could prepackage an antiquotation one 06:48:22 <zzo38> Actuallyy I fixed the deriving Lift, now it works. 06:48:26 <monqy> ok 06:48:42 <monqy> then again you'd rpobably just be able to do what i described with dataToQa but I forget how it works 06:48:49 <zzo38> For example, if you declare deriveLift ''Ordering; then you can have $(lift LT) = LT 06:49:00 <monqy> since it's syb and syb is all about the sort of things I described 06:49:14 <zzo38> It works with constructors having parameters, too. 06:49:32 <monqy> zzo38: have you ever used dataToExpQ or dataToQa? 06:49:35 <monqy> zzo38: or syb? 06:49:39 <monqy> zzo38: you may find syb interesting 06:50:14 <zzo38> I also managed to make extractQ :: Q a -> a; it does work in many cases (in the cases that it doesn't work, you either get the error "No value in Quasi" or "Cannot perform I/O") 06:50:33 <zzo38> extractQ works with lift and with [| ... |] 06:50:48 <monqy> ooh 06:51:08 <zzo38> It also works with report although the result will always be () 06:52:38 <zzo38> monqy: No, I have never heard of dataToExpQ, dataToQa, or syb. 06:53:19 <monqy> dataToExpQ takes any instance of Data and converts it to Q Exp 06:53:45 <zzo38> O, OK. 06:53:46 <monqy> dataToQa requires a bit more work but you can do more with it 06:54:00 <monqy> they're implemented with syb, a generic programming library thing 06:54:30 <zzo38> Well, mine just derives instances, and it does not have to already be an instance of anything else. However, its parameters must be instances of Lift. 06:56:29 <monqy> does reify tell anything about the instances of types? what I'm getting at: if there are parameters not instances of Lift, could you derive instances for them? 06:57:39 -!- cheater has joined. 06:57:41 <zzo38> monqy: The parameters might be variable types, though. 06:57:56 <monqy> ah, right 06:59:20 <zzo38> This is the program I used, and maybe it is too long; is there shorter way to derive Lift? http://hpaste.org/51559 07:01:44 <zzo38> The extractQ uses the Maybe monad, in which most things it cannot implement are Nothing, except runIO which is an error. 07:01:52 <zzo38> extractQ = maybe (error "No value in Quasi") id . runQ; 07:04:12 -!- GreaseMonkey has joined. 07:12:51 -!- itidus21 has joined. 07:13:23 <zzo38> I have the module "ExtraTH" with various things related to Template Haskell, these are exports: newVar, newVarMany, newCon, foreign_export, genCurry, genUncurry, extractQ, QuasiState(..), quasiState, recUpd, deriveLift. (Later I might add more) These are instances: instance Quasi Maybe; instance Quasi (State QuasiState); Instance MonadIO Q; 07:15:53 <elliott_> oh monqy did 07:15:54 <elliott_> an talkify 07:16:07 <itidus21> monqy c 07:16:20 <elliott_> "monqy c" --itidus21 07:17:50 <zzo38> Is there some way to add fields to QuasiState to allow reify and recover and classInstances to be usable in the state monad? 07:18:07 <monqy> hi 07:18:54 <itidus21> (define (tidus x) (* x x x)) (tidus 5) == 125 ... proof i have been reading some SICP ^_^; 07:19:32 <elliott_> yay 07:21:56 <itidus21> i didnt intend to make that second pun of "monqy did, monqy c" "tidus x" 07:22:48 <itidus21> and i do feel kind of guilty for that unprovoked comment 07:23:58 <elliott_> Has anyone used HsOpenSSL? 07:24:09 <elliott_> itidus21: It is totally disallowed to make comments without provoking. 07:24:15 <elliott_> This is why IRC is constantly silent forever. 07:24:59 <itidus21> where do people go to screw around on irc? 07:25:43 <itidus21> dumb question as i don't really want an answer 07:26:12 <itidus21> best if we don't know where we screw around.. seinfeld world colliding theory 07:28:32 <elliott_> the answer is here. 07:28:40 <itidus21> heh 07:28:49 <elliott_> http://esolangs.org/wiki/Special:Recentchanges uh oh 07:29:37 <monqy> oh no it's more of that userpage then usertalk page nonsense 07:29:45 <elliott_> is this a spambotloop... 07:30:05 <monqy> one of these guys made a spam talkpage for someone without a userpage 07:30:10 <elliott_> :') 07:30:13 <elliott_> so thoughtful 07:30:24 <elliott_> i'm sure it says like 07:30:25 <elliott_> hello 07:30:25 <monqy> is 123 even a user 07:30:26 <elliott_> in spambot 07:30:38 <elliott_> http://esolangs.org/wiki/Special:Contributions/123 07:30:40 <monqy> 123 has never made changes at least... 07:30:41 <elliott_> apparently>??? 07:30:41 <monqy> yeah 07:36:49 <monqy> at least one of them got put inside one of those special boxes that is monospace and doesn't linewrap... 07:36:58 <monqy> now my horizontal scrollbar.... 07:37:02 <elliott_> lnike... 07:37:03 <elliott_> i want to 07:37:04 <elliott_> see.... 07:37:06 <elliott_> the bxoxoe 07:37:09 <monqy> http://esoteric.voxelperfect.net/wiki/User:Zhanzhan 07:37:18 <monqy> its bauteful 07:37:20 <elliott_> poor zhanzhan 07:37:31 <monqy> hedid toh..e..himself 07:37:49 <monqy> poor zahnzhan ;__; 07:37:55 <elliott_> ;__; 07:42:39 <zzo38> I want to know about the highest quality of medieval clothing for the purpose of D&D game. I already know the color, it is yellow and orange. What I don't know is materials (the DM doesn't know either). 07:42:53 <elliott_> im the best 07:42:56 <elliott_> mediveal ;__; 07:46:00 <zzo38> He just made up the color, and said it is otherwise like highest quality fashion medieval clothing. 07:48:44 <zzo38> Do you know about that kind of things? 07:51:37 <zzo38> The situation is, the navy probably thinks we were nobility but doesn't actually know where we came from (we were actually caught and enslaved, and escaped, and eventually found by the navy). 07:54:08 <zzo38> Is this good class improvement file? http://zzo38computer.cjb.net/dnd/options/Metamind.c 07:56:24 <zzo38> The other class improvement file is this one: http://zzo38computer.cjb.net/dnd/options/Illithid_Savant.c (Note: I plan to add a few more things under "Extras"; such as the "Impostor" ability) (Note: the "Extras" must be selected and learned individually and are limited per day) 08:01:34 <elliott_> ?hoogle lift 08:01:34 <lambdabot> Control.Monad.Trans lift :: (MonadTrans t, Monad m) => m a -> t m a 08:01:34 <lambdabot> Text.ParserCombinators.ReadPrec lift :: ReadP a -> ReadPrec a 08:01:34 <lambdabot> Language.Haskell.TH.Syntax lift :: Lift t => t -> Q Exp 08:01:58 <zzo38> elliott_: The one I used is Language.Haskell.TH.Syntax 08:02:13 <elliott_> zzo38: I actually did that in response to unrelated #haskell chat :P 08:02:15 <elliott_> as in, unrelated to your code 08:02:25 <zzo38> OK. 08:02:53 <zzo38> But do you know if my code for deriving Lift could be made shorter? 08:03:22 <elliott_> dunno 08:03:49 <zzo38> It seem to be too long, but I don't know if it is really too long 08:05:59 <zzo38> It does work how it is now, so that deriveLift ''Ordering; allows you to do $(lift EQ) and it work. 08:07:10 <zzo38> And do you know any information related to my question about the clothing? 08:11:53 -!- ive has quit (Quit: leaving). 08:15:46 -!- copumpkin has quit (Ping timeout: 260 seconds). 08:16:11 -!- copumpkin has joined. 08:19:35 -!- zzo38 has quit (Remote host closed the connection). 08:46:34 -!- CakeProphet has joined. 08:55:21 -!- aloril has quit (Ping timeout: 240 seconds). 09:08:13 -!- cheater_ has joined. 09:08:44 -!- aloril has joined. 09:21:03 -!- cheater_ has quit (Remote host closed the connection). 09:21:20 -!- cheater_ has joined. 09:23:15 -!- monqy has quit (Quit: hello). 09:29:56 -!- cheater_ has quit (Remote host closed the connection). 09:30:33 -!- cheater_ has joined. 09:34:38 -!- cheater_ has quit (Client Quit). 09:41:45 -!- cheater_ has joined. 09:42:53 -!- cheater_ has quit (Client Quit). 09:43:21 -!- cheater_ has joined. 09:45:15 -!- cheater has changed nick to cheater2. 09:45:30 -!- cheater_ has changed nick to cheater. 09:56:08 -!- cheater has quit (Quit: Ex-Chat). 09:56:38 -!- cheater has joined. 10:51:56 <CakeProphet> is there a convenient bash command to wrap an input at a certain line length? 10:52:44 -!- GreaseMonkey has quit (Quit: The Other Game). 10:55:49 <elliott_> yes. in fact HackEgo uses it. 10:55:55 <elliott_> unfortunately its name escapes me- 10:55:56 <elliott_> oh 10:55:56 <elliott_> fmt 10:55:57 -!- Jafet has joined. 10:56:03 <elliott_> CakeProphet: ps. it's not "bash command" 10:56:33 <CakeProphet> what is the palatable terminology around these parts? 10:56:38 <elliott_> unix command? 10:56:38 <CakeProphet> shell utility? 10:56:41 <elliott_> program? 10:56:49 <elliott_> it's hardly specific to bash. 10:57:31 <CakeProphet> I decided to just do a byte cutoff with head 10:57:41 <CakeProphet> instead of wrapping lines and cutting by line. 10:57:52 <elliott_> fmt -w width 10:57:54 <elliott_> job done 11:00:04 <CakeProphet> also I keep forgetting... 11:00:13 <CakeProphet> how to redirect stderr to stdout 11:00:20 <CakeProphet> 1>&2 or something? 11:00:24 <CakeProphet> er 11:00:28 <CakeProphet> swap the 2 and 1 I think 11:00:51 <elliott_> yes. 11:00:54 <elliott_> (swap) 11:01:03 <CakeProphet> and that can be done before a pipe? 11:01:08 <CakeProphet> 1>&2 | ... 11:01:24 <elliott_> you forgot the swap. 11:01:25 <elliott_> and yes. 11:01:52 <CakeProphet> ghci -v0 < inp 2>&1 11:01:54 <CakeProphet> that looks strange to me. 11:02:00 <CakeProphet> is that valid? 11:02:20 <elliott_> of course it is. 11:02:27 <elliott_> what are you doing? 11:02:33 <CakeProphet> working on my IRC bot. 11:03:35 <CakeProphet> specifically giving :t and > proper cutoffs. 11:03:49 <elliott_> that ghci command is ridiculously unsafe. 11:04:25 <CakeProphet> is it? I guess if someone were to, say, edit inp in the split second opportunity they have to do so. 11:05:11 <elliott_> why are you even doing it via a file 11:05:17 <elliott_> why are you even involving the shell 11:05:30 <elliott_> your language has perfectly good process spawning/pipe utilities, use them 11:06:23 <CakeProphet> well I guess I could use :m instead of :l 11:06:33 <CakeProphet> open my $f, '>inp'; print $f ":l botload.hs\n:t $1"; close $f; my $msg = qx/ghci -v0 < inp 2>&1 | head -n 3/; 11:06:55 <CakeProphet> :l contains a bunch of imports. I basically borrowed it from mueval. 11:06:58 <CakeProphet> er 11:07:00 <CakeProphet> botload.hs I mean 11:07:21 <CakeProphet> yes I realize the security issue with that. 11:07:28 <fizzie> There's a bash shorthand of "blah |& bleh" to do "blah 2>&1 | bleh". 11:07:59 <fizzie> Not sure if I'd use it, but it exists. 11:08:02 <elliott_> CakeProphet: how much unix programming do you actualy know 11:08:06 <CakeProphet> elliott_: can you recommend a better way? 11:08:10 <CakeProphet> elliott_: a little. 11:08:16 <elliott_> you're using a temporary file and the shell there for absolutely no reason, just exposing yourself to holes and wasting time 11:08:35 <elliott_> i don't know perl, look up how it does processes and pipes, they are not difficult concepts\ 11:08:40 <elliott_> s/\\// 11:09:44 <fizzie> The "simple" pipe-open won't cut it if you also want to capture the output of ghci. 11:10:09 <fizzie> (Otherwise it would be open my $f, '|-', "ghci -whatver -it -needs -to -read -stdin -if -anything"; print $f whatever; or some-such.) 11:10:57 -!- coppro has quit (Ping timeout: 258 seconds). 11:11:02 <fizzie> The IPC::Open2 provides a two-pipe 'open2' solution, though it can easily deadlock if it's used with unfriendly processes. 11:11:09 <elliott_> Nice. 11:11:14 -!- coppro has joined. 11:11:33 <CakeProphet> capturing the output would just be read $f right? 11:11:43 <elliott_> <fizzie> The "simple" pipe-open won't cut it if you also want to capture the output of ghci. 11:11:44 <fizzie> Pipes only go one way. 11:11:58 <CakeProphet> erm...? 11:12:05 <fizzie> Well, except Solaris pipes, those are bidirectional. 11:12:39 <fizzie> open my $f, '|-', "ghci ..." attaches the $f handle to the write end of a pipe that is connected to the stdin of ghci. 11:12:43 <fizzie> You can't read from it. 11:12:49 <CakeProphet> I'm almost positive I've written code in which I piped stdin of something to my programs' stdout, and then read from the process.. 11:12:55 <CakeProphet> aaah 11:15:17 <fizzie> While $foo = qx/.../; does what's basically equivalent to open my $h, '-|', "..."; $foo = join('', <$h>); close $h; (Note '-|' as opposed to '|-' -- there is no '|-|' because open can't return more than one handle.) 11:15:26 <fizzie> I guess it might capture stderr too. 11:15:40 <CakeProphet> only if I redirect it. 11:16:23 <CakeProphet> so could I echo inp | ghci ... then? 11:16:32 <CakeProphet> inp being a string not a file 11:16:40 <fizzie> If you want to have shell injection problems, sure. 11:16:41 <CakeProphet> and then read that? 11:16:45 -!- ais523 has joined. 11:16:54 <CakeProphet> how would something be injected? 11:17:19 <fizzie> By inputting the string "haha | rm -rf ~/* | echo hehe", for example? 11:18:01 <CakeProphet> oh... right./ 11:18:32 <CakeProphet> I don't really see an issue with using shell as there's no IRC-side exploits... 11:18:58 <elliott_> hi ais523 11:19:05 <ais523> hi elliott, hi underscore 11:19:19 <fizzie> If you're shell-command-line-executing untrusted input without quoting it, that's certainly a problem. I haven't really been following the context here. 11:20:05 <CakeProphet> I'm writing to files and then using those files as input to shell commands 11:20:23 <CakeProphet> the exploit would be that someone can modify the files on my side, but not from IRC. 11:21:37 <fizzie> If you don't mind the temporary file, that's certainly doable. You can get by without, though. 11:22:31 <CakeProphet> elliott_ minds but I don't. 11:34:02 -!- nooga has joined. 11:34:10 <nooga> PURN 11:34:35 <elliott_> Purn yourself. 11:38:06 <nooga> http://www.urbandictionary.com/define.php?term=Purn 11:38:15 <elliott_> No. 11:39:07 <nooga> Why? 11:39:10 <fizzie> Trokdor the purninator. 11:39:47 <CakeProphet> mueval doesn't read stdin... 11:39:48 <nooga> lamża 11:42:58 <elliott_> CakeProphet: of course not, mueval uses the ghc api. 11:43:42 <CakeProphet> my $msg = qx/mueval -Ee "`cat inp`" | head -c 100/; 11:43:49 <CakeProphet> so this code doesn't disgust you in any way? 11:43:50 <CakeProphet> I mean 11:43:55 <CakeProphet> besides being perl. 11:44:10 <elliott_> It needlessly invokes the shell. 11:44:46 <CakeProphet> ....that's kind of like, a thing perl is good at though. OPEN REQUIRES MORE TYPING. 11:46:39 <CakeProphet> when is it not needless to invoke the shell? 11:47:06 -!- elliott_ has quit (Remote host closed the connection). 11:47:10 -!- elliott has joined. 11:53:01 <elliott> hi 11:53:07 <CakeProphet> hi 11:53:11 <elliott> hi 11:53:32 <nooga> hi hi hi\ 11:53:49 <elliott> hi 12:01:54 <CakeProphet> > runST (do { x <- newSTRef; writeSTRef x "hello"; read STRef x}) 12:01:55 <lambdabot> Not in scope: data constructor `STRef' 12:01:59 <CakeProphet> > runST (do { x <- newSTRef; writeSTRef x "hello"; readSTRef x}) 12:02:00 <lambdabot> Couldn't match expected type `GHC.ST.ST s a' 12:02:00 <lambdabot> against inferred type ... 12:02:07 <CakeProphet> > runST (do { x <- newSTRef "hi"; writeSTRef x "hello"; readSTRef x}) 12:02:07 <lambdabot> "hello" 12:02:33 <CakeProphet> mueval doesn't import ST. 12:02:39 <CakeProphet> I'd have to hack the source to allow it to do such. 12:04:08 <nooga> heh 12:04:41 <CakeProphet> is ST inherently magical or is it implemently with pure code? 12:04:43 <nooga> mueval;O 12:04:49 <CakeProphet> I see it uses State# but I don't really know how that works. 12:05:45 <CakeProphet> :t ST 12:05:45 <lambdabot> Not in scope: data constructor `ST' 12:05:52 <CakeProphet> ah it doesn't export that. 12:11:35 <nooga> :-> 12:14:25 <elliott> CakeProphet: ST can be implemented with unsafeCoerce. 12:14:37 <elliott> or ... IORefs :P 12:14:45 <elliott> and unsafePerformIO for runST 12:14:57 <CakeProphet> erm, how would IORefs work outside of IO? 12:14:59 <elliott> but ofc unsafePerformIO + IORefs gives you unsafeCoerce 12:15:02 <elliott> CakeProphet: they wouldn't 12:15:08 <elliott> newtype ST s a = ST (IO a) 12:15:14 <elliott> runST :: (forall s. ST s a) -> a 12:15:18 <elliott> runST (ST a) = unsafePerformIO a 12:15:20 <CakeProphet> oh uh... 12:15:27 <CakeProphet> that kind of defeats the purpose of ST though. 12:15:30 <elliott> no it doesn't 12:15:35 <elliott> it's just as pure from the outside 12:16:17 <CakeProphet> runST $ ST (readFile "/etc/passwd") 12:16:19 <CakeProphet> um? 12:16:41 <elliott> yeah because you naturally export the ST constructor, as we're operating under the assumption that the implementer is a fucking moron apparently 12:16:56 <elliott> this coming minutes after you realise that the GHC implementation doesn't export the constructor either 12:17:32 <CakeProphet> extra vitriolic today are we? 12:18:24 <elliott> i'm not ruling out the possibility that the implementer is a fucking moron, it's true that I didn't consider it 12:18:33 <elliott> that definitely _would_ break referential transparency. 12:20:42 <CakeProphet> I simply didn't consider that ST would be hidden and so it wouldn't matter. >_> 12:20:55 <CakeProphet> plz don't rip my head off. 12:21:05 <Jafet> But GHC implements IO using ST! 12:21:16 <Jafet> Where is your GoD now. 12:21:24 <CakeProphet> no I believe it uses State# right? 12:21:35 <CakeProphet> >_> or? 12:22:16 <Jafet> >_> <_< 12:22:36 <elliott> hmm, why isn't (IO a -> ST RealWorld a) in Control.Monad.ST 12:22:49 <CakeProphet> unsafeSTToIO :: ST s a -> IO a 12:22:49 <CakeProphet> unsafeSTToIO (ST m) = IO (unsafeCoerce# m) 12:22:50 <elliott> you couldn't exploit it without something else unsafe, so it's perfectly fine 12:22:53 <CakeProphet> apparently. 12:23:10 <elliott> CakeProphet: IO is implemented identically to ST, but neither in terms of the other. 12:23:18 <elliott> IO just fixes s = RealWorld. 12:23:19 <CakeProphet> right that's what I thought. 12:23:51 <CakeProphet> stToIO :: ST RealWorld a -> IO a 12:23:52 <CakeProphet> stToIO (ST m) = IO m 12:23:57 <CakeProphet> fun stuff. 12:24:21 <elliott> stToIO and unsafeIOToST are rather useful. 12:25:15 <elliott> Jafet: You should solve my Template Haskell library linking issue, it'd be great 12:25:31 <Jafet> I should? If I could, I would! 12:25:53 <CakeProphet> stToIO :: ST RealWorld a -> IO a 12:25:54 <CakeProphet> stToIO (ST m) = IO m 12:26:04 <CakeProphet> couldn't this be used to create side-effects in ST? 12:26:22 <elliott> CakeProphet: How? 12:26:30 <CakeProphet> er I mean ioToST 12:26:34 <elliott> Jafet: Maybe you can, you don't even know what it is yet 12:26:47 <elliott> CakeProphet: there is no ioToST 12:26:54 <CakeProphet> ioToST :: IO a -> ST RealWorld a 12:26:55 <CakeProphet> ioToST (IO m) = (ST m) 12:26:58 <CakeProphet> must not be exported 12:27:06 <elliott> unsafeIOToST is 12:27:15 <CakeProphet> unsafeIOToST :: IO a -> ST s a 12:27:16 <CakeProphet> unsafeIOToST (IO io) = ST $ \ s -> (unsafeCoerce# io) s 12:27:18 <CakeProphet> :) 12:27:20 <itidus21> `log what is love 12:27:21 <elliott> ioToST cannot be used to create usable side-effects in ST 12:27:24 <elliott> look at runST's type 12:27:31 <elliott> "s" must be universally quantified 12:27:36 <elliott> ioToST fixes it at RealWorld 12:27:40 <HackEgo> 2008-02-28.txt:21:21:36: <slereah_> What is love? 12:27:44 <CakeProphet> ah 12:27:52 <Jafet> unsafeIOToST :: IO a -> forall s. ST s a 12:27:55 <Jafet> Good luck 12:27:56 <CakeProphet> so you have to use stToIO 12:28:11 <CakeProphet> to get sideeffects 12:28:32 <elliott> I guess ioToST introduces unsafety, actually 12:28:53 <elliott> because (stToIO st) is a pure computation without the unsafe functions 12:28:56 <elliott> ioToST breaks that 12:29:22 -!- cheater has quit (Ping timeout: 240 seconds). 12:29:42 <CakeProphet> yes that's what I was originally thinking. 12:29:48 <Jafet> You need unsafeIOToST to add new primitives to ST 12:29:55 -!- cheater2 has quit (Ping timeout: 258 seconds). 12:30:33 <CakeProphet> ioToST (readFile "/etc/passwd") 12:30:36 <CakeProphet> no need to add new primitives. 12:30:36 <elliott> Jafet: indeed 12:31:24 <Jafet> /etc/passwd should be read into oleg's existentially quantified configuration typeclass, you oaf 12:31:30 <CakeProphet> still you have to convert back to IO at some point to actually get the side-effects. 12:31:41 <CakeProphet> I think. 12:32:50 <CakeProphet> in any case ioToST isn't exported. 12:34:07 <CakeProphet> and can't be implemented without the ST constructor. 12:34:55 <elliott> Sure it can. 12:35:01 <CakeProphet> not safely I mean... 12:35:02 <elliott> unsafeIOToST is trivially specialised to ioToST. 12:36:17 <elliott> Jafet: I'm disappointed in you 12:37:04 <CakeProphet> hmmm what new ST primitives would be nice. 12:37:22 <CakeProphet> STMtoST? 12:37:34 <CakeProphet> forkST :P 12:37:54 <elliott> CakeProphet: https://github.com/ehird/vault/blob/master/src/Data/Vault/ST.hs#L43 12:38:33 <CakeProphet> why do you use unsafe things so much. 12:38:55 <elliott> See https://github.com/ehird/vault/blob/master/src/Data/Vault/ST.hs#L6 12:39:02 <elliott> It already used unsafeCoerce, I just made it usable from ST 12:39:07 -!- cheater has joined. 12:39:12 <CakeProphet> why do you use unsafe things so much. 12:39:13 <elliott> Which involved introducing the newUnique primitive into ST. 12:39:16 <elliott> CakeProphet: 12:39:18 <elliott> <elliott> See https://github.com/ehird/vault/blob/master/src/Data/Vault/ST.hs#L6 12:39:18 <elliott> <elliott> It already used unsafeCoerce, I just made it usable from ST 12:39:20 <elliott> <elliott> Which involved introducing the newUnique primitive into ST. 12:39:23 <CakeProphet> "oh because I already used unsafe things" is not an acceptable answer :P 12:40:20 <elliott> CakeProphet: I didn't 12:40:28 <elliott> Note the "forked from HeinrichApfelmus/vault" 12:40:38 <CakeProphet> ah 12:40:48 <elliott> CakeProphet: And using {ST,IO}Refs would result in a vastly slower implementation. 12:40:56 <CakeProphet> still it doesn't explain why you use unsafe things so much. 12:41:05 <CakeProphet> efficiency? 12:42:16 -!- sllide has joined. 12:42:19 -!- Phantom_Hoover has joined. 12:42:59 <elliott> CakeProphet: Because I do interesting things 12:44:24 <CakeProphet> ah the Keys are typed and that's why the vault doesn't have to contain values of one type. 12:44:27 <CakeProphet> INTRIGUING 12:44:46 <CakeProphet> well I mean 12:44:47 <CakeProphet> that's not why 12:45:06 <elliott> See https://github.com/HeinrichApfelmus/reactive-banana/issues/12 for more along those lines. :p 12:45:08 <CakeProphet> I mean to say, that's why it's not annoying to work with, because the Key provides the type information for everything else. 12:45:18 -!- cheater2 has joined. 12:46:12 <CakeProphet> I could see using something like Vault for a MUD server. 12:46:36 <CakeProphet> to store object attributes. 12:47:36 <elliott> CakeProphet: you could also just use a record. 12:47:52 <CakeProphet> right but the idea is for to be like a MOO where the game is modifiable from within the game. 12:48:16 <elliott> You wouldn't be able to use vaults nicely for that; that's verging on dependent typing. 12:48:28 <elliott> Just model the (probably bad) language's (probably bad) object model directly. 12:48:28 <CakeProphet> dependent or dynamic I suppos. :P 12:48:34 <elliott> no. 12:48:52 <CakeProphet> well no see I think it would be interesting to have a well-type scripting language of that nature... 12:48:58 <CakeProphet> *well-typed 12:49:35 <CakeProphet> but I see what you're saying. 12:50:42 <elliott> i am saying that it would not work to implement that in haskell. 12:54:44 <CakeProphet> maybe not with vaults 12:54:49 <CakeProphet> but I'm pretty sure it would be possible. 13:04:21 <CakeProphet> elliott: if someone offered you 1 million per year for the rest of your life to work on a massive piece of software written entirely in perl 13:04:24 <CakeProphet> would you accept the offer? 13:04:38 <CakeProphet> 1 million being US dollars 13:04:52 <elliott> What are the hours like? 13:04:59 <CakeProphet> dude I don't I just made up this example. 13:05:07 <CakeProphet> THIS ISN'T REAL. 13:05:21 <CakeProphet> :> uh, 36 hours a week? 13:05:25 <CakeProphet> dunno 13:05:29 <CakeProphet> FREELANCE 13:05:33 <CakeProphet> set your own hours/ 13:05:38 <elliott> I N S U F F I C I E N T D A T A F O R M E A N I N G F U L A N S W E R 13:05:44 <elliott> I set my hours at 0/wk 13:05:45 <elliott> . 13:06:00 <CakeProphet> see... it doesn't work that way 13:06:32 <CakeProphet> technically speaking in a freelance situatons you wouldn't be paid by year it would by hour or piecework. 13:06:42 <CakeProphet> also it's a perl OS 13:06:42 <elliott> You asked me to set my own hours; I set my own hours. 13:06:48 <CakeProphet> with an emphasis on efficiency. 13:06:59 <elliott> There are worse languages to write an OS in than Perl. 13:07:02 <elliott> C, for instance. 13:07:15 <Jafet> Actually, perl is written in C. 13:07:17 <CakeProphet> but is it worse if you're emphasizing efficiency? I think not. 13:07:31 <CakeProphet> perl being 13:07:34 <CakeProphet> probably CLOSE 13:07:40 <CakeProphet> to one of the slowest languages in common use. 13:08:19 <elliott> Jafet: So? 13:08:30 <elliott> That doesn't mean the Perl OS would use a Perl implementation written in C. 13:08:34 <CakeProphet> elliott: "dude man everything is machine code. now what?" 13:08:44 <elliott> CakeProphet: I don't think Perl is slower than Ruby. 13:08:50 <Jafet> Oh yeah, you're being paid a million dollars, so you can re-implement perl. 13:08:57 <Jafet> Bug-for-bug, I guess 13:08:57 <elliott> Jafet: It's not _that_ hard a task. 13:08:57 <Phantom_Hoover> elliott, I was about to object and then I remembered that C is like useless for low-level programming anyway. 13:09:11 <elliott> Jafet: Anyway, at least the C would be confined to the Perl implementation. 13:09:15 <elliott> Even if it was there. 13:09:27 <CakeProphet> there's no such thing as a bug in the perl interpreter 13:09:32 <CakeProphet> as the perl interpreter is the language spec. 13:09:36 <elliott> Huh, Perl really is slower than Ruby. And PHP. Ouch. 13:09:43 <CakeProphet> yep 13:09:49 <elliott> Wait, no. 13:09:53 <elliott> That's an alphabetical list. 13:09:54 <elliott> Wait, no it isn't. 13:09:59 <CakeProphet> lol 13:10:00 <elliott> It just looked vaguely like one. 13:10:40 <CakeProphet> also PHP on the language shootout has fewer bytes of code on average. 13:10:53 <CakeProphet> probably due to standard libraries 13:10:59 <CakeProphet> Python is the smallest in that measure. 13:11:31 <CakeProphet> followed by Ruby, then I don't remember what... 13:11:33 <fizzie> But it's faster than C. (Assuming you're using CINT.) 13:11:56 <Phantom_Hoover> CINT? 13:12:12 <fizzie> It's that C interpreter. 13:12:13 -!- elliott has quit (Remote host closed the connection). 13:12:24 <fizzie> http://root.cern.ch/drupal/content/cint 13:12:27 <fizzie> Blame the physicists. 13:12:39 -!- elliott has joined. 13:12:43 <CakeProphet> Haskell is on the lower end of byte counts for the category of "languages that are fast" 13:12:54 <elliott> Remain disappointed in Jafet. 13:13:03 <elliott> CakeProphet: The benchmarks game Haskell code is terribly over-large. 13:13:07 <elliott> It's ridiculously microoptimised. 13:13:08 <Phantom_Hoover> fizzie, WTF is with the naked tentacle woman in the corner. 13:13:14 <elliott> What. 13:13:36 <Jafet> Well, it's C submitted as haskell 13:13:41 <elliott> Oh, I was expecting something very different. 13:13:43 <elliott> Are those even tentacles. 13:13:47 <Jafet> I live to disappoint. 13:13:47 <elliott> They look like... is she part tree. 13:14:00 <fizzie> Phantom_Hoover: You mean the ROOT logo? 13:14:08 <fizzie> They are probably ROOTs. 13:14:14 <elliott> Hur hur hur 13:14:14 <CakeProphet> elliott: ah okay. 13:14:16 <elliott> At least I was right. 13:14:16 <Jafet> Admit it, you'd root her. 13:14:44 <Phantom_Hoover> Jafet, how, she's all roots from the waist down. 13:14:56 <CakeProphet> elliott: also Python submitions apparently cheat alot as the top percentile on the performance data for Python is very close to C. 13:15:08 <elliott> Phantom_Hoover: That's why they call it rooting. 13:15:17 <elliott> (Am I really participating in this? Shame on you, elliott.) 13:15:31 <Phantom_Hoover> Jafet, rooting for you anyway. 13:15:52 <elliott> CakeProphet: Insert stupid alot joke. 13:16:23 <CakeProphet> wat 13:16:25 <Jafet> I'm more amused by the star wars scrolling code. 13:16:38 <elliott> Jafet: no but seriously, fix my library problem. 13:18:15 <fizzie> CakeProphet: It seems to be mostly due to the pidigits benchmark, which is basically "from gmpy import mpz" and then a reasonably simple loop. 13:18:35 <Jafet> I'm as proficient at programming as Enron had been at underhanded trading. 13:18:48 <elliott> :t readIntAtBase 13:18:48 <lambdabot> Not in scope: `readIntAtBase' 13:18:52 <elliott> ?hoogle readBase 13:18:52 <lambdabot> No results found 13:18:54 <elliott> ?hoogle read base 13:18:54 <lambdabot> No results found 13:18:54 <elliott> ?hoogle read 13:18:55 <lambdabot> Prelude read :: Read a => String -> a 13:18:55 <lambdabot> Text.Read read :: Read a => String -> a 13:18:55 <lambdabot> module Text.Read 13:18:55 <elliott> ?hoogle readInt 13:18:56 <lambdabot> Numeric readInt :: Num a => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a 13:18:56 <lambdabot> Data.ByteString.Char8 readInt :: ByteString -> Maybe (Int, ByteString) 13:18:58 <lambdabot> Data.ByteString.Lazy.Char8 readInt :: ByteString -> Maybe (Int, ByteString) 13:20:20 <elliott> :t showIntAtBase 13:20:21 <lambdabot> forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String 13:21:20 <elliott> :t elemIndex 13:21:21 <lambdabot> forall a. (Eq a) => a -> [a] -> Maybe Int 13:22:45 <elliott> :t reads 13:22:46 <lambdabot> forall a. (Read a) => String -> [(a, String)] 13:23:44 <fizzie> > fst . head . readInt 42 ((<42) . ord) ord $ showIntAtBase 42 chr 12345678 "" 13:23:46 <lambdabot> 12345678 13:23:56 <fizzie> I see they like the generic. 13:24:47 <elliott> Quite. 13:24:55 <fizzie> > showIntAtBase 42 chr 12345678 "" 13:24:56 <lambdabot> "\ETX(\SUB\FS\RS" 13:24:59 <fizzie> Best encoding. 13:25:26 <fizzie> I shall petition we move from base-10 with decimal digits to base-42 in start-of-ascii in all primary schools. 13:25:44 <elliott> fizzie: Hey, what's a good bit prefix of SHA-256 13:26:04 <elliott> 160 bits is a bit overly long for my tastes, but I'd like to avoid collisions 13:26:08 <elliott> ("Gimme a perfect hash algo") 13:27:17 <Jafet> id 13:30:08 <elliott> Psht, you're all useless 13:30:40 <fizzie> Take all prime bits of SHA-512. 13:30:46 <fizzie> (That's 97 bits.) 13:30:58 <fizzie> It's more secure because they're prime. 13:31:09 <elliott> fizzie: I'm do not like you. 13:31:34 <Jafet> If you don't want collisions, use a block cipher that's larger than the range of the input 13:31:37 <Jafet> Block ciphers are bijective 13:31:50 <elliott> I want to AVOID collisions :P 13:31:52 <elliott> i.e. not CRC. 13:37:52 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 13:39:38 <nooga> ukuk 13:43:05 <elliott> gbgb 13:52:31 <CakeProphet> !wacro 13:52:34 <EgoBot> CFC 14:02:50 -!- DH____ has quit (Read error: Connection reset by peer). 14:10:03 -!- augur has quit (Remote host closed the connection). 14:12:00 -!- FireFly has joined. 14:13:19 -!- augur has joined. 14:19:27 -!- invariable has joined. 14:20:21 -!- variable has quit (Ping timeout: 252 seconds). 14:21:16 -!- SgeoN1 has quit (Quit: Bye). 14:24:54 -!- invariable has changed nick to variable. 14:25:57 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:29:54 <itidus21> why base 42? 14:31:23 <elliott> HHGTTG, one presumes. 14:32:08 -!- variable has changed nick to invariable. 14:36:44 -!- DH____ has joined. 14:39:25 <itidus21> yup 14:39:44 <itidus21> for all one, one presumes HHGTTG 14:40:42 <itidus21> what kind of nutter would talk about the number 42 without reference to HHGTTG.. lets (sic) check on wikipedia and wolframalpha to find out 14:44:20 <itidus21> The Gutenberg Bible is also known as the "42-line Bible", as the book contained 42 lines per page. 14:45:18 <itidus21> In Win32 API, ShellExecute always return 42 as its result. 14:47:31 <itidus21> Popular gadget magazine 'Stuff' did not produce an issue numbered 42, in honor of The Hitchhiker's Guide to the Galaxy, instead, the 41st issue was followed by the 43rd. 14:47:32 <fizzie> Also glibc memfrob. 14:48:13 <itidus21> fizzie: you're extremely geeky for knowing that unless you saw the wiki 14:48:14 -!- copumpkin has joined. 14:48:35 <ais523> I remembered about memfrob when it was mentioned 14:48:35 <elliott> says the guy in #esoteric 14:48:40 <ais523> but probably wouldn't have remembered unprompted 14:48:52 <ais523> there was that row over strfry, I remember 14:49:03 <fizzie> I've run across memfrob earlier, though not quite sure in which context. I did check the man page that it was 42 first, though. 14:49:23 <ais523> fizzie: its intended purpose is to prevent strings being visible to strings, isn't it? 14:53:39 <ais523> and 42 was picked because out of the numbers that do that well, it was the best reference 14:58:50 -!- nooga has quit (Ping timeout: 276 seconds). 15:02:40 -!- DH____ has quit (Read error: Connection reset by peer). 15:02:48 -!- DH____ has joined. 15:14:18 -!- nooga has joined. 15:18:39 -!- hagb4rd has quit (Ping timeout: 260 seconds). 15:20:46 -!- azaq23 has joined. 15:20:52 -!- DH____ has quit (Read error: Connection reset by peer). 15:21:08 -!- DH____ has joined. 15:21:12 <CakeProphet> @hoogle a -> Maybe b 15:21:13 <lambdabot> Prelude Just :: a -> Maybe a 15:21:13 <lambdabot> Data.Maybe Just :: a -> Maybe a 15:21:13 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b 15:21:18 <CakeProphet> @hoogle a -> Maybe a 15:21:18 <lambdabot> Prelude Just :: a -> Maybe a 15:21:19 <lambdabot> Data.Maybe Just :: a -> Maybe a 15:21:19 <lambdabot> Control.Applicative pure :: Applicative f => a -> f a 15:21:21 <CakeProphet> erm 15:23:37 <Deewiant> Something wrong with those options? :-P 15:25:14 <elliott> Deewiant: So I was thinking 15:25:22 <elliott> We have functors, bifunctors, trifunctors 15:25:25 <elliott> What we need now is nilfunctors 15:25:30 <Deewiant> elliott: Oh also 15:25:33 <elliott> class Nilfunctor f where nilfmap :: f -> f 15:25:34 <Deewiant> If you're doing that tuple shiznit 15:25:44 <elliott> class (Nilfunctor f) => Nilpointed f where nilpure :: f 15:25:53 <elliott> class (Nilfunctor f) => Nilapply f where nilap :: f -> f -> f 15:26:19 <Deewiant> I'd like to note that evidently I don't want *ifunctors https://github.com/ekmett/bifunctors/issues/1 15:26:54 <elliott> Deewiant: I find ekmett's argument unconvincing since tuples don't even follow the laws of tuples in Haskell 15:27:14 <Deewiant> Howso 15:28:00 <elliott> (fst p, snd p) = p 15:28:24 <elliott> http://james-iry.blogspot.com/2011/05/why-eager-languages-dont-have-products.html#comment-201436254 plus surrounding post and original post and blah blah blah 15:29:07 <Phantom_Hoover> <elliott> (fst p, snd p) = p 15:29:08 <Deewiant> We do have (fst p, snd p) == p, no? :-P 15:29:14 <Phantom_Hoover> Is this something Haskell doesn't do? 15:29:21 <Deewiant> Oh, _|_ /= (_|_, _|_) duh 15:29:27 <Phantom_Hoover> Ah, yeah. 15:29:46 <Deewiant> But, um 15:30:05 <Deewiant> That might not be such a relevant "law of tuples" :-P 15:30:24 <elliott> It is 15:30:39 <elliott> Without that, it's not a proper product type 15:30:58 <elliott> My point is that we generally settle for the more useful over the more correct when _|_ is involved since we're fucked from the start anyway :P 15:33:24 <Phantom_Hoover> elliott, wait, what *should* that do, then? 15:33:57 <elliott> What should what do 15:35:23 <Phantom_Hoover> Well, um 15:35:48 <CakeProphet> Phantom_Hoover: Yeah well fuck you. _|_ 15:35:51 <Phantom_Hoover> Under what circumstances does (_|_,_|_) /= _|_ 15:36:05 <elliott> Under Haskell semantics? 15:36:10 <elliott> (_|_,_|_) `seq` x = x 15:36:13 <elliott> _|_ `seq` x = _|_ 15:36:40 <Phantom_Hoover> Dammit seq. 15:37:07 <elliott> It would apply even without seq 15:37:11 <elliott> f (x,y) = True 15:37:14 <elliott> f (_|_,_|_) = True 15:37:17 <elliott> f _|_ = _|_ 15:37:28 <elliott> You are asking for a strict language, basically 15:39:50 <CakeProphet> weeee partial orders 15:40:03 <CakeProphet> speaking of which 15:40:15 <CakeProphet> I wonder if I can find that article. 15:41:02 <CakeProphet> http://blog.ezyang.com/2010/12/hussling-haskell-types-into-hasse-diagrams/ 15:41:15 <CakeProphet> was quite enlightening. 15:54:15 <CakeProphet> would have been better if it were written by Andrew Hussie 15:54:26 <elliott> Deewiant: edwardk is in #haskell now; I think you have to fight him to the death 15:54:27 <CakeProphet> then it would be "Hussie Hussling Haskell types into Hasse diagrams" 15:58:19 <nooga> (_|_) fat ass 15:59:21 <elliott> Deewiant: So 'bout them nilfunctors 16:03:48 -!- augur has quit (Remote host closed the connection). 16:05:51 <elliott> Deewiant: I guess if bifunctors aren't suitable, I could just implement my own in the package, thus at least trying to live up to the ridiculously overgeneric "combinators" name :P 16:06:40 <CakeProphet> combinator monad for combinator combinators. 16:07:24 <CakeProphet> :t (.) . (.) . (.) 16:07:25 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) 16:07:39 <CakeProphet> :t (.) . (.) . (.) . ($) 16:07:40 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) 16:07:48 <CakeProphet> :t ($) . (.) . (.) . (.) 16:07:49 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) 16:07:59 <CakeProphet> oh well 16:29:34 <elliott> Deewiant: You wouldn't happen to know what to do if an FFI library fails to load one of its .o because of an unknown symbol in the bytecode interpreter (i.e. GHCi, Template Haskell) but works just fine with the compiler? 16:29:44 <elliott> I think it might be related to building a shared version, and I know you do that, so :-P 16:30:55 -!- Ngevd has joined. 16:31:14 <Ngevd> Hello! 16:33:59 <Ngevd> ais523, spam 16:34:17 <elliott> <ais> I know, I see every change via RSS 16:34:37 <elliott> beat him to it, ha ha ha 16:34:46 <ais523> elliott: it doesn't matter, my userpage suggests reporting spam on IRC 16:34:49 <ais523> because it's faster than the RSS 16:34:50 <Ngevd> Wait, it's one I can fix 16:34:56 <elliott> Ngevd: too late 16:35:02 <elliott> ais523: darn :D 16:35:04 <ais523> however, I think elliott already reverted it 16:36:06 <Ngevd> My laptop's clock is drifting west 16:36:32 <Ngevd> Also, I now have a google plus account 16:37:28 <Ngevd> elliott, what time is it? 16:37:36 <elliott> @time 16:37:36 <lambdabot> Local time for elliott is Tue Sep 20 17:38:03 16:37:49 <elliott> Deewiant: Thanks 16:38:11 <Ngevd> Yep, my laptop is drifting 16:38:17 <Ngevd> It's two hours fast 16:38:37 <elliott> ntp 16:38:58 <Ngevd> It thinks Hexham's in... Israel? So I have to say I'm in the middle of the Atlantic to compensate 16:39:53 <elliott> Uh 16:39:53 <fizzie> There's a Hexham everywhere. 16:39:58 <elliott> What thinks that exactly 16:40:58 <fizzie> Hexham is where the heart is. <- An old Chinese proverb. 16:42:06 <elliott> Verily. 16:42:10 <elliott> Hey fizzie, fix my library issue. 16:45:18 <fizzie> Okay. *zap*. Should be fixed now. 16:45:29 <CakeProphet> @hoogle [a] -> Maybe a 16:45:29 <lambdabot> Data.Maybe listToMaybe :: [a] -> Maybe a 16:45:29 <lambdabot> Data.List find :: (a -> Bool) -> [a] -> Maybe a 16:45:29 <lambdabot> Prelude head :: [a] -> a 16:45:43 <elliott> fizzie: It's not fixed. Pls fix better. 16:46:12 <fizzie> *Doublezap*. 16:46:51 <elliott> fizzie: Pls fix with analytical logical skills not zapping 16:47:04 <fizzie> I don't know anything about your library issue. 16:47:07 <fizzie> But recompile it anyhow. 16:47:14 <fizzie> Forall it. 16:47:15 <elliott> fizzie: I did that. 16:48:36 -!- augur has joined. 16:58:36 <CakeProphet> elliott: ghost ride the whip. 16:59:17 <itidus21> chinese eh.. 16:59:32 <itidus21> time to look into itidus21's ebook folder of doom 16:59:50 <CakeProphet> autoerotic fiction 16:59:56 <CakeProphet> about cars in love. 17:00:06 <itidus21> that was a movie 17:00:13 <itidus21> starring owen wilson 17:00:57 <Phantom_Hoover> Made by Pixar, noted autopornographers. 17:04:07 <itidus21> random ebook.. random passage 17:04:57 <itidus21> A man of the State of Cheng was one day gathering fuel, when he came across a startled deer, which he pursued and killed. 17:05:41 <itidus21> Fearing lest anyone should see him, he hastily concealed the carcass in a ditch and covered it with plaintain-leaves, rejoicing excessively at his good fortune. 17:06:19 <itidus21> By-and-by, he forgot the place where he had put it; and, thinking he must have been dreaming, he set off towards his home, humming over the affair on his way. 17:06:42 <itidus21> (agh.. this story is longer on the next page than i anticipiated) 17:07:11 -!- calamari has joined. 17:08:20 <Phantom_Hoover> fungot, comment. 17:08:20 <fungot> Phantom_Hoover: what the hell was that? my, that just made you disappear" and stuff? 17:08:59 <Phantom_Hoover> fungot, don't make me disappear! 17:08:59 <fungot> Phantom_Hoover: and in time, though prone to do this 17:09:10 <Phantom_Hoover> fungot, do *what*? 17:09:10 <fungot> Phantom_Hoover: like a very clear mirror 17:09:17 <Phantom_Hoover> fungot, yes? 17:09:17 <fungot> Phantom_Hoover: this is it, like an apple or a brain that is more useful card combinations. but ever since john started punching cards, you've been contemplating what could this birthday get any better in that quadrant. 17:09:58 <Phantom_Hoover> fungot, yes. Yes it could. 17:15:13 <elliott> fungot: q 17:15:14 <fungot> elliott: document modified: jervas. in that second all that had occurred, and wrapped with care to prevent further damage. they were 17:15:22 <elliott> ^style 17:15:23 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft* nethack pa sms speeches ss wp youtube 17:15:32 <elliott> I predict that was Phantom_Hoover. 17:15:43 <Phantom_Hoover> I predict a riot. 17:15:59 <elliott> That riot was Phantom_Hoover predicts i 17:16:00 <elliott> That riot was Phantom_Hoover predicts I. 17:16:02 <fizzie> I predict an edict. 17:16:36 <elliott> fizzie: https://github.com/phonohawk/HsOpenSSL/issues/3 Make this be fixed quickly, thanks 17:16:38 <elliott> Also Deewiant 17:16:39 <elliott> And Phantom_Hoover 17:16:45 <elliott> Let's pool our resources together here to fix it with power 17:16:45 <Phantom_Hoover> I predict a tciderpi. 17:18:39 <Phantom_Hoover> elliott, rename it to McHost. 17:19:54 <elliott> Phantom_Hoover: Rename what. 17:19:55 -!- Ngevd has quit (Ping timeout: 260 seconds). 17:20:09 <Phantom_Hoover> elliott, mchost. 17:20:13 <elliott> Why. 17:20:24 <Phantom_Hoover> To show respect to the Scottish community. 17:20:30 <elliott> Oh. 17:20:31 <elliott> No. 17:20:35 <Phantom_Hoover> RACIST 17:21:25 <elliott> Yes. I hate Scots. 17:21:38 <nooga> You do? 17:21:39 <Phantom_Hoover> yes 17:22:37 <Phantom_Hoover> I will call the Scottish Defence League, who are apparently an offshoot of the English Defence League and therefore fail at being Scottish. 17:23:25 <elliott> ahahahaha 17:23:58 <Phantom_Hoover> I mean, any organisation called the Scottish Defence League should be beating up English people, what other point would there be? 17:25:06 <elliott> `addquote <Phantom_Hoover> I mean, any organisation called the Scottish Defence League should be beating up English people, what other point would there be? 17:25:07 <HackEgo> 675) <Phantom_Hoover> I mean, any organisation called the Scottish Defence League should be beating up English people, what other point would there be? 17:25:09 <elliott> `quote 17:25:09 <elliott> `quote 17:25:10 <elliott> `quote 17:25:10 <elliott> `quote 17:25:10 <elliott> `quote 17:25:12 <HackEgo> 483) <oklopol> btw i saw my first prostitute about a week ago 17:25:12 <HackEgo> 59) <Warrigal> I think hamsters cannot be inert. 17:25:13 <HackEgo> 345) <catseye> wow, thinkgeek really makes me hate being alive 17:25:13 <HackEgo> 98) <Warrigal> Ah, vulva. <Warrigal> What is that, anyway? 17:25:14 <HackEgo> 32) <ais523> after all, what are DVD players for? 17:25:27 <elliott> huh, we have not got 345 for a while... 17:25:29 <elliott> or at least i do not recall it 17:25:32 <elliott> `pastelogs really makes me hate being alive 17:25:40 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31406 17:25:47 <ais523> why do people thing 32 is so funny? 17:25:48 <Phantom_Hoover> `addquote <elliott> `pastelogs really makes me hate being alive 17:25:50 <HackEgo> 676) <elliott> `pastelogs really makes me hate being alive 17:25:57 <elliott> wat, it was never added? 17:26:00 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31406 ???????? 17:26:02 <elliott> ais523: they do? 17:26:06 <ais523> I don't remember 345 17:26:10 <ais523> elliott: hmm, fair enough 17:26:13 <elliott> ais523: neither does clog/glogbot 17:26:16 <ais523> someone thought it was funny enough to add 17:26:17 <elliott> it seems to have never been added 17:26:23 <elliott> ais523: I think that was me :) 17:26:28 <ais523> perhaps Gregor edited the file directly in hg 17:26:30 <Phantom_Hoover> elliott, I distinctly recall him saying it, so `pastelogs or glogbot is broken. 17:26:42 <elliott> Oi Gregor 17:26:47 <elliott> Phantom_Hoover: That was from the time of clog I think 17:26:51 <elliott> So maybe clog was just down 17:28:09 -!- DH____ has quit (Read error: Connection reset by peer). 17:28:24 -!- DH____ has joined. 17:31:12 <Gregor> elliott: I periodically reboot the environment (whenever people start stuffing a bunch of garbage in there and .hg gets to be 100s of megs ... ) 17:31:33 <elliott> Gregor: Um, I'm talking about `pastelogs missing log entries 17:31:38 <elliott> But it's probably just from a time when clog was down 17:31:38 <Gregor> Oh 17:31:45 <Gregor> Probably :P 17:31:46 <elliott> And then we were really lucky to never get it random-quoted until now 17:32:04 <Gregor> I spose I could look through my own logs, but I'm not going to :P 17:32:35 <elliott> So lame. 17:40:41 <elliott> ais523: hmm, it's interesting that modifying history is a part of the darcs workflow 17:40:58 <ais523> which history? 17:41:01 <ais523> when patches were added? 17:41:05 <ais523> I don't think that's modified, so much as not tracked 17:41:06 <elliott> amend-record 17:41:12 <ais523> ah, right 17:41:33 <ais523> I suppose that's a case of copyediting a history book before it's published 17:41:59 <elliott> indeed; I'm having changed opinions about modifying history recently 17:42:06 <elliott> eliminating merge commits and the like is ridiculous 17:42:40 <elliott> but turning five terrible unatomic out-of-order commits with later commits bugfixing earlier ones into a sequence of reasonable ones before pushing sounds perfectly reasonable 17:43:06 <elliott> I mean, it's not really modifying history, because you could have just not committed them in the first place 17:43:12 <elliott> and reordered before committing 17:45:08 <elliott> ais523: what I think might be interesting, is removing the arbitrary restriction there of "before you push" 17:45:19 -!- augur has quit (Remote host closed the connection). 17:45:31 <elliott> the restriction is there essentially because it's OK for you to change your own idea of history, since it's basically a scrap working space, but you can't change what other people see after the fact 17:45:48 <ais523> indeed 17:45:52 <elliott> why shouldn't you be able to merge a trivial typofix into the original commit after an intervening pushed commit? 17:45:55 <elliott> I think what you need is patch-patches 17:45:56 <ais523> in sg, the modification would be by adding a correction patch 17:45:58 <elliott> patches that modify patches 17:46:10 <ais523> and I thought of that already, it'd just be a patchset {original patch, other changes} 17:46:13 <elliott> so you can still destructively edit history locally, because it's scrap space 17:46:14 <ais523> which contained the new metadata 17:46:18 <elliott> and after the fact, you can nondestructively edit it 17:46:28 <elliott> ais523: you need to be able to remove changes too 17:46:38 <elliott> ais523: I think it's more elegant if you define a proper change type for each change type 17:46:38 <ais523> that's just the same as darcs rollback 17:46:46 <elliott> rather than hacking it in as a special case 17:47:00 <elliott> there's changetypes for files (lists of lines), directories (sets of directory entries), why not for changes (a recursive ADT)? 17:47:40 <elliott> hmm, that's kind of like a zipper 17:47:49 <elliott> in that you can turn an arbitrarily-nested change into a list of sequential changes (actions) that create it 17:48:03 <elliott> just like you can do the same with a directory tree 17:49:04 <elliott> ais523: oh dear, this provides all the tools to retroactively modify a change from the beginning of time 17:49:14 * elliott throws the idea into the Feather pile 17:49:22 <ais523> it'd conflict if that did anything bad 17:49:32 <elliott> So arbitrary :P 17:49:53 <ais523> not arbitrary, that's how I defined "anything bad" just now 17:50:05 <elliott> PAH 17:52:01 <elliott> ais523: incidentally, what's the result of applying the change EOF to a file? 17:52:17 <ais523> what do you mean by "the change EOF" 17:52:17 <elliott> (trick question) 17:52:23 <elliott> ais523: changes are defined recursively 17:52:30 <elliott> there's a start of file and end of file change 17:52:31 <elliott> for each file 17:52:34 <elliott> and you can insert between them, etc. 17:52:45 <coppro> everything should be defined recursively 17:53:00 <ais523> elliott: oh right, but the SOF/EOF "changes" only exist for their names 17:53:04 <ais523> so they can't be applied to anything 17:54:02 <elliott> ais523: I suggest that instead, "insert LINE between A and B" doesn't have A and B be changerefs 17:54:08 <elliott> but SOF | changeref and EOF | changeref 17:54:14 <elliott> there's no reason for them to be actual changes 17:54:29 <elliott> they're just special values for ranges 17:54:30 <ais523> but then, insert LINE between SOF and EOF doesn't identify the file at all 17:54:42 <elliott> but SOF dirchangeref | changeref and EOF dirchangeref | changeref 17:54:43 <ais523> I'm OK with changeref | SOF of changeref-representing-file 17:54:49 <elliott> you knew what I meant, I was using the simplified one-file model 17:54:49 <ais523> yep, agreed 17:54:52 <elliott> :P 17:55:09 <elliott> that's also nice because you can't "delete EOF" or "insert X between EOF and SOF" or anything ridiculous like that 17:55:51 <elliott> incidentally, git is a rather high-maintenance VCS... 17:56:03 <elliott> compared to darcs where you generally just record, record, record, and then cry if you get a conflict 17:56:15 <CakeProphet> perl is the best VCS, also compiler, and minecraft proxy. 17:56:17 <CakeProphet> thing 17:56:21 <elliott> in git I'm constantly rebasing and amending and writing commit messages 17:56:23 <elliott> :P 17:56:33 <CakeProphet> those blasted commit messages. 17:56:39 <elliott> someone really needs to rewrite "darcs record" using git as a backend 17:56:40 <CakeProphet> -m "AAAAAAH DON'T CARE" 17:56:42 <elliott> git add -p is not very nice 17:57:49 <elliott> ais523: incidentally, do you have any ideas wrt binary files in sg? 17:57:59 <elliott> I'm not sure the recursive change model really works for binary files 17:58:10 <elliott> you can't automatically merge any two changes to a binary file at all 17:59:12 <ais523> well, sg should ideally understand the format of the file, but for application/octet-stream (i.e. when it doesn't), it should be "replace entire file contents HASH with VALUE", I think 17:59:48 <elliott> ais523: ideally, but in practice "list of lines" and "binary blob" seem to be the most useful solution 17:59:55 <elliott> until someone writes a wonderful language-aware thing 18:00:08 <ais523> yep, I'd love it to be diffing on ASTs eventually 18:00:09 <elliott> ais523: I think it should probably use an existing binary diff algorithm 18:00:15 -!- augur has joined. 18:00:16 <elliott> with a named change to base it off of 18:00:20 <elliott> that's just an optimisation, naturally 18:00:22 <ais523> elliott: just for optimisation? 18:00:23 <elliott> the semantics are exactly the same 18:00:24 <ais523> I'm fine with that 18:00:52 <elliott> ais523: one question is how to distinguish them; the VCS has to know which files are binary and which are text, and it would be nice if it didn't just guess based on what the file looks like right now 18:01:28 <elliott> I suggest that as well as "create directory named X in Y" and "create file named X in Y", there's "create binary file named X in Y" 18:01:45 <elliott> and sg guesses for a new file based on its contents 18:01:47 <elliott> but you can override that decision 18:02:04 <elliott> and if you want a binary file to suddenly be a text file for some reason, you just delete it and recreate it with the same contents, no overlap 18:02:04 <ais523> yep, sounds about right 18:02:08 <elliott> since the changes are incompatible 18:02:14 <ais523> what about svn:eol-type? 18:02:20 <ais523> (as in, will sg have anything corresponding to that?) 18:02:44 <elliott> ais523: hmm, what does that do, again? 18:02:53 <elliott> obviously for text files, sg should convert from/to platform newlines 18:02:59 <elliott> it'll have to do that anyway, to make sense of anything 18:03:39 <ais523> I don't know what it does 18:03:49 <elliott> then how will my answer help you? :-P 18:04:11 <elliott> "svn:eol-style 18:04:11 <elliott> Makes the client convert end-of-line characters in text files. Used when the working copy is needed with a specific EOL style. "native" is commonly used, so that EOLs match the user's OS EOL style. Repositories may require this property on all files to prevent inconsistent line endings, which can cause a problem in itself." 18:04:20 <elliott> yeah, doesn't apply to sg 18:04:27 <elliott> I think it's used to hack up binary mode files in svn 18:04:31 <ais523> yep, seems about right 18:06:17 <elliott> ais523: speaking of sg, I ran into the Debian renaming ack to ack-grep thing you mentioned today 18:06:23 <elliott> (I was trying to install a nicer diff tool) 18:06:42 <ais523> I just have an alias in my .bashrc 18:06:55 <elliott> disappointed in your lack of reaction to second line 18:07:02 <ais523> oh, diff? 18:07:07 <ais523> hmm 18:07:10 <elliott> I had "I never said I /succeeded/" all lined up and all, too 18:07:18 <ais523> haha 18:07:26 <elliott> I simply forgot that ack was a super-duper highlighting auto-excluding grepper, rather than a super-duper highlighting auto-excluding differ 18:07:34 <ais523> I was just trying to work out how to diff using a grep-alike 18:07:44 <ais523> also, ack really isn't a grepper, it's a Perl regex matcher 18:07:59 <ais523> it doesn't do any of the stuff I expect greps to do internally, like optimising fixed-string matches 18:08:12 <elliott> pcregrep ends with grep 18:08:25 <elliott> but that's a shame 18:08:29 <elliott> Perl regexps are a shame :( 18:08:43 <ais523> pcregrep I like because at least it's honest 18:08:50 <elliott> howso 18:08:56 <ais523> it's a grep-alike made using PCRE 18:09:06 <ais523> you can't get much more descriptive than that 18:09:08 <elliott> heh 18:09:12 <ais523> whereas ack is a grep-alike made using Perl 18:09:43 <elliott> hmm, I wonder how efficient it would be to do regexp matching by converting the regexp to a CFG, then applying derivative-based parsing 18:10:08 <elliott> still worst-case exponential as with backtracking regexps, but it does far better than that in basically all practice, unlike backtracking regexps 18:10:31 <elliott> actually, you can't convert backrefs to CFGs can you in general? 18:10:33 <elliott> maybe I'm wrong 18:10:42 <ais523> I'm not sure 18:11:01 <elliott> sounds wrong, backrefs are not very context-free after all 18:11:15 <ais523> ah, right 18:11:18 <ais523> I thought you said CSGs 18:11:24 <ais523> and couldn't work it out mentally 18:11:32 <ais523> CFGs = "normal" regexps, right? 18:11:45 <elliott> CFG = yacc input, but without all the restrictions that yacc rejects 18:11:48 <ais523> and they can be done in linear time by compiling them into nondeterministic FSMs 18:11:53 <elliott> no 18:11:56 <ais523> ah, right, I see 18:12:17 <elliott> AFAIK derivative-based parsing only works for (any) CFG, not CSGs... well, maybe it can be generalised, but I don't know that it has been done 18:12:27 -!- Vorpal has joined. 18:13:17 <Vorpal> I now have my driving license :D 18:13:34 <elliott> you and ten billion other people in the world 18:13:36 <elliott> `? finlan 18:13:37 <elliott> `? finland 18:13:37 <HackEgo> finlan? ¯\(°_o)/¯ 18:13:38 <HackEgo> Finland is a European country. There are two people in Finland, and at least five of them are in this channel. Corun drives the bus. 18:14:05 <elliott> ais523: haha, darcs' suggested solution for managing symlinks is amazing 18:14:08 <elliott> create a script 18:14:10 <elliott> ln -s foo/quux bar 18:14:10 <elliott> ln -s foo/wibble wibble2 18:14:11 <ais523> hmm, I don't think our learndb is all that sensible 18:14:12 <elliott> then add it as a posthook 18:14:19 <ais523> elliott: that's beautifully ridiculous 18:14:31 <elliott> ais523: now if only they took it to its conclusion, and used it to generate the entire tree 18:14:32 <ais523> darcs' treatment of the u+x bit is ridiculous enough 18:14:39 <elliott> s/conclusion/(il)logical conclusion/ 18:14:43 <elliott> also, our learndb isn't meant to be sensible 18:14:44 <elliott> and how does it treat it? 18:15:22 -!- nooga has quit (Ping timeout: 240 seconds). 18:16:15 <ais523> elliott: it doesn't 18:16:18 <ais523> at all 18:16:24 <elliott> heh 18:16:28 <elliott> what about the other +x bits? 18:17:43 <ais523> not those either, but that's less bad 18:18:00 <elliott> what's u again? 18:18:06 <ais523> owner 18:18:10 <elliott> thought so 18:18:17 <elliott> you should really use octal permissions :) 18:21:02 <ais523> nah, we should clearly use ACLs 18:21:20 <ais523> although, I think semantically, we should only track executable/readable/writable 18:21:39 <ais523> I'm not sure whether to track to-world separately from to-user; we shouldn't track to-group 18:22:47 <CakeProphet> I am the best at the world. 18:22:54 <CakeProphet> I win the game. 18:22:58 <CakeProphet> I fight snakes 18:24:09 <elliott> ais523: I was just going to go with tracking the three-digit octal for sg 18:24:47 <elliott> ais523: I guess tracking group permissions is a bit silly, but what if you want to version /etc? 18:24:51 <elliott> or your dotfiles? 18:25:26 <ais523> elliott: hmm, it depends on whether sg's meant to be used for one user, or across systems 18:25:34 <elliott> why not both? 18:25:45 <ais523> arguably, it should track all the permissions, together with user and group authorship, but only restore them if on the same system 18:25:50 <ais523> or same user on same system 18:25:57 <elliott> gross :P 18:26:29 <elliott> ais523: I'm tempted to say that if we don't track group permissions, we shouldn't track permissions at all 18:26:43 <elliott> but +x/-x is really necessary to track, so that's a bad solution 18:26:49 <elliott> so we should track group permissions ;-) 18:27:19 <ais523> but group permissions aren't even meaningful on, say, Windows (which uses ACLs instead), or @ (which uses capabilities), or FeatherOS (which doesn't implement them because you really expect me to write that too?) 18:27:51 <elliott> there's no way anything we do will work on @ well at all 18:27:55 <elliott> so there's no point considering it 18:28:07 <elliott> with Windows, I think we should just emulate POSIX semantics as much as we can 18:28:10 <elliott> we want symlinks, after all 18:28:26 <elliott> so I think we should be modelling some sideset of a POSIX filesystem 18:28:47 -!- boily has quit (Ping timeout: 276 seconds). 18:28:49 <elliott> not all the stupid ACLs and xattrs and blah blah blah, so a subset, but maybe a slightly different structure will emerge on a technicality, so superset, so sideset :P 18:29:06 <ais523> Windows has symlinks-to-executables (.lnk), and hardlinks (junctions) 18:29:15 <elliott> yep 18:29:22 <elliott> the user will have to configure sg to do as they wish 18:29:22 <ais523> Linux has SElinux permissions 18:29:31 <elliott> what is your point here? 18:30:00 <ais523> that going on the UNIX model just because it's the UNIX model seems a surprising thing to do 18:30:21 <elliott> we agreed to use POSIX semantics ages ago, you know 18:30:25 <ais523> fair enough 18:30:29 <ais523> I'm just trying to remember why 18:30:36 <elliott> are we trying to implement sg in a way that's useful to us and others, or The Perfect Scapegoat? 18:30:49 -!- nooga has joined. 18:30:51 <pikhq> Windows post-Vista also has straight symlinks. 18:30:59 <CakeProphet> practical = good 18:30:59 <elliott> I want to version symlinks, I want to version executable scripts, and I'm likely to want to version /etc and dotfiles too 18:31:26 <elliott> why should I have to miss out on that just because Windows doesn't commonly do it? 18:31:29 <elliott> there's tons of solutions to that 18:32:07 <CakeProphet> argument against portability: some operating systems suck. 18:32:16 <elliott> (I don't think we should track setuid/setgid or the like because those are attributes of system executables, not user-edited files) 18:32:42 <elliott> (I suppose you could make an argument for tracking the weird setgid directory behaviour, but (a) it's awful and (b) it's more of a system setting than an attribute of the directory anyway) 18:34:13 <elliott> ais523: FWIW, I'm willing to compromise down to just tracking rwx on user/group 18:34:15 <elliott> erm 18:34:16 <elliott> ais523: FWIW, I'm willing to compromise down to just tracking rwx on user/world 18:34:20 <CakeProphet> you should track those weird metadata attribute things Window has. 18:34:22 <elliott> But I'm not sure it's the best choice 18:34:31 <ais523> what about sticky bit on directories? 18:34:37 <CakeProphet> actually I don't think there's anyway to expose them besides knowing the key name. 18:34:40 <elliott> CakeProphet: ais523: let's track Mac OS Classic resource forks 18:34:43 <elliott> ais523: <elliott> (I suppose you could make an argument for tracking the weird setgid directory behaviour, but (a) it's awful and (b) it's more of a system setting than an attribute of the directory anyway) 18:34:49 <elliott> let's just pretend it doesn't exist 18:34:51 <elliott> isn't it Linux-specific, too? 18:34:52 <ais523> setgid on directories != sticky on directories 18:34:58 <ais523> they're two entirely different behaviours 18:35:04 <pikhq> elliott: Resource forks aren't Mac OS Classic-specific. 18:35:08 <elliott> ais523: er, hmm 18:35:09 <pikhq> NTFS also has resource forks. 18:35:09 <ais523> and both exist on more than UNIX, although one's standard and one's a subset of Unices 18:35:13 <elliott> I think I meant sticky 18:35:29 <elliott> pikhq: yes, but I don't want to track /those/ lame things 18:35:40 <CakeProphet> man why does Lifehacker keep talking about Windows 8 18:35:49 <elliott> man why do you keep reading Lifehacker 18:35:53 <elliott> or anything gawker puts out at all 18:35:59 <ais523> +dt: files in the directory cannot be renamed/deleted by non-owners; +d,g+s: files in the directory are created with the same group as the directory, not the same group as their owner 18:36:11 <elliott> ais523: yeah, my opinion is: gross 18:36:30 <elliott> ais523: let's model an /idealised/ POSIX filesystem :P 18:37:00 * ais523 vaguely wonders how much TWENTY FIVE, FIVE MILLION is 18:37:06 <elliott> wat 18:37:12 <ais523> it was written in figures, too, as 25.5 000 000 18:37:16 <ais523> (spam I received) 18:37:27 <elliott> that's a lot of... units 18:37:38 <ais523> I think the 419 spammers are offering a nonexistent number of dollars 18:37:45 <ais523> in the hope that people assume it's a lot 18:37:46 <elliott> that's true for all of them 18:38:44 <ais523> no, I mean, normally it's the dollars that don't exist 18:38:59 <ais523> in this case, it's not just the dollars that don't exist, but the number of dollars that were claimed to exist isn't even a real number 18:39:01 <elliott> heh 18:39:07 -!- ive has joined. 18:39:19 <elliott> ais523: maybe they're offering 25 + 5000000i dollars 18:39:21 <elliott> that's not real, after al 18:39:21 <elliott> l 18:39:38 <CakeProphet> wow that's $25 18:39:40 <CakeProphet> awesome 18:39:43 <CakeProphet> I could use that. 18:39:48 <ais523> maybe $25, 50¢ 18:39:56 <elliott> fsvo $25 18:40:00 <CakeProphet> I could buy like, maybe 20 packs of sour punch straws 18:40:03 <ais523> or £25, 5000000¢ 18:40:05 <CakeProphet> at absolutely no cost to me. 18:40:53 <CakeProphet> cents are easily represented by a decimal number though 18:40:57 <CakeProphet> $25.50 18:41:12 <CakeProphet> I think imaginary dollars are just dollars that are offered but don't exist. 18:41:17 <CakeProphet> >_> 18:41:17 -!- SgeoN1 has joined. 18:41:19 <ais523> well, 25.5 000 000 (TWENTY FIVE, FIVE MILLION) is not a real number! 18:41:29 <ais523> hmm, if only zzo38 were here 18:41:38 <CakeProphet> sure it is. 18:41:49 <CakeProphet> in someone's number system 18:41:53 <CakeProphet> I'm sure it's meaningful. 18:41:59 <elliott> those aren't reals 18:42:29 <CakeProphet> well yeah I'm looking at pixels. 18:43:02 <CakeProphet> or rather 18:43:10 <CakeProphet> your mom's tits aren't reals. 18:43:13 <CakeProphet> BAM 18:43:34 <CakeProphet> I feel that, perhaps 18:43:39 <CakeProphet> as the day progresses 18:43:51 <CakeProphet> I will just progressively make less sense. 18:43:55 -!- boily has joined. 18:45:08 <elliott> i assure you that is impossible 18:45:22 <SgeoN1> (cherry-pick '(cake-prophet)) (load "cakeprophet.l") (/cherry-pick) 18:45:48 <ais523> SgeoN1: gah, you can't mix Lisp and XML like that, it's a horror 18:45:56 <ais523> quick, someone make an esolang with syntax that works like that 18:46:02 <ais523> I think it'd manage to offend absolutely everyone 18:46:13 <elliott> ais523: SgeoN1 actually implemented that thing 18:46:15 <elliott> it was awful 18:46:19 <elliott> (cherry-pick) 18:46:32 <SgeoN1> >.> I actually wrote functions named that 18:46:43 -!- Ngevd has joined. 18:46:49 <ais523> elliott: what do you think of replacement-for-B, btw? it seems to be gradually starting 18:46:54 <ais523> and I think I've pulled a Wooble already 18:46:59 <elliott> ais523: it looks boring 18:47:06 <elliott> like most of latter-day B 18:47:12 <ais523> yep, indeed 18:47:13 <Ngevd> Replacement-for-B? 18:47:17 <ais523> hopefully it'll sort itself out in a while, though 18:47:17 <elliott> Ngevd: nomic 18:47:20 <ais523> Ngevd: B is a nomic 18:47:22 <CakeProphet> so if I write 18:47:27 <Ngevd> Okay 18:47:32 <CakeProphet> sum ls / length ls 18:47:33 <ais523> which most people seem to think is dead or at least permanently fossilised 18:47:37 <elliott> ais523: I'd probably unsubscribed from the nomic lists by now if I weren't a packrat 18:47:43 <CakeProphet> does the compiler reduce that to one recursive traversal of ls? 18:47:45 <elliott> I still have a Nomicron label right after B 18:47:52 -!- boily has quit (Client Quit). 18:47:53 <elliott> CakeProphet: maybe, if there's a rule for it. 18:47:55 <elliott> not in general though. 18:48:05 <CakeProphet> that would be a nice feature. 18:48:06 <CakeProphet> if possible. 18:48:11 <elliott> that's what rules _are_. 18:48:33 <SgeoN1> elliott: I don't think I saw a better way to set it up. Should make the end-user API more convenient though, and leave these as locally used things 18:48:35 <elliott> try it and peek at the core 18:49:07 <CakeProphet> the rules are... nice features? I'm confused. I was saying that being able to reduce such things in general would be a nice feature. 18:49:19 <CakeProphet> maybe not with any data structures but with lists as a special case perhaps. 18:49:24 <elliott> that is what rules are for. 18:49:24 <CakeProphet> unless it could be done with any structure. 18:49:26 <elliott> that is what rules are for. 18:49:40 <elliott> the only question is whether there's a rule that kicks in for that case 18:49:43 <CakeProphet> the rules are for in general reducing multiple traversals into one? no they're not. 18:49:53 <elliott> do you know what rules are 18:49:55 <CakeProphet> yes. 18:49:58 <elliott> wrong 18:50:03 <ais523> golfing challenge: write the smallest possible lambda calculus self-compile-and-runner (i.e. interpreter with eigenratio 1, cheating is allowed) 18:50:15 <CakeProphet> you're talking about something like {- RULE ... -} right? 18:50:23 <elliott> ais523: \x.x 18:50:37 <ais523> elliott: input is a church list of church numerals 18:50:41 <ais523> not a function 18:50:46 <elliott> CakeProphet: yes. and if you don't think its whole purpose is to allow seemingly inefficient multiple traversals to compile down to low-level loops, you are wrong. 18:50:57 <elliott> ais523: why mix parsing into the equation? 18:50:58 <CakeProphet> elliott: you're completely ignoring what I'm talking about. 18:51:00 <CakeProphet> I am saying 18:51:06 <SgeoN1> What was so horrible about cherry-pick? 18:51:09 <elliott> ais523: use the Church or Scott-Mogensen encoding of the de Bruijn LC syntax 18:51:10 <ais523> elliott: because that's the whole point of the exercise 18:51:11 <CakeProphet> or rather asking, or wondering 18:51:16 <CakeProphet> if it can be done IN GENERAL 18:51:16 <CakeProphet> as in 18:51:19 <elliott> ais523: why? 18:51:19 <CakeProphet> not with specific rules. 18:51:21 <elliott> that's the boring aprt 18:51:22 <elliott> part 18:51:41 <ais523> well, I'm OK with supplying a separate parser into some other Church encoding, I guess 18:51:49 <ais523> as long as it's expressive enough to be able to "unparse" it again 18:51:58 <elliott> ais523: including parens? 18:52:01 <ais523> I don't care about things like variable names 18:52:11 <ais523> it doesn't need to unparse into the same string of characters, just one with the same meaning 18:52:12 <elliott> CakeProphet: stream fusion is meant to do a lot of it automatically. but it's not ready for primetime 18:52:12 <Ngevd> Hang on. 18:52:17 <elliott> anyway you're basically asking for a ssc 18:52:21 <ais523> ssc = ? 18:52:22 <Ngevd> I'm in a game of Nomic 18:52:23 <elliott> ais523: well that's easy then, I mean representation-wise 18:52:26 <elliott> ais523: sufficiently smart compiler 18:52:35 <elliott> let me figure out the church encoding of de bruijn lc 18:52:37 <ais523> elliott: yep, but golfed 18:53:01 <CakeProphet> hmmm, also here's an interesting point I hadn't considered. 18:53:07 <CakeProphet> would there really be much of an efficiency gain? 18:53:36 <CakeProphet> let's say you have two loops: for(ls){blah} for(ls){blah2} 18:53:43 <CakeProphet> and now you've combined them into for(ls) {blah;blah2} 18:53:52 <CakeProphet> ....isn't that pretty much the same in terms of number of instructions? 18:53:55 <elliott> ais523: well, there's already (λ11)(λ(λλλ1(λλ1(λ3(6(λ2(6(λλ3(λ123)))(7(λ7(λ31(21))))))(1(5(λ12))(λ7(λ7(λ2(14)))3)))))(11))(λ1((λ11)(λ11))) 18:53:57 <ais523> elliott: I suppose it doesn't /really/ need to be golfed, but it'll be a pain to write otherwise 18:54:00 <elliott> ais523: http://en.wikipedia.org/wiki/Binary_lambda_calculus#Lambda_encoding 18:54:17 <CakeProphet> I mean, there's a meager difference I think. 18:54:35 <ais523> ah, beautiful, that might be just what I need 18:54:40 <elliott> CakeProphet: half the branches 18:54:43 <ais523> next step: do the same, but in continuation passing style 18:54:47 <elliott> branches are much more expensive than arithmetic or whatever 18:54:49 <ais523> I think I'll probably have to work on that on my own 18:54:59 <CakeProphet> elliott: ah right. 18:55:08 <elliott> ais523: well, it's quite a trivial problem to write an LC self-interpreter; you obviously want to work with de bruijn 18:55:18 <elliott> since it makes the bound variable structure really simple, just a linked list 18:55:26 <elliott> and you basically only have three cases 18:55:27 <ais523> I'd figured out working with that encoding already 18:55:27 <elliott> I mean it's just 18:55:32 <ais523> by myself 18:55:36 <elliott> data LC = Var Nat | Lam LC | App LC LC 18:55:36 <ais523> although I didn't know what it was called 18:55:42 <CakeProphet> elliott: and the savings are even greater for larger numbers of loops. 18:55:43 <ais523> (I'd forgotten, I knew once) 18:55:48 <elliott> ais523: are you sure? de bruijn is probaly inside out to what you think 18:55:52 <elliott> \\zero is const id 18:55:54 <elliott> \\one is const 18:55:59 <elliott> the innermost lambda's variable is 0 18:56:01 <CakeProphet> 3 loops into one would be a third less branches, and so on. 18:56:02 <elliott> second-innermost is one 18:56:02 <elliott> etc. 18:56:07 <ais523> no, that's the way round I meant 18:56:09 <elliott> a lot of people do it the other way around when inventing their own 18:56:10 <elliott> alright then 18:56:12 <ais523> I know that the other way round exists too 18:56:20 <ais523> but then, say, S and K are different depending on how nested they are 18:56:28 <elliott> ais523: btw, if you encode the lambda terms in Church encoding, rather than just simple constructor analysis, I think it simplifies things even more 18:56:31 <elliott> because you get a fold for free 18:56:48 <elliott> hmm... you want to make it a monadic fold, really :) 18:56:50 <elliott> so you can use the continuation monad 18:57:01 <elliott> maybe you need to invent your own encoding 18:57:10 <elliott> the CPS version of Church encoding 18:57:15 <CakeProphet> LC is awesome. 18:57:16 <CakeProphet> best thing. 18:57:22 <elliott> (I bet oerjan will be able to help with that ;D) 18:57:53 <CakeProphet> data? fuck that let's just represent it as code. 18:58:14 <CakeProphet> you know because there's totally a distinction between those two things. 18:58:23 <Phantom_Hoover> You're wrong in a subtle but total way, but I'll leave it to elliott to despair. 18:58:36 <elliott> hi 18:59:19 <CakeProphet> Phantom_Hoover: I sort of assume this most of the time I say things here. 18:59:40 <elliott> ais523: oh, I think I have something 18:59:46 <elliott> ais523: here's the first few naturals in Hird encoding 18:59:46 <elliott> \f x k. k x 18:59:46 <elliott> \f x k. f x k 18:59:46 <elliott> \f x k. f x (\x'. f x' k) 18:59:46 <elliott> \f x k. f x (\x'. f x' (\x''. f x'' k)) 18:59:51 <Phantom_Hoover> CakeProphet, this time it's that you approached the LC thinking of it as a programming language. 19:00:01 <CakeProphet> is that uh... what I did? 19:00:17 <elliott> ais523: successor is 19:00:18 <CakeProphet> also is it wrong to do that? 19:00:21 <elliott> ais523: succ = \n f x k. n f x (\x'. f x' k) 19:00:24 <CakeProphet> does it make what I say wrong? 19:00:37 <elliott> ais523: (succ itself returns in usual style, not CPS; but the value it returns is a Hird numeral and therefore CPS in operation) 19:00:41 <Phantom_Hoover> CakeProphet, yes, yes and yes. 19:00:42 <CakeProphet> that LC represents data as code. I can't get away with saying that? it's not in any way accurate? 19:00:52 <CakeProphet> code being interpreted quite loosely. 19:00:55 <ais523> elliott: CPS Church numerals? ingenious 19:01:02 <elliott> true = \a b k. k a 19:01:02 <elliott> false = \a b k. k b 19:01:09 <elliott> this translation seems quite obvious, you just CPS-transform the Church encoding 19:01:15 <elliott> ais523: well, Church-encoding can be applied to any ADT 19:01:39 <elliott> ais523: the reason to use Church-encoding rather than just simple "give me a list of functions, one per constructor, and I'll call the right one with all my fields" is that it gives you a fold over the data type for free 19:01:46 <elliott> because it represents types as their fold functions 19:01:48 <elliott> ais523: but you need CPS 19:01:49 <ais523> I'm not too good at CPS; I understand it, but it's not intuitive for me 19:01:51 <elliott> ais523: so you need a CPS fold 19:01:55 <Phantom_Hoover> CakeProphet, the LC predates the existence of programming, let alone code. 19:01:59 <elliott> → Hird encoding! 19:02:01 <ais523> it takes thought 19:02:01 <CakeProphet> Phantom_Hoover: lambda calculus is a language. You can specify a grammar for it. It computes things. What is a programming language? 19:02:03 <ais523> yep, indeed 19:02:11 <ais523> elliott: this is Feather-related, btw 19:02:14 <elliott> I guessed 19:02:15 <ais523> if you hadn't already guessed 19:02:16 <elliott> ais523: now to try and figure out the Hird-encoding of the de Bruijn LC 19:02:21 <elliott> shouldn't be too hard 19:02:29 <Phantom_Hoover> CakeProphet, in which case, why would you ever expect a distinction between code and data? 19:03:03 <CakeProphet> Phantom_Hoover: well, in the past I would consider them as distinct things because they seem to intuitively be completely different things. Also in most languages there is a conceptual distinction. 19:03:08 <CakeProphet> in lambda calculus there isn't. 19:03:33 <CakeProphet> which is what makes it awesome, as I said. 19:04:25 <Phantom_Hoover> CakeProphet, well, I read it more as mocking the lack of a distinction as if the existence of one was a fundamental thing. 19:04:36 <Phantom_Hoover> I apologise if that was not what you meant. 19:04:39 <elliott> ais523: Feather is strictly-evaluated, right? 19:04:45 <ais523> yes 19:04:46 <CakeProphet> so I do expect a distinction in things that compute other things (I won't say programming language because it is subtley wrong) because it's usually made in some way. 19:04:48 <elliott> ais523: and f is evaluated before x in (f x)? 19:04:54 <ais523> yes 19:04:56 <CakeProphet> Phantom_Hoover: oh... I see how you might have done that. 19:05:01 <ais523> I had to think about that one, but it is 19:05:24 <CakeProphet> Phantom_Hoover: no there isn't a difference. I wasn't saying it was bad. 19:05:59 <CakeProphet> \a.\b.a is probably the best true ever. 19:06:49 <CakeProphet> what better way to encode a boolean than as the computation it's intended to perform. 19:07:59 <elliott> ais523: http://sprunge.us/hiac 19:08:14 <ais523> thanks 19:08:22 * ais523 saves local copy 19:08:25 <elliott> ais523: the "n" used in Var should be a hird numeral too 19:08:31 <elliott> just for consistency, you should encode all data like that :P 19:08:32 -!- pikhq_ has joined. 19:08:33 -!- pikhq has quit (Ping timeout: 252 seconds). 19:08:37 <elliott> save those lines with it, that's SO IMPORTANT 19:08:43 <elliott> (it's not actually so important, but let's pretend?? that it is?) 19:08:53 <elliott> maybe it is so important, I guess you could end up losing your evaluation order if you don't do everything CPS 19:08:56 -!- Nisstyre has quit (Ping timeout: 260 seconds). 19:08:56 <elliott> and besides it's cleaner that way 19:08:59 <ais523> well, data has to become something when unboxed 19:09:08 <elliott> since you can thread complex CPS computations through an arbitrary data type 19:09:09 <elliott> 's fold 19:09:12 <ais523> and for sanity reasons, changing what it unboxes into retroactively is possibly a bad idea 19:09:21 * CakeProphet feels that people on this channel sometimes just assume he doesn't know anything. 19:09:24 <elliott> ais523: how's that relevant to which natural representation you use? 19:09:25 <ais523> and is probably only possible by retroactively replacing the interp 19:09:35 <ais523> elliott: well, the idea is say I have an integer, say 6 19:09:36 <ais523> that's an object 19:09:37 <elliott> ais523: I'm just saying use Hird naturals, not Church naturals, for the Var field 19:09:43 <ais523> oh, I see 19:09:46 <elliott> because it's more consistent 19:09:51 <ais523> now, 6 # would be the Hird numeral for 6 19:09:52 <CakeProphet> s/Hird/Hird(tm)/ 19:10:02 <elliott> why can't 6 be the Hird numeral for 6? 19:10:30 -!- SgeoN1 has quit (Ping timeout: 258 seconds). 19:11:00 <CakeProphet> they're second-class citizens. they shouldn't expect special treatment. 19:11:02 <CakeProphet> filthy peasants. 19:11:29 <elliott> ais523: oh, um, there's an inconsistency in the examples I gave 19:11:36 -!- Nisstyre has joined. 19:11:39 <elliott> "k true"/"k false" is wrong, it should be "true k"/"false k" 19:11:42 <elliott> I'm expanding it now though 19:11:47 <elliott> so you can just grab the updated version when I sprunge it :P 19:12:03 <CakeProphet> sprunge is a good verb. 19:12:21 -!- SgeoN1 has joined. 19:12:32 <elliott> ais523: (note that this means that even the "zero" value passed to a fold is CPS-represented) 19:12:37 <elliott> so you have to apply it to get it out 19:12:43 <elliott> but that's perfectly okay; in fact it's more consistent 19:13:13 <ais523> yep 19:15:11 <elliott> ais523: I'm going to try writing a simple eval (that doesn't expose call/cc to the LC program itself) on hird LC terms 19:15:19 <elliott> just out of curiosity 19:15:31 <ais523> fair enoguh 19:15:33 <ais523> *enough 19:15:39 <elliott> well, I think I'll depend on an unwritten fix, because I cba to write out Y :) 19:15:40 <ais523> this is useful esolang progress even if Feather never goes anywhere 19:15:50 <ais523> you can just look up Y, can't you? 19:15:53 <ais523> or do you have to CPS it too? 19:17:11 <elliott> oh, wait, Y probably wouldn't even work 19:17:15 <elliott> because the lambda calculus being used is strict 19:17:22 <elliott> primitive fix is nicer, anyway 19:17:25 <elliott> because it permits sharing 19:17:33 <elliott> ...although I guess that doesn't really apply to strict languages :/ 19:18:02 <CakeProphet> haskell mind virus. strict languages don't care, so why would they share? 19:19:37 <ais523> elliott: I'll need to write a strict fix in LC, but it's possible, right (with a Y variant)? 19:20:10 <elliott> ais523: yes 19:20:14 <elliott> only works on functions, though 19:20:20 <Phantom_Hoover> elliott, how does Hird LC work? 19:20:42 <ais523> elliott: all I really need is to be able to do recursion 19:21:29 <CakeProphet> Did you know that solar energy helps power space shuttle missions and provides energy to the Hubbell telescope? Turns out, through the use of solar panels, solar engergy can also provide power to your home. 19:21:34 <CakeProphet> this is a good website. 19:21:38 <elliott> Phantom_Hoover: well 19:22:00 -!- SgeoN1 has quit (Ping timeout: 258 seconds). 19:22:12 <Phantom_Hoover> elliott proceeds to explain it in song. 19:22:20 <elliott> no, that was my answer 19:22:55 <elliott> :t foldr 19:22:55 <lambdabot> forall a b. (a -> b -> b) -> b -> [a] -> b 19:23:06 <elliott> ?djinn ((a -> b -> b) -> b -> b) -> a 19:23:06 <lambdabot> -- f cannot be realized. 19:23:11 <elliott> wat 19:23:23 <elliott> ?djinn (forall b.(a -> b -> b) -> b -> b) -> a 19:23:23 <lambdabot> -- f cannot be realized. 19:23:24 <elliott> darn :P 19:23:25 <elliott> well 19:23:29 <elliott> I know that can't be right because that's just head... 19:23:35 <elliott> stupid djinn 19:23:41 <elliott> i guess it doesn't quite understand recursion :) 19:23:56 <CakeProphet> if only djinn could write my programs for me. 19:29:53 <ais523> ?djinn (a -> b -> c) -> (b -> a -> c) 19:29:53 <lambdabot> f a b c = a c b 19:30:05 <ais523> ?pl . djinn (a -> b -> c) -> (b -> a -> c) 19:30:05 <lambdabot> (line 1, column 1): 19:30:05 <lambdabot> unexpected "." 19:30:05 <lambdabot> expecting white space, "()", natural, identifier, lambda abstraction or expression 19:30:09 <ais523> ?pl.djinn (a -> b -> c) -> (b -> a -> c) 19:30:09 <lambdabot> Unknown command, try @list 19:30:13 <ais523> how do I stack commands? 19:30:21 <ais523> ?pl$djinn (a -> b -> c) -> (b -> a -> c) 19:30:21 <lambdabot> Unknown command, try @list 19:30:51 <elliott> ais523: http://sprunge.us/LPMW 19:30:56 <elliott> ?. pl djinn (a -> b -> c) -> (b -> a -> c) 19:30:56 <lambdabot> f = flip 19:31:03 <elliott> ais523: note: does not yet include evaluator :P 19:31:11 <elliott> also, includes a _lot_ of rambling. 19:31:23 <elliott> oops, it's not right 19:31:38 <elliott> one moment 19:32:05 <elliott> ais523: http://sprunge.us/aEhU 19:32:43 <ais523> ty 19:33:33 <elliott> ais523: oh, I think that LC term structure may be wrong 19:33:37 <elliott> at least, if you want to evaluate simply with it 19:33:40 <elliott> -- Lam = \e var lam app k. e var lam app (\e'. lam e' k) 19:33:45 <elliott> that forces the inside of the lambdas 19:33:47 <elliott> so you want to tweak it slightly 19:38:25 <elliott> ais523: http://sprunge.us/DGBd now with eval! 19:38:28 <Ngevd> Today's D&D beats even the previous one 19:38:29 <elliott> (of a slightly different representation) 19:38:45 <elliott> ais523: this representation can be reified back to syntax fully 19:38:55 <elliott> also, the resulting eval is really simple :) 19:39:05 <elliott> even if it cheats by encoding Lams in a way that breaks the mechanical rules of Hird encoding 19:39:12 <elliott> but it's worth it, because otherwise the CPS wouldn't help at all 19:39:49 <elliott> oops 19:39:51 <elliott> I made another mistake 19:40:05 <elliott> sorry ais523 19:40:06 <elliott> i'll fix it 19:40:45 <elliott> ais523: http://sprunge.us/ENSb 19:41:00 <elliott> note that that eval doesn't expose call/cc to its evaluated expression at all 19:41:02 <elliott> but I think it would be simple 19:41:36 <elliott> either by adding another primitive syntax node CallCC which evaluates to the call/cc function, or by having a top-level eval that passes call/cc to the whole expression which is a function 19:41:42 <elliott> (that latter one sounds more tricky though) 19:41:47 <ais523> yep, just pass call/cc as an arg 19:42:11 <elliott> ais523: oh and both eval and its App case can be trivially eta-reduced there 19:42:57 <elliott> ais523: and no, I think CallCC as a primitive syntax note is simpler 19:43:00 <elliott> than passing call/cc as an argument 19:43:06 <elliott> in fact, I'm not sure the latter even works 19:43:19 <elliott> you don't need to change the concrete syntax used, though 19:43:27 <elliott> because you can just pass the primitive node CallCC in 19:43:36 <elliott> ais523: http://sprunge.us/SYUJ updated version, with super-compact eval at the end 19:43:47 <elliott> eval = \vs t. t (\n. at n vs) (\e k'. k' (Lam e)) (\f x. f error (eval (Cons x vars)) error) 19:43:58 <elliott> argh 19:43:58 <elliott> s/vars/vs/ 19:44:11 <elliott> http://sprunge.us/dSKH fixed. again. 19:44:17 <elliott> I think that file is now long enough. 19:45:21 <elliott> and now to brb and try and forget I ever got that confused 19:47:56 <Ngevd> Well, I have revived my MSPAFA 19:48:43 -!- nooga has quit (Ping timeout: 252 seconds). 19:49:04 <ais523> elliott: my bash history is currently full of alternating wget, mv and l commands 19:49:21 <ais523> not completely full 19:49:25 <ais523> but many lines worth, anyway 19:59:20 <ais523> <nano> [ XOFF ignored, mumble mumble ] 19:59:23 <ais523> haha 20:00:06 <olsner> that was the vital clue to eventually figuring out what it was that occasionally locked up my terminals 20:01:05 <olsner> and of course that problem was much worse before nano introduced that feature... 20:08:40 <Phantom_Hoover> Ngevd, oh god 20:09:55 -!- nooga has joined. 20:13:44 <elliott> ais523: back, and heh 20:14:28 -!- nooga has quit (Ping timeout: 260 seconds). 20:15:06 <elliott> ais523: http://sprunge.us/PXPS final revision... hopefully :) 20:15:10 <ais523> <my grandmother> is Norway always icy? 20:15:22 <ais523> any Norwegians here (oerjan, maybe) care to reply? 20:15:37 <elliott> Norway is literally made out of ice. 20:16:49 <Phantom_Hoover> ais523, they have warmer summers than Edinburgh. 20:17:07 -!- oerjan has joined. 20:17:13 -!- Ngevd has quit (Ping timeout: 260 seconds). 20:17:59 <elliott> Phantom_Hoover: so does a fridge. 20:18:19 <Phantom_Hoover> elliott, that is perhaps an exaggeration. 20:18:48 <elliott> i'm in the great fridge we call "hexham 20:18:49 <elliott> " 20:19:14 <elliott> ais523: I take it lazy Feather would make no sense whatsoever? 20:19:40 <ais523> elliott: it'd have the problem of working out when a retroactive change happened 20:19:46 <ais523> (to determine which one happened first) 20:20:15 <elliott> go by evaluation order? 20:20:16 <Phantom_Hoover> elliott, wait, what's the nearest city to Hexham. 20:20:44 <elliott> Phantom_Hoover: Newcastle. 20:21:21 <Phantom_Hoover> But that's in Ireland! 20:21:44 <elliott> Yeeees. 20:22:03 <ais523> Phantom_Hoover: I thought you'd have a better grasp of geography than that... 20:22:04 <Phantom_Hoover> God, it's worse than Leicester. 20:22:09 <elliott> Has nobody told Phantom_Hoover about the wormhole near Hexham? 20:22:21 <ais523> Leicester is pretty close to Birmingham, at least 20:22:28 <elliott> Man, wormholes would really fuck up geology. Maybe. 20:22:33 <elliott> If it extended into the atmosphere. 20:22:36 <Phantom_Hoover> http://en.wikipedia.org/wiki/Newcastle_West 20:22:41 <Phantom_Hoover> Geography, bitches. 20:22:59 <ais523> Phantom_Hoover: that isn't Newcastle 20:23:06 <ais523> elliott: btw, are the rumours about Newcastle true? 20:23:18 <elliott> ais523: Yes, all of them. What rumours? 20:23:31 <olsner> newcastle is a beer 20:23:32 <Phantom_Hoover> ais523, yes it is 20:23:32 <ais523> mostly about people having a total disregard for the weather 20:23:45 <ais523> and never wearing more than one level of clothing, or /maybe/ two, no matter what 20:24:02 <ais523> (rarely wearing less than one, either, they aren't /quite/ that mad) 20:24:14 <elliott> ais523: Wow, I know Birmingham are used to being the butts of the rumours, but are they really that bad at making up ones in retaliation? 20:24:15 <Phantom_Hoover> If you're going to say 'no, it's Newcastle West', then what Newcastle *are* you referring to? 20:24:32 <elliott> (I have no idea whether that is true or not.) 20:24:38 <elliott> (It's the weirdest rumour I've ever heard though.) 20:24:47 <ais523> elliott: they're decent at retaliating, just not against Newcastle 20:25:04 <Phantom_Hoover> ais523, ooh, what rumours do you have about us? 20:25:09 <ais523> it doesn't really seem like an /insulting/ rumour, though 20:25:49 <Phantom_Hoover> (I assume your grasp of Scotland is too granular to distinguish Edinburgh from anywhere else.) 20:26:19 <ais523> Phantom_Hoover: IIRC, it's that Edinburgh and Glasgow both consider themselves superior for the other, for different reasons 20:26:59 <Phantom_Hoover> elliott, anyway Newcastle is fully a degree warmer than Edinburgh in the summer so ha. 20:27:21 <elliott> Phantom_Hoover: /Too/ granular? 20:27:40 <Phantom_Hoover> elliott, I forgot which way granularity went. 20:27:40 <oerjan> <ais523> and never wearing more than one level of clothing, or /maybe/ two, no matter what <-- it's true, in newcastle they walk around in their underwear. 20:27:46 <elliott> Phantom_Hoover: Me too. 20:27:54 <elliott> oerjan: so that norway, so icy 20:28:02 <oerjan> elliott: occasionally 20:28:22 <elliott> ais523: only occasionally 20:28:33 <ais523> oerjan: that is not inconsistent with the rumours 20:28:56 <oerjan> ais523: i am merely deducing consequences of them 20:28:58 -!- monqy has joined. 20:29:01 <Phantom_Hoover> oerjan, let's objectivise this. 20:29:11 <oerjan> Phantom_Hoover: ok. first, A is A. 20:29:18 <Phantom_Hoover> How often have you had icicles hanging from your nose? 20:29:28 <ais523> oerjan: <my grandmother> is Norway always icy? 20:29:38 <Phantom_Hoover> oerjan, second, taxes are bad and charity is evil? 20:29:57 <oerjan> Phantom_Hoover: rarely. i'm a neurotical nose wiper. 20:30:03 -!- ive has quit (Ping timeout: 260 seconds). 20:30:18 <Phantom_Hoover> oerjan, a fellow sufferer! 20:30:18 <oerjan> well, obsessive, at least. 20:30:38 <Phantom_Hoover> I have a cold and my nose is almost rubbed raw. 20:30:45 <oerjan> Phantom_Hoover: know the feeling. 20:30:46 <elliott> objectivism is a great joke, it just needs to be less serious 20:31:24 <monqy> ugh obsessive nose wiping. that's me too. 20:31:38 <Phantom_Hoover> perhaps 20:31:47 <Phantom_Hoover> everyone is an obsessive nose wiper 20:31:57 <elliott> what are these noses you speak of 20:32:25 <Phantom_Hoover> elliott, they're these things you have if you're not a stunted Northern midget. 20:33:25 <elliott> aka dorf 20:33:27 <oerjan> <Phantom_Hoover> oerjan, second, taxes are bad and charity is evil? <-- something tells me norway isn't big on objectivism. 20:34:00 -!- boily has joined. 20:34:01 <Phantom_Hoover> oerjan, ah, you are all fans of floating-point, then. 20:34:17 <oerjan> Phantom_Hoover: wat 20:35:07 <Phantom_Hoover> oerjan, \exists A \in floats : A \neq A 20:35:16 <oerjan> ah. 20:35:28 <elliott> Phantom_Hoover: Tauist. 20:35:43 <oerjan> > tau 20:35:44 <lambdabot> Not in scope: `tau' 20:35:44 <elliott> (I need a go-to phrase for "wow you just made that excessively formal to sound smart".) 20:35:50 <oerjan> @let tau = 2*pi 20:35:50 <lambdabot> Defined. 20:35:53 <elliott> @undefine 20:35:54 <oerjan> > tau 20:35:54 <elliott> PURGE 20:35:55 <lambdabot> Not in scope: `tau' 20:35:56 <elliott> PUUUUUUURGE 20:35:57 <oerjan> ARGH 20:36:07 <elliott> @let pi = tau/2 20:36:07 <lambdabot> <local>:1:5: Not in scope: `tau' 20:36:28 <Phantom_Hoover> <elliott> (I need a go-to phrase for "wow you just made that excessively formal to sound smart".) 20:36:59 <Phantom_Hoover> Well I just kind of ended up doing that by accident. 20:37:15 <elliott> SUUUUUUUUUUUUURE 20:37:28 <Phantom_Hoover> Around the \in I had my doubts, and I had serious regrets by the time I got to \neq, but by then it was too late. 20:37:32 <oerjan> bondage and latex 20:37:32 <elliott> *breaks into Phantom_Hoover's house, finds walls scribbled with proofs of the greater elegance of tau over pi in simple algebraic equations* 20:37:49 <monqy> oh no 20:37:54 <monqy> phantom hoover how could you 20:38:01 <elliott> *sees thick, seemingly-incomplete manuscript in progress, "The Tau Way of Life"* 20:38:02 <Phantom_Hoover> elliott, hey, I hate tau just as much as the next sane man! 20:38:12 <Phantom_Hoover> elliott, the tau of physics. 20:38:23 <Phantom_Hoover> 06:22:56: <Sgeo_> I have this... thing, as a child, and still a little now, where if I didn't put my hand on my chest, I'd be worried about whether or not my heart's still beating 20:38:24 <elliott> *hears sounds from Phantom_Hoover's sleeping mouth, "tauuuu. tauuuuuu. tauuuuuuuuuuuu. full turn. tauuuuuuu."* 20:38:35 <Phantom_Hoover> I don't even know why this is in a file in ~/ 20:38:39 <oerjan> elliott: itym "Tau Te Ching" 20:38:47 <elliott> *sees Phantom_Hoover sleepwalk, go over to the wall, write "I LOVE TAU IT IS BETTER THAN PI AND ALSO GREAT" onto the wall, and then sign it. in triplicate.* 20:38:49 <Phantom_Hoover> It also has 22:20:14: <alise> All the evidence and our best-accepted theories point to it being finite...so... 20:39:05 <elliott> Phantom_Hoover: Our best-accepted theories point to that file you have being finite. 20:39:30 <Phantom_Hoover> I assume it is some kind of list of things I meant to respond to for some reason, possibly the Irish Madness. 20:39:44 <Phantom_Hoover> And finally 21:01:26: <Phantom_Hoover_> Vorpal, Dwarf Fortress is pretty boring, to be honest. 20:39:53 <Phantom_Hoover> Past me is such a tool. 20:40:02 <elliott> I agree. 20:40:04 <elliott> Past me, too. 20:40:15 <elliott> Phantom_Hoover: The Irish Madness? 20:40:19 <oerjan> `log ehird 20:40:23 <HackEgo> 2008-01-27.txt:21:39:40: <ehird> i much prefer being molested by a unicorn, that is invisible, and pink 20:40:30 <elliott> wat 20:40:34 <ais523> wait, that's `log not `quote? 20:40:42 <oerjan> ais523: for _now_. 20:40:48 <ais523> `log `addquote 20:40:52 <oerjan> `quote molested 20:40:52 <HackEgo> 2009-10-26.txt:04:56:30: <ehird> `addquote <fax> im the worst person in the world 20:40:53 <HackEgo> No output. 20:40:59 <ais523> `log `addquote 20:41:00 <elliott> i don't think we need to add that :P 20:41:02 <HackEgo> 2011-08-19.txt:09:21:43: <elliott_> `addquote <monqy> mmm these music samples are still so tasteful 20:41:14 <ais523> `log `addquote 20:41:16 <Phantom_Hoover> `addquote <ehird> i much prefer being molested by a unicorn, that is invisible, and pink 20:41:18 <HackEgo> 2010-01-22.txt:16:47:39: <oerjan> `addquote <Sgeo> I'd imagine that it already has, and no one noticed 20:41:18 <HackEgo> 677) <ehird> i much prefer being molested by a unicorn, that is invisible, and pink 20:41:20 <ais523> I like this method, as it gets deleted quotes too 20:41:27 <elliott> `delquote 677 20:41:29 <HackEgo> ​*poof* 20:41:31 <elliott> ERASE THE RECORD 20:41:39 <ais523> `log `addquote 20:41:43 <HackEgo> 2009-07-10.txt:23:24:37: <ehird> `addquote באופן חלופי ביקום זה כרוך כולם מדברים עברית מסיבה כלשהי: <ehird> אז אני יכול רק להסיק כי הוא פגום, או את העולם, הוא מטורף לגמרי 20:41:59 <ais523> `log `addquote 20:42:02 <HackEgo> 2010-07-26.txt:23:46:01: <ais523> `addquote <ivancastillo75> Oh I get it you guys just use this space to do nothing ? 20:42:16 <ais523> hmm, we need `context 20:42:21 <ais523> which is like `log, but shows a few lines before too 20:43:21 <oerjan> ais523: tricky to do while selecting a random quote. maybe make it take that 2010-07-26.txt:23:46:01 thing? 20:43:32 <elliott> how is that tricky 20:43:51 <elliott> it'd have to use pastes though 20:44:20 <ais523> or just space-backslash-space as newline? 20:44:53 -!- BeholdMyGlory has quit (Quit: ZNC - http://znc.in). 20:45:21 <elliott> ais523: it wouldn't fit on an irc line 20:45:34 <monqy> if only hackego could multiple lines.... 20:46:02 <elliott> <gragor> BAD,E 20:46:06 <elliott> <gragor> BAD,E JUJU 20:49:08 -!- Ngevd has joined. 20:50:00 -!- BeholdMyGlory has joined. 20:52:11 -!- SgeoN1 has joined. 20:54:12 <Ngevd> Can I request a page on the wiki for Funge 98? 20:54:26 <Ngevd> And an unconnected category "Unimplementable"? 20:54:44 <elliott> I think we have a superturing category. Not quite the same, but. 20:54:59 <elliott> I don't think anyone wants to put in the effort required to make a decent standalone page for Funge-98 itself. 20:55:19 <elliott> There isn't really much of a paragraph's worth of material in terms of broad strokes, and the details themselves are really complicated. 20:55:21 <monqy> we have uncomputable i think it is 20:55:41 <monqy> what does unimplementable mean 20:55:41 <Ngevd> So we do 20:55:51 <Ngevd> I don't really know 20:56:04 <elliott> uncomputable, I suspect 20:56:15 <Phantom_Hoover> What does uncomputable mean? 20:56:29 <Ngevd> Super Turing-complete 20:56:29 <monqy> some uncomputable languages are implementable in some other uncomputable languages 20:56:46 <Ngevd> We could define a computational class for them! 20:56:51 <Phantom_Hoover> Ngevd, we have a category for those. 20:57:07 <Phantom_Hoover> And their computational classes have already been explored. 20:58:15 <Ngevd> I'd like to switch back to my first suggestion, a Funge-98 page 20:58:23 <elliott> <elliott> I don't think anyone wants to put in the effort required to make a decent standalone page for Funge-98 itself. 20:58:23 <elliott> <elliott> There isn't really much of a paragraph's worth of material in terms of broad strokes, and the details themselves are really complicated. 20:58:24 <elliott> :p 20:58:50 <elliott> There's maybe three to five people around here who have the sufficient knowledge to write a decent page on it. 20:58:58 <Ngevd> One of whom is you 20:59:06 <elliott> At least one of them can't be arsed, and I suspect at least three others can't either. 20:59:28 <Ngevd> I will LEARN IT 20:59:32 <Ngevd> And MAKE AN ARTICLE 20:59:40 <monqy> good LUCK 20:59:40 <elliott> ^source 20:59:40 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 20:59:45 <elliott> Start by learning from the masters. 20:59:48 <elliott> (OK, not that masterful.) 20:59:52 <Phantom_Hoover> Ngevd, I hope you like fastidious specs. 21:00:41 <elliott> Ngevd: Anyway, knowing it well enough to program in it isn't really enough to make a decent article on it, because you'll never run into the corner cases that make up the majority of its infamous ambiguity and strangeness. 21:00:45 <monqy> detroppus is a good drow 21:00:49 <elliott> You really have to implement it to get that kind of knowledge. 21:01:00 <elliott> monqy: yes 21:01:02 <Phantom_Hoover> elliott, what corner cases, out of curiosity? 21:01:13 <Phantom_Hoover> elliott, drows are a kind of elf STEP CAREFULLY MY FRIEND 21:02:25 <Ngevd> GOODNIGHT 21:02:29 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 21:02:40 <elliott> Phantom_Hoover: See: Basically everything Mycology tests that isn't dirt simple. 21:03:12 -!- SgeoN1 has quit (Ping timeout: 258 seconds). 21:05:04 -!- SgeoN1 has joined. 21:09:43 -!- SgeoN1 has quit (Ping timeout: 258 seconds). 21:12:04 <Deewiant> If you use k at all, you'll probably run into a "corner case". 21:12:19 <elliott> True :P 21:13:05 <fizzie> Drows are a kind of elf; drowsy is kind of an elfy state to be in. 21:14:15 <elliott> And one I'm in. Good night, fuckers. 21:14:25 <monqy> good night elliott 21:16:19 <oerjan> 22:56 Phantom_Hoover> What does uncomputable mean? 21:16:19 <oerjan> 22:56 Ngevd> Super Turing-complete 21:17:13 <oerjan> i believe it is possible for a language to contain uncomputable features without being turing-hard 21:17:32 <oerjan> i vaguely recall possibly seeing some proof 21:17:43 <Phantom_Hoover> Define 'Turing-hard'? 21:18:10 <oerjan> capable of computing anything a turing machine can compute, but possibly more 21:18:38 <Phantom_Hoover> Oh, so it can't compute anything a TM can? 21:18:41 <Phantom_Hoover> That's trivial. 21:18:57 -!- elliott has quit (Ping timeout: 260 seconds). 21:18:58 <oerjan> it can't compute _everything_ a TM can. 21:19:15 <Phantom_Hoover> Yesyesyes, poor choice of words. 21:19:29 <oerjan> but it may still be able to compute something a TM cannot. 21:19:54 <Phantom_Hoover> Again, that seems trivial. 21:20:31 <oerjan> Phantom_Hoover: yes, but it contradicts Ngevd's claim that uncomputable == super TC 21:20:46 <Phantom_Hoover> Yeah, I know. 21:20:48 <oerjan> which is all i wanted to point out. 21:25:54 <oerjan> @tell zzo38 <zzo38> But, is it, if you ignore undefined, and work only with fully defined programs? <-- if you ignore undefined, i think () is final and a Void (empty) type is initial, similarly to the Set category in math 21:25:54 <lambdabot> Consider it noted. 21:27:05 -!- ive has joined. 21:32:24 <oerjan> <ais523> <my grandmother> is Norway always icy? 21:32:37 <oerjan> we supposedly had 28 celsius sometime in august 21:32:47 <oerjan> (in trondheim) 21:32:56 <oerjan> well, by the forecast. 21:33:20 <oerjan> and it hasn't started freezing yet. 21:40:55 -!- GreaseMonkey has joined. 21:42:20 <oerjan> tomorrow is iwc 3160 21:52:54 -!- augur has quit (Ping timeout: 276 seconds). 21:56:22 -!- augur has joined. 21:56:39 <oerjan> > [1,3..20 :: Rational] 21:56:40 <lambdabot> [1 % 1,3 % 1,5 % 1,7 % 1,9 % 1,11 % 1,13 % 1,15 % 1,17 % 1,19 % 1,21 % 1] 22:00:42 <Phantom_Hoover> oerjan, is that the Calvin and Hobbes Point? 22:00:56 <oerjan> yes 22:03:20 -!- Jafet has quit (Ping timeout: 260 seconds). 22:07:48 -!- kmc has quit (Quit: Leaving). 22:09:35 * Phantom_Hoover → sleep 22:09:36 -!- Phantom_Hoover has quit (Quit: Leaving). 22:12:51 -!- itidus20 has joined. 22:14:22 -!- itidus21 has quit (Ping timeout: 260 seconds). 22:17:00 -!- FireFly has quit (Quit: FireFly). 22:18:27 -!- boily has quit (Ping timeout: 260 seconds). 22:20:47 <Lymee> :t Rational 22:20:48 <lambdabot> Not in scope: data constructor `Rational' 22:20:56 <Lymee> :t (%) 22:20:57 <lambdabot> forall a. (Integral a) => a -> a -> Ratio a 22:21:25 <oerjan> type Rational = Ratio Integer 22:22:42 <oerjan> :k Rational 22:22:43 <lambdabot> * 22:24:13 <Lymee> > 10 ** 10 ** 10 22:24:13 <lambdabot> Infinity 22:24:23 <Lymee> > (10 ** 10 ** 10 :: Integral) 22:24:23 <lambdabot> Class `GHC.Real.Integral' used as a type 22:24:33 <Lymee> > (10 ** 10 ** 10 :: Integer) 22:24:34 <lambdabot> No instance for (GHC.Float.Floating GHC.Integer.Type.Integer) 22:24:34 <lambdabot> arising fr... 22:24:42 <oerjan> > 10 ^ 10 ^ 10 22:24:46 <Lymee> derp 22:24:57 <oerjan> oops 22:24:58 <lambdabot> thread killed 22:25:06 <oerjan> > 10 ^ 10 ^ 5 22:25:10 <lambdabot> mueval-core: Time limit exceeded 22:25:13 <oerjan> > 10 ^ 10 ^ 3 22:25:17 <lambdabot> mueval-core: Time limit exceeded 22:25:17 <Lymee> > 2 ^ 33 22:25:21 <oerjan> sheesh 22:25:21 <lambdabot> mueval-core: Time limit exceeded 22:25:26 <oerjan> wat 22:25:36 <Lymee> :t (^) 22:25:36 <Deewiant> > 2^2 22:25:38 <oerjan> now lambdabot is just being lazy 22:25:38 <lambdabot> 4 22:25:41 <lambdabot> forall a b. (Num a, Integral b) => a -> b -> a 22:25:43 <oerjan> > 2^33 22:25:44 <lambdabot> 8589934592 22:25:56 <Lymee> >10^10^10 22:26:09 <oerjan> Lymee: that's far too large anyhow 22:26:09 <Lymee> > 10^10^10 22:26:20 <oerjan> 10 billion digits 22:26:27 <lambdabot> thread killed 22:26:36 <oerjan> > 10^10^3 22:26:45 <lambdabot> mueval: ExitFailure 1 22:26:45 <lambdabot> mueval-core: Time limit exceeded 22:26:50 <oerjan> gah 22:26:51 <monqy> > (succ^5)0 22:26:55 <lambdabot> mueval-core: Time limit exceeded 22:26:56 <Lymee> > 2^65 22:26:58 <lambdabot> 36893488147419103232 22:26:59 <monqy> > (succ^2)0 22:27:01 <lambdabot> 1 22:27:03 <monqy> > (succ^3)0 22:27:04 <lambdabot> 1 22:27:05 <Lymee> > 2^129 22:27:06 <lambdabot> 680564733841876926926749214863536422912 22:27:10 <oerjan> i'm sure lambdabot has managed computations of the size of 10^1000 before 22:27:12 <Lymee> > 2^257 22:27:14 <lambdabot> 231584178474632390847141970017375815706539969331281128078915168015826259279... 22:27:31 <oerjan> perhaps the new version has stricter time bounds 22:27:49 <monqy> > (id^3)0 22:27:50 <lambdabot> 0 22:28:55 <oerjan> monqy: that's not actually iterating the function 22:29:05 <monqy> yeah I figured as much from playing with succ 22:29:11 <monqy> but what does it do then 22:29:31 <oerjan> (f^n) x = (f x)^n 22:29:46 <oerjan> it's a pointwise Num instance for functions 22:29:58 <monqy> ah 22:30:46 <oerjan> > 10^1000 22:30:47 <lambdabot> 100000000000000000000000000000000000000000000000000000000000000000000000000... 22:31:10 <oerjan> i guess it all depends on how much load lambdabot gets 22:31:12 -!- itidus20 has quit (Read error: Connection timed out). 22:31:58 -!- itidus20 has joined. 22:39:16 -!- Patashu has joined. 22:39:18 -!- itidus20 has quit (Read error: Operation timed out). 22:41:10 -!- itidus20 has joined. 22:44:37 -!- nooga has joined. 22:52:13 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:59:58 -!- itidus20 has quit (Read error: Connection timed out). 23:00:05 -!- tiffnya has joined. 23:00:10 -!- kmc has joined. 23:01:21 -!- Deewiant_ has joined. 23:02:01 -!- jix_ has joined. 23:06:45 -!- jix has quit (*.net *.split). 23:06:45 -!- Deewiant has quit (*.net *.split). 23:06:45 -!- tiffany has quit (*.net *.split). 23:06:46 -!- Lymee has quit (*.net *.split). 23:08:39 <nooga> i'd play a roguelike 23:14:13 -!- Madoka-Kaname has joined. 23:15:13 -!- ineiros_ has quit (Remote host closed the connection). 23:16:12 -!- sllide has quit (Read error: Connection reset by peer). 23:31:20 -!- copumpkin has joined. 23:54:08 -!- Vorpal has quit (Ping timeout: 260 seconds). 2011-09-21: 00:01:44 -!- augur has quit (Remote host closed the connection). 00:19:58 -!- GreaseMonkey has quit (Quit: The Other Game). 00:25:25 <ais523> <Slashdot> We are helping a Slashdot reader conduct academic research by experimenting with a new feature for a handful of stories. Next to every comment, anyone can restate a point that they think the commenter is making. The goal is to encourage listening and to highlight interesting points. 00:25:31 <ais523> this is going to end in disaster :) 00:27:04 <oerjan> I believe ais523 has a bad feeling about this feature. 00:27:39 -!- nooga has quit (Ping timeout: 260 seconds). 00:28:07 <ais523> Does oerjan's summarry... elegantly distill meaning? uncover a good point? clarify the message? provoke unnecessarily? umm, it's not a summary 00:30:55 <oerjan> i see ais523 is missing the option of "make a cheap joke". 00:31:13 <ais523> oerjan: that was a quote from Slashdot's summary thing 00:31:17 <ais523> so blame Slashdot for that 00:31:21 <oerjan> aha 00:31:30 <ais523> those are the options you can vote on summaries with 00:33:07 <oerjan> how boring. 00:33:27 <ais523> wait, you can do summaries of the summaries with your votes 00:33:35 <ais523> but there doesn't seem to be any way to vote on /those/ 00:33:40 * ais523 was hoping for an infinite regress 00:36:25 <oerjan> > fix (fun "vote on") :: Expr 00:36:25 <lambdabot> vote on (vote on (vote on (vote on (vote on (vote on (vote on (vote on (vot... 00:37:51 <oerjan> > fix (fun "summarized in") :: Expr 00:37:52 <lambdabot> summarized in (summarized in (summarized in (summarized in (summarized in (... 00:39:24 <monqy> :t fun 00:39:25 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a 00:39:42 <oerjan> :t f 00:39:43 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a 00:39:59 <oerjan> basically, f = fun "f" 00:40:27 <oerjan> > foldr (.) id [f,f,f] x :: Expr 00:40:29 <lambdabot> f (f (f x)) 00:40:51 <oerjan> :t x 00:40:51 <lambdabot> Expr 00:41:10 <oerjan> Expr is a more specific type, an instance of FromExpr 00:41:54 -!- ais523 has quit (Remote host closed the connection). 00:41:57 <oerjan> and then there is an instance (FromExpr a, FromExpr b) => FromExpr (a -> b) or so which is used when you apply f as a function. 00:44:10 <Madoka-Kaname> > foldr (.) id [f..] x :: Expr 00:44:11 <lambdabot> No instance for (GHC.Enum.Enum 00:44:11 <lambdabot> (SimpleReflect.Expr -> S... 00:44:17 <Madoka-Kaname> > foldr (.) id (repeat f) x :: Expr 00:44:19 <lambdabot> f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 00:45:01 <copumpkin> > fix f 00:45:02 <lambdabot> Ambiguous type variable `a' in the constraints: 00:45:03 <lambdabot> `GHC.Show.Show a' 00:45:03 <lambdabot> a... 00:45:05 <copumpkin> > fix f :: Expr 00:45:06 <oerjan> > foldr ($) x [f,f,f] -- shorter 00:45:06 <lambdabot> f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 00:45:07 <lambdabot> f (f (f x)) 00:46:10 <oerjan> > x*y + w*z 00:46:11 <lambdabot> x * y + w * z 00:46:22 <oerjan> > x*(y-t) + w*z 00:46:23 <lambdabot> x * (y - t) + w * z 00:46:50 <monqy> :t expr 00:46:51 <lambdabot> Expr -> Expr 00:46:59 <oerjan> wat 00:47:04 <monqy> expr = id 00:47:13 <oerjan> hm maybe 00:47:17 <monqy> "Force something to be an expression." 00:47:23 <oerjan> > expr f 00:47:23 <lambdabot> f 00:47:38 <oerjan> useful for that, maybe 00:47:56 <monqy> > f 00:47:57 <lambdabot> Ambiguous type variable `a' in the constraints: 00:47:57 <lambdabot> `SimpleReflect.FromExpr ... 00:48:01 <monqy> mm 00:48:18 <oerjan> or more usefully, in places where putting :: Expr isn't easy 00:48:31 <oerjan> > fix (expr . f) 00:48:33 <lambdabot> f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 00:48:34 -!- invariable has changed nick to variablre. 00:48:35 -!- variablre has changed nick to variable. 00:49:04 <oerjan> > fix (join $ expr . f) 00:49:04 <lambdabot> Couldn't match expected type `m a' 00:49:05 <lambdabot> against inferred type `SimpleRef... 00:49:09 <oerjan> oops 00:49:17 <oerjan> > fix (expr . join f) 00:49:19 <lambdabot> f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 00:49:25 -!- augur has joined. 00:49:34 <oerjan> > iterate (expr . join f) x !! 3 00:49:36 <lambdabot> f (f (f x x) (f x x)) (f (f x x) (f x x)) 00:50:02 <oerjan> i guess the expr . isn't really needed there 00:50:58 -!- augur has quit (Remote host closed the connection). 00:51:28 <oerjan> > f . expr . g . expr $ h x :: Expr 00:51:29 <lambdabot> f (g (h x)) 00:59:59 -!- MSleep has joined. 01:01:55 <oerjan> > fix(scanl(+)0.(1:)) 01:01:57 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946... 01:02:22 <oerjan> > fix(scanl(f)x.(y:)) 01:02:22 -!- MDude has quit (Ping timeout: 260 seconds). 01:02:23 <lambdabot> [x,f x y,f (f x y) x,f (f (f x y) x) (f x y),f (f (f (f x y) x) (f x y)) (f... 01:03:09 <oerjan> > fix(scanl(flip f)x.(y:)) 01:03:11 <lambdabot> [x,f y x,f x (f y x),f (f y x) (f x (f y x)),f (f x (f y x)) (f (f y x) (f ... 01:03:35 <Madoka-Kaname> なにそれ 01:03:39 <oerjan> > fix(scanl(flip f)y.(x:)) 01:03:40 <lambdabot> [y,f x y,f y (f x y),f (f x y) (f y (f x y)),f (f y (f x y)) (f (f x y) (f ... 01:05:14 -!- augur has joined. 01:16:57 -!- calamari has left ("Leaving"). 01:17:07 -!- itidus20 has joined. 01:30:44 -!- kmc has quit (Quit: Leaving). 01:51:02 -!- evincar has joined. 01:51:14 -!- tswett has quit (Changing host). 01:51:14 -!- tswett has joined. 01:51:47 <evincar> I've had an excellent but also terrible idea. 01:52:01 <evincar> Well, I had it in the past, but it's resurfaced with further development. 01:52:34 <evincar> I know I'm not well-liked in here, so only if anyone cares will I go on. 01:53:05 <oerjan> O_o 01:54:47 <evincar> oerjan: ? 01:57:03 <oerjan> it might be more productive to wait until a time when people here are active. 01:58:17 <evincar> That's true. Although people are very industrious about logreading in here. 01:58:30 <evincar> And I know elliott expressed interest in this concept once before. 01:58:56 <monqy> is it an interesting concept 02:02:13 <evincar> monqy: A long time ago I had the notion that functions are like verbs and nouns are like objects... 02:02:22 <evincar> ...and you can do computation with both of them, so why not also with adjectives/sets? 02:02:54 <evincar> So, in such a language, all terms denote sets/types, and your basic operation is something like type conversion. 02:03:00 <CakeProphet> Today, I ran. 02:03:04 <CakeProphet> wooo, computing is tough. 02:03:44 <evincar> So for example "2" would denote "the set of all things of which there are exactly two". 02:04:15 <monqy> good set 02:04:39 <evincar> "+" is "the set of all operations which return the sum of their operands" 02:04:48 <evincar> Of which there are several, and it's the compiler's job to choose which. 02:05:15 <cheater> *cough* 02:05:23 <cheater> so how did you arrive at this idea? 02:05:53 <evincar> Initially, out of the blue. 02:05:58 <evincar> It resurfaced because I was reading this: http://www.panix.com/~tehom/allnoun/allnoun8.faq 02:06:09 <cheater> you know what, blue is not my color 02:06:17 <cheater> you sure it was blue? 02:06:21 <cheater> i like red and green more 02:06:54 <monqy> arrived out of the red and green 02:07:00 <evincar> Of course, that describes a rather different language. 02:07:27 <evincar> It relates agents to roles to implicitly express relationships. 02:07:55 <evincar> Whereas I'm thinking of merely sequencing roles. 02:08:06 <cheater> that idea "of yours" is mine evincar. i called it "descriptive" or "declarative" languages and told you about it. and in fact you didn't get it at first. 02:08:06 <monqy> "sequencing roles"? 02:08:44 <cheater> which indicates to me that i should probably make a blog post about the idea or something. 02:08:47 -!- kmc has joined. 02:09:15 <evincar> cheater: Was it you I had this discussion with? I think we independently arrived at related things back then and then just ranted at one another. 02:09:39 <evincar> But a blog post would be good. 02:09:45 <monqy> I must not have been around back then 02:10:17 <evincar> It was...quite a while ago I should think, but I don't recall exactly when. 02:10:28 <evincar> I guess I could laboriously logsearch. 02:11:13 <cheater> search for "descriptive" or "declarative" 02:11:23 <oerjan> `log descriptive 02:11:26 <HackEgo> 2007-08-07.txt:04:58:15: <Sukoshi`> Yet another Descriptive Idea from Figs. 02:11:34 <cheater> we have also had a car analogy with ferrari cars. 02:11:37 <cheater> `log ferrari 02:11:40 <HackEgo> 2007-06-07.txt:07:21:11: * pikhq really goes into uncontrollable laughter when comparing the capabilities of those POS machines and a UNIX box. . . (fine, so we're comparing tricycles to Ferraris. . . Still.) 02:11:45 <cheater> no :( 02:11:47 <monqy> `pastelogs ferrari 02:11:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5544 02:12:10 <cheater> hmm 02:12:19 <cheater> `pastelogs maserati 02:12:21 <cheater> :D 02:12:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3244 02:12:33 <cheater> damnit 02:12:55 <oerjan> `log <cheater>.*?descriptive 02:12:59 <HackEgo> 2011-09-21.txt:02:12:55: <oerjan> `log <cheater>.*?descriptive 02:13:02 <oerjan> `log <cheater>.*?descriptive 02:13:06 <HackEgo> 2011-09-21.txt:02:11:13: <cheater> search for "descriptive" or "declarative" 02:13:16 <Madoka-Kaname> This is comical. 02:13:17 <oerjan> NOT IMMENSELY ENCOURAGING 02:13:25 <cheater> hahahahahah 02:13:32 <oerjan> `log <cheater>.*?declarative 02:13:35 <HackEgo> 2011-09-21.txt:02:13:32: <oerjan> `log <cheater>.*?declarative 02:13:38 <oerjan> `log <cheater>.*?declarative 02:13:40 <Madoka-Kaname> Try cheater_ 02:13:42 <HackEgo> 2011-09-21.txt:02:13:32: <oerjan> `log <cheater>.*?declarative 02:13:49 <oerjan> `log <cheater_>.*?declarative 02:13:51 <HackEgo> 2011-08-09.txt:19:30:25: <cheater_> NihilistDandy, i like to differentiate between "declarative" and "constructive" 02:14:00 <monqy> `pastelogs <cheater.*declarative 02:14:04 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17723 02:14:04 <cheater> that's more like it 02:14:08 <cheater> i think that might be it 02:14:25 <monqy> `pastelogs <cheater.*descriptive 02:14:29 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27718 02:14:41 <cheater> `pastelogs cheater.*evincar 02:14:45 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19057 02:15:02 <monqy> 2010-11-18.txt:09:25:39: <cheater99> i hate you and everything you stand for, evincar 02:15:05 <monqy> good quote 02:15:11 <evincar> I like it. 02:15:17 <cheater> haha 02:15:33 <cheater> yeah, the good old times. 02:15:34 <evincar> Hey, I remember that video. 02:16:17 <evincar> I might have gone by evincarofautumn? Possibly? Or eoa? 02:17:19 <evincar> Except for possible nick length limits. 02:17:53 <evincar> `log <cheater.*adjective 02:17:57 <HackEgo> 2011-09-21.txt:02:17:53: <evincar> `log <cheater.*adjective 02:18:01 <evincar> :( 02:18:23 <oerjan> `log ^<cheater_>.*?declarative 02:18:26 <HackEgo> No output. 02:18:32 <oerjan> er 02:18:40 <cheater> what's wrong with HackEgo? 02:18:40 <evincar> He was cheater99 before... 02:18:43 <oerjan> `log ^<cheater.*adjective 02:18:44 <monqy> `pastelogs evincar.*adjective 02:18:46 <HackEgo> No output. 02:18:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30696 02:19:08 <evincar> What the hell did I call myself back then? 02:19:10 <oerjan> `log ^< 02:19:11 <evincar> Or did we lose logs? 02:19:14 <HackEgo> No output. 02:19:30 <oerjan> `log test 02:19:33 <HackEgo> 2007-03-27.txt:16:17:31: <Figs> shortest combinations to get to n 02:19:54 <oerjan> `log ^2008 02:19:58 <HackEgo> No output. 02:20:10 <oerjan> it just doesn't start with that... 02:20:35 <oerjan> `log ^.*2008 02:20:36 <monqy> it starts with the hour 02:20:38 <HackEgo> 2011-02-11.txt:00:03:45: <elliott> I want to ask you not to think a "timer snob" of Korean fans as "just" a equipment to prevent "fan death". ― 韓斌/Yes0song (談笑 筆跡 다지모) 07:16, 19 February 2008 (UTC)]] 02:20:45 <monqy> the date is part of the filename 02:20:49 <oerjan> ah 02:21:56 <cheater> either way the idea was that in constructive languages (what you know as imperative) programs are built out of verbs, nouns, and adjectives. in declarative languages (what you know as functional) programs are built out of nouns and adjectives. the idea for descriptive languages was to use adjectives only, and use predicate composition to specify concrete concepts. 02:22:04 <oerjan> `log [<]cheater.*adjective 02:22:07 <HackEgo> 2011-09-21.txt:02:17:53: <evincar> `log <cheater.*adjective 02:22:18 <evincar> Alright, so we're roughly on the same page. 02:22:25 <cheater> an underspecified concept can be seen as a curried function. 02:22:27 <oerjan> `log : [<]cheater.*adjective 02:22:31 <HackEgo> 2010-09-22.txt:22:59:12: <cheater99> why is there no adjective form of holland? 02:22:46 <cheater> is there not? it's hollandaise, isn't it? 02:22:47 <evincar> I mean, in a concatenative language all terms denote functions, and the basic operation is function composition. 02:23:19 <cheater> i think composition in this case looks different. 02:23:21 <evincar> So it's not such a stretch to say all terms are nouns denoting sets (I don't think of adjectives as fundamental really). 02:23:31 <evincar> Or rather, they're interchangeable. 02:23:45 <cheater> it is just an intersection of sets, not a composition of functions as assignments from one set to another. 02:23:47 <CakeProphet> oerjan: try .*? perhaps 02:24:14 <evincar> I don't know if intersection works exactly. 02:24:26 <cheater> they work for my idea 02:24:37 <evincar> Can you give a more concrete example? 02:24:40 <oerjan> CakeProphet: at this point i was just experimenting with how to avoid getting the search itself back as a hit 02:24:45 <cheater> the set of all humans 02:25:06 <oerjan> also, "dutch" 02:25:08 <cheater> when you are trying to specify a certain person you start naming specific descriptive adjectives 02:25:18 <evincar> I feel like that's...just Prolog. 02:25:24 <cheater> each such adjective defines a set of people 02:25:24 <evincar> And I'm going for something different. 02:25:47 <evincar> Okay. 02:25:51 <cheater> but those sets intersect to a smaller and smaller subset until you have a singleton set 02:26:09 <evincar> Which is roughly equivalent to a normal form. 02:26:24 <cheater> what do you mean by that? 02:26:27 <evincar> Something you can use as a value proper. 02:26:37 <evincar> Rather than, like, a thunk. 02:26:47 <evincar> Or whatever. 02:26:49 <cheater> i don't see the distinction as important 02:26:51 <evincar> It's a stretch of an analogy. 02:26:59 <cheater> underspecified functions are more important 02:27:32 <cheater> it's just that you bottom out when you finish your specification and could start overspecifying or specifying contradictions 02:27:44 <cheater> this is not good 02:29:26 <cheater> i think you can make very good optimizations to such a language, given a strong enough topology for the space you are working in 02:30:14 <cheater> it's a topologist's language 02:30:20 <evincar> I guess I'm leaning toward something more general. 02:30:25 <evincar> And less like a logic language. 02:30:29 <pikhq_> *sigh* x86 sucks. 02:31:26 <cheater> what are you leaning towards? 02:32:07 -!- sebbu2 has joined. 02:32:07 -!- sebbu2 has quit (Changing host). 02:32:07 -!- sebbu2 has joined. 02:32:29 -!- sebbu has quit (Ping timeout: 260 seconds). 02:33:55 <evincar> I guess like I said before (then got sidetracked from) the core concept would be "everything is a type" and type conversion would be the basic operation. 02:34:15 <evincar> You'd be doing graph-reduction, internally. 02:34:21 <evincar> Like a functional language. 02:34:28 <pikhq_> C also sucks. Even as a systems language. 02:34:49 <evincar> pikhq_: Use assembly. 02:34:56 <pikhq_> Assembly sucks worse. 02:35:07 <evincar> Then use the lesser of two evils, obviously. 02:35:42 <pikhq_> But jeeze, it is a freaking *ordeal* just to get a freaking binary into RAM on x86. 02:42:32 -!- hagb4rd has joined. 02:44:51 <evincar> Hmm. If you allow types to take parameters, you just get regular old dependent typing. 02:45:06 <CakeProphet> *value parameters 02:45:10 <evincar> But there's not necessarily any provision in this system for parameters. 02:45:12 <evincar> Well, yes. 02:45:26 <evincar> But there's no distinction between values and types. 02:48:10 <evincar> I guess...if "+" is a set of operations and "x" and "y" are singleton sets, then "m + n" really denotes a conversion from the type "m x n" to the type "m + n". 02:48:20 <evincar> It's only reducible to the arithmetic result incidentally. 02:48:43 <evincar> Hurgh this is wrong and bad. 02:48:55 <evincar> I feel like there's something to it though. 02:49:25 <evincar> Ugh, s/"x" and "y"/"m" and "n"/. 02:56:55 * pikhq_ should not be NIHing a systems language 02:56:58 * pikhq_ really shouldn't be 02:57:22 <monqy> bad nih is best nih 02:58:48 <CakeProphet> help what is NIH 02:59:50 <monqy> `quote NIH 02:59:52 <HackEgo> 172) <AnMaster> cpressey, oh go to zzo's website. He is NIH <Phantom_Hoover> AnMaster, really? I was strongly under the impression that zzo was invented here. \ 474) <NihilistDandy> elliott: His mouse obeys the law of the excluded middle :/ \ 506) <NihilistDandy> MY CONTINUITY <NihilistDandy> MY FANFICTION <NihilistDandy> 03:00:36 -!- azaq23 has quit (Quit: Leaving.). 03:00:53 <evincar> Not in Here; Not Invented Here; -ilistDandy. 03:01:14 * pikhq_ summons elliott 03:01:19 <pikhq_> @! @! @! 03:01:20 <lambdabot> Maybe you meant: . ? @ v 03:01:28 <evincar> Maybe you did. 03:02:28 <Madoka-Kaname> @id 03:02:32 <Madoka-Kaname> @help 03:02:33 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands 03:02:35 <Madoka-Kaname> @list 03:02:35 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS 03:02:50 <oerjan> @id entical 03:02:50 <lambdabot> entical 03:03:11 <Madoka-Kaname> @. . . id id id id 03:03:11 <lambdabot> Plugin `compose' failed with: Unknown command: "" 03:03:14 <Madoka-Kaname> :( 03:03:55 <pikhq_> I can't even get myself to want to touch this any more, IT'S ALL BAD 03:04:06 * oerjan recommends @@ instead of @. 03:07:05 <evincar> So like 03:07:08 <evincar> def (length nil) (0) 03:07:10 <evincar> def (length cons x (xs)) (+ 1 (length xs)) 03:07:10 <Madoka-Kaname> @@ 03:07:18 <Madoka-Kaname> @@ what does this do 03:07:18 <lambdabot> what does this do 03:07:32 <oerjan> @help @@ 03:07:32 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands 03:07:34 <oerjan> @help @ 03:07:35 <lambdabot> @ [args]. 03:07:35 <lambdabot> @ executes plugin invocations in its arguments, parentheses can be used. 03:07:35 <lambdabot> The commands are right associative. 03:07:35 <lambdabot> For example: @ @pl @undo code 03:07:35 <lambdabot> is the same as: @ (@pl (@undo code)) 03:08:00 <evincar> Then..."def x y" and "+ x y" are assumed to be reducible, and everything else is just pattern matching. 03:08:24 <evincar> But you could do interesting things with relations. 03:08:38 <evincar> Because e.g. "def x y" is considered a true proposition. 03:08:45 <Madoka-Kaname> @ (@id test) 03:08:49 <Madoka-Kaname> @@ (@id test) 03:08:49 <lambdabot> test 03:09:11 <Madoka-Kaname> @@ (@id (@@ what happens??)) 03:09:12 <lambdabot> what happens 03:09:41 <Madoka-Kaname> @@ (@id (@@ (@id boop))) 03:09:41 <lambdabot> boop 03:09:51 <CakeProphet> obviously we now need to make lambdabot turing complete. 03:10:04 <oerjan> Madoka-Kaname: you're not supposed to need nested @@'s 03:10:16 <Madoka-Kaname> I'm just seeing what happens. 03:10:53 <CakeProphet> can we define our own commands or do we have to hack lambdabot? 03:11:01 <CakeProphet> I suppose adding S and K would be sufficient. 03:11:36 <oerjan> there are places to add information, but not new commands afaik 03:11:54 <Madoka-Kaname> @run map (^2) [1..] 03:11:55 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48... 03:12:08 <Madoka-Kaname> Done. 03:12:11 <Madoka-Kaname> @run map (2^) [1..] 03:12:12 <lambdabot> [2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,26... 03:12:13 <Madoka-Kaname> See! 03:12:22 <CakeProphet> not what I mean. 03:12:39 <Madoka-Kaname> @run map (uncurry (^)) $ zip [0..] [1..] 03:12:40 <lambdabot> [0,1,8,81,1024,15625,279936,5764801,134217728,3486784401,100000000000,31384... 03:12:46 <oerjan> > iterate (2*) 2 03:12:46 <lambdabot> [2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,26... 03:13:14 <CakeProphet> so does having a finite output change the turing completeness of Haskell? 03:13:23 <oerjan> > zipWith (^) [0..] [1..] 03:13:24 <lambdabot> [0,1,8,81,1024,15625,279936,5764801,134217728,3486784401,100000000000,31384... 03:13:26 <CakeProphet> since the evaluation semantics are based on need.. 03:13:41 <oerjan> CakeProphet: um no... 03:14:21 <CakeProphet> so the fact that there's a set of problems it won't fully compute due to the finite output size does not change turing completeness? 03:14:22 <oerjan> as long as it is unbounded 03:14:48 <oerjan> CakeProphet: a _turing machine_ does not have infinite output 03:15:17 <oerjan> also, it is customary to consider decision machines which only output yes or no as sufficient 03:15:34 <oerjan> for many purposes 03:15:42 <CakeProphet> ah okay 03:16:08 <CakeProphet> I realize output in the typical sense is not considered in turing completeness 03:16:38 <CakeProphet> but since output seems to directly affect Haskell's evaluation semantics I thought perhaps this an exception where it could be considered. 03:16:53 <monqy> waht 03:17:34 <CakeProphet> more specific plz 03:17:55 <oerjan> you only need String -> String functions, or similar, to show Haskell TC 03:18:04 <oerjan> and the strings can be finite 03:18:11 <CakeProphet> ah okay, right. 03:18:18 <CakeProphet> the output doesn't factor in at all ever. 03:18:26 <CakeProphet> so I guess evaluation strategy doesn't either? 03:18:39 <oerjan> well it might, if there was no other way of defining a result 03:18:41 <CakeProphet> because in circumstances without IO Haskell effectively evaluates nothing. 03:19:05 <CakeProphet> ah okay. 03:20:40 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw 03:20:40 <lambdabot> "\"" 03:20:45 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw what the crap is this 03:20:46 <lambdabot> Exception: <<loop>> 03:20:52 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw ? 03:20:52 <lambdabot> Just 'J' 03:20:55 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw a 03:20:55 <lambdabot> "\"\\\"\\\\\\\"\\\\\\" 03:20:58 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw aaa 03:20:58 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\" 03:21:07 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw yhjulwwiefzojcbxybbruweejw 03:21:07 <lambdabot> "\"#$%&'()*+,\"" 03:21:12 <Patashu> so what does this thing do 03:21:16 <oerjan> i don't think it looks at its argument 03:21:25 <oerjan> it's just one of the quote databases 03:21:50 <oerjan> (now exactly _why_ those quotes are selected - well that would be telling.) 03:22:26 <Madoka-Kaname> @help da 03:22:26 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands 03:22:30 <Patashu> @yhjulwwiefzojcbxybbruweejw 03:22:30 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\" 03:22:32 <Patashu> @yhjulwwiefzojcbxybbruweejw 03:22:32 <Madoka-Kaname> @help yhjulwwiefzojcbxybbruweejw 03:22:33 <lambdabot> Just 'J' 03:22:33 <lambdabot> V RETURNS! 03:22:36 <Patashu> wtf 03:22:47 <Madoka-Kaname> @help yhjulwwiefzojcbxybbruweejw 03:22:48 <lambdabot> V RETURNS! 03:22:50 <Madoka-Kaname> o.o? 03:22:52 <monqy> @help v 03:22:52 <lambdabot> let v = show v in v 03:22:53 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw 03:22:53 <lambdabot> "\"#$%&'()*+,\"" 03:22:58 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw 03:22:58 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\" 03:22:59 <monqy> @v 03:22:59 <lambdabot> Exception: <<loop>> 03:23:00 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw 03:23:00 <lambdabot> "\"\\\"\\\\\\\"\\\\\\" 03:23:02 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw 03:23:02 <monqy> @v 03:23:03 <lambdabot> "\"#$%&'()*+,\"" 03:23:03 <lambdabot> Exception: <<loop>> 03:23:03 <Patashu> @yhjulwwiefzojcbxybbruweejw V 03:23:04 <lambdabot> Just 'J' 03:23:04 <Madoka-Kaname> @yhjulwwiefzojcbxybbruweejw 03:23:04 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\" 03:23:09 <Madoka-Kaname> what 03:23:09 <monqy> poor @v 03:23:11 <Madoka-Kaname> what the hell is this 03:23:17 <monqy> @v 03:23:17 <lambdabot> Just 'J' 03:23:20 <monqy> :') 03:23:31 <Patashu> @v 03:23:31 <lambdabot> Just 'J' 03:23:35 <Patashu> @help v 03:23:35 <lambdabot> let v = show v in v 03:23:40 <Patashu> what 03:23:49 <Patashu> I am confused 03:24:10 <monqy> > let v = show v in v 03:24:11 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 03:24:16 <Madoka-Kaname> >fix show 03:24:18 <Madoka-Kaname> > fix show 03:24:19 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 03:24:23 <Patashu> oooooooooooooh 03:24:27 <Patashu> ok, that explains that bit 03:24:29 <Madoka-Kaname> > fix (reverse.show) 03:24:33 <lambdabot> mueval-core: Time limit exceeded 03:24:43 <Madoka-Kaname> > fix (show.reverse) 03:24:47 <lambdabot> mueval-core: Time limit exceeded 03:24:52 <Patashu> > show.show 3 03:24:54 <lambdabot> ["'3'"] 03:24:57 <Patashu> > show.show.show 3 03:24:59 <lambdabot> ["\"'3'\""] 03:25:01 <Patashu> > show.show.show.showq 3 03:25:02 <lambdabot> Not in scope: `showq' 03:25:03 <Patashu> > show.show.show.show 3 03:25:05 <lambdabot> ["\"\\\"'3'\\\"\""] 03:25:08 <Patashu> > show.show.show.show.show 3 03:25:10 <lambdabot> ["\"\\\"\\\\\\\"'3'\\\\\\\"\\\"\""] 03:25:13 <Patashu> XD 03:25:27 <Madoka-Kaname> > fix (show.map(chr. +1 .ord)) 03:25:27 <lambdabot> <no location info>: parse error on input `+' 03:25:29 <CakeProphet> > fix (show.) 3 03:25:31 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 03:25:32 <Madoka-Kaname> > fix (show.map(chr.(+1).ord)) 03:25:34 <lambdabot> "\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]]^^__``aab... 03:25:44 <Madoka-Kaname> > fix (map(chr.(+1).ord).show) 03:25:46 <lambdabot> "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]]^^__``aabbccd... 03:25:51 <Madoka-Kaname> > fix (map(chr.(*2).ord).show) 03:25:52 <lambdabot> "D\136\184bfl\184bph\196\204\216\184bph\196\224\208\184brl\184d`h\184dbl\18... 03:28:01 <oerjan> > let v = show $ map succ v in v 03:28:02 <lambdabot> "\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]]^^__``aab... 03:28:03 <CakeProphet> > fix (map succ . show) 03:28:04 <lambdabot> "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]]^^__``aabbccd... 03:28:16 <CakeProphet> oerjan: bah 03:28:24 <oerjan> but why does the quote one stop after , ? 03:28:53 -!- augur has quit (Remote host closed the connection). 03:29:19 <CakeProphet> @help id 03:29:20 <lambdabot> id <arg>. The identity plugin 03:29:25 <CakeProphet> @id help 03:29:25 <lambdabot> help 03:29:33 <CakeProphet> man that's so useful 03:29:44 -!- itidus20 has left ("Leaving"). 03:30:16 <oerjan> > let v = show . take 11 $ map succ v in v 03:30:17 <lambdabot> "\"#$%&'()*+,-\"" 03:30:23 <oerjan> > let v = show . take 10 $ map succ v in v 03:30:24 <lambdabot> "\"#$%&'()*+,\"" 03:30:45 <oerjan> still, a little unsatisfactory 03:31:28 <oerjan> > show 03:31:29 <lambdabot> Overlapping instances for GHC.Show.Show (a -> GHC.Base.String) 03:31:29 <lambdabot> arising f... 03:31:42 <oerjan> > show 3 03:31:43 <lambdabot> "3" 03:31:52 <oerjan> > show.show 3 03:31:53 <lambdabot> ["'3'"] 03:32:02 -!- evincar has quit (Quit: Bah. Homework time.). 03:32:28 <oerjan> :t show.show 3 03:32:28 <lambdabot> [String] 03:32:41 <oerjan> ooh 03:32:49 <oerjan> it's caleskell . which does it 03:33:34 <oerjan> > fix (show.) 03:33:35 <lambdabot> No instance for (GHC.Show.Show (f GHC.Base.String)) 03:33:35 <lambdabot> arising from a use o... 03:33:39 <oerjan> argh 03:34:11 <oerjan> > fix (show.) :: [String] 03:34:15 <lambdabot> mueval-core: Time limit exceeded 03:35:08 <Madoka-Kaname> > fix (.) 03:35:09 <lambdabot> Occurs check: cannot construct the infinite type: a = f a 03:35:15 <oerjan> <CakeProphet> man that's so useful <-- clearly the identity plugin is intended for use in plugin transformers 03:35:17 <Madoka-Kaname> > fix ((.).) 03:35:18 <lambdabot> Occurs check: cannot construct the infinite type: a = f a 03:35:21 <Madoka-Kaname> "< 03:35:22 <Madoka-Kaname> :< 03:35:24 * oerjan cackles madly 03:37:27 <CakeProphet> oerjan: if only there were plugin transformers 03:37:46 -!- augur has joined. 03:38:06 <CakeProphet> @@ @djinn :t id 03:38:07 <lambdabot> Invalid command 03:38:09 <CakeProphet> :( 03:38:10 <CakeProphet> @type 03:38:11 <lambdabot> <no location info>: not an expression: `' 03:38:17 <CakeProphet> @@ @djinn @type id 03:38:18 <lambdabot> f a = a 03:38:22 <CakeProphet> @@ @djinn @type unsafeCoerce 03:38:23 <lambdabot> Cannot parse command 03:39:00 <CakeProphet> @@ @djinn @type (>>=) 03:39:01 <lambdabot> Cannot parse command 03:39:48 <monqy> try parentheses??/ 03:39:58 <CakeProphet> @@ @djinn (@type (>>=)) 03:39:58 <lambdabot> Cannot parse command 03:40:04 <monqy> :'( 03:40:07 <CakeProphet> @@ (@djinn (@type ((>>=)))) 03:40:07 <lambdabot> Cannot parse command 03:40:23 <monqy> @help @ 03:40:24 <lambdabot> @ [args]. 03:40:24 <lambdabot> @ executes plugin invocations in its arguments, parentheses can be used. 03:40:24 <lambdabot> The commands are right associative. 03:40:24 <lambdabot> For example: @ @pl @undo code 03:40:24 <lambdabot> is the same as: @ (@pl (@undo code)) 03:40:28 <oerjan> @@ (test) 03:40:28 <lambdabot> (test) 03:40:33 <CakeProphet> @@ (((@djinn (((@type (((>>=))))))))) 03:40:34 <lambdabot> ((Cannot parse command)) 03:40:41 <oerjan> @@ @type (>>=) 03:40:41 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b 03:40:50 <oerjan> i don't think it's @@ that has problems 03:40:54 <CakeProphet> djinnn 03:40:59 <monqy> nnnnnnnnnnnnnnn 03:40:59 <CakeProphet> DJIIIIIIN 03:41:02 <monqy> n 03:41:10 <monqy> @type id 03:41:11 <lambdabot> forall a. a -> a 03:41:16 <CakeProphet> the kind I guess. 03:41:21 <CakeProphet> or maybe typeclass 03:41:21 <monqy> forall...... 03:41:27 <CakeProphet> forall is fine 03:41:31 <CakeProphet> @@ @djinn @type id 03:41:32 <lambdabot> f a = a 03:41:34 <monqy> oh 03:41:38 <oerjan> @type (>>=) 03:41:38 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b 03:41:55 <oerjan> @djinn forall m a b. (Monad m) => m a -> (a -> m b) -> m 03:41:55 <oerjan> b 03:41:55 <lambdabot> Error: kind error: (KVar 0,KStar) 03:42:00 <oerjan> f 03:42:04 <oerjan> @djinn forall m a b. (Monad m) => m a -> (a -> m b) -> m b 03:42:04 <lambdabot> f = (>>=) 03:42:11 <monqy> wow! 03:42:15 <oerjan> was the kind 03:42:43 <monqy> @@'s fault for not providing a good error message 03:42:44 <oerjan> @djinn forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b 03:42:44 <lambdabot> Cannot parse command 03:42:56 <oerjan> monqy: it was @djinn's error message 03:42:57 <monqy> oh djinn's fault maybe 03:42:59 <monqy> bah 03:43:07 <monqy> djinn;s fault for not providing a good error mesasge 03:43:07 <Madoka-Kaname> @@ (@djinn (@exec text $ head $ tail $ splitOn "." (@type (.)))) 03:43:09 <lambdabot> Plugin `compose' failed with: Unknown command: "exec" 03:43:16 <Madoka-Kaname> @exec text $ "Test" 03:43:16 <lambdabot> Unknown command, try @list 03:43:17 <monqy> and @@'s fault for not saying it was djinn;s fault 03:43:41 <Madoka-Kaname> @@ (@djinn (@run text $ head $ tail $ splitOn "." (@type (.)))) 03:43:42 <lambdabot> Cannot parse command 03:43:54 <Madoka-Kaname> @@ (@djinn (@run text $ head $ tail $ splitOn "." (@type \(.\)))) 03:43:55 <lambdabot> Cannot parse command 03:43:59 <Madoka-Kaname> @@ (@djinn (@run text $ head $ tail $ splitOn "." (@type id))) 03:44:00 <lambdabot> Cannot parse command 03:44:02 <Madoka-Kaname> :( 03:44:11 <CakeProphet> @@ @pl @unpl @pl @djinn @pl @djinn @type id 03:44:11 <lambdabot> Cannot parse command 03:44:22 <Madoka-Kaname> @type id 03:44:23 <lambdabot> forall a. a -> a 03:44:40 <oerjan> Madoka-Kaname: i'd suggest looking at what @djinn's argument actually _is_ 03:44:43 <Madoka-Kaname> @run text $ head $ tail $ splitOn "." "forall a. a -> a" 03:44:44 <lambdabot> Not in scope: `splitOn' 03:44:48 <CakeProphet> @@ @pl @unpl @type @pl @djinn @type @pl @djinn @type id 03:44:49 <lambdabot> Parse error at "in" (column 5) 03:44:57 <Madoka-Kaname> @djinn a -> a 03:44:57 <lambdabot> f a = a 03:45:14 <Madoka-Kaname> @djinn (Monad m) => m -> m 03:45:14 <lambdabot> f a = a 03:46:24 <Madoka-Kaname> @run text $ head $ tail $ dropUntil (!=".") "forall a. a -> a" 03:46:25 <lambdabot> Not in scope: `dropUntil'Not in scope: `!=' 03:46:28 <CakeProphet> @@ @pl @djinn @type @pl @djinn @type id 03:46:29 <lambdabot> Cannot parse command 03:46:32 <CakeProphet> :( 03:46:45 <CakeProphet> @@ @pl @djinn @type id 03:46:46 <lambdabot> f = id 03:46:46 <Madoka-Kaname> @run text $ head $ tail $ dropUntil (/=".") "forall a. a -> a" 03:46:47 <lambdabot> Not in scope: `dropUntil' 03:47:30 <CakeProphet> @@ @type let (@pl @djinn @type id) in id 03:47:32 <lambdabot> forall a. a -> a 03:48:02 <CakeProphet> @@ @pl @unpl @pl @djinn @type let (@pl @djinn @type id) in id 03:48:03 <lambdabot> f = id 03:48:12 <CakeProphet> >_> 03:48:20 <Madoka-Kaname> @@ (test) 03:48:20 <lambdabot> (test) 03:48:33 <Madoka-Kaname> @@ @djinn @run text $ head $ tail $ dropWhile (/=".") @type id 03:48:35 <lambdabot> Cannot parse command 03:48:45 <oerjan> sadly too many lambdabot commands don't give output formatted for chaining 03:48:50 <Madoka-Kaname> @@ @djinn @run text . head . tail . dropWhile (/=".") "@type id" 03:48:50 <lambdabot> Cannot parse command 03:48:50 <lambdabot> Cannot parse command 03:49:06 <CakeProphet> @@ There's @run (2^32) 32-bit words 03:49:07 <lambdabot> There's Couldn't match expected type `GHC.Types.Int' 03:49:07 <lambdabot> against inferred type ... 03:49:19 <CakeProphet> @@ There's (@run 2^32) 32-bit words 03:49:20 <lambdabot> There's 4294967296 03:49:20 <lambdabot> 32-bit words 03:49:24 <CakeProphet> heh 03:49:31 <Madoka-Kaname> @@ " 03:49:32 <lambdabot> " 03:49:37 <Madoka-Kaname> @@ @run text $ "wee" 03:49:38 <lambdabot> wee 03:49:59 <Madoka-Kaname> @@ @djinn @run text $ "(b -> a -> c) -> a -> b -> c" 03:50:00 <lambdabot> f a b c = a c b 03:50:19 <Madoka-Kaname> @@ @djinn @run text $ "(@type id)" 03:50:20 <lambdabot> Cannot parse command 03:50:31 <Madoka-Kaname> @@ @djinn @run text $ " (@type id) " 03:50:31 <lambdabot> Cannot parse command 03:50:33 <Madoka-Kaname> :s 03:51:50 <oerjan> @@ @run text $ " (@type id) " 03:51:51 <lambdabot> (@type id) 03:52:06 <CakeProphet> @@ @vixen @type (,,,,,,,,,,) 03:52:06 <lambdabot> Plugin `compose' failed with: Unknown command: "vixen" 03:52:22 <CakeProphet> ? 03:52:24 <CakeProphet> help 03:52:27 <monqy> ?vixen 03:52:27 <lambdabot> I brought myself down. I impeached myself by resigning. 03:52:30 <oerjan> @@ @run text @show @type id 03:52:31 <lambdabot> forall a. a -> a 03:53:09 <CakeProphet> @vixen 03:53:09 <lambdabot> The second point is that coming out--coming back and saying that black Americans aren't as good as black Africans--most of them , basically, are just out of the trees. Now, let's face it, they are. 03:53:11 <CakeProphet> what 03:53:28 <Madoka-Kaname> @@ @djinn @run text $ dropWhile(==".") $ dropWhile(/=".") $ @show @type id 03:53:29 <lambdabot> Cannot parse command 03:53:29 <lambdabot> Cannot parse command 03:53:35 <CakeProphet> LAMBDABOT BUG 03:53:39 <Madoka-Kaname> @@ @djinn @run text $ dropWhile (==".") $ dropWhile (/=".") @show @type id 03:53:39 <CakeProphet> NO VIXEN FOUND. ABORT. 03:53:40 <lambdabot> Cannot parse command 03:53:40 <lambdabot> Cannot parse command 03:53:48 <Madoka-Kaname> @@ @djinn @run text $ dropWhile (==".") $ dropWhile (/=".") ". a -> a" 03:53:49 <lambdabot> Cannot parse command 03:53:49 <lambdabot> Cannot parse command 03:53:56 <CakeProphet> Madoka-Kaname: needs moar parens 03:54:08 <Madoka-Kaname> @@ @djinn (@run text $ dropWhile (==".") $ dropWhile (/=".") @show @type id) 03:54:09 <lambdabot> Cannot parse command 03:54:09 <oerjan> @list vixen 03:54:09 <lambdabot> Cannot parse command 03:54:09 <lambdabot> No module "vixen" loaded 03:54:19 <Madoka-Kaname> @@ @djinn (@run text $ dropWhile ( == "." ) $ dropWhile ( /= "." ) @show @type id) 03:54:20 <lambdabot> Cannot parse command 03:54:20 <lambdabot> Cannot parse command 03:54:22 <Madoka-Kaname> :( 03:54:23 <monqy> @@ @vixen-on 03:54:23 <lambdabot> Plugin `compose' failed with: Unknown command: "vixen-on" 03:54:23 <oerjan> @vixer 03:54:23 <lambdabot> Unknown command, try @list 03:56:06 <monqy> @@ @list 03:56:58 <monqy> wheres thje list help 03:59:38 -!- pumpkin has joined. 04:04:30 -!- oerjan has quit (*.net *.split). 04:04:30 -!- Zuu has quit (*.net *.split). 04:04:31 -!- fungot has quit (*.net *.split). 04:04:31 -!- qnix has quit (*.net *.split). 04:04:32 -!- copumpkin has quit (*.net *.split). 04:04:33 -!- cheater2 has quit (*.net *.split). 04:04:33 -!- aloril has quit (*.net *.split). 04:04:34 -!- yiyus has quit (*.net *.split). 04:04:35 -!- Deewiant_ has quit (*.net *.split). 04:04:36 -!- coppro has quit (*.net *.split). 04:04:36 -!- EgoBot has quit (*.net *.split). 04:04:36 -!- quintopia has quit (*.net *.split). 04:04:38 -!- augur has quit (*.net *.split). 04:04:38 -!- Patashu has quit (*.net *.split). 04:04:38 -!- BeholdMyGlory has quit (*.net *.split). 04:04:39 -!- CakeProphet has quit (*.net *.split). 04:04:39 -!- atehwa_ has quit (*.net *.split). 04:04:41 -!- fizzie has quit (*.net *.split). 04:04:41 -!- chickenzilla has quit (*.net *.split). 04:04:42 -!- Wamanuz2 has quit (*.net *.split). 04:04:44 -!- lambdabot has quit (*.net *.split). 04:04:44 -!- twice11 has quit (*.net *.split). 04:04:44 -!- hagb4rd has quit (*.net *.split). 04:04:44 -!- sebbu2 has quit (*.net *.split). 04:04:44 -!- kmc has quit (*.net *.split). 04:04:45 -!- MSleep has quit (*.net *.split). 04:04:45 -!- Madoka-Kaname has quit (*.net *.split). 04:04:46 -!- Nisstyre has quit (*.net *.split). 04:04:46 -!- DH____ has quit (*.net *.split). 04:04:47 -!- lifthrasiir has quit (*.net *.split). 04:04:47 -!- Gregor has quit (*.net *.split). 04:14:12 -!- Madoka-Kaname has joined. 04:14:31 -!- CakeProphet has joined. 04:14:31 -!- CakeProphet has quit (Changing host). 04:14:31 -!- CakeProphet has joined. 04:15:03 <CakeProphet> wow this is a ridiculous netsplit. 04:15:04 -!- pumpkin has changed nick to copumpkin. 04:15:30 <Madoka-Kaname> chat.freenode.net died or something 04:35:07 <CakeProphet> >_> 04:35:08 <CakeProphet> still dead. 04:35:16 <CakeProphet> wow C++ is amazing. 04:35:27 <Madoka-Kaname> In which sense of the word? 04:35:28 <CakeProphet> I try to do something incredibly simple and I get garbage output. 04:35:32 <monqy> mm 04:35:37 <monqy> like what / like what 04:35:40 <monqy> I am now curious 04:36:34 <CakeProphet> hold on emacs is a bitch to copypaste from. 04:37:14 <CakeProphet> basically just ^@^@^@^@^@^@^@^@^@ ad infinitum 04:37:26 <CakeProphet> I'm trying to iterate over a linked list and print each element for my lab... 04:39:17 <CakeProphet> for(iter=strList2.end(); iter != start; iter--) { 04:39:20 <CakeProphet> does anything look wrong with this? 04:40:03 <monqy> what's start 04:40:15 <CakeProphet> start = strList2.begin(); start++; start++; 04:40:15 <monqy> and what's the body 04:40:23 <CakeProphet> cout << *iter << " "; 04:40:25 <CakeProphet> is the body 04:40:45 <monqy> how long is strList2 04:41:09 <CakeProphet> 6 elements. 04:41:17 <monqy> hm 04:41:22 <monqy> could something be wrong with the iterator? 04:41:30 <CakeProphet> probably. 04:41:31 <monqy> I dunno how C++ iterators work 04:41:44 <CakeProphet> I thought I did but apparently not. 04:42:10 <CakeProphet> basically an iterator is a kind of pointer-like object. 04:42:34 <Madoka-Kaname> What type is iter? 04:42:36 <CakeProphet> ++ increments its position and -- decrements. * accesses the element it points to, and == and != check to see if iterators point to the same thing. 04:42:42 <CakeProphet> list<string>::iterator 04:42:46 <Madoka-Kaname> Dunno. 04:45:04 -!- invariable has joined. 04:45:27 <CakeProphet> yeah I have no clue this code looks fine to me. 04:45:57 <Madoka-Kaname> So... 04:46:01 <Madoka-Kaname> C++'s being evil 04:46:12 <CakeProphet> hmmm wait I have an idea 04:46:13 -!- variable has quit (Ping timeout: 252 seconds). 04:46:31 <CakeProphet> I think I need to start with --strList2.end() 04:46:48 <CakeProphet> yep 04:47:12 <CakeProphet> because strList2.end() points to the location after the list 04:47:48 <CakeProphet> would probably be easier to use rbegin to do reverse iteration. 04:48:11 <CakeProphet> but it's one of those labs where they supply some of the code for you, and they declared the iterators are iterator and not reverse_iterator 04:48:16 <CakeProphet> C++ <3 04:48:58 <monqy> dumb 04:50:16 <CakeProphet> yeah iterators seem like one of the most annoying ways to iterator. 04:50:48 <CakeProphet> I'd rather use an integer index, honestly. 04:56:51 <copumpkin> ugh, indices 04:57:03 <copumpkin> iterators gonna iterate, man 04:58:30 <CakeProphet> but with C++ it's almost exactly the same as using an index, except now more verbose 04:59:37 <copumpkin> you don't get off-by-one errors for linear traversals, and it's likely more efficient on structures that don't support indexing easily 05:01:17 <CakeProphet> yeah that's true 05:01:34 <CakeProphet> most things with inefficient indexing in stl doesn't have the option to be indexed. 05:06:53 -!- evincar has joined. 05:08:07 <pikhq_> It's at least vaguely tolerable with C++0x, though. for(int &x : any_damned_thing_containing_ints) { ... } 05:08:30 <pikhq_> Yes, that does precisely what you think. 05:09:00 <evincar> CakeProphet: You can use the reverse_iterator adaptor to make a reverse iterator out of your forward iterator. :P 05:09:11 <CakeProphet> yeah that sounds like so much fun 05:09:15 <CakeProphet> especially since I got it working. 05:09:22 <evincar> Assuming it's not actually a "forward iterator" but a bidirectional one. 05:09:39 <CakeProphet> pikhq_: that's not bad. how does it determine the any-damned-thing-containing-ints part? 05:09:41 <evincar> Oh. Probably by reimplementing it. 05:09:53 <evincar> Reimplementing reverse_iterator, that is. 05:10:02 <CakeProphet> yeah it's bidirectional. 05:10:34 <evincar> I know, I was just correcting myself to avoid getting flamed for saying something that was slightly off. 05:11:04 <CakeProphet> yeah I'm all about staunch correctness 05:11:40 <evincar> Some of us in here are... 05:11:47 <evincar> ...depending on what about, o'course. 05:12:27 <pikhq_> CakeProphet: for(foo &x : bar) is syntactic sugar for (if bar's a foo[]) for(int i = 0; i < sizeof(bar); i++) {foo &x=bar[i]; ...} or (if bar's an object with begin() and end()) foo(auto i = bar.begin(); i != bar.end(); ++i) {foo &x=*i; ... } 05:13:02 <evincar> sizeof(bar)/sizeof(*bar), actually... 05:13:05 <CakeProphet> is auto a C++0x thing? 05:13:09 <pikhq_> Yes. 05:13:23 <pikhq_> evincar: Bah, right. 05:13:27 <CakeProphet> I assume for type inference? 05:13:31 <evincar> C++0x: solving problems with C++ that should have been solved ages ago. 05:13:38 <pikhq_> CakeProphet: Pretty much. 05:13:40 <evincar> Yeah, auto is for type inference in declarations. 05:13:47 <pikhq_> evincar: Pretty much. 05:13:54 <evincar> decltype is for type inference...elsewhere. 05:14:00 <evincar> And then there are the ugly-ass lambdas. 05:14:32 <evincar> Also, fucking rvalue references. Solving a problem that should never have been there in the first place. 05:14:35 <pikhq_> The lambdas aren't that bad syntactically. Though conceptually they're utterly awful, due to C++ *not being friggin' garbage collected*. 05:14:51 <evincar> That's ostensibly what shared_ptr and friends are about. 05:15:02 <CakeProphet> rvalue references? 05:15:03 <evincar> See, every time you say something awful about C++... 05:15:12 <evincar> ...I can just respond like the standards committee does. 05:15:20 <evincar> With libraries and awful hacks and stuff. 05:15:27 <pikhq_> Reference counting: because everything bad about manual memory allocation plus everything bad about automatic memory allocation equals "good". 05:16:35 <evincar> You can use a garbage collector in C++. 05:16:41 <evincar> It's just that nobody does. 05:17:26 <pikhq_> Actually, it's only C++11 that makes it possible for a conformant implementation to be garbage collected... 05:17:52 <pikhq_> (due to some perverse edge cases that a GC would inevitably break, IIRC) 05:17:52 <evincar> Oh, with vanilla "new", I guess. 05:18:00 <evincar> I was thinking of allocators in general. 05:18:14 <pikhq_> Ah. Yeah, not that bad to use Boehm. 05:18:29 <evincar> You can safely write an allocator that allocates from pools allocated with "new". 05:18:38 <evincar> You would just have to use it explicitly. 05:18:46 <evincar> Or write a gc_ptr<T> or something. 05:18:49 <pikhq_> Like I said, not that bad to use Boehm. 05:18:58 <evincar> It's definitely preferable. 05:19:31 <evincar> I can only give C++ credit for one thing: 05:19:39 <pikhq_> IIRC you can just have a class inherit from gc to allocate with Boehm. 05:19:48 <evincar> Somehow succeeding at being "all things to all developers". 05:20:22 <CakeProphet> C++ is my anti-drug. 05:21:05 <CakeProphet> seriously, why doesn't pop in C++ RETURN anything. 05:21:22 <pikhq_> Because that would make sense. 05:21:22 <CakeProphet> s/C++/stl/ 05:21:37 <pikhq_> Seriously, why the eff would you not want pop to actually hand you a value? 05:22:15 <evincar> It's because it would have to return by value. 05:22:19 <evincar> Which may be expensive. 05:22:39 <evincar> And there's no way to determine inside the implementation of pop() whether the caller expects a value. 05:22:42 <evincar> So you have to generate it. 05:23:00 <evincar> So top() (stack) or back()/front() returns by reference. 05:23:13 <evincar> And pop() or pop_back()/pop_front() returns void. 05:23:24 <CakeProphet> char f = puzzle.front(); 05:23:24 <CakeProphet> char b = puzzle.back(); 05:23:24 <CakeProphet> puzzle.pop_front(); 05:23:24 <CakeProphet> puzzle.pop_back(); 05:23:24 <CakeProphet> puzzle.push_front(b); 05:23:26 <pikhq_> Y'know what this means? 05:23:26 <CakeProphet> puzzle.push_back(f); 05:23:29 <CakeProphet> best code 05:23:41 <CakeProphet> for swapping the front and end of a linked list. 05:23:49 <pikhq_> C++ is not a solution, it is a problem to which you find solutions. 05:23:51 <evincar> std::swap(puzzle.front(), puzzle.back()) // FTFY 05:24:09 <evincar> Remember mutable variables? 05:24:12 <evincar> And how they are a thing? 05:24:17 <CakeProphet> oh right. 05:24:19 <evincar> (A bad thing, but a thing nonetheless.) 05:24:29 <CakeProphet> swap is in algorithm I'm guessing? 05:24:33 <evincar> Yep. 05:24:49 <CakeProphet> should probably look at that file more. 05:24:55 <evincar> It's hella useful... 05:25:21 <evincar> ...most of the reason C++ gets a bad reputation is the horrid C-style code that's written in it. 05:25:22 <CakeProphet> yeah after using Perl and Haskell it'll take a while to adapt to C++'s idioms 05:25:43 <evincar> I wish C++ got a bad reputation for the GENUINELY BAD THINGS ABOUT IT. 05:25:53 <CakeProphet> nothing wrong with C style code. 05:25:53 <evincar> But that's just me. 05:26:00 <evincar> In C++ there is... 05:27:16 <pikhq_> evincar: Funny, I give C++ a bad rep for it's poorly implemented "high-level" concepts. 05:27:50 <CakeProphet> hmmm, so I guess the best way to shift to leftmost character to the end would be to pop_front then push_back. 05:27:54 <CakeProphet> any shorter way? 05:27:59 <CakeProphet> *shift the 05:28:05 <evincar> Ditto. Although the hacks are largely to support generation of efficient code... 05:28:29 <pikhq_> s/it's/its/ 05:28:31 <evincar> ...but that code is largely only "efficient" according to the standards of older optimisation technology. 05:29:12 <pikhq_> Well, it also has some pretty comical encapsulation breaks. 05:29:20 <pikhq_> Such as "changing private members breaks ABI" 05:29:23 <evincar> CakeProphet: v.push_back(v.front()); v.pop_front(); is about as short as you can get. 05:29:39 <pikhq_> And "though technically undefined behavior, #define private public is fun times." 05:30:06 <evincar> Technically nothing. UB is just that and you get what you pay for. :P 05:31:25 <evincar> How would you propose to preserve data layout in the event of changing members? 05:31:44 <evincar> The size might change, so you can't make any guarantees about derived classes. 05:31:51 <pikhq_> First, don't try to be "C, plus this". 05:32:01 <pikhq_> This solves most of your problems, really. 05:32:12 <evincar> Those necessarily break if you're implementing data layout in the usual way. 05:32:16 <evincar> Which is the most efficient way. 05:32:16 <CakeProphet> this is what C++0x appears to do. 05:32:23 <pikhq_> sizeof becomes completely moot, for instance. 05:32:26 <pikhq_> CakeProphet: No. 05:32:28 <CakeProphet> (not be C plus stuff) 05:32:38 <CakeProphet> or at least tries 05:32:41 <CakeProphet> to go in that direction 05:32:42 <CakeProphet> a little. 05:32:51 <evincar> C++ is C plus stuff fundamentally. 05:32:52 <pikhq_> CakeProphet: C++0x still has a sizable common subset with C, and has its semantics hacked into C semantics. 05:32:58 <evincar> C++11 tries to make it look like it isn't. 05:33:10 <evincar> It's supposed to be more beginner-friendly. 05:33:21 <pikhq_> It's the source of pretty much all the problems with C++'s attempts at high-level concepts. 05:33:22 <evincar> To try to get people to actually use what have been considered best practices for years. 05:33:58 <CakeProphet> needs more functional code. 05:34:03 <evincar> pikhq_, could you offer some examples? 05:34:11 <evincar> In general I agree, but I'm curious. 05:35:34 <pikhq_> evincar: The aforementioned issue with private members, for one. If C++ didn't have to really consider C, then it could (for instance) access private members via a means *other* than "pointer plus an offset". 05:35:56 <pikhq_> Another obvious fault is that it goes to great lengths to retain C's manual memory allocation. 05:36:01 <evincar> But that's not the most efficient way to do it. 05:36:28 <evincar> The (painful) motto of C++ is "you don't pay for what you don't use". 05:36:41 <evincar> If you want a stable ABI, use a pointer to a private implementation. 05:36:53 <pikhq_> No, the most efficient way to do it is to get a custom ASIC. 05:37:03 <pikhq_> What's that, you're running on general-purpose silicon? Guess you've already sacrificied efficiency. 05:37:07 <evincar> :P 05:38:03 <evincar> Point is, C++ makes the (bad) decision of trying to build abstraction atop low-level features in such a way that it's still efficient. 05:38:15 <evincar> Rather than make an optimising compiler for a truly high-level language... 05:38:39 <evincar> ...you end up making a trivial compiler for a low-level language with lots of sugar. 05:39:01 <evincar> One that doesn't necessarily support every possible optimisation, because the information just isn't there. 05:39:06 <evincar> That's the real mistake. 05:39:15 <evincar> You end up with hideous complexity in compilers and optimisers. 05:39:24 <pikhq_> And in code. 05:39:33 <evincar> Yes, though mostly in libraries. 05:39:39 <pikhq_> Because you have to hack around all the abstraction leaks. 05:39:43 <evincar> But still, it's there, and it's compile-time overhead as well. 05:40:08 <pikhq_> Templates are probably a lot of the blame in compile-time overhead, though. 05:40:09 <CakeProphet> this is probably a stupid question 05:40:31 <CakeProphet> but how do I link a file when compiling with g++? 05:40:31 <pikhq_> It's a misfeature that doesn't even come from the misguided design goals. 05:40:48 <evincar> CakeProphet: g++ foo.o bar.o invokes the linker (ld). 05:41:04 <evincar> If you want to just make an object file, use g++ -c foo.cpp 05:41:13 <evincar> But if you want to compile and link, omit -c. 05:41:28 <CakeProphet> ah okay. 05:41:32 <CakeProphet> so -c automatically links? 05:41:39 <CakeProphet> using, uh, magic? 05:41:40 <evincar> No, -c is "just compile". 05:42:00 <CakeProphet> g++ file.cpp was giving me undefined reference errors, but g++ -c file.cpp worked fine. 05:42:14 <evincar> That's because the undefined references were link errors. 05:42:26 <CakeProphet> right... so how did they get linked with the -c option? 05:42:31 <CakeProphet> oh, they don't. 05:42:31 <evincar> They didn't. 05:42:32 <CakeProphet> .. 05:42:33 <CakeProphet> heh 05:42:35 <evincar> You just made an object file. 05:42:38 <CakeProphet> got it. 05:42:51 <evincar> AND ANOTHER THING 05:42:57 <evincar> C++'s fucking build model. 05:43:02 <evincar> It doesn't have one. 05:43:30 <evincar> I value the ability to produce native binaries. Really I do. 05:44:03 <CakeProphet> I like how my professor's lab comes with free errors that I have to solve. 05:44:07 <CakeProphet> they use strlen without including string 05:44:29 <evincar> But object files (.o) and libraries thereof (.a) should not be the thing I work with. 05:44:46 <evincar> I should be able to think at the module level without any of the crufty details. 05:45:00 <evincar> Like how inclusion is LITERALLY TEXT SUBSTITUTION. 05:46:34 <CakeProphet> u mad? 05:47:16 <CakeProphet> so what happens when I try to link two object files with two mains. 05:48:15 <CakeProphet> also is it possible to compile and link in one command? 05:48:28 <evincar> Yeah, just g++ file.cpp. 05:48:32 <evincar> You'll get a.out. 05:49:02 <evincar> You can say g++ foo.cpp bar.cpp whatever.cpp -o executable to compile and link and make a binary with a particular name. 05:49:21 <CakeProphet> excellent. 05:49:43 <evincar> But if you have two main()s, you'll get a "duplicate symbol" error from ld. 05:50:10 <evincar> To answer that question. 05:51:05 <CakeProphet> puzzle.cpp:15:46: warning: deprecated conversion from string constant to ‘char*’ 05:51:09 <CakeProphet> deprecated but not.... wrong right? 05:51:58 <evincar> Should be const char*. 05:52:30 <evincar> Because you're not technically supposed to modify string constants. 05:54:33 <CakeProphet> Oh god Facebook is... DIFFERENT 05:54:48 <CakeProphet> it is now much easier to stalk people. 05:59:13 <pikhq_> evincar: Not merely technically. 05:59:37 <pikhq_> I'm pretty sure that'll get you a segfault; constants get stuck in read-only pages. 05:59:42 <evincar> Yeah, UB is around every corner... 05:59:57 <CakeProphet> well my code works fine at least. 06:00:02 <evincar> I wonder if any non-trivial C++ program is fully standards-conformant? 06:00:18 <evincar> It's really 06:00:19 <evincar> really 06:00:27 <evincar> sad that I have to wonder that. 06:00:40 <pikhq_> I strongly doubt any non-trivial POSIX C program that's fully standards-conformant. 06:00:51 <pikhq_> At a minimum, everyone neglects _POSIX_C_SOURCE 06:02:14 <evincar> Not to mention names that are secretly (and sometimes ambiguously) reserved by POSIX standards. 06:02:30 <evincar> Which may or may not bite you in the future. 06:03:25 <evincar> The main thing that bothers me when I'm working in C is that I want to check every error and handle every potential failure. 06:03:38 <evincar> And not use fixed-size buffers for everything. 06:03:51 <pikhq_> I don't *think* there's anything POSIX uniquely reserves. 06:04:06 <pikhq_> In large part because it *has* _POSIX_C_SOURCE. 06:04:54 <evincar> What does this page mean then? http://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html 06:05:40 <pikhq_> Oh, sure enough, it does reserve names. 06:05:51 <evincar> Macros definitely have restrictions, but I'm not sure about the wording on types and functions. 06:06:39 <evincar> Because <string.h> and <stdlib.h> reserve str[a-z]+, it's illegal to define a function called strip(). :P 06:07:09 <evincar> Where illegal = non-POSIX-conformant. 06:07:18 <evincar> So. 06:07:19 <pikhq_> That's documenting an ISO C reservation. 06:07:24 <evincar> Probably not a huge deal. 06:07:26 <evincar> Oh. 06:07:28 <evincar> Well still. 06:07:48 * CakeProphet recently had to explain why Maybe in Haskell was more type-safe than null in other languages. 06:07:50 <pikhq_> Just like the stdint.h reservation. 06:08:08 <CakeProphet> I thought it would be obvious but I guess not to someone who's spent all of their programming years working with languages like C++ and Java. 06:08:57 <pikhq_> The reservations are a bit... Extreme, though. 06:13:36 <CakeProphet> I wonder if I could make the worst programming language ever. 06:13:55 <CakeProphet> like, a language that is incredibly conceptually muddled. 06:14:06 <CakeProphet> with parts of it being high-level and others parts being extremely low-level 06:14:15 <CakeProphet> thus requiring a bunch of boilerplate to do anything. 06:16:07 <pikhq_> Take C++. Add Perl. 06:16:42 <CakeProphet> I was thinking also make all of the primitive constructs Haskell based. 06:16:45 <CakeProphet> but with C++ semantics 06:16:55 <pikhq_> Mmm... Good call. 06:17:20 <evincar> D: 06:17:33 <evincar> I look away for five minutes and you guys get these notions. 06:17:58 <CakeProphet> so you're forced to write functional code in a way that's not convenient at all. 06:18:48 <CakeProphet> I'm not sure how perl would make it worse because perl is a beautiful language suitiable for all porpoises. 06:18:52 <CakeProphet> maybe syntax? 06:18:53 <shachaf> CakeProphet: Silly person. NullPointerException is value error, not a type error! 06:19:07 <CakeProphet> shachaf: well it is a value error in those languages. 06:19:16 <CakeProphet> I had to explain that it /could/ be a type error. 06:19:17 <shachaf> A value error is a value error, man. 06:20:00 <CakeProphet> !cpick caramel pumpkin banana peach 06:20:08 <CakeProphet> >_> 06:20:10 <CakeProphet> !show cpick 06:20:22 <CakeProphet> oh right huge netsplit thing. 06:20:35 * shachaf picks copumpkin. 06:20:48 <CakeProphet> > sdfoksfijwer 06:20:58 <CakeProphet> `help 06:20:59 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 06:21:01 <CakeProphet> `perl 06:21:06 <CakeProphet> `perl print 2+2 06:21:07 <HackEgo> Can't open perl script "print 2+2": No such file or directory 06:21:12 <CakeProphet> `perl -e print 2+2 06:21:14 <HackEgo> 4 06:21:32 <HackEgo> No output. 06:22:06 <CakeProphet> `perl -e "$,=' '; print grep {int(rand(2))} qw(caramel pumpkin banana peach)" 06:22:08 <HackEgo> No output. 06:22:12 <CakeProphet> `perl -e "$,=' '; print grep {int(rand(2))} qw(caramel pumpkin banana peach)" 06:22:13 <HackEgo> No output. 06:22:15 <CakeProphet> .. 06:22:40 <CakeProphet> `perl -e '$,=" "; print grep {int(rand(2))} qw(caramel pumpkin banana peach)' 06:22:41 <HackEgo> No output. 06:22:43 <CakeProphet> kljxdkfjzkujdfsdf 06:23:06 <shachaf> CakeProphet: Try shachafbot. Just type ",pick option option option" 06:23:29 <CakeProphet> that's not a real bot. 06:23:43 <shachaf> It's such a real bot, you don't even know how real it is. 06:23:46 <shachaf> Come on, try it. 06:23:51 <CakeProphet> `perl -e '$,=" "; print (grep {int(rand(2))} qw(caramel pumpkin banana peach))' 06:23:52 <HackEgo> No output. 06:23:53 <evincar> `perl -e 'BEGIN { *CORE::GLOBAL::die = sub { CORE::die "A useless message.\n" } } die "This will not be printed."' 06:23:54 <HackEgo> No output. 06:23:58 <CakeProphet> srkgjsdfjsersfddddsfddddddddddddddddddddddddddddddddddddddddddddddddddd 06:24:21 <CakeProphet> `run perl -e '$,=" "; print (grep {int(rand(2))} qw(caramel pumpkin banana peach))' 06:24:22 <HackEgo> caramel pumpkin banana peach 06:24:26 <CakeProphet> ...hahaha 06:24:27 <CakeProphet> ALL FLAVORS 06:24:32 <CakeProphet> OF SHISHA 06:24:42 <CakeProphet> `run perl -e '$,=" "; print (grep {int(rand(2))} qw(caramel pumpkin banana peach))' 06:24:43 <HackEgo> caramel pumpkin peach 06:24:52 <CakeProphet> I'm pretty sure peach doesn't go well with anything else. 06:25:22 <monqy> peach banana 06:25:23 <monqy> ???? 06:26:25 <evincar> `perl -e 'BEGIN { *CORE::GLOBAL::exit = sub { my ($code, $message) = @_; print $message; CORE::exit($code); } } exit(0, "Success!");' 06:26:27 <HackEgo> No output. 06:26:30 <evincar> :/ 06:42:53 -!- evincar has quit (Quit: Food and possibly sleep.). 06:45:24 <CakeProphet> monqy: yeah that's what I'm trying. 06:45:40 <CakeProphet> though the banana is quite banana-like. 06:48:51 <CakeProphet> *not quite 06:50:44 -!- nooga has joined. 06:51:36 <CakeProphet> pikhq_: so in a traditional linked list with sentinel value 06:51:43 <CakeProphet> what is the value of sentinel->next and sentinel->prev? 06:53:30 <CakeProphet> null? 07:13:35 <CakeProphet> er forgot to mention that it's empty. 07:13:39 <CakeProphet> yeah it's null. nevermind. 07:15:15 -!- monqy has quit (Quit: hello). 07:19:21 -!- augur has joined. 07:28:11 -!- Jafet has joined. 07:42:43 -!- ive has quit (Quit: leaving). 07:49:05 -!- Wamanuz2 has joined. 07:49:05 -!- lambdabot has joined. 07:49:05 -!- twice11 has joined. 07:51:01 -!- kmc has joined. 07:51:01 -!- hagb4rd has joined. 07:51:01 -!- sebbu2 has joined. 07:51:01 -!- MSleep has joined. 07:51:01 -!- Nisstyre has joined. 07:51:01 -!- DH____ has joined. 07:51:01 -!- lifthrasiir has joined. 07:51:01 -!- Gregor has joined. 07:51:12 -!- Deewiant_ has joined. 07:51:12 -!- coppro has joined. 07:51:12 -!- EgoBot has joined. 07:51:12 -!- quintopia has joined. 07:51:29 -!- Zuu has joined. 07:51:29 -!- fungot has joined. 07:51:29 -!- qnix has joined. 07:51:52 -!- fizzie has joined. 07:51:52 -!- Patashu has joined. 07:51:52 -!- BeholdMyGlory has joined. 07:51:52 -!- atehwa_ has joined. 07:51:52 -!- chickenzilla has joined. 07:53:59 -!- cheater2 has joined. 07:53:59 -!- aloril has joined. 07:53:59 -!- yiyus has joined. 07:54:00 <Patashu> hooray1 07:54:07 <Patashu> to you guys it looks like a few people rejoined 07:54:10 <Patashu> to me everyone's flooding back in 07:55:00 <CakeProphet> wow.. 07:55:04 <CakeProphet> that was a long ass netsplit. 07:55:13 <CakeProphet> now I can finally do this: 07:55:22 <CakeProphet> > listArray (0, maxBound-1 :: Int) [1..] 07:55:23 <lambdabot> Terminated 07:55:27 <CakeProphet> aw. 07:59:37 <Patashu> lol what 07:59:39 <Patashu> that's a new one 08:00:22 <CakeProphet> it might be special cased, unless it can track memory allocation and terminate after a certain point. 08:04:29 <olsner> funny how it prints "Terminated" when the code *doesn't* terminate 08:04:40 <Patashu> yes that is quite funny 08:04:41 <Patashu> :O) 08:04:50 <Patashu> how dare this computer program not be an ideal turing machine 08:08:42 <CakeProphet> fungot: sadsdf[pwek 08:08:43 <fungot> CakeProphet: i wished that the weather had spared them this choking and venomous fnord of peculiar fumes. mr. machen's narrative, a triumph of carving. when the colony house fire, and bought an impressive wreath, though the ell was more recent. not even the nether slopes of saturn might boast. verses and 08:08:48 <CakeProphet> I'm so glad all of these bots are back. 08:09:42 <olsner> fungot: Terminated 08:09:43 <fungot> olsner: ' matt eliot his fust mate, talked a lot too, only he was again' folks's doin' any heathen things. told abaout an island east of fnord whar they was a fnord and fnord hoarsely at something which amused him. then, 08:16:23 <fizzie> Maybe a setrlimit-style memory limit which terminates the process? 08:17:50 <Patashu> so [1..] isn't an infinite list, it only has 2^32 or 2^64 entries in it? 08:17:52 <Patashu> or does haskell use bigints? 08:18:29 <fizzie> > array (1, 2^36) [(2^36, "it's lonely back here")] 08:18:30 <lambdabot> mueval-core: out of memory (requested 550293733376 bytes) 08:18:37 <Patashu> loll 08:18:50 <Patashu> > array (1, 2^72) [(2^72, "it's lonely back here")] 08:18:51 <lambdabot> array *Exception: Error in array index; -1 not in range [0..0) 08:18:54 <Patashu> lol 08:19:05 <Patashu> > array (1, 2^64) [(2^64, "it's lonely back here")] 08:19:06 <lambdabot> array *Exception: Error in array index; -1 not in range [0..0) 08:19:12 <Patashu> > array (1, 2^63-1) [(2^63-1, "it's lonely back here")] 08:19:13 <lambdabot> Terminated 08:19:16 <Patashu> ! 08:19:33 <Patashu> > array (1, 2^50) [(2^50, "it's lonely back here")] 08:19:34 <lambdabot> mueval-core: out of memory (requested 8796094070784 bytes) 08:19:34 <fizzie> The way it dies seems a bit arbitrary sometimes. 08:19:40 <Patashu> > array (1, 2^55) [(2^55, "it's lonely back here")] 08:19:41 <lambdabot> Terminated 08:19:47 <Patashu> > array (1, 2^52) [(2^52, "it's lonely back here")] 08:19:48 <lambdabot> Terminated 08:19:55 <Patashu> > array (1, 2^51) [(2^51, "it's lonely back here")] 08:19:56 <lambdabot> Terminated 08:20:08 <Patashu> > array (1, 1.5*2^50) [(1.5*2^50, "it's lonely back here")] 08:20:09 <lambdabot> Ambiguous type variable `t' in the constraints: 08:20:09 <lambdabot> `GHC.Real.Fractional t' 08:20:09 <lambdabot> ... 08:20:12 <Patashu> oh 08:21:07 -!- Vorpal has joined. 08:21:07 <Patashu> so somewhere between 2^50 and 2^51 08:23:14 <fizzie> The number of bytes it reports seems a bit arbitrary too. 08:23:16 <fizzie> <fizzie> > let t = 2000000000000000 in array (1, t) [(t, "it's lonely back here")] 08:23:16 <fizzie> <lambdabot> mueval-core: out of memory (requested 6735699902464 bytes) 08:23:16 <fizzie> <fizzie> > let t = 2100000000000000 in array (1, t) [(t, "it's lonely back here")] 08:23:16 <fizzie> <lambdabot> mueval-core: out of memory (requested 15868577710080 bytes) 08:23:16 <fizzie> <fizzie> > let t = 2200000000000000 in array (1, t) [(t, "it's lonely back here")] 08:23:17 <fizzie> <lambdabot> mueval-core: out of memory (requested 7409270521856 bytes) 08:25:22 <Patashu> 15868577710080 is 2^43.85etc 08:25:30 <fizzie> I mean: 08:25:32 <fizzie> <fizzie> > let t = 2^51 in array (1, t) [(t, "it's lonely back here")] 08:25:32 <fizzie> <lambdabot> Terminated 08:25:32 <fizzie> <fizzie> > let t = 2^51+2^49 in array (1, t) [(t, "it's lonely back here")] 08:25:32 <fizzie> <lambdabot> mueval-core: out of memory (requested 4398047559680 bytes) 08:25:53 <Patashu> huh 08:25:54 <Patashu> that's bizzare 08:25:59 <Patashu> thought it would stop after a certain number 08:30:47 -!- nooga has quit (Ping timeout: 258 seconds). 08:32:08 <fizzie> Huh. 08:32:22 <Patashu> > let t = 2^51+2^49 in array (1, t) [(t, "it's lonely back here")] 08:32:31 <Patashu> > let t = 2^51 in array (1, t) [(t, "it's lonely back here")] 08:32:35 <lambdabot> mueval-core: Time limit exceeded 08:32:35 <lambdabot> mueval-core: Time limit exceeded 08:32:39 <Patashu> lol 08:32:43 <Patashu> why is it different this time 08:32:55 <fizzie> Depends on the load. 08:32:59 <Patashu> ah 08:34:22 <fizzie> Anyway, there's some sort of a wraparound issue there. 08:34:46 <fizzie> <fizzie> > let t = 2196875771904 in array (1, t) [(t, "it's lonely back here")] 08:34:46 <fizzie> <lambdabot> mueval-core: out of memory (requested 17592170315776 bytes) 08:34:48 <fizzie> <fizzie> > let t = 2197375771904 in array (1, t) [(t, "it's lonely back here")] 08:34:48 <fizzie> <lambdabot> mueval-core: out of memory (requested 3987734528 bytes) 08:35:04 <fizzie> Some of the numbers in-between took very long time and got the "thread killed" message. 08:35:26 <fizzie> It seems to happen around where the "requested N bytes" goes a bit over N = 2^44. 08:38:01 <olsner> hmm, my cpu has 48 bits virtual address space (and I assume that's "standard" for 64-bit cpus), so 2^44 should be too small 08:38:43 <fizzie> Half of that goes to the kernel. 08:38:47 <olsner> but maybe the virtual address space is just fragmented 08:39:02 <olsner> right, but that should still leave 47 bits of userspace 08:39:05 <fizzie> Anyway, even if it doesn't fit in the address space, it's not supposed to wrap around like that. 08:41:44 <olsner> > 6^(12::Int) 08:41:45 <lambdabot> 2176782336 08:43:27 <fizzie> > let t = 2196877864960 in array (1, t) [(t, "it's lonely back here")] 08:43:29 <lambdabot> mueval-core: out of memory (requested 17592186044416 bytes) 08:43:33 <fizzie> > let t = 2196877864961 in array (1, t) [(t, "it's lonely back here")] 08:43:34 <lambdabot> Terminated 08:43:42 <fizzie> (Found with a manual binary search.) 08:44:27 <olsner> mueval tries to set that (6^(12::Int)) as its total memory limit, apparently... I wonder what unit that is 08:46:49 <fizzie> It's the largest (integer) power of 6 that's less than 2^32, but I guess it could be something totally arbitrary. 08:48:08 <olsner> afaict the number gets used to set RLIMIT_AS, which is in bytes 08:48:44 <fizzie> If it's done with System.Posix.Resource, that sounds like the most likely thing. 08:49:13 <olsner> it is, http://code.haskell.org/mubot/mueval/Mueval/Resources.hs 08:51:58 <fizzie> Funny bit of trivia: OS X doesn't have a RLIMIT_AS at all. 08:52:48 <olsner> in other words, don't run lambdabot on OS X? :) 08:55:17 <fizzie> Resource.hsc: 08:55:18 <fizzie> #ifdef RLIMIT_AS 08:55:18 <fizzie> packResource ResourceTotalMemory = (#const RLIMIT_AS) 08:55:18 <fizzie> #endif 08:55:28 <fizzie> I see they have an #ifdef for systems that lack it. 08:55:44 <fizzie> Though I can't recall if OS X headers provide the #define and just ignore it, or if they completely lack it. 09:03:48 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 09:04:47 <CakeProphet> how would one go about learning all of these details? 09:32:34 <CakeProphet> http://en.wikipedia.org/wiki/Bugatti_Veyron 09:32:35 <CakeProphet> mmm 09:34:42 <fizzie> That seems to be some sort of a car device. 09:35:57 <CakeProphet> yes it's the fastest street-legal car in the world. 09:37:04 <fizzie> It does not look like you could fit a large amount of luggage into it. Is there even place for the cat? 09:37:19 <CakeProphet> I'm sure you could fit one person and a cat in there. 09:37:39 <CakeProphet> it's a mid-engine car so there's not a lot of passenger space. 09:38:15 -!- Vorpal has joined. 09:39:17 <CakeProphet> the engine is essentially two V8's fused together. it's a pretty amazing feat of engineering. 09:39:36 <CakeProphet> there are 10 radiators. 09:40:04 <CakeProphet> most cars have one of those. 09:40:15 <fizzie> Yes, but I'm not often in *that* much of a hurry to get the cat anywhere. I think I'll skip. 09:40:29 <CakeProphet> it's also obscenely expensive. 09:40:43 <CakeProphet> It uses special Michelin PAX run-flat tyres, designed specifically to accommodate the Veyron's top speed, which reportedly cost €25,000 per set. 09:41:15 <CakeProphet> I believe the car itself is sold for 1.7 million. Though I believe they stopped selling them. 09:41:40 <Vorpal> CakeProphet: what is this weird car you are talking about? 09:41:44 <fizzie> With that sort of price, does it even come with a Befunge interpreter or something? 09:41:50 <CakeProphet> http://en.wikipedia.org/wiki/Bugatti_Veyron 09:42:07 <CakeProphet> fizzie: no but it moves really fast. 09:42:25 <fizzie> CakeProphet: That would perhaps be nice if there weren't all the other people in the way. 09:42:37 <Jafet> Buy your own road and drive it there 09:42:50 <Jafet> Live on the Isle of Man 09:42:55 <CakeProphet> May noted that at top speed the engine consumes 45,000 litres (9,900 imp gal) of air per minute (as much as a human breathes in four days). 09:43:17 <fizzie> On the Isle of Man, where all men are real men, and all cars are like that. 09:43:42 <CakeProphet> as far as I can tell it's basically the best car ever made. 09:44:22 <fizzie> For some values of best, certainly. 09:45:01 <CakeProphet> top speed, acceleration, handling, stability, quality of engineering. 09:45:16 <CakeProphet> but not passenger capacity or trunk space, no. 09:45:31 <fizzie> Or practicality. (What do you *do* with that top speed and acceleration?) 09:45:41 <CakeProphet> go places really fast of course. 09:45:43 <fizzie> I'll get excited when they make the flying model; at least that'd make me feel like it's the future. 09:46:05 <CakeProphet> Clarkson test drove the Veyron from Alba, northern Italy to London in a race against James May and Richard Hammond who made the journey in a Cessna 182 aeroplane. 09:46:14 <CakeProphet> why doesn't it say who won. :P 09:46:31 <Jafet> Because Cessna is awesome 09:46:34 <fizzie> They had that car-train-motorcycle race, I remember seeing that thing. 09:46:50 <fizzie> The only thing of that show I've seen, probably. 09:46:52 <CakeProphet> motorcycles are generally faster than cars. 09:47:14 <CakeProphet> a high-end motorcycle easily travels faster than the Bugatti Veyron. 09:47:17 <Jafet> The acceleration is to produce frame-dragging that increases the apparent size of the owner's small penis 09:47:20 <fizzie> Everything seems to be capable of the speed limit speeds, anyway. 09:47:35 <Vorpal> <CakeProphet> as far as I can tell it's basically the best car ever made. <-- not at all. It is useless when moving to a new house, you can't fit a lot in that car 09:47:35 <CakeProphet> ....speed limits? 09:47:45 <fizzie> I've heard there's such a thing. 09:47:53 <CakeProphet> do people actually pay attention to those? 09:47:59 <fizzie> Around here, certainly. 09:48:02 <Vorpal> of course 09:48:04 <fizzie> You get ticketed if not. 09:48:07 <CakeProphet> ....weird. 09:48:08 <Vorpal> indeed 09:48:19 <Vorpal> CakeProphet: which country do you live in then? 09:48:23 * CakeProphet routinely drives to Atlanta at about 90 mph. 09:48:24 <CakeProphet> US. 09:48:32 <Vorpal> I see 09:48:37 <CakeProphet> speed limit on those roads ranges from 55 mph to 75 mph 09:48:45 <CakeProphet> most people are going about 80. 09:49:06 <fizzie> I mean, sure, "people" in general drive at k*l, where l is the speed limit and k is something from 1 to 1.2, but still. 09:49:08 <CakeProphet> when traffic permits. 09:49:37 <Vorpal> CakeProphet: anyway, a sports car is kind of useless for most purposes. I very much doubt that car you mentioned have a towbar... 09:49:39 <CakeProphet> in palces where I know cops are never present I usually go about 105 09:49:56 <Vorpal> has a* 09:50:06 <CakeProphet> Vorpal: no, though it is all wheel drive and has retarded horse power / torque so it could probably tow something. 09:50:39 <Vorpal> CakeProphet: and you can't really fit a lot of stuff in the car. 09:50:51 <CakeProphet> the final production Veyron engine produces 1,001 metric horsepower (736 kW; 987 bhp) of motive power, and generates 1,250 newton metres (922 ft·lbf) of torque.[1][14] The nominal figure has been stated by Bugatti officials to be conservative, with the real total being 1,020 metric horsepower (750 kW; 1,006 bhp) or more. 09:50:53 -!- sebbu2 has changed nick to sebbu. 09:50:58 <fizzie> Highway speed limits don't go higher than 120 km/h (75 mph) here, and even if you add a generous 1.2 multiplier, that's 144 km/h (90 mph), so at most you need to be able to drive that fast. A top speed of 400 km/h (250 mph) sounds a bit... excessive. 09:51:03 <CakeProphet> Vorpal: yes you've driven that point home. 09:51:08 <Vorpal> CakeProphet: even two parents + two children + packing for 4 days vacation would not fit 09:51:20 <Vorpal> CakeProphet: so what actual use is a car like that? 09:51:30 <CakeProphet> to take one or two people a large distance very quickly. 09:51:46 <Vorpal> 120 km/h is the maximum existing speed limit around here anyway. 09:52:21 <CakeProphet> also, to escape police, to have fun, to escape a large section of the world before a meteor crashes into it. 09:52:28 <CakeProphet> other things. 09:52:33 <fizzie> I really believe the point is more about what other people think of the car's owner. 09:52:45 <Vorpal> CakeProphet: the police would still note down the registration number... 09:52:50 <Vorpal> so it wouldn't really help 09:53:05 <CakeProphet> no I actually think the point is to be an amazing work of engineering. 09:53:21 <CakeProphet> not everyone is vain like that. 09:53:23 <fizzie> Well, that's the point for the people who made it. 09:53:30 <fizzie> Maybe. 09:53:37 <Vorpal> fizzie: you mean, that the owner has no sense and doesn't care much for actual use of the product nor the environment. 09:53:55 <fizzie> Vorpal: That's just one opinion; other people might thing "whoa, nice car". 09:54:13 <fizzie> It looks rather car chasey from the photos. 09:54:15 * CakeProphet takes note: #esoteric does not appreciate a good car. 09:54:30 <fizzie> I could imagine a Surname, Firstname Surname driving a car like that. 09:54:46 <fizzie> CakeProphet: Conclusion made with a sample size of N=2? 09:54:59 <CakeProphet> also speaking of evading police, my friend who drives a motorcycle can pretty much always outrun the police before they have time to get his license plate. 09:55:28 <Vorpal> CakeProphet: I certainly do. A Volvo station wagon with hybrid electrical/bio-fuel engine is a good car IMO. 09:55:32 <CakeProphet> most cops don't even bother with motorcycles. 09:56:03 <fizzie> With the sort of scaled-by-your-wages fines (and I believe license-suspension reasonably easily) you get here, I wouldn't think "pretty much always" would be quite good enough. 09:56:42 <Vorpal> fizzie: same system in Sweden 09:56:56 <CakeProphet> you Europeans and your apparently strict traffic laws. 09:58:03 <Vorpal> CakeProphet: much less accidents over here than in US 09:58:22 <CakeProphet> changing the speed limit does not correlate to more accidents. 09:58:27 <CakeProphet> or less. 09:58:36 <fizzie> http://en.wikipedia.org/wiki/Top_Gear_Race_to_the_North <- this was the thing I saw. 09:58:42 <Vorpal> CakeProphet: [citation needed] 09:58:49 <Vorpal> because as far as I know it does 09:59:14 <Vorpal> a lower speed means that the car travels less distance during your reaction time if a wild animal runs onto the road for example. 09:59:20 <Vorpal> and braking distance is also reduced 09:59:58 <CakeProphet> Vorpal: http://en.wikipedia.org/wiki/Autobahn 10:00:00 <fizzie> Didn't we do the whole car accident discussion/comparison already not long ago? 10:00:06 <CakeProphet> for highways this is less important. 10:00:09 <Vorpal> You would expect a country like Sweden, with bad winters and so on to have more accidents per capita than a US state like California, but no. Not the case. 10:00:26 <fizzie> Per distance traveled is the more sensible metric, anyway. 10:00:29 <Vorpal> fizzie: indeed, with pikhq iirc, who is sensible 10:00:39 <Vorpal> fizzie: even then iirc Sweden is better of than US. 10:00:39 <fizzie> And I can't get W|A to report it, even though I think it did before. 10:00:48 <CakeProphet> Moreover, international accident statistics demonstrate that limited access grade separated roads such as Autobahns and motorways have much greater road traffic safety regardless of speed limit, suggesting that high speed alone isn't a deciding factor. 10:00:53 <CakeProphet> maybe American cars are just not safe. 10:01:08 <CakeProphet> also we have really bad traffic. 10:01:56 <Vorpal> CakeProphet: what about the reaction time/braking distance issue I mentioned above. 10:02:00 <Vorpal> are you saying it is false? 10:02:11 <CakeProphet> no. 10:02:40 <CakeProphet> but to what extent this curbs avoiding an accident is questionable. In many cases you don't have control of your car anyways. 10:02:44 <Vorpal> CakeProphet: then on a given road a lower speed limit means fewer accidents, and more importantly: fewer accidents with deadly outcome. 10:03:13 <Vorpal> I would like to continue this discussion, but I need to leave for university now 10:03:14 <Vorpal> cya 10:03:49 <CakeProphet> The Synthesis of Safety Research Related to Speed and Speed Limits report sponsored by the Federal Highway Administration published in 1998 found that changing speed limits on low and moderate speed roads appeared to have no significant effect on traffic speed or the number of crashes, whilst on high-speed roads such as freeways, increased speed limits generally resulted in higher traffic speeds and more crashes. It is a 10:04:02 <fizzie> Ah, I found the right W|A query formulation. "Sweden road accidents causing death / total road traffic" => 0.5902 deaths per hundred million vehicle kilometres; US 0.891. 10:04:09 <Jafet> We'd curb accidents by removing the pesky humans from the dashboard 10:05:57 <fizzie> Google's doing that right now. 10:06:13 <fizzie> They already had that one crash which they were all "it's the human's fault again". 10:06:24 <fizzie> Possibly a coverup by the Google AI overlords. 10:08:06 <CakeProphet> suddenly 4 gigs of RAM is no longer enough to not worry about. 10:09:30 <fizzie> Yes, and getting 4G sticks of DDR2 to a motherboard with only two stupid slots is annoyingly expensive. Last I looked, it was more than twice the price of an equivalent amount (and stick-count) of faster DDR3 RAM. 10:10:48 <cheater> you pay for the historical value 10:12:20 <CakeProphet> uh... why is there a cat process sleeping my computer. 10:12:22 <CakeProphet> NO SLEEPING CATS. 10:14:01 <fizzie> It's better to let sleeping cats lie. 10:14:17 <Jafet> Better than zombie cats. 10:14:47 <CakeProphet> uninterruptible cats are the worst. 10:35:23 -!- nooga has joined. 10:59:05 <CakeProphet> > showIntAtBase 2 intToDigit (foldl1 (+) [1..100]) "" 10:59:07 <lambdabot> "1001110111010" 10:59:14 <CakeProphet> > showIntAtBase 3 intToDigit (foldl1 (+) [1..100]) "" 10:59:16 <lambdabot> "20221001" 10:59:31 <CakeProphet> > map (\x -> showIntAtBase x intToDigit (foldl1 (+) [1..100]) "") [1..] 10:59:32 <lambdabot> ["*Exception: Numeric.showIntAtBase: applied to unsupported base 1 10:59:35 <CakeProphet> > map (\x -> showIntAtBase x intToDigit (foldl1 (+) [1..100]) "") [2..] 10:59:36 <lambdabot> ["1001110111010","20221001","1032322","130200","35214","20503","11672","683... 10:59:55 <CakeProphet> > map (\x -> showIntAtBase x intToDigit (foldl1 (+) [1..100]) "") evens 10:59:56 <lambdabot> Not in scope: `evens' 11:00:04 <CakeProphet> > map (\x -> showIntAtBase x intToDigit (foldl1 (+) [1..100]) "") $ filter even [1..] 11:00:05 <lambdabot> ["1001110111010","1032322","35214","11672","5050","2b0a","1baa","13ba","faa... 11:04:01 <fizzie> Sadly intToDigit only goes up to 15. :/ 11:04:25 <Jafet> @let showAtBase b n=(\(i,f)->(show=<<i)++"."++(show=<<f)) $ splitAt(floor(log n/log b)+1) $ dropWhile(==0) $ unfoldr(\x->let(i,r)=let d=floor(x/b)in(d,x-b*fromIntegral d)in Just(i,r*b)) n 11:04:26 <lambdabot> Defined. 11:04:38 <Jafet> > showAtBase (exp 1) pi 11:04:40 <lambdabot> "10.10100202000211112002010112000101020200211201001201121000112101000020021... 11:04:51 <Jafet> > take 30 $ showAtBase (exp 1) (pi :: CReal) 11:04:55 <lambdabot> mueval-core: Time limit exceeded 11:04:58 <Jafet> > take 25 $ showAtBase (exp 1) (pi :: CReal) 11:05:02 <lambdabot> mueval-core: Time limit exceeded 11:05:07 <Jafet> > take 20 $ showAtBase (exp 1) (pi :: CReal) 11:05:10 <lambdabot> "10.10100202000211112" 11:11:07 <Patashu> > exp 1 11:11:09 <lambdabot> 2.718281828459045 11:11:32 <Patashu> > take 20 $ showAtBase (pi) (pi :: CReal) 11:11:35 <lambdabot> "10.00000000000000000" 11:11:38 <Patashu> coooool 11:11:39 <Patashu> :D 11:11:54 <Patashu> apparently slow though XD 11:12:48 <Jafet> CReal is O(shit) 11:13:07 <Patashu> XD 11:13:08 <Jafet> > showAtBase pi pi 11:13:10 <lambdabot> "10.00000000000000000000000000000000000000000000000000000000000000000000000... 11:13:20 <Jafet> > showAtBase 10 pi 11:13:22 <lambdabot> "3.141592653589793115997963468544185161590576171875000000000000000000000000... 11:13:33 <Patashu> pi should be defined as an infinite list 11:13:39 <Patashu> when more precision is demanded it calculates it 11:14:03 <Jafet> > pi :: CReal 11:14:05 <lambdabot> 3.1415926535897932384626433832795028841972 11:14:54 -!- copumpkin has quit (Ping timeout: 252 seconds). 11:15:32 -!- copumpkin has joined. 11:16:11 -!- DH____ has quit (Read error: Connection reset by peer). 11:57:39 -!- MSleep has changed nick to MDude. 12:05:00 -!- oerjan has joined. 12:20:54 <CakeProphet> Patashu: you could do this yourself you know. 12:23:33 <CakeProphet> :t arccot 12:23:34 <lambdabot> Not in scope: `arccot' 12:23:38 <CakeProphet> :t arctan 12:23:39 <lambdabot> Not in scope: `arctan' 12:23:54 <CakeProphet> :t acot 12:23:55 <lambdabot> Not in scope: `acot' 12:23:58 <CakeProphet> :t atan 12:23:59 <lambdabot> forall a. (Floating a) => a -> a 12:29:50 <CakeProphet> > let acot x = (pi/2) - arctan x; pid digits = let unity = 10 ^ (digits+10); pi' = 4 * (4* arccot 5 unity - arccot 239 unity) in pi' `div` (10^10) in pid 1000 12:29:51 <lambdabot> Not in scope: `arctan'Not in scope: `arccot'Not in scope: `arccot' 12:30:03 <CakeProphet> > let arccot x = (pi/2) - atan x; pid digits = let unity = 10 ^ (digits+10); pi' = 4 * (4* arccot 5 unity - arccot 239 unity) in pi' `div` (10^10) in pid 1000 12:30:04 <lambdabot> Ambiguous type variable `a' in the constraints: 12:30:04 <lambdabot> `GHC.Real.Integral a' 12:30:04 <lambdabot> ... 12:32:03 <oerjan> yay iwc isn't ending (i think. that was a particularly obscure final annotation line.) 12:32:08 <oerjan> *! 12:32:29 <CakeProphet> oh their acot takes two arguments 12:32:31 <CakeProphet> Patashu: http://en.literateprograms.org/Pi_with_Machin's_formula_(Haskell) 12:33:13 <oerjan> @src Floating 12:33:14 <lambdabot> class (Fractional a) => Floating a where 12:33:14 <lambdabot> pi :: a 12:33:14 <lambdabot> exp, log, sqrt, sin, cos, tan :: a -> a 12:33:14 <lambdabot> asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh :: a -> a 12:33:15 <lambdabot> (**), logBase :: a -> a -> a 12:33:41 <CakeProphet> needs moar acot 12:33:59 <oerjan> it's just asin.recip, anyway 12:34:13 <oerjan> er 12:34:14 <CakeProphet> don't care. 12:34:19 <CakeProphet> NEVER A FUNCTION TOO TRIVIAL. 12:34:24 <oerjan> *atan.recip 12:34:31 <CakeProphet> is it? 12:34:43 <oerjan> well tan x = 1/cot x 12:34:48 <CakeProphet> according to wikipedia is pi/2 - atan x 12:34:53 <CakeProphet> is that the same thing? 12:35:08 <fizzie> CReal's pi is defined in terms of atan; "pi = 16 * atan (fromRational (1 % 5)) - 4 * atan (fromRational (1 % 239))" 12:35:26 <oerjan> should be 12:36:03 <oerjan> because tan x = 1 / tan (pi/2 - x) 12:36:06 <CakeProphet> arctan(1/x) = arccot x 12:36:24 <CakeProphet> so yeah 12:38:05 <oerjan> our norwegian trigonometry and calculus classes never bothered with any of that co-stuff 12:38:11 <oerjan> afair 12:38:32 <fizzie> The domains may differ; Wikipedia's "usually defined as" lists gives -pi/2 < y < pi/2 for y = atan(x), and 0 < y < pi for y = acot(x). 12:39:10 <fizzie> And our Finnish trigonometry does not really speak of cosecants, secants and cotangents either. 12:39:18 <CakeProphet> shame 12:39:26 <oerjan> well, that's just because each grows asymptotic at the boundary 12:39:26 <CakeProphet> AMERICAN TRIGONOMETRY IS SUPERIOR HAHAHAHAHA 12:39:44 <oerjan> oh wait we have cosine of course, but not secant 12:40:05 <CakeProphet> puny scandinavians. 12:40:08 <fizzie> "The acronyms "SOHCAHTOA" and "OHSAHCOAT" are commonly used mnemonics for these ratios." Not here they aren't! 12:40:13 <Jafet> Reduce[ArcTan[x] == ArcCot[1/x], x] 12:40:20 <CakeProphet> your feeble peninsula will be analyzed with the might of our extra trigonometric functions. 12:40:21 <Jafet> = True 12:40:40 <fizzie> I'm not sure if there's a Finnish mnemonic. 12:41:21 <fizzie> I think I saw a "soh-cah-toa" reference in some webcomic or other. 12:41:39 <CakeProphet> I bet it was xkcd. 12:41:41 <oerjan> i've seen it mentioned 12:42:47 <fizzie> The "opposite" and "adjacent" in Finnish both start with 'v' ("vastakkainen/vastainen", "viereinen") so we're even mnemonically oppressed by the language. 12:43:08 <CakeProphet> uh... 12:43:13 <fizzie> "SVHKVHTVV" would not be very helpful. 12:43:16 <CakeProphet> why is office libre really really inconsistent about everything. 12:43:47 <CakeProphet> *libreoffice apparently 12:44:25 <CakeProphet> I select "heading 2" for one heading and it does bold and italics, I do the same for a different heading and it formats it differently 12:45:11 <fizzie> Does your superior American trigonometry also cover versine, vercosine, coversine, haversine, exsecant and such? 12:45:18 <CakeProphet> uh, no. 12:46:22 <fizzie> http://upload.wikimedia.org/wikipedia/commons/9/9d/Circle-trig6.svg so pretty. 12:47:27 <CakeProphet> hacoversine, 12:47:27 <fizzie> Haven't had any "style inconsistency" issues in OpenOffice (back when it was called that); though it sometimes is necessary to select all + clear formatting, if the document has originally non-style-based modifications here and there. 12:48:06 <fizzie> "The hacoversed cosine, also called hacovercosine or cohavercosine and written hacovercosin(\theta)" 12:48:27 <oerjan> "now you are just making things up." 12:56:28 -!- oerjan has quit (Quit: leaving). 12:57:51 <fizzie> > let pfx = ["ha", "co", "ver"]; f = (++ "sine") . concat; r = randoms $ mkStdGen 6667 in f . take (head r `mod` 20) $ (pfx !!) . (`mod` length pfx) <$> tail r 12:57:52 <lambdabot> "cohacovercohahahahasine" 12:58:07 <fizzie> "hahahahasine", the funniest trigonometric function there is. 12:58:39 <fizzie> (Also I don't know how to get real random numbers out of lambdabot.) 12:58:59 <CakeProphet> > ((++"sine").(`replicateM` ["ha","co","ver"])) =<< [0..] 12:59:00 <lambdabot> Couldn't match expected type `GHC.Types.Char' 12:59:00 <lambdabot> against inferred type... 12:59:11 <CakeProphet> > ((++"sine").join.(`replicateM` ["ha","co","ver"])) =<< [0..] 12:59:12 <lambdabot> Couldn't match expected type `GHC.Types.Char' 12:59:13 <lambdabot> against inferred type... 12:59:14 <CakeProphet> jsdkfjsadhfiushef 13:00:02 <CakeProphet> > map ((++"sine").join) $ ((`replicateM` ["ha","co","ver"])) =<< [0..] 13:00:04 <lambdabot> ["sine","hasine","cosine","versine","hahasine","hacosine","haversine","coha... 13:00:19 <CakeProphet> > map ((++"sine").join) $ ((`replicateM` ["ha","co","ver"])) =<< [5..] 13:00:21 <lambdabot> ["hahahahahasine","hahahahacosine","hahahahaversine","hahahacohasine","haha... 13:00:34 <CakeProphet> > map ((++"sine").join) $ ((`replicateM` ["ha","co","ver"])) =<< [3..] 13:00:36 <lambdabot> ["hahahasine","hahacosine","hahaversine","hacohasine","hacocosine","hacover... 13:00:57 <CakeProphet> hacocoversine 13:01:04 <CakeProphet> is in there somewhere 13:02:23 <fizzie> > elemIndex "hacocoversine" . map ((++"sine").join) $ ((`replicateM` ["ha","co","ver"])) =<< [0..] 13:02:25 <lambdabot> Just 54 13:02:28 <fizzie> Indeed it is. 13:10:56 <CakeProphet> :t count 13:10:57 <lambdabot> Not in scope: `count' 13:13:38 <CakeProphet> > filter (\x -> (==) `on` length (elemIndices '[' x) (elemIndices ']' x)) $ (`replicateM` "+-[].,") =<< [0..] 13:13:39 <lambdabot> Couldn't match expected type `[GHC.Types.Int] -> a -> b' 13:13:39 <lambdabot> against in... 13:13:58 <CakeProphet> > filter (\x -> ((==) `on` length) (elemIndices '[' x) (elemIndices ']' x)) $ (`replicateM` "+-[].,") =<< [0..] 13:13:59 <lambdabot> ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]","][",".+",... 13:14:06 <fizzie> The good old ][. 13:14:14 <fizzie> Good program. Best friend. 13:14:21 <CakeProphet> best bf 13:14:50 -!- copumpkin has quit (Ping timeout: 258 seconds). 13:15:16 -!- copumpkin has joined. 13:16:27 <CakeProphet> > [] < [1,2,3] 13:16:28 <lambdabot> True 13:16:32 <CakeProphet> > [0] < [1,2,3] 13:16:33 <lambdabot> True 13:16:37 <CakeProphet> > [0] < [0,1,2,3] 13:16:39 <lambdabot> True 13:17:12 <CakeProphet> > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls < rs && ((==) `on` length) numl numr) $ (`replicateM` "+-[].,") =<< [0..] 13:17:13 <lambdabot> Not in scope: `numl'Not in scope: `numr' 13:17:21 <CakeProphet> > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls < rs && ((==) `on` length) ls ra) $ (`replicateM` "+-[].,") =<< [0..] 13:17:22 <lambdabot> Not in scope: `ra' 13:17:25 <CakeProphet> > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls < rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:17:26 <lambdabot> ["[]","+[]","-[]","[+]","[-]","[]+","[]-","[].","[],","[.]","[,]",".[]",",[... 13:17:29 <CakeProphet> .. 13:18:31 <fizzie> > let v d [] = d == 0; v d ('[':xs) = v (d+1) xs; v d (']':xs) = d > 0 && v (d-1) xs; v d (_:xs) = v d xs in drop 10000 . filter (v 0) $ (`replicateM` "+-[].,") =<< [0..] 13:18:33 <lambdabot> [",.-.,+",",.-.,-",",.-.,.",",.-.,,",",.-,++",",.-,+-",",.-,+.",",.-,+,",",... 13:18:33 <fizzie> The manual way. 13:19:04 <CakeProphet> > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls <= rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:19:05 <lambdabot> ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]",".+",".-",... 13:19:18 <CakeProphet> most awesome way. 13:19:40 <CakeProphet> > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls <= rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [4..] 13:19:41 <lambdabot> ["++++","+++-","+++.","+++,","++-+","++--","++-.","++-,","++[]","++.+","++.... 13:19:52 <CakeProphet> > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls <= rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [20..] 13:19:54 <lambdabot> ["++++++++++++++++++++","+++++++++++++++++++-","+++++++++++++++++++.","++++... 13:20:12 <CakeProphet> man there sure are a lot of brainfuck programs. 13:22:22 <fizzie> > elemIndex "[[]]][" . filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls <= rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:22:24 <lambdabot> Just 6284 13:22:31 <fizzie> > [2,6] < [3,5] 13:22:32 <lambdabot> True 13:22:38 <CakeProphet> oh... 13:22:39 <fizzie> Slightly lessens the awesome. 13:22:54 <CakeProphet> how does that work. 13:23:15 <fizzie> Well, 2 < 3. 13:23:35 <CakeProphet> ah 13:24:38 <fizzie> > all (uncurry (<)) $ zip [2,6] [3,5] 13:24:39 <lambdabot> False 13:24:43 <CakeProphet> beat me to it. 13:24:55 <fizzie> Maybe if you test something like that. (Disclaimer: haven't thought it through.) 13:25:23 <CakeProphet> > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in all (uncurry (<)) (zip ls rs) && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:25:23 <lambdabot> ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]",".+",".-",... 13:25:24 <fizzie> > all $ zipWith (<) [2,6] [3,5] 13:25:25 <lambdabot> Couldn't match expected type `a -> GHC.Bool.Bool' 13:25:25 <lambdabot> against inferred ... 13:25:31 <CakeProphet> I have. 13:25:54 <CakeProphet> you want and 13:25:57 <CakeProphet> for that. 13:26:00 <fizzie> Right. 13:26:33 <CakeProphet> > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in and (zipWith (<) ls rs) && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:26:34 <lambdabot> ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]",".+",".-",... 13:26:52 <CakeProphet> can you think of a situation where that fails? 13:28:08 <CakeProphet> I think it's correct. 13:33:19 <CakeProphet> @hoogle on 13:33:20 <lambdabot> Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c 13:33:20 <lambdabot> Text.PrettyPrint.HughesPJ OneLineMode :: Mode 13:33:20 <lambdabot> Text.Parsec.Char oneOf :: Stream s m Char => [Char] -> ParsecT s u m Char 13:36:12 <fizzie> > let progs = (`replicateM` "+-[].,") =<< [0..]; cake = filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in and (zipWith (<) ls rs) && ((==) `on` length) ls rs) progs; v d [] = d == 0; v d ('[':xs) = v (d+1) xs; v d (']':xs) = d > 0 && v (d-1) xs; v d (_:xs) = v d xs in elemIndex False $ zipWith (==) (filter (v 0) progs) cake 13:36:16 <lambdabot> mueval-core: Time limit exceeded 13:36:20 <fizzie> They seem to agree. 13:38:01 <CakeProphet> http://hpaste.org/51618 13:38:04 <CakeProphet> bam 13:38:05 -!- hagb4rd has quit (Ping timeout: 260 seconds). 13:38:08 <CakeProphet> now prettified. 13:43:01 -!- Phantom_Hoover has joined. 13:43:15 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 13:43:16 <CakeProphet> am I a bad person for using (`f` x) instead of flip f x? 13:45:15 <CakeProphet> @pl \ls rs -> and (zipWith (<) ls rs) && ((==) `on` length) ls rs 13:45:16 <lambdabot> ap (ap . (((&&) . and) .) . zipWith (<)) ((==) `on` length) 13:46:19 <CakeProphet> @pl \x -> and (zipWith (<) (elemIndices '[' x) (elemIndices ']' x)) && ((==) `on` length) (elemIndices '[' x) (elemIndices ']' x) 13:46:20 <lambdabot> ap ((&&) . and . ap (zipWith (<) . elemIndices '[') (elemIndices ']')) (ap (((==) `on` length) . elemIndices '[') (elemIndices ']')) 13:46:32 <CakeProphet> beautiful. 13:49:25 <nooga> what are you doing? 13:53:48 <Phantom_Hoover> http://www.reddit.com/r/math/comments/kmhjj/mind_blown_in_linear_algebra_class_today_when_the/ 13:54:00 <Phantom_Hoover> Help this person really annoys me and I feel bad for it. 13:56:17 <fizzie> You are a bad person for being annoyed when other people are happy and excited. 13:57:15 <fizzie> Ut-oh, how do I cancel a topic edit in XChat? 13:57:23 <fizzie> I accidentally all over the topic textbox. 13:57:32 <fizzie> Why is that even a textbox in the first place? 13:57:46 <fizzie> (This is from another client.) 13:58:44 <fizzie> Hrm, restoring it to the original form and then clicking away at least didn't change the topic. But maybe it needs a CR anyway to happen. Who knows. 14:00:27 -!- Madoka-Kaname has quit (Ping timeout: 258 seconds). 14:01:42 <Gregor> fizzie: Only hitting enter will change the topic. If you type /topic in the normal input box, it'll refetch the original topic. 14:01:52 -!- boily has joined. 14:02:15 <fizzie> Good. I was *so scared*. 14:21:02 <Gregor> ... lolwut 14:26:05 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:27:07 -!- FireFly has joined. 14:54:12 -!- copumpkin has joined. 15:16:04 -!- Deewiant_ has quit (Ping timeout: 252 seconds). 15:16:51 -!- Deewiant has joined. 15:40:59 -!- Guest63383 has joined. 15:41:00 -!- Guest63383 has quit (Excess Flood). 15:44:58 -!- variable- has joined. 16:02:12 -!- pumpkin has joined. 16:03:55 -!- copumpkin has quit (Ping timeout: 260 seconds). 16:31:18 -!- augur has quit (Remote host closed the connection). 16:48:56 -!- CakeProphet has quit (Ping timeout: 252 seconds). 16:50:30 -!- pumpkin has changed nick to copumpkin. 16:52:53 -!- augur has joined. 16:57:50 -!- ais523 has joined. 17:05:30 -!- elliott has joined. 17:05:47 <elliott> helo 17:05:59 <ais523> ehlo 17:07:22 -!- elliott has quit (Read error: Connection reset by peer). 17:07:24 -!- elliott_ has joined. 17:17:14 <Vorpal> hm reading the last iwc annotation, it seems it is going to continue? 17:17:45 <Vorpal> not sure 17:25:12 -!- azaq23 has joined. 17:28:28 <elliott_> hmph, no respond to my issue after, like, A WHOLE DAY :p 17:28:34 <elliott_> s/:p/:P/ 17:28:38 <Vorpal> elliott_: what issue? 17:30:21 <Vorpal> bbl 17:30:59 <elliott_> Vorpal: https://github.com/phonohawk/HsOpenSSL/issues/3 17:41:25 <Vorpal> back 17:42:07 <Vorpal> elliott_: template haskell uses bytecode interpreter? huh. Well, I guess it makes sense. 17:42:25 <Vorpal> elliott_: what are you using openssl bindings for? 17:42:28 <elliott_> Vorpal: Consider cross-compiling 17:42:47 <Vorpal> elliott_: true 17:42:50 <elliott_> And because iterIO depends on them; it'd be nice if that kind of auxiliary stuff was split up from the package but it isn't 17:43:11 <Vorpal> elliott_: and why are you using iterIO? 17:43:21 <elliott_> Iteratee-based IO is an alternative to lazy IO that offers better error handling, referential transparency, and convenient composition of protocol layers or parsers. This package provides iteratees based around pipe operators for hooking together application components and directing data flow. New users should see the tutorial in the Data.IterIO module documentation. Highlights of the library include: 17:43:21 <elliott_> Heavy emphasis on ease of use, ease of learning, and uniformity of mechanism. 17:43:21 <elliott_> Copious documentation. 17:43:21 <elliott_> Consistent EOF and error handling to avoid resource leaks and other issues in corner cases. 17:43:23 <elliott_> A set of iteratee parsing combinators providing LL(*) parsing while generally not consuming large amounts of memory for backtracking. 17:43:26 <elliott_> Seamless integration with attoparsec for LL(1) parsing. 17:43:28 <elliott_> See Data.IterIO for a discussion of the differences between iterIO and the two previous iteratee implementations (iteratee and enumerator). 17:43:36 <elliott_> Unless you know of a better iteratee package? 17:43:55 <elliott_> I don't want to write manual network code. 17:44:08 <Vorpal> hm, nice 17:44:26 <elliott_> If not iterIO I'd use enumerator, but I find iterIO easier to understand and more powerful 17:44:46 <Vorpal> elliott_: of course, real programmers would just poke the relevant registers on the NIC manually 17:44:57 <Vorpal> or get butterflies to do it 17:46:11 <elliott_> Vorpal: Well, I could just use standard handle-based IO, iteratees are probably slightly overkill, but I don't see why I should stop using them just because of a dependency issue 17:46:25 <Vorpal> fair enough 17:46:28 <elliott_> And it's not like they have much overhead in terms of code to using them so there's no harm done 17:46:54 <elliott_> It would be nice if I could make the packet reading/writing code work directly with iteratees rather than having to go through the cereal library 17:46:54 <elliott_> Not sure 17:47:02 <elliott_> That might be good for performance, I'll have to see 17:47:23 <Vorpal> elliott_: what are you doing networking for though? 17:47:27 <elliott_> Vorpal: mchost 17:47:33 <Vorpal> aha 17:48:41 <elliott_> Anyway, I'm trying to do things The Right Way, and iteratees are definitely The Right Way :-P 17:48:56 <Vorpal> right 17:49:48 <Vorpal> I like that compared to lisp of scheme, explicit recursion is a lot more rare in haskell. 17:49:52 <Vorpal> or* 17:50:05 <elliott_> Explicit recursion is rare in CL 17:50:07 <elliott_> They use LOOP 17:50:19 <Vorpal> elliott_: well yeah. But compared to scheme then 17:50:24 <Vorpal> and some lisp dialects 17:50:32 <elliott_> Well, nobody writes programs in scheme :D 17:50:32 <Vorpal> iirc it isn't all that uncommon in elisp 17:50:52 <Vorpal> elliott_: touche 17:51:45 <elliott_> Anyway, the iterIO maintainer fixed a bug I reported and released the new version to Hackage an hour after I emailed him about it, so I'm disinclined to switch to something else :) 17:51:59 <Vorpal> right 17:52:07 -!- copumpkin has changed nick to gribbles. 17:55:55 <elliott_> Also it lets me avoid Handles which is nice, since they have buffer support I don't need. 18:02:34 -!- Ngevd has joined. 18:02:52 <Ngevd> Hello 18:04:25 <Ngevd> S(S(SKK)(KS))(KK) 18:05:58 -!- gribbles has changed nick to copumpkin. 18:13:25 -!- Ngevd has quit (Ping timeout: 260 seconds). 18:34:00 -!- Ngevd has joined. 18:38:22 <Gregor> Ngevd: I am so glad that my idle comment has permanently changed your IRC identity. 18:38:34 <Ngevd> Yup 18:38:45 <Ngevd> Ngevd is easier to explain than Taneb 18:40:39 <ais523> what was the comment? 18:40:42 <ais523> I've been trying to figure out the new name 18:40:53 <ais523> at first I thought it was rot-13 or a variant, but it doesn't seem to be 18:41:00 <Ngevd> I almost had the additional middle name Elliott 18:41:08 <Ngevd> Which would make my initials NGEvD 18:41:20 <ais523> ah, initials 18:41:29 <ais523> and yet another elliott would be really confusing, there are already at least two 18:41:37 <elliott_> hello 18:41:46 <ais523> hi 18:41:50 <Ngevd> It's an old family name 18:41:52 <elliott_> <ais523> and yet another elliott would be really confusing, there are already at least two 18:42:00 <elliott_> ais523: I think everything about Taneb makes communication here more confusing 18:42:01 <Gregor> Ngevd is an old family name??? (lololol) 18:42:02 <ais523> that have been, in here 18:42:07 <Gregor> My old family name is Dodifer :P 18:42:25 <elliott_> "The esolanger who is aware of IWC's existence who is regularly in #esoteric and who lives in Hexham" was pretty ambiguous before he came along :P 18:42:30 <elliott_> s/ambiguous/unambiguous/ 18:42:38 <ais523> wait, there are two Hexhamers in #esoteric? 18:42:43 <Ngevd> Me and elliott_ 18:42:47 <Ngevd> And we have never me 18:42:48 <Gregor> (Six-sided hammers) 18:42:48 <Ngevd> t 18:42:53 <ais523> that's, umm, bizarre 18:42:58 <Ngevd> I know! 18:43:04 <ais523> given that Hexham is minor enough that elliott_ was surprised that I'd heard of it 18:43:10 <ais523> (and I hadn't done much more than hear of it) 18:43:14 <Ngevd> You've heard of it!? 18:43:19 <Gregor> It's surprising that they've never met given that the entire population of Hexham is six pigs and twelve farmers to maintain the six pigs. 18:43:27 <ais523> well, obviously; more surprising is that I'd heard of it before I'd met elliott_ 18:44:03 <ais523> I've heard of lots of other places too, like Stourbridge and Halesowen 18:44:09 <Ngevd> Goodwife Hot 18:45:26 <elliott_> <ais523> wait, there are two Hexhamers in #esoteric? 18:45:34 <elliott_> ais523: Yes, this was as surprising to me as it was to you. 18:45:36 <elliott_> Also as surprising to Ngevd. 18:45:41 <elliott_> `pastelogs don't tell me you live in hexham 18:45:55 <ais523> I thought it was reasonably well-known that elliott_ lived in hexham 18:46:02 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22620 18:46:06 <ais523> so presumably it was Ngevd that noticed the issue first 18:46:13 <elliott_> Argh, wrong quote 18:46:14 <ais523> elliott_: that was useless! 18:46:16 <elliott_> `pastelogs hexham 18:46:20 <Ngevd> It was Phantom_Hoover who noticed the issue 18:46:20 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30798 18:46:49 <elliott_> gah, where is it 18:46:57 <Ngevd> July 15? 18:47:06 <ais523> 2008-03-14.txt:20:48:37: <Deewiant> google suggests hexham, england 18:47:10 <ais523> I wonder what that was about 18:47:23 <elliott_> wait 18:47:28 <elliott_> Gregor: http://codu.org/logs/_esoteric/ 18:47:35 <elliott_> Where's months four to seven 18:47:53 <Gregor> elliott_: That is an excellent question. 18:47:53 <Deewiant> ais523: 2008-03-14 21:47:59( AnMaster) ehird, where are you from btw? (as in what country?) 18:48:00 <elliott_> I was wondering why `log was missing so much. 18:48:19 <elliott_> ais523: tl;dr Taneb mentioned he was from Northumberland, PH said "please don't tell me you live in Hexham", Taneb freaked out. 18:48:28 <elliott_> The next day, I heard about it, freaked out. 18:48:31 <ais523> Deewiant: ah, so elliott_ was a known hexham/just-next-to-hexham resident before the codu logs started 18:48:35 <elliott_> Henceforth we have vowed to never cross paths ever. 18:48:44 <elliott_> ais523: codu logs contain all clog logs 18:48:47 <elliott_> So no 18:49:26 <ais523> what about cmeme logs? or have they vanished? 18:49:40 <elliott_> I think so. 18:49:44 <ais523> also, you two will probably meet each other by chance, but not recognise each other 18:49:46 <ais523> and may already have done so 18:50:00 <Ngevd> Almost certainly 18:50:13 <Ngevd> I'm well known in Ponteland of all places 18:50:24 <Ngevd> I've never actually been outside of a car in Ponteland 18:50:27 <ais523> one of you should wear a hat with a stellated icosahedron on 18:50:47 <Ngevd> I sometimes where a John Egbert shirt in Hexham 18:50:57 <Ngevd> That is, in the middle of Hexham 18:51:01 <elliott_> famous in ponteland 18:51:11 <elliott_> the greatest achievement anyone has ever achieved 18:51:17 <Ngevd> Long story which I have already told 18:52:08 <elliott_> Gregor: Well? :P 18:55:07 <Gregor> elliott_: Latest regen of logs to fix the quit bug did weird things. Fixing more bugs :P 18:55:12 -!- augur has quit (Remote host closed the connection). 18:55:16 <cheater> http://en.wikipedia.org/wiki/Ponteland 18:55:17 <Gregor> i.e. gimme a sec 18:55:24 <cheater> come to think of it they recorded this on wikipedia 18:55:45 <cheater> next thing they'll start giving names and wikipedia articles to distinctive dog piles 18:58:33 <Ngevd> next thing they'll start giving names piles and distinctive articles to wikipedia dog 18:59:33 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 19:01:00 <cheater> quitter 19:10:09 -!- augur has joined. 19:23:32 <Phantom_Hoover> <Ngevd> It was Phantom_Hoover who noticed the issue 19:23:33 <Phantom_Hoover> Dude 19:23:40 <Phantom_Hoover> I didn't notice it. 19:23:46 <Phantom_Hoover> I intuited it with telepathyy. 19:23:57 <Phantom_Hoover> (It's like telepathy, but better.) 19:30:04 <Gregor> elliott_: Bug found, fixing. 19:31:21 -!- elliott has joined. 19:31:37 -!- elliott_ has quit (Read error: Connection reset by peer). 19:31:39 <elliott> -NickServ- Last failed attempt from: Elliott!3lli0tt@cpc1-woki6-2-0-cust904.6-2.cable.virginmedia.com on Sep 21 18:35:20 2011. 19:31:45 <elliott> Somebody needs to teach this fucker a lesson. 19:31:47 <elliott> This is like the third time. 19:32:04 <elliott> fizzie: Vorpal: Is there a way to go from that to their current nick? 19:32:29 <Vorpal> elliott: not that I know of. 19:32:39 <elliott> Lame. How am I going to yell at him now? 19:33:10 <Vorpal> elliott: I had a similar issue once, but then the ident proved to help me find him/her. Turned out to be a misconfigured pidgin client trying to id as for another network. 19:33:23 <olsner> if it's an actual attempt at stealing your account, maybe freenode's operators can find him for you 19:33:32 <elliott> olsner: I suspect it's simply: someone else called elliott. 19:33:37 <elliott> Especially considering the uppercase E. 19:33:47 <elliott> Also, freenode don't give a fuck about account owners, or they wouldn't drop nicks after like three days of no use. 19:33:51 <elliott> (FSVO three days.) 19:34:15 <olsner> hmm, right 19:34:57 <Gregor> elliott: To answer your previous question, there has never been any missing days in the log, and you're crazy for thinking there had been. 19:34:58 <Vorpal> elliott: not 3 days iirc? 19:35:02 <Vorpal> more like a week or two? 19:35:11 <elliott> `pastelogs don't tell me you live in hexham 19:35:20 <elliott> Vorpal: It's something like thirty to sixty days, I forget exactly, but it's ridiculous. 19:35:24 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7949 19:35:27 <olsner> `log hexham 19:35:32 <HackEgo> 2011-09-21.txt:18:45:26: <elliott_> <ais523> wait, there are two Hexhamers in #esoteric? 19:35:37 <elliott> Gregor: And that's why there are no more lines in that pastelogs :P 19:35:38 <Vorpal> elliott: it seems to drop after extended inactivity 19:35:45 <elliott> Vorpal: No, it's not automatic. 19:36:00 <Vorpal> elliott: oh right, many other networks do automatic dropping 19:36:02 <ais523> `pastelogs hexham 19:36:02 <elliott> Someone has to go into #freenode and say "give me this nick" and they'll do it immediately if it hasn't been logged into for something like a month or two. 19:36:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11100 19:36:09 <elliott> It should be much longer than that. 19:36:18 <Vorpal> elliott: most networks actually do it automatic. 19:36:20 <olsner> oh, HEXHAMers, now I finally managed to parse that word 19:36:20 <ais523> elliott: they don't seem to have a fixed time, it depends on other things 19:36:24 <Phantom_Hoover> <elliott> -NickServ- Last failed attempt from: Elliott!3lli0tt@cpc1-woki6-2-0-cust904.6-2.cable.virginmedia.com on Sep 21 18:35:20 2011. 19:36:29 <elliott> Vorpal: Isn't freenode's whole idea to be unlike "most networks" 19:36:32 <Phantom_Hoover> Is that a Hexham address? 19:36:34 <elliott> Most networks are terrible 19:36:37 <elliott> Phantom_Hoover: I hope so. 19:36:50 <Gregor> elliott: As near as I can tell, that is in fact the only line that matches exactly "don't tell me you live in hexham" 19:36:52 <Vorpal> elliott: hm maybe. 19:36:53 <olsner> I tried to make it into hex-hammers but it was not spelled the right way for that to work 19:36:55 <elliott> ais523: They do, but they claim to be slightly more wary if it's just reached that time. 19:37:06 <elliott> ais523: I'm fairly sure that's lies though, I've got about ten nicks dropped no questions asked. 19:37:07 <Gregor> `pastelogs don't tell me you live in hexham 19:37:12 <elliott> Gregor: http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7949 19:37:16 <elliott> 2011-07-16.txt:16:01:00: <Phantom_Hoover> Please don't tell me you live in Hexham. 19:37:21 <elliott> That was missing previously. 19:37:30 <elliott> `pastelogs really makes me hate being alive 19:37:30 <Gregor> Oh; yeah, that's there now :P 19:37:33 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17403 19:37:34 <elliott> I bet this'll get us 345 back. 19:37:37 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19220 19:37:42 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19220 19:37:43 <elliott> Yep. 19:37:48 <elliott> `logurl 2011-04-03.txt:19:48:31: 19:37:50 <HackEgo> http://codu.org/logs/log/_esoteric/2011-04-03 19:37:56 <Gregor> Apparently when you have a random bug that causes certain quits to conclude that no lines belong to any channel, it's easy to scrub whole giant swaths of history. 19:38:05 <elliott> Nice. Very nice. 19:38:06 <ais523> elliott: they claim to be more wary on dropping someone's only alternate nick 19:38:14 <Vorpal> Gregor: XD 19:38:23 <Vorpal> Gregor: quits on what form? 19:38:26 <elliott> 14:38:28: <elliott> 21:54:38 <catseye> HAAAAAAAAAAAAAAAAAAAAAAAAAAAA 19:38:26 <elliott> 14:38:28: <elliott> 21:54:48 <catseye> i had OS/2 Warp once. 19:38:26 <elliott> 14:38:28: <elliott> 21:55:02 <catseye> i had all those fucking floppies 19:38:26 <elliott> 14:38:28: <elliott> 21:55:04 <catseye> it never worked. 19:38:26 <elliott> 14:38:28: <elliott> some people are just poets 19:38:27 <elliott> Would like to reaffirm this as best poem. 19:38:33 <Gregor> Vorpal: I'm not rightly sure *shrugs* 19:38:39 <Vorpal> Gregor: ah. 19:38:46 <elliott> ais523: That's never happened to me. I don't remember how long elliott had been unused when I got it dropped, but it wasn't long. 19:38:51 <elliott> I feel no guilt because it was stolen from me in the first place :P 19:38:58 <olsner> elliott: I don't see the poetry 19:39:01 * Vorpal has quit (' -- DROP TABLE logs) 19:39:14 <Vorpal> (well, not quite) 19:39:16 <elliott> olsner: You're not looking hard enough. 19:39:21 <elliott> Try saying the lines aloud, as poetry. 19:39:26 * Vorpal has quit ('; DROP TABLE logs; --) 19:39:27 <Vorpal> there 19:39:54 <elliott> 14:54:26: <elliott> 11:14:27 <cpressey> There's a squirrel that lives near my building that I see every so often. I can recognize it's the same squirrel because it has no tail. It is a constant reminder that, visually speaking anyway, squirrels are approximately 50% tail. 19:39:55 <elliott> I think I was just doing a best-of-cpressey day :P 19:39:59 <ais523> elliott: it does look like a poem to me, just not a very good one 19:40:12 <elliott> ais523: How can a complete summary of computing be a bad poem? 19:40:17 <ais523> what color are the squirrels in the US? 19:40:25 <ais523> unto; 19:40:26 <olsner> the one with the squirrel is nice 19:40:42 <Vorpal> ais523: hm... Grey iirc? 19:40:53 <Vorpal> and brown in EU right? 19:40:53 <ais523> Vorpal: I'd prefer a reply from an American 19:40:57 <olsner> the most squirrelly color of them all, squirrel-colored 19:40:59 <ais523> no, that's all wrong 19:41:04 <Phantom_Hoover> 2011-09-21.txt:18:48:19: <elliott_> ais523: tl;dr Taneb mentioned he was from Northumberland, PH said "please don't tell me you live in Hexham", Taneb freaked out. 19:41:09 <ais523> they're most commonly grey in the UK, although there are a few red ones left in scotland 19:41:09 <Phantom_Hoover> Also not quite accurate. 19:41:22 <Phantom_Hoover> He was complaining about the rain and then I said that. 19:41:44 <olsner> taneb is from hexham? 19:41:47 <Vorpal> ais523: well yeah, the grey US ones are taking over in UK iirc. Think I saw a BBC produced program about that some years ago. 19:41:53 <ais523> there are no other esolangers in Birmingham, right? 19:41:59 <elliott> Phantom_Hoover: He definitely said Northumberland before that. 19:42:01 <elliott> But okay. 19:42:03 <Vorpal> maybe one of the idlers 19:42:06 <Phantom_Hoover> ais523, Hexham seems to be the only one. 19:42:14 <cheater> ais523: squirrels are very popular in london, they pretty much do not exist in germany 19:42:29 <ais523> *populous? 19:42:31 <Phantom_Hoover> elliott, sure, and that raised my suspicion, but a day before I asked him if he was in Hexham. 19:42:34 <ais523> or was that literally correct? 19:42:43 <elliott> Phantom_Hoover: Fiiiiiiiine. 19:42:43 <Vorpal> I seen them in Sweden. Not very common here. Been a year or so since I last saw one 19:42:46 <fizzie> I'm tempred to say "Taneb is from Heham?!" too, we haven't had enough shock yet. 19:42:48 <ais523> elliott hasn't always been in Hexham, at least 19:42:52 <elliott> fizzie: Tempred? 19:42:59 <fizzie> Tempted. 19:43:01 <Phantom_Hoover> Vorpal, can we please have a talk about the pluperfect. 19:43:03 <elliott> Tempred. 19:43:10 <Phantom_Hoover> Do you not have them in Swedish or? 19:43:16 <elliott> Phantom_Hoover: It's been years, he will never learn. 19:43:24 <elliott> At least he's mostly worked out his "has/have/had"s by this point. 19:43:25 <cheater> popular, because they are put there by the city. squirrels don't thrive on their own, they're not rats. 19:44:15 <Vorpal> speaking of animals, I got a bit of a scare today. I was driving up a highway exit today. A very curved one with poor visibility. Then I suddely saw two deer in the ditch on the side of the road. Thankfully not trying to cross the road. 19:44:28 <ais523> there was a squirrel living in the roof of the library at school 19:44:35 <ais523> it used to bask inside the flourescent lights 19:44:44 <Vorpal> I'm unsure if I would have been able to brake given the visibility there. 19:44:47 <cheater> lol 19:44:53 <elliott> rip deer 19:44:58 <cheater> the fluorescent squirrel 19:44:59 <cheater> nice 19:45:04 <Vorpal> <Phantom_Hoover> Vorpal, can we please have a talk about the pluperfect. <-- the what? 19:45:09 <elliott> Vorpal: Exactly. 19:45:17 <Phantom_Hoover> Vorpal, saw/seen. 19:45:19 <ais523> the porter (basically like a groundsman for the inside of a building) used to catch it every now and then, apparently using a trap baited with Bounty bars (which it really liked), and release it in the nearby woods 19:45:24 <Vorpal> oh past perfect 19:45:25 <ais523> but it always seemed to find its way back 19:45:25 <Vorpal> right 19:45:41 <olsner> Phantom_Hoover: that's not pluperfect 19:45:44 <ais523> it's surprisingly how quickly you get used to a squirrel running around inside the ceiling cavity 19:45:51 <Vorpal> Phantom_Hoover: I simply dropped the "have" there somehow 19:46:00 <Vorpal> Phantom_Hoover: yes, we have them, we call them pluskvamperfekt 19:46:03 <Phantom_Hoover> olsner, how not? 19:46:11 <cheater> ais523: surprisingly... surprising? 19:46:14 <ais523> pluperfect is "had verbed" 19:46:18 <ais523> cheater: err, rihgt 19:46:21 <ais523> *right 19:46:25 <cheater> rite 19:46:38 <Phantom_Hoover> Oh dear now I'm confused as well. 19:46:46 <Vorpal> Phantom_Hoover: anyway it was a simple typo of dropping a word. 19:46:51 <Vorpal> what's so bad about that? 19:46:51 <cheater> fnern 19:46:59 <Phantom_Hoover> Vorpal, that's not what 'typo' means but whatever. 19:47:19 <Vorpal> Phantom_Hoover: I meant to write "I have seen them" 19:47:48 <olsner> Phantom_Hoover: hmm, "had seen" is pluperfect, and I guess that's what you meant when you wrote just "seen" ... "saw" is definitely not pluperfect though 19:47:52 <cheater> typo is short for typographical error 19:48:03 <cheater> dropping a word is certainly an error in typography 19:48:13 <Phantom_Hoover> Yeah, except 'have seen', which is what Vorpal meant, is just perfect. 19:48:22 <elliott> <cheater> What is descriptivism? Etymology is literally meaning. 19:48:51 <cheater> elliott: leave me alone 19:49:00 <fizzie> Phantom_Hoover: They have both "have fooed" and "had fooed" forms, and even the auxiliary verb is very similar to English; 'har' + 'hade' vs. 'have' + 'had'. 19:49:35 <elliott> cheater: If I only made fun of everyone else's stupid remarks and not yours too, that would be discrimination. 19:49:57 <cheater> elliott: leave me alone 19:50:15 <elliott> Are you really trying the "I'M A VICTIM OF THE AWFUL ELLIOTT MONSTER" tack? 19:50:36 <Vorpal> elliott: cheater: why don't you two just /ignore each other? 19:51:18 <olsner> that would leave cheater unfairly unridiculed compared to the rest of us 19:51:43 <Phantom_Hoover> Vorpal, because elliott finds it fun and cheater craves attention. 19:51:56 <elliott> Vorpal: cheater won't /ignore me because he wouldn't be able to claim I'm stalking him around to make fun of him, I won't /ignore him since nobody else wants to deal with him just to point out his crap. 19:52:08 <Vorpal> Phantom_Hoover: Good points. 19:52:29 <Vorpal> elliott: I tend to ignore him, but he change nick every so often. 19:52:41 <elliott> Vorpal: So do most people. 19:52:45 <elliott> Well, FSVO most. 19:52:47 <elliott> But a fair number. 19:52:57 <Vorpal> yeah 19:53:00 <Phantom_Hoover> Vorpal, yes, sometimes he even adds numbers to the end of his nick WHAT IGNORE SYSTEM COULD COPE 19:53:41 <cheater> a true conundrum 19:53:42 <Vorpal> Phantom_Hoover: problem is, I know I different cheater on a different network who is okayish. I tried ignoring on nick* + isp but that changed too a few times. 19:54:05 <fizzie> Anyway! Quite a lot of squirrels in Finland, at least in some regions. I see them on the route to work/back once a week, and last year there was one practically every morning in one location. 19:54:18 <Vorpal> heh 19:54:21 <Phantom_Hoover> fizzie, it may be too late. 19:54:22 <cheater> i am surprised squirrels don't just freeze over there 19:54:34 <Phantom_Hoover> THE SQUIRRELS ARE MUSTERING THEIR STRENGTH 19:54:49 <elliott> Vorpal: Tell the other cheater to /nick personwhoplaysbytherules. 19:54:53 <fizzie> They do change color in winter. 19:55:07 <elliott> Also, does your client not do per-network ignores? Mine doesn't, but actually I'm not sure why. 19:55:08 <elliott> That would be a useful feature. 19:55:48 <Vorpal> elliott: XD 19:55:59 <Vorpal> <elliott> Also, does your client not do per-network ignores? Mine doesn't, but actually I'm not sure why. <-- nope, that would be useful. 19:56:18 <fizzie> You don't see them around that much in the middle of the winter though. 19:56:20 <Vorpal> elliott: anyway I'm planning on writing my own irc client 19:56:30 <elliott> Vorpal: You were planning that months ago. 19:56:36 <elliott> It's not exactly hard. :p 19:56:41 <olsner> Vorpal: heh, that sounded a bit like "Of course it doesn't! That would be useful." 19:56:44 <Vorpal> elliott: I learned project management from you 19:56:46 <Vorpal> :( 19:56:57 <fizzie> Irssi does per-network ignores. 19:57:00 <Phantom_Hoover> Vorpal, you should learn it from me. 19:57:01 <Vorpal> olsner: what did? my reply? 19:57:08 <Vorpal> XD 19:57:13 <olsner> yes, the one about it not doing per-network ignores 19:57:15 <Vorpal> Phantom_Hoover: no that would be even worse 19:57:20 <elliott> Vorpal: You mean the guy who wrote a compliant Funge interpreter in three days and who wrote something that could fully parse huge Minecraft dumps within three days? 19:57:29 <elliott> (OK, OK, exception that proves the rule.) 19:57:32 <Phantom_Hoover> Vorpal, what do you mean 'worse'. 19:57:40 <Vorpal> fizzie: I tried irssi, never really liked it. It gets annoying to remember that /w 82 is #minecraft or whatever 19:57:55 <elliott> I suggest not being a member of any channels named #minecraft, they're all awful. 19:58:07 <Vorpal> Phantom_Hoover: would never get anywhere 19:58:07 <ais523> we should find a network that doesn't have a #minecraft yet 19:58:14 <ais523> and create a channel dedicated to something better there 19:58:14 <fizzie> Vorpal: There are scripts to help dealing with that, but sure, it's not very optimal. 19:58:20 <elliott> I bet OFTC doesn't, but I bet they'd also not allow one. 19:58:31 <ais523> what's OFTC? 19:58:34 <Phantom_Hoover> They have an Oolite one. 19:58:40 <Vorpal> elliott: it is actually a minecraft server channel for that server. Like our MC channel, but for that network. A much smaller network than freenode. So it works. 19:58:56 <elliott> ais523: Software in the Public Interest's official IRC network; 19:59:01 <fizzie> In fact, don't een be on any channels that have "minecraft" as substring, it's safer that way. 19:59:07 <elliott> ais523: so by proxy Debian's, OpenOffice's, Arch Linux's, OpenWrt's, ... 19:59:13 <Vorpal> only reason I'm on OFTC is #llvm 19:59:15 <elliott> , PostgreSQL's, ... 19:59:23 <Phantom_Hoover> <Vorpal> Phantom_Hoover: would never get anywhere 19:59:27 <Vorpal> elliott: wait, you mean #archlinux on here is not official? 19:59:39 <elliott> Vorpal: Well, I guess you can be a member of SPI without using OFTC. 19:59:45 <Phantom_Hoover> nonononono, you get to thing about how awesome the thing will be and then go on to thinking about how awesome something else will be it is the best. 19:59:45 <elliott> And nothing stops people having multiple official channels. 19:59:48 <Vorpal> elliott: SPI? 19:59:54 <elliott> Vorpal: Software in the Public Interest. Keep up. 20:00:00 <Vorpal> elliott: I never heard of it 20:00:24 <Vorpal> Phantom_Hoover: doesn't help me meet deadlines 20:00:31 <elliott> OFTC have their own ircd for some reason. 20:00:38 <Vorpal> hm 20:00:52 <elliott> Anyway, I guess it's likely that Debian are the main users of OFTC. :p 20:00:55 <Vorpal> elliott: really? I thought it was just a patched ratbox or some such 20:00:59 <elliott> But a fair number of software projects have their channels there. 20:01:04 <elliott> Vorpal: Well, it's "oftc-hybrid". 20:01:09 <elliott> Most IRCs are derivatives of other IRCs. 20:01:10 <elliott> erm 20:01:11 <elliott> ircd 20:01:11 <elliott> s 20:01:13 <Vorpal> yeah 20:01:30 <ais523> elliott: hmm, somehow I expected that lot to all be on Freenode 20:01:32 <Vorpal> elliott: anyway freenode have their own too. A patched charybdis 20:01:54 <Vorpal> elliott: the only major recent ircd that is not a fork of something else that I can think of is inspircd. 20:02:12 <elliott> ais523: Debian were on freenode, then jumped ship to OFTC. 20:02:13 <Vorpal> and the only two good major ircds I know of are inspircd and charybdis. 20:02:22 <elliott> Vorpal: ngircd isn't a derivative of anything 20:02:28 <Vorpal> oh right 20:02:33 <Vorpal> elliott: who uses it though? 20:02:45 <elliott> Vorpal: Who uses inspircd? 20:02:51 <elliott> ais523: Basically OFTC is the result of freenode being incompetent and awful. :p 20:03:04 <Vorpal> oftc is worse if anything 20:03:11 <elliott> It is? 20:03:21 <elliott> I haven't heard of any troubles with them, but I haven't been on much. 20:03:23 <Phantom_Hoover> elliott, wait what do FreeNode do. 20:03:36 <elliott> Phantom_Hoover: s/FreeNode/freenode/, and what do you mean what do they do? They run an IRC network. 20:03:58 <Vorpal> elliott: yeah getting a cloak for your host seemed utterly complex, and was only given when you could show you had a good reason to need one or some such shit 20:04:22 <elliott> Vorpal: That doesn't mean that they're worse, it just means that they're more conservative, which is kind of the point. 20:04:24 <Vorpal> I would be okay with normal cloak like freenode, or the network scrambling the host name 20:04:30 <Phantom_Hoover> elliott, yes but what are they bad about. 20:04:55 <elliott> Phantom_Hoover: They're not exactly very professional, and their policies are pretty bad. 20:05:09 <elliott> I think the staffers are not well-liked by a lot of people, but I don't really keep track of this stuff. 20:05:30 <Phantom_Hoover> Is the botpocalypse an example of this. 20:05:37 <Vorpal> elliott: iirc some of the worst people got booted from the staff. Still a few bad ones left. But I don't really keep up with that either. 20:05:41 <elliott> Phantom_Hoover: I would say so :P 20:05:55 <Vorpal> I know someone who does, so I get to hear some of it that way, of course that is biased. 20:06:22 <Vorpal> Phantom_Hoover: hm? 20:06:36 <elliott> Vorpal: The CTCP thing. 20:06:39 <Vorpal> oh right 20:06:43 <Gregor> "The Zune HD web browser scores 5/100 in the Acid3 test." X-D 20:06:44 <Vorpal> yeah that is stupid . 20:06:51 <elliott> A certain person who we don't know who it is at _all_ complained, then Plazma, etc. 20:06:56 <Vorpal> Gregor: ouch 20:07:06 <pikhq_> Gregor: Quite "impressive" considering in-development IE gets 100/100. 20:07:20 <Vorpal> Gregor: that is fucking terrible. Considering even IE6 got more iirc. 20:07:37 <Gregor> Vorpal: The Zune's browser is uniquely bad. You have to use it to believe it. 20:07:48 * pikhq_ would be willing to bet on a port of IE5 20:07:49 <elliott> s/'s browser// 20:07:49 <Vorpal> firefox 6 gets 100/100 of course 20:07:57 <Vorpal> pikhq_: but why 20:07:59 <Gregor> pikhq_: I have discovered that the greatest thing about the Zune is that it has legitimate fanboys who I can troll endlessly since they're fans of literally the worst media player ever made. 20:08:17 <pikhq_> Vorpal: IE5 is the most portable IE. 20:08:18 <Phantom_Hoover> Gregor, wasn't Tycho a fan? 20:08:28 <Vorpal> pikhq_: eh, it still requires windows doesn't it? 20:08:29 <Gregor> Phantom_Hoover: Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmrrrrp? 20:08:31 <pikhq_> Vorpal: It actually ran on not-Windows! 20:08:37 <Vorpal> pikhq_: oh right, mac os 20:08:39 <Vorpal> indeed 20:08:47 <pikhq_> Vorpal: It was offered for Windows, Solaris, and HP-UX. 20:08:58 <Vorpal> pikhq_: and iirc mac os classic 20:08:58 <pikhq_> IE for Mac was a completely different product that shared the brand name. 20:09:02 <Vorpal> ah right 20:09:15 <pikhq_> IE for UNIX was a direct port. 20:09:30 <Vorpal> pikhq_: IE for mac was quite weird. Of course it shared the "moving mouse pointer = slower download" issue of all classic mac os 20:09:43 <Vorpal> that was more due to the OS 20:09:48 <Gregor> Anyway, the Zune, with Liberate (to get rid of their shitty UI and reintroduce a shittier one but with better app compatibility) and an FTP server is approaching a tolerable device. 20:10:10 <Gregor> Though the lack of hardware volume buttons is seriously the worst offense any media player could commit. 20:10:11 <pikhq_> Yeah, the design of classic Mac OS was pretty ridiculous. 20:10:46 <pikhq_> It made plenty of sense on the first few Mac models. 20:10:50 <Vorpal> yes 20:10:57 <Vorpal> pikhq_: I used Mac OS 9 20:11:00 <pikhq_> And got to be utterly ridiculous when running on PowerPCs. 20:11:21 <Vorpal> yes 20:11:59 <pikhq_> Shame they didn't switch to A/UX in the late 80s, though. 20:12:36 <Vorpal> yeah 20:12:54 <elliott> Gregor: How do you adjust the volume on a Shuffle, I wonder 20:13:21 <Gregor> elliott: Hardware 20:13:34 <olsner> using the volume control, perhaps 20:13:35 <elliott> Gregor: Hmm, it has volume buttons? 20:13:40 <Gregor> Yes 20:13:44 <elliott> Gregor: And one other button, right? 20:13:51 <elliott> olsner: The Shuffle has ~no controls. 20:13:56 <Gregor> The new ones have five I think ... 20:14:05 <elliott> I'm talking about the ones that are basically headphones. 20:14:10 <pikhq_> elliott: Some had hardware buttons, some had buttons *on the fucking headphones*. 20:14:13 <Gregor> The shuffle has always had controls, just no screen. 20:14:13 <elliott> Oh right those new ones. 20:14:16 <elliott> No I mean the ones before that. 20:14:28 <pikhq_> Before that, they had hardware volume buttons. 20:14:34 <Gregor> There has never been a shuffle with no controls whatsoever, just (like pikhq_ said) they've been in stupid places. 20:14:50 <elliott> "It also no longer had volume or track controls on the device itself. Instead, the packaged iPod earbuds included a three-button device on the right earbud cord." 20:14:52 <pikhq_> There was nothing intervening. Went from buttons on the device to buttons on the fucking headphones, the right dicks. 20:14:56 <elliott> So lame, it should have a one-button device. 20:15:03 <elliott> One button goes to the next option, sitting for enough time on one option selects it. 20:15:08 <elliott> And a "do nothing" option in each menu. 20:15:18 <elliott> It would be SO USELESS. 20:15:37 <Gregor> Anyway, point being, even when Apple went "lol NO SCREEN", they STILL put hardware volume, because OF COURSE YOU PUT HARDWARE VOLUME CONTROLS. 20:15:39 <pikhq_> It's already pretty dang useless. 20:16:03 <pikhq_> I want to play random music approx. never. 20:16:43 <Gregor> They should make a CloudShuffle that just plays completely random garbage from iTunes via Verizon 3G :P 20:16:47 <elliott> pikhq_: You might not, but 99 percent of iPod user s do. 20:16:49 <Gregor> With no controls (EXCEPT VOLUME) 20:16:50 <elliott> s/user s/users/ 20:17:04 <elliott> Gregor: It should just tune into random radio frequencies. 20:17:09 <elliott> For three minutes at a time. 20:17:15 <Gregor> elliott: Not terrible enough. 20:17:17 <pikhq_> elliott: Yeah, fuck that shit. 20:17:32 <elliott> Gregor: How do you propose to make it more terrible 20:17:39 <Gregor> elliott: CloudShuffle :P 20:17:48 <Gregor> Except, only select songs that are in the, say, 25 most popular on iTunes. 20:18:06 <Gregor> So it's repetitive, horrible, and there's not a damned thing you can do about it. 20:18:10 <elliott> Gregor: Dude, that still plays music (please give your idiotic jokes that "DATS NOT MUSIC" to /dev/null). 20:18:13 <elliott> This would just play static. 20:18:16 <elliott> Different static. Every three minutes. 20:18:20 <Gregor> Ohhhhhhhhhhhhhhhhhhhh 20:18:23 <elliott> The chances of hitting on a real radio are approximately 0 :P 20:18:26 <elliott> s/radio/radio station/ 20:18:29 <Gregor> I thought you implied that it actually seeked :P 20:18:35 <elliott> Fuck no, it just picks a random frequency. 20:18:36 <Gregor> Not just completely random frequencies, but random /stations/ :P 20:18:37 <pikhq_> 25 most popular on itunes.co.jp will make it even more repetitive. 20:18:38 <elliott> And seeks to it. 20:18:57 <elliott> So you go "please stop here, please stop here" when it briefly passes over a real station on the path to Radio Bzzzzzzt. 20:19:11 <Phantom_Hoover> elliott, dude, radio frequencies are wide enough that you'd get real stations often enough. 20:19:24 <elliott> Phantom_Hoover: You're implying that it only picks from frequencies actually used for radio. 20:19:39 <elliott> Here's a list of frequencies that could, theoretically, be used to transfer sounds of some sort: Every frequency. 20:19:54 <quintopia> but gamma is VERY EXPENSIVE 20:19:58 <Phantom_Hoover> elliott, except receiving almost all of those is impossible. 20:20:01 <quintopia> requires atomic power 20:20:13 -!- sllide has joined. 20:20:15 <elliott> Phantom_Hoover: If it picks a station it can't receive, it just kills the user. 20:20:16 <Gregor> Also, bringing a RFShuffle on a plane is illegal :P 20:20:43 <pikhq_> elliott: That would be totally awesome if it picks up ELF band. 20:20:57 <elliott> You might even get some whalesong! 20:21:09 <elliott> quintopia: It comes with its own nuclear power station. 20:21:11 <elliott> Attached to the device 20:21:12 <elliott> . 20:21:23 <elliott> Apple: "The smallest media player, ever." 20:21:30 <elliott> Fuck You Industries: "It's so big. So big. You don't even know. So big." 20:22:07 <pikhq_> The US runs a radio station on 76 Hz. 20:22:30 <Gregor> Idonno, I still feel like the CloudShuffle is the superior device. 20:22:36 <elliott> pikhq_: Wow, what? 20:22:45 <ais523> pikhq_: how long would an antenna need to be to pick that up with any reasonable amount of gain? 20:22:56 <elliott> Gregor: The problem is that it'd actually be not entirely terrible sometimes :P 20:23:02 <elliott> I mean, people, in general, don't mind pop music. 20:23:07 <Gregor> elliott: But that's the draw! 20:23:08 <pikhq_> elliott: It exists to provide one-way transmission to submarines world-wide. 20:23:09 <ais523> in the millilightsecond range, I think 20:23:23 <Gregor> Even with shiny Appleness, the RFShuffle would never sell a single unit :P 20:23:31 <Gregor> People would actually be stupid enough to buy CloudShuffle. 20:23:40 <elliott> Gregor: Well, yeah, I'm telling you to stop being holier-than-thou on IRC and to go sell this thing :P 20:23:59 <Gregor> But ... but I am holier than thou :( 20:24:34 <pikhq_> ais523: I'm not entirely sure how big the receiving antennas are. The broadcasting site is a few square miles, though. 20:24:46 <elliott> Gregor: Actually the "internet streaming-based shuffley device" idea is a really good one. 20:24:56 <elliott> Gregor: Residential connections will be fast enough to act as servers for that soon enough. 20:24:57 <Gregor> Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo D-8 20:25:15 <pikhq_> Russia also has a station on 82 Hz. 20:25:19 <elliott> Gregor: It sure beats syncing a shitload of FLACs to a device that doesn't have nearly enough space to store all of them. 20:25:31 <pikhq_> Aaaah, cold war. 20:26:36 <Vorpal> pikhq_: yes, except didn't they shut them down since then iirc? 20:26:51 <pikhq_> Vorpal: What, and risk losing funding? 20:27:06 <Vorpal> pikhq_: in Russia though? 20:27:22 <pikhq_> Okay, Russia probably did, because the fall of the USSR was pretty... Harsh. 20:27:33 <Vorpal> pikhq_: that is an understatement 20:27:56 <pikhq_> On the other hand, I'd imagine it wouldn't take too much to run once it's already set up. 20:28:12 <pikhq_> Most of your cost is going to be laying out miles and miles of antenna. 20:28:28 <elliott> What's the highest frequency anyone does radio on :P 20:28:39 <Vorpal> pikhq_: given the length of the antenna wouldn't the resistance in the antenna be a rather significant problem? 20:29:11 <Vorpal> and anyway, if it is worldwide the current usage will be huge anyway 20:29:33 <pikhq_> Oh, huh. Technically, they're not using antennas for that. 20:29:40 <Vorpal> pikhq_: oh? 20:29:45 <pikhq_> They're running leads into the earth to use the *planet* as an antenna. 20:29:47 <elliott> Don't they have a facility that uses the Earth itself as an antenna. 20:29:50 <elliott> Ha, snap. 20:29:51 <Vorpal> pikhq_: awesome 20:30:03 <elliott> http://upload.wikimedia.org/wikipedia/commons/3/3d/Clam_Lake_ELF.jpg 20:30:12 <elliott> Lake Elf. 20:30:15 <pikhq_> Yup. 20:30:28 <Vorpal> pikhq_: that is sure going to require a HUGE current to work? 20:30:31 <Vorpal> surely* 20:30:44 <pikhq_> Yeaaah. 20:30:57 <Vorpal> is it safe? 20:31:20 <pikhq_> Well, there's no *known* health risks, at least. 20:31:44 -!- monqy has joined. 20:31:45 <pikhq_> It probably would be, because there is no way a 76 Hz wave is going to ionise. 20:33:27 <pikhq_> elliott: Anyways, seems the highest radio frequency used for data is somewhere around 90 GHz. 20:33:36 <elliott> Pssht, I have CPUs faster than that. 20:33:40 <Vorpal> pikhq_: hm true 20:33:51 <pikhq_> And there's an permitted-unlicensed band at 60 GHz. 20:33:56 <pikhq_> s/an/a/ 20:34:27 <Vorpal> pikhq_: whoa. 90 GHz? Where is that in relation to visible light? 20:34:30 <Vorpal> still way below? 20:34:48 <pikhq_> Vorpal: Visible light starts at 405 THz. 20:34:52 <Vorpal> oh right 20:34:55 <elliott> A radio station that broadcasted on the light spectrum would be THE COOLEST. 20:35:08 <Vorpal> elliott: well there is data communcation using 20:35:11 <Vorpal> using infrared* 20:35:24 <Vorpal> so, technically that is way over 90 GHz 20:35:31 <Vorpal> of course it is not exactly radio 20:35:50 <Vorpal> pikhq_: where does infrared start? 20:36:10 <elliott> Vorpal: Sorry but I cannot see infrared with my eyes. 20:36:22 <Vorpal> pikhq_: oh and: 20:36:24 <Vorpal> The US maintained two sites, in the Chequamegon-Nicolet National Forest, Wisconsin and the Escanaba River State Forest, Michigan (originally named Project Sanguine, then downsized and rechristened Project ELF prior to construction), until they were dismantled, beginning in late September 2004. 20:36:25 <pikhq_> Vorpal: ~1 THz. 20:36:31 <Vorpal> looks like US tore them down 20:36:35 <Vorpal> pikhq_: heh 20:37:05 <Vorpal> pikhq_: infrared is quite large then. What part is normally used for remotes and such? Probably near visible light since normal digital cameras can capture th at 20:37:06 <Vorpal> that* 20:37:39 <Vorpal> elliott: a DVD drive uses visible light to transfer data. A very short distance, sure, but still 20:37:40 <pikhq_> Yeah, that's somewhere in near infrared... 20:37:58 <pikhq_> From ~200 THz to ~400 THz. 20:37:59 <elliott> Vorpal: AND I CAN'T SEE IT 20:38:05 <elliott> I want a radio station where I can GO AND VIEW THE BEAMS 20:38:22 <Vorpal> elliott: I imagine it would be a soft glow over everything 20:38:29 <elliott> Good enough 20:38:35 <Vorpal> anyway it wouldn't work well, because there is too much noise in visible light 20:38:51 <Vorpal> pikhq_: interestingly on digital cameras IR light from remotes tend to look bluish-white 20:38:51 <pikhq_> elliott: That'd be a shitty radio station — most of the point of using radio for modulation is that most things we build with are radio-transparent. 20:39:02 <elliott> pikhq_: I DON'T CARE HOW SHITTY IT IS 20:39:03 <elliott> I WANT IT 20:39:22 <pikhq_> Vorpal: I'd be willing to bet each color sensor is having about equal response to it, then. 20:39:45 <Vorpal> elliott: oh and looking at a broadcast radio antenna would probably blind you. They tend to be around 60 000 W 20:40:08 <elliott> Vorpal: Coooooooooooooooooooooooooooooooooooooooooooooooool 20:40:21 <pikhq_> Vorpal: I don't think that says that much about the lumens. 20:40:22 <elliott> <Vorpal> pikhq_: interestingly on digital cameras IR light from remotes tend to look bluish-white 20:40:26 <elliott> I feel this is an appropriate time to state 20:40:27 <elliott> FUCK 20:40:28 <elliott> TETRACHROMATS 20:40:31 <Vorpal> pikhq_: hm. Or it was just too intense when aimed at the actual lamp. I should check it out reflected against a white wall. Of course, I don't know if the white wall reflects in IR... 20:40:53 <elliott> I need another X chromosome and statistical unlikelihood. 20:40:55 <Phantom_Hoover> elliott, makes sense, given that they're all female. 20:40:56 <Vorpal> elliott: they can't see in IR either 20:40:58 <elliott> ONLY THEN CAN I SEE MORE COLOURS 20:41:14 <pikhq_> Incidentally, the estimated amount of energy the Sun's light striking the Earth imparts is about 174 PW. 20:41:20 <elliott> Vorpal: I DON'T CARE, THEY CAN SEE MORE COLOURS 20:41:22 <elliott> I WANT MORE COLOURS 20:41:36 <Phantom_Hoover> Vorpal, humans can see very slightly in near IR. 20:41:38 <pikhq_> Yes, that is the right unit; petawatts. 20:42:04 <pikhq_> Phantom_Hoover: And humans can see quite well in near UV if you remove their lenses. 20:42:08 <Vorpal> Phantom_Hoover: not enough to see a remote though 20:42:22 <Phantom_Hoover> Vorpal, *very* near IR. 20:42:27 <Vorpal> Phantom_Hoover: right 20:42:44 <Vorpal> pikhq_: heh. 20:43:09 <Vorpal> wait a second, what exactly defines IR? Isn't it basically "wavelengths below what a human can see"? 20:43:21 <pikhq_> It's a very loosely defined term. 20:43:26 <Vorpal> which means humans seeing ANYTHING from IR would be absurd. 20:44:11 <pikhq_> But it seems to mean "Wavelengths below what a human can see that are produced largely by object's heat" 20:44:49 <Vorpal> heh 20:45:04 <pikhq_> Well, if there's a strict max on the wavelength that roughly corresponds to the bottom of human range, then *some* humans could plausibly see it. Presuming that the limits of the visible range are variable. 20:45:07 <Vorpal> yeah seeing in the full IR would be weird. 20:45:26 <Vorpal> so would full UV of course 20:46:07 -!- oerjan has joined. 20:46:28 -!- boily has quit (Quit: WeeChat 0.3.5). 20:47:06 <elliott> hi oerjan 20:47:08 <elliott> hoerjan 20:47:27 <oerjan> helliott 20:47:42 <fizzie> I don't think near infrared (the night vision/TV remote) zone has much to do with heat. 20:48:15 <Vorpal> lower IR certainly does though 20:48:18 <fizzie> Thermal imaging long-wavelength IR, sure. 20:48:32 <oerjan> if it's hot enough, it does :P 20:48:33 <fizzie> The name-share is a bit confusing. 20:48:45 <oerjan> (as does visual light, of course) 20:49:08 <Vorpal> well yeah 20:49:14 <Vorpal> and UV 20:49:51 <Vorpal> oerjan: oh btw, I think the English term is "visible light", not "visual light" 20:49:57 <oerjan> er right 20:50:26 <oerjan> actually the peak wavelength of a blackbody never reaches below somewhere in blue 20:52:04 <oerjan> http://en.wikipedia.org/wiki/File:PlanckianLocus.png 20:54:20 <fizzie> But that's just the peak; I assume the intensity overall (incl. UV) will increase if you keep increasing the temperature. 20:54:33 <oerjan> yeah 20:54:42 <oerjan> http://en.wikipedia.org/wiki/Black_body 20:55:23 <oerjan> "When an object is visually white, it is emitting a substantial fraction as ultraviolet radiation. 20:55:27 <oerjan> " 20:56:30 <ais523> Vorpal: you're right on that 21:00:09 <oerjan> ok well the peak radiation does reach UV, it's the total color which has blue as limit 21:00:16 <oerjan> (visible color) 21:00:28 <elliott> q 21:00:38 <oerjan> uantum 21:00:58 <Vorpal> oerjan: right 21:01:10 <Vorpal> oerjan: but that is only because we can't see UV I assume? 21:01:21 <oerjan> presumably 21:01:31 <Vorpal> <pikhq_> Phantom_Hoover: And humans can see quite well in near UV if you remove their lenses. <-- anyone described what it looked like? 21:01:46 <Vorpal> I don't really want to remove my lens to find out 21:01:52 <ais523> pikhq_: I imagine humans wouldn't be able to focus on anything at all if you removed their lens 21:01:54 <ais523> so it'd just be a blur 21:02:04 <ais523> also, the near UV would be picked up primarily by blue cones 21:02:07 <Vorpal> ais523: yes but what colour I mean 21:02:11 <ais523> so UV would be visible as a shade of blue 21:02:16 <Vorpal> ais523: well yes, but what shade I meant 21:02:29 <Vorpal> would it be bluer than anything they seen before? 21:02:32 <Vorpal> or such 21:02:49 <ais523> my guess is it'd be the purple that you see coming out from UV lights (because their color tends to overlap into the visible range a bit) 21:02:59 <Vorpal> ais523: also you could insert an artificial lens I guess? 21:03:01 <ais523> it wouldn't be bluer, it'd just be less red and less green for its brightness 21:03:27 <Vorpal> ah 21:03:38 <ais523> Vorpal: did you know that a human's black-and-white vision has a wider field-of-view than their color vision? 21:03:56 <ais523> I've done an experiment where a colored object was placed in such a place that I could see it, just not tell what color it was 21:03:57 <Vorpal> well yes 21:04:10 <oerjan> from the planck's law formula, it seems like every frequency's emission is increasing with temperature. 21:04:13 <ais523> and you just think "I don't know what color that is", it doesn't look like anything 21:04:14 <Vorpal> never done the experiment though 21:04:18 <ais523> and if you try to visualise it, it's a sort of grey 21:04:24 <ais523> as that's what you visualise colorless things /as/ 21:04:36 <ais523> or at least, what I visualise them as, and probably most humans 21:04:39 <Vorpal> ais523: oh the other hand you can't see the outline very clearly either 21:04:44 <Vorpal> on* 21:04:46 <ais523> indeed 21:05:11 <Vorpal> ais523: so visualizing it would be a blur, and possibly a headache 21:05:45 <ais523> well, I knew what the object actually was, just not its color 21:05:47 <elliott> <ais523> I've done an experiment where a colored object was placed in such a place that I could see it, just not tell what color it was 21:05:52 <elliott> ais523: where was it placed? 21:05:55 <ais523> as I'd been told, and seen examples of the object in several colors 21:06:00 <ais523> elliott: far to the right of my field of vision 21:06:00 <Vorpal> <ais523> or at least, what I visualise them as, and probably most humans <-- I prefer the checkerboard pattern of transparent found in image editors 21:06:03 <ais523> it was moved in slowly until I could see it 21:06:22 <ais523> Vorpal: but you don't think uncolored objects in real life look like that, surely? 21:06:28 <elliott> ais523: hmm, it's very hard for me to perceive my lack of colour vision there but I suppose that's the point 21:06:31 <Vorpal> ais523: I was joking. 21:06:36 <elliott> you can't exactly tell you have no colour vision in dreams, either 21:06:46 <ais523> elliott: yes, you remember the colors of things in the boundary 21:06:51 <elliott> I think that's kind of wonderful, in that complete colourblindness isn't greyscale, it's just uncoloured 21:06:59 <ais523> and have a reflex action to look at something that moves into it that you can't see the color of and don't know 21:07:05 <elliott> heh 21:07:08 -!- pumpkin has joined. 21:07:09 <Vorpal> elliott: there is no colours in dreams? Huh? I'm pretty sure I seen vividly green grass and red flowers in dreams 21:07:22 <oerjan> ais523: since violet triggers red cones as well, i'd expect UV to do the same ... 21:07:25 <ais523> Vorpal: you don't have color vision during dreams, because your eyes are shut 21:07:34 <elliott> Vorpal: some dreams have colour, some don't 21:07:38 <Vorpal> ais523: well yes, you don't have vision at all 21:07:40 <ais523> oerjan: violet /light/ doesn't, but violet /color/ does 21:07:51 <elliott> I imagine colour turns on with lucidity but don't quote me on that 21:07:52 <ais523> because it involves a mix of red, blue, and purple light 21:08:00 <oerjan> ais523: um yes it does. 21:08:00 <elliott> ais523: hmm, I think I just managed to look leftwards enough to perceive the colourlessness of things there, but I dunno 21:08:04 <elliott> could have just been me fooling myself 21:08:23 <ais523> oerjan: the color response curve of cones is a bell curve, isn't it? 21:08:29 <Vorpal> elliott: probably, anyway if you turned your eyes then no. 21:08:37 <elliott> Vorpal: of course not 21:09:01 -!- copumpkin has quit (Ping timeout: 258 seconds). 21:09:06 <oerjan> ais523: i'm pretty sure it's not. 21:09:06 <ais523> of rods too 21:09:20 <ais523> oerjan: http://en.wikipedia.org/wiki/Cone_%28vision%29 21:09:29 <ais523> why bother having an argument when you can just check Wikipedia? 21:09:59 <olsner> arguments are more fun, obviously 21:10:12 <oerjan> ais523: you just search faster :P 21:10:31 <ais523> oerjan: that's because I went straight to Wikipedia, and guessed the article name and disambiguator 21:10:46 <ais523> it turns out that that isn't the primary disambiguator, but someone had thoughtfully already added a redirect 21:11:12 <fizzie> That thing is not very well modeled with a Gaussian. 21:13:52 <oerjan> but violet _is_ the shortest pure spectral color wavelength. 21:14:19 <oerjan> so why does it look redder than blue? 21:15:51 <fizzie> You could easily imagine the tail of the red curve overtaking the tail of the blue in the short end. 21:15:59 <oerjan> yes, that might be 21:17:08 <fizzie> CIE "standard observer" response functions (used in the XYZ colorspace, and indirectly in Lab) are based on rather bad 1920s approximations of the spectral response of humans; http://en.wikipedia.org/wiki/CIE_1931_color_space#Color_matching_functions 21:20:28 -!- pumpkin has changed nick to copumpkin. 21:21:17 <elliott> What is it with the past harshing our vibe? 21:21:22 <elliott> Deep thoughts. 21:23:46 <oerjan> `log harsh 21:23:52 <HackEgo> 2011-02-10.txt:20:49:55: <oerjan> <elliott> Gregor: disable that <-- now that's a bit harsh, might want to announce the result to the channel anyhow though 21:24:09 <elliott> `log harshing 21:24:13 <HackEgo> 2011-09-21.txt:21:21:17: <elliott> What is it with the past harshing our vibe? 21:24:15 -!- Madoka-Kaname has joined. 21:24:19 <elliott> `log harshing 21:24:23 <HackEgo> 2011-09-21.txt:21:24:19: <elliott> `log harshing 21:24:26 <elliott> `log harshing 21:24:29 <HackEgo> 2011-09-21.txt:21:24:19: <elliott> `log harshing 21:24:31 <elliott> lame 21:24:33 <Gregor> `log harsh.*vibe 21:24:37 <HackEgo> 2011-09-21.txt:21:24:33: <Gregor> `log harsh.*vibe 21:24:40 <Gregor> :P 21:24:47 <Gregor> `pastelogs harsh.*vibe 21:24:52 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9945 21:25:10 <elliott> See, nobody else is as cool as me. 21:25:19 <oerjan> elliott: i have an idea for using `log without it returning `log searches, unfortunately it only works if everyong uses it 21:25:26 <elliott> `logurl 2011-05-21.txt 21:25:27 <Gregor> `pastelogs harsh.*buzz 21:25:28 <HackEgo> http://codu.org/logs/log/_esoteric/2011-05-21 21:25:29 <oerjan> namely, put [] around one of the chars 21:25:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28118 21:25:36 <oerjan> *everyone 21:25:37 <elliott> oerjan: ais523 has a perfect solution to it 21:25:41 <elliott> well, relatively perfect 21:25:46 <elliott> [^]]search term 21:25:52 <Gregor> That's right, only I would mix those metaphors :P 21:25:56 <elliott> oerjan: anyway, I deliberately left them in :) 21:26:01 <Gregor> `pastelogs killjoy 21:26:05 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26726 21:26:20 <elliott> Apparently "harshing my mellow" is vastly more popular than the vibe-based alternative. 21:26:24 <Gregor> Apparently oklopol is the ultimate killjoy. 21:26:25 <elliott> At least according to Google suggestions. 21:27:04 <ais523> elliott: that only works when searching /for/ `log searches 21:27:19 <elliott> ais523: umm, howso? 21:27:28 <elliott> `log [^]]pontificate 21:27:31 <HackEgo> 2010-10-07.txt:22:47:08: <alise> cpressey: PC-BSD; pontificate 21:28:00 <ais523> `log [^]]njanoewhr;awheroiawer 21:28:03 <HackEgo> No output. 21:28:07 <ais523> oh right, I see 21:28:07 <elliott> ais523: Your point? 21:28:14 <ais523> it's ^] not ^` 21:28:15 <ais523> I got confused 21:28:27 <Gregor> `log [^]]quarv 21:28:31 <HackEgo> No output. 21:28:34 <Gregor> Hm 21:28:35 <Gregor> Indeed. 21:28:40 <elliott> `run log "asoijdhdsghsglfg" | grep -v '<elliott> `run log "asoijdhdsghsglfg"' 21:28:43 <HackEgo> No output. 21:29:18 -!- augur has quit (Remote host closed the connection). 21:31:09 <fizzie> The `log [^]]foo will still find the bazillion earlier plain `log foos. 21:32:00 -!- augur has joined. 21:32:19 <elliott> <oerjan> elliott: i have an idea for using `log without it returning `log searches, unfortunately it only works if everyong uses it 21:32:26 <elliott> This one only works if everyong uses it, too. 21:33:00 <elliott> egrep -v '\d\d:\d\d:\d\d: <[^>]*> `log' 21:33:00 <Vorpal> huh, why is gmail marking every single new mail I get as "important" based on words it contain. 21:33:01 <elliott> Tadaaaaaaaaaa 21:33:10 <elliott> egrep -v '\d\d:\d\d:\d\d: <[^>]*> `(log|pastelogs)' 21:33:11 <Vorpal> I wonder if I can turn that off. It is bloody useless 21:33:18 <elliott> Vorpal: I hid the markers. 21:33:33 <Vorpal> elliott: doesn't help wrt using IMAP client for gmail 21:33:36 <Vorpal> which I do 21:34:11 <elliott> It doesn't do it for IMAP, apart from the "important" folder. 21:34:15 <elliott> At least according to a quick search. 21:34:16 <Vorpal> well yeah 21:34:22 <elliott> So just delete that folder. 21:34:28 <elliott> What, you can disable conversation view in Gmail now. 21:34:31 <Vorpal> hm. guess that would work 21:34:42 <Vorpal> elliott: you can? Why would that be useful though? 21:34:51 <elliott> Itw ouldn't. 21:35:02 <elliott> s/tw /t w/ 21:35:27 <Vorpal> actually I can think why it would be useful. Gmail likes to put every mail I get from the automated course web system thingy at university in a single convo 21:35:32 <Vorpal> that is kind of annoying 21:35:50 <Vorpal> but not in general no 21:36:09 <fizzie> "sed 's/Gregor/Gre\xE2\x80\x8Bgor/g'"?-) 21:36:35 <Gregor> *cough cough* 21:36:37 <Vorpal> okay there are other reasons: "Important mainly because of your interaction with messages in the conversation" for example 21:36:39 <Gregor> fizzie: I have no idea to what you refer. 21:36:41 <Gregor> >_> 21:36:42 <Gregor> <_< 21:36:43 <Vorpal> whatever that one really means 21:36:46 <olsner> UTF-8 ... is that Grègor? 21:37:02 <elliott> fizzie: wat 21:37:03 <oerjan> <fizzie> > all $ zipWith (<) [2,6] [3,5] 21:37:04 <fizzie> It has both "Gre" and "gor" in it, so probably not. 21:37:06 <elliott> `help 21:37:06 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 21:37:08 <oerjan> i think you want or 21:37:09 <fizzie> It smells like some sort of a nick-ping avoidance thing. 21:37:16 <elliott> fizzie: Where is that? 21:37:18 <Vorpal> fizzie: where is that from? 21:37:21 <Vorpal> elliott: snap 21:37:21 <oerjan> > or $ zipWith (<) [2,6] [3,5] 21:37:22 <lambdabot> True 21:37:28 <fizzie> elliot, Vorpal: bin/log. 21:37:29 <oerjan> er wait 21:37:32 <oerjan> > and $ zipWith (<) [2,6] [3,5] 21:37:33 <lambdabot> False 21:37:33 <Vorpal> oh 21:37:37 <oerjan> *and 21:37:39 <elliott> oerjan: Does having (fmap f x) behave differently to (x >>= return . f) violate the monad laws? 21:37:43 <elliott> Or applicative laws? 21:37:43 <fizzie> oerjan: CakeCake already said that. 21:37:48 <elliott> fizzie: I'll fix that. 21:37:55 <oerjan> elliott: Monad or Functor 21:37:59 <Gregor> fizzie: I was considering making the same nick-ping avoidance for everyone, but decided only I'm important. 21:38:02 <elliott> oerjan: Eh? 21:38:13 <oerjan> elliott: nothing applicative in there 21:38:29 <Vorpal> Gregor: why not just insert a UTF-8 zero width space? 21:38:40 <Gregor> Vorpal: DUHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 21:38:41 <Vorpal> I don't know any irc client smart enough to nick ping over that 21:38:45 <elliott> `fetch http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/0eea30ea7bb0/bin/log 21:38:46 <HackEgo> 2011-09-21 21:38:46 URL:http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/0eea30ea7bb0/bin/log [185/185] -> "log" [1] 21:38:48 <elliott> `run mv log bin 21:38:49 <HackEgo> No output. 21:38:56 <Vorpal> Gregor: oh is that what you did. I thought olsner said it was Grègor? 21:38:59 <oerjan> elliott: most types have at most one valid fmap candidate, i believe 21:39:13 <Vorpal> elliott: you removed the anti-nick ping? 21:39:14 <Gregor> Vorpal: olsner was wrong :P 21:39:14 <Vorpal> why 21:39:14 <oerjan> elliott: and since x >>= return . f must be one, they must be equal 21:39:29 <elliott> Vorpal: It wasn't an anti-nick ping, it was corrupting certain sections of the log for one specific term. 21:39:33 <Gregor> fizzie: Damn you for letting elliott see that >_< 21:39:37 <Vorpal> elliott: I see 21:39:46 <ais523> Gregor... 21:39:51 <olsner> ah, I missed the e before the \x stuff, it looked like it replaced the e 21:39:52 <Vorpal> elliott: so you are against inserting zero width space? 21:39:52 <elliott> oerjan: Hmm, I guess it doesn't matter actually 21:39:53 <oerjan> elliott: in any case it's a gross violation of the intent 21:39:59 <olsner> the rest was pure guess 21:40:06 <elliott> Vorpal: <elliott> Vorpal: It wasn't an anti-nick ping, it was corrupting certain sections of the log for one specific term. 21:40:07 <fizzie> Gregor: Actually I thought (at first glance) it was converting "Gregor" into something derogatory, and that elliott had added it. :p 21:40:09 <elliott> That is the reason I reverted. 21:40:14 <elliott> fizzie: Good idea 21:40:26 <Vorpal> elliott: so there was a bug in where it inserted that zero width space? 21:40:35 <elliott> Vorpal: <fizzie> "sed 's/Gregor/Gre\xE2\x80\x8Bgor/g'"?-) 21:40:40 <elliott> <elliott> Vorpal: It wasn't an anti-nick ping, it was corrupting certain sections of the log for one specific term. 21:40:42 <Vorpal> elliott: yes, it seems okay 21:40:47 <elliott> I will henceforth continue this conversation entirely with quotes. 21:40:48 <elliott> <elliott> Vorpal: It wasn't an anti-nick ping, it was corrupting certain sections of the log for one specific term. 21:40:50 <Vorpal> elliott: it seems like an anti-nick ping for me 21:40:57 <elliott> Okay. 21:40:59 <Vorpal> elliott: stop being such an arse 21:41:08 <elliott> No. 21:41:19 <Vorpal> seriously, anti nick-ping with zero width space is an awesome idea 21:41:29 <elliott> I'm glad to hear you think that. However that was not an anti nick-ping. 21:41:40 <ais523> ttoille 21:41:49 <Vorpal> elliott: so it would still ping Gregor? Are you suggesting that? 21:42:19 <elliott> Vorpal: I was unaware that freenode had added a feature to their servers where there would always be a user with the nick "Gregor" on #esoteric. 21:42:38 <Vorpal> elliott: ... you are just being stupid now 21:42:51 <Gregor> He's saying that it's an anti-Gregor-ping, not a (general) anti-nick-ping, And wah wah wah :P 21:42:59 <Vorpal> Gregor: oh okay. 21:43:15 <elliott> Gregor: I'm not really saying anything, I'm just trying to get Vorpal to stop talking to me. 21:43:30 <Vorpal> Gregor: can you get a current user list from inside bin/log? 21:43:40 <Vorpal> then you could insert a zero width space in each nick in there 21:43:40 <elliott> Vorpal: Yes. 21:43:46 <Vorpal> elliott: where? 21:43:53 <elliott> `ls /var/irclogs 21:43:55 <HackEgo> ​_ai \ _corewars \ _esoteric \ _esoteric-minecraft \ _glogbot \ _matrixofsolidity \ _plof \ _scapegoat \ index.php \ log \ log.css \ log.js \ raw \ stalker.php 21:44:01 <elliott> `ls /var/irclogs/_esoteric/????-??-??-raw.txt 21:44:03 <HackEgo> ls: cannot access /var/irclogs/_esoteric/????-??-??-raw.txt: No such file or directory 21:44:06 <Vorpal> elliott: so you would have to parse it manually for nicks 21:44:08 <elliott> `ls /var/irclogs/_esoteric/????-??-??.raw.txt 21:44:08 <Vorpal> right 21:44:09 <HackEgo> ls: cannot access /var/irclogs/_esoteric/????-??-??.raw.txt: No such file or directory 21:44:16 <elliott> `ls /var/irclogs/_esoteric 21:44:17 <Vorpal> better solution please 21:44:18 <HackEgo> 2003-01-18-raw.txt \ 2003-01-18.txt \ 2003-01-19-raw.txt \ 2003-01-19.txt \ 2003-01-20-raw.txt \ 2003-01-20.txt \ 2003-01-21-raw.txt \ 2003-01-21.txt \ 2003-01-22-raw.txt \ 2003-01-22.txt \ 2003-01-23-raw.txt \ 2003-01-23.txt \ 2003-01-24-raw.txt \ 2003-01-24.txt \ 2003-01-25-raw.txt \ 2003-01-25.txt \ 2003-01-26-raw.txt 21:44:26 <elliott> Vorpal: What on earth is not better about that? 21:44:31 <elliott> You can package up the "list of current users" into a command. 21:44:44 <elliott> `run cat 2003-01-18-raw.txt | egrep 'NAMES|JOIN|PART|QUIT' 21:44:46 <HackEgo> cat: 2003-01-18-raw.txt: No such file or directory 21:44:47 <Vorpal> elliott: something that doesn't need to parse every single log from the start to get the current user list? 21:44:58 <Vorpal> if every file start with NAMES then fine 21:45:02 <Vorpal> otherwise it is annoying 21:45:02 <Deewiant> `run cat /var/irclogs/_esoteric/2003-01-18-raw.txt | egrep 'NAMES|JOIN|PART|QUIT' 21:45:04 <HackEgo> ​< 1042851425 ? :clog!unknown@unknown.invalid JOIN :#esoteric. \ < 1042851425 ? :clog!nef@bespin.org JOIN #esoteric. \ < 1042851716 ? :hcf!unknown@unknown.invalid QUIT :. \ < 1042852578 ? :deltab!unknown@unknown.invalid QUIT :brunner.freenode.net irc.freenode.net. \ < 1042852625 ? :deltab!~deltab@espians.com JOIN 21:45:05 <Vorpal> especially in shell 21:45:15 <Gregor> Honestly the solution I would probably do is just s/\(<[^>]*\)\(.>\)/\1ZWSHERE\2/g' 21:45:26 <Gregor> But I suspect elliott would zap that too. 21:45:28 <elliott> Gregor: People can ping inside messages. 21:45:29 <Vorpal> Gregor: what? 21:45:38 <Vorpal> Gregor: brain parse error 21:46:04 <Gregor> elliott: Yes, but that's considerably more rare than just the nick talking. I'm just trying to reduce, not eliminate. 21:46:09 <Vorpal> Gregor: it is your bot, you can just override whatever elliott does 21:46:20 <Gregor> It's HackBot. HackBot is anarchy. 21:46:27 <Vorpal> well okay, but you run it 21:46:47 <ais523> Gregor: clearly you should modify HackEgo's output routines, so they can't be tinkered with from inside the bot 21:46:49 <fizzie> HackBot edit-wars: the best. 21:46:55 <oerjan> stubbornocracy 21:47:11 <Vorpal> heh 21:47:18 <elliott> <Vorpal> well okay, but you run it 21:47:27 <Vorpal> elliott: ? 21:47:33 <elliott> In which Vorpal is confronted with the idea that not everyone operates on the Vorpal principles of "repeatedly revert until the other party gets bored". 21:48:02 <oerjan> ais523: i didn't think it was possible to modify HackEgo's output routine 21:48:17 <elliott> oerjan: It is if you have access to the machine it runs on. 21:48:22 <Gregor> oerjan: How do you think I added botloop avoidance? 21:48:23 <ais523> oerjan: from inside the bot, no 21:48:56 <oerjan> elliott: Gregor: the "Learn to read context" course is thataway. 21:49:15 <Gregor> oerjan: Context is for losers. 21:49:19 <elliott> oerjan: <ais523> Gregor: clearly you should modify HackEgo's output routines, so they can't be tinkered with from inside the bot 21:49:25 <Madoka-Kaname> Gregor, go learn Japanese 21:49:27 <elliott> Note "Gregor:". 21:49:39 <Vorpal> oerjan: you is the one failing at context. 21:49:44 <elliott> Vorpal: "Are". 21:49:46 <oerjan> elliott: i was pointing out it is already impossible to tinker 21:49:49 <Gregor> Madoka-Kaname: Gureegoru 21:49:50 <Vorpal> elliott: right 21:49:51 <elliott> The "learn to use the word are" course is thataway. 21:49:54 <Vorpal> who is Madoka-Kaname? 21:50:00 <elliott> oerjan: You are misparsing. 21:50:04 <elliott> Vorpal: Lymia. 21:50:07 <Vorpal> oh okay 21:50:11 <elliott> oerjan: "They" =/= the output routines. 21:50:15 <oerjan> elliott: oh 21:51:03 <Gregor> "They" there was the ping avoidance codezzz. 21:51:08 <oerjan> Vorpal: /whois is your friend 21:51:36 <Vorpal> Important mainly because you often read messages with this label. <-- what? You mean no label at all? Just sitting there in my inbox? 21:51:38 <Vorpal> Right. 21:52:03 <Vorpal> <oerjan> Vorpal: /whois is your friend <-- did that, but "+ [Madoka-Kaname] (~moe@unaffiliated/cirno-chan): Moe Moe Power~ <3" meant nothing to me 21:52:17 <Vorpal> I see no mention of "Lymia" there, nor do I know the normal host of that user. 21:52:41 <Vorpal> okay further down there is logged in as, but due to a bug that line sometimes show up in the server tab in my irc client 21:52:43 <Deewiant> Lymia is cirno-chan 21:52:45 <Vorpal> so I didn't notice it 21:52:47 <oerjan> Vorpal: you don't see a line with account : Lymia ? 21:53:03 <Vorpal> oerjan: as I said just above, it ended up in the wrong tab for unknown reasons 21:53:37 <elliott> Gregor: Anyway, the annoying thing about ping-avoidance is that it makes `log non-idempotent. 21:53:48 <elliott> Well, I suppose it isn't already, since it takes a random line, but the point is that it messes up copying. 21:53:50 <Gregor> *waaaaaaaaaaaaaaaaaaaaaah* 21:54:03 <elliott> Ah, now I'm convinced, I'll add it immediately 21:54:05 <Vorpal> elliott: ddg sometimes make some hilarious mis-suggestions. Try "code indentation" (without quotes) 21:54:07 <Gregor> :P 21:54:11 <fizzie> "Better call the WAAH-bulance." 21:54:20 <Vorpal> It suggested a LaTeX package, nice touch but not quite what I wanted 21:54:51 <elliott> Vorpal: It prioritises user-content sites like StackExchange, I think. 21:54:58 <elliott> It also searches API docs and the like. 21:55:09 <oerjan> !echo !echo hi 21:55:10 <Vorpal> elliott: so very geared towards programmers? 21:55:12 <EgoBot> ​!echo hi 21:55:26 <elliott> Vorpal: Only if it thinks the API docs are relevant. 21:55:31 <Vorpal> right 21:55:32 <elliott> StackExchange is not programmer-only. 21:55:38 <Vorpal> oh? 21:55:40 <Vorpal> didn't know that 21:55:41 <oerjan> <EgoBot> ​!echo hi 21:55:47 <elliott> http://stackexchange.com/sites 21:56:02 <elliott> There's even 21:56:02 <elliott> Jewish Life and Learning beta 21:56:02 <elliott> Q&A for those who base their lives on Jewish law and tradition and anyone interested in learning more 21:56:04 <oerjan> ok putty definitely does not copy zero-length spaces 21:56:12 <elliott> Gardening and Landscaping beta 21:56:12 <elliott> Q&A for gardeners and landscapers 21:56:35 <Vorpal> elliott: are they quite as well frequented as the programming parts though? 21:56:39 * Phantom_Hoover → sleep 21:56:40 -!- Phantom_Hoover has quit (Quit: Leaving). 21:58:33 <elliott> Probably not. 21:58:47 <elliott> They're separate sites and all. 21:58:53 <elliott> StackExchange =/= Stack Overflow. 22:02:26 <Vorpal> oh come on, ddg special cases xkcd 22:04:11 <elliott> Vorpal: Eh? 22:04:26 <Vorpal> elliott: try searching xkcd. It inlines the last comic 22:04:37 <Vorpal> didn't for a few other web comics I tried 22:04:40 <elliott> Vorpal: I bet it does that for anything it thinks is a webcomic. Or maybe any blog. 22:04:58 <elliott> But anyway, good punishment for searching for xkcd. 22:05:01 <Vorpal> elliott: hm https://duckduckgo.com/goodies.html indicates otherwise 22:05:09 <Vorpal> it lists it as a "special query" 22:05:35 -!- sllide has quit (Ping timeout: 260 seconds). 22:07:27 <elliott> Fair enough :P 22:07:54 <elliott> https://duckduckgo.com/?q=(%3E_%3C) -- lol 22:10:03 <ais523> monqy: hey, I didn't know you played Crawl 22:10:12 <ais523> Henzell's learndb has you credited as the author of the "autodie" script 22:10:30 <elliott> I did, that's how I got the squarelos stuff 22:10:39 <monqy> ais523: i dont play crawl 22:10:46 <monqy> i used to though 22:10:50 <ais523> hmm, ah I see 22:10:55 <elliott> crawl is a bad game for bad people 22:11:09 <ais523> and you created autodie to get the same effect as playing by hand, just much faster? 22:12:02 <monqy> if by same effect you mean getting things out of the way, yes 22:12:21 -!- Patashu has joined. 22:12:28 <ais523> no, I meant dying 22:12:30 <monqy> oh 22:12:43 <monqy> it's called autodie because of its suicidal tendencies 22:13:26 <monqy> I was trying to (partially) automate crawl in hope that I could get a bunch of the boring parts out of the way in hope that i could enjoy it. but then i got fed up with scripting crawl (its lua and i dislike lua etc etc etc) 22:14:27 <monqy> so now I'm just giving up on crawl until it gets to a point where I like it (though I'm doubtful this will ever happen) or someone makes a fork I like (doubtful here as well) 22:19:18 <elliott> im auto die 22:21:31 <oerjan> <ais523> that's, umm, bizarre 22:21:52 <ais523> monqy: did you see autorobin? 22:21:56 <monqy> yes 22:22:00 <oerjan> more bizarre is that i joked about it before it happened 22:22:01 <ais523> also, dtsund has made a fork with a similar idea to what you just suggested 22:22:04 <Vorpal> elliott: you were right about feedback to ddg. 22:22:06 <ais523> but it hasn't shortened the game much yet 22:22:09 <monqy> I've heard of that fork as well 22:22:10 * oerjan swats elliott with synchronicity -----### 22:22:18 <Vorpal> elliott: works well. Quick response, something like half an hour or so. 22:23:05 <monqy> despite not playing the game, I do still hang around in ##crawl (and ##crawl-dev but you probably noticed me there) 22:23:18 <elliott> oerjan: :D 22:23:36 <Vorpal> elliott: seems it is used for the colour picker, though he did agree that I had a good point about it seeming a little strange to normal users who did not know the workings of the code. 22:24:37 <elliott> brb 22:24:40 <Vorpal> elliott: I think this issue, or more accurately the quick and informative response, made me like the site more. Would never have gotten that from google XD 22:26:09 <oerjan> `log next-door neighbor 22:26:10 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/log: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/log: cannot execute: Success 22:26:18 <oerjan> wtf 22:26:34 <oerjan> Gregor: WHAT ARE YOU DOING 22:26:46 <monqy> `log next-door neighbour 22:26:48 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/log: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/log: cannot execute: Success 22:26:52 <Gregor> Hm 22:27:19 <oerjan> monqy: i'm pretty sure i don't spell it british. hm or maybe i did, because of the context. 22:27:19 <Gregor> `file bin/log 22:27:21 <HackEgo> bin/log: POSIX shell script text executable 22:27:27 <Gregor> `run ls -l bin/log 22:27:28 <HackEgo> ​-rw-r--r-- 1 5000 0 185 Sep 21 22:27 bin/log 22:27:38 <Gregor> `run chmod 0755 bin/log 22:27:39 <HackEgo> No output. 22:27:40 <elliott> Gregor: lymia 22:27:46 <elliott> bet she used this alt. nick 22:27:50 <elliott> `help 22:27:50 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 22:27:55 <oerjan> `log next-door neighbor 22:28:00 <HackEgo> 2011-09-21.txt:22:26:09: <oerjan> `log next-door neighbor 22:28:02 <elliott> oh 22:28:04 <monqy> elliott: would that be lymee or Madoka-Kaname 22:28:05 <elliott> my fault 22:28:08 <elliott> :D 22:28:21 <monqy> oh 22:28:23 <oerjan> `log next[- ]door neighbou?r 22:28:24 <Gregor> eelliott 22:28:26 <HackEgo> 2011-07-12.txt:19:53:16: <oerjan> by some freak coincidence taneb is elliott's next door neighbor 22:28:31 <elliott> lol 22:28:33 <oerjan> there you go :P 22:30:58 <oerjan> `log live in [Hh]exham 22:31:01 <HackEgo> 2011-01-22.txt:00:58:06: <Phantom_Hoover> elliott, I know you live in Hexham and I know your surname. 22:31:08 <oerjan> `log live in [Hh]exham 22:31:12 <HackEgo> 2011-07-16.txt:21:47:10: <elliott> Taneb: Are you serious do you live in Hexham. 22:31:28 <Gregor> oerjan: It's already case-insensitive 22:31:32 <oerjan> oh. 22:31:33 <Gregor> `log lIvE In HEXam 22:31:36 <Gregor> Erm 22:31:37 <HackEgo> 2011-09-21.txt:22:31:33: <Gregor> `log lIvE In HEXam 22:31:42 <Gregor> It is not spelling-insensitive though :P 22:31:48 <oerjan> shocking! 22:31:53 <Gregor> `log lIvE In HEXhaM 22:31:57 <HackEgo> 2011-09-21.txt:18:45:41: <elliott_> `pastelogs don't tell me you live in hexham 22:38:50 -!- nooga has quit (Ping timeout: 260 seconds). 22:41:42 -!- ais523 has quit (Remote host closed the connection). 22:43:18 <oerjan> <Vorpal> I seen them in Sweden. Not very common here. Been a year or so since I last saw one 22:43:48 <oerjan> i've seen a squirrel outside my window not long ago 22:44:06 <oerjan> may have been this week, or previous one 22:44:39 <Gregor> When europeople come to Purdue, they frequently comment on how many squirrels there are here. 22:44:50 <Gregor> And my response is "... huh? Y'know, we have chipmunks too. And jackrabbits." 22:45:32 <oerjan> um chipmunks are squirrels 22:45:53 <Gregor> oerjan: Yesyes, but in common parlance they're not. 22:46:45 <Gregor> One also doesn't frequently say "Look at that big squirrel!" when talking about a woodchuck. 22:47:10 <oerjan> o kay 22:47:26 <Vorpal> Gregor: one doesn't? 22:47:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:47:54 -!- micahjohnston has joined. 22:48:30 -!- audy has joined. 22:48:52 <oerjan> <elliott> fizzie: Tempred? <-- fizzie tempered his temptations. he's secretly a vulcan, you know. 22:49:23 <Vorpal> Gregor: well okay, one says "oh I guess it is Groundhog Day" 22:49:44 <Vorpal> (sorry, that was a Slash'EM reference) 22:50:22 <Gregor> Vorpal: In the same way that one only refers to humans as animals when specifically making a point about humans being animals. Otherwise the term "non-human animals" is unnecessary and cumbersome. This is the nature of species names in common parlance, they're neither particularly accurate nor particularly (whatever the word is for "including all species derived from a common ancestor") 22:50:59 <oerjan> <Vorpal> Phantom_Hoover: I simply dropped the "have" there somehow 22:51:06 <Vorpal> Gregor: are you sure there is a word for "including all species derived from a common ancestor"? 22:51:24 <Gregor> Vorpal: I'm quite sure that there's the inverse, not sure about that word. 22:51:34 <oerjan> i believe one of the differences between norwegian and swedish is that swedes frequently drop the "have" in perfect forms 22:52:03 <Vorpal> Gregor: what would the inverse be? 22:52:21 <Gregor> Vorpal: ... not including all species derived from a common ancestor ... 22:52:30 <Vorpal> Gregor: well duh 22:52:49 <Gregor> e.g. since birds evolved from dinosaurs but birds aren't commonly referred to as dinosaurs, the name "dinosaur" is <that> 22:52:57 <Vorpal> Gregor: I thought you meant a single word for the inverse... 22:53:07 <Gregor> There is a single word for that. 22:53:26 <Vorpal> oerjan: we do? Never noticed 22:53:49 <Vorpal> I would actually say "Jag har sett" in that case 22:53:50 <oerjan> Gregor: "clade" 22:53:56 <Gregor> oerjan: No. 22:54:49 <oerjan> Gregor: um i was responding to your earlier comment 22:54:52 <Gregor> oerjan: Oh, I thought we were g---right :P 22:55:02 <Gregor> Yeah, clade is right for the original, but it's also a noun :P 22:55:10 <oerjan> so for the later one, "not clade", or paraphyletic iirc 22:55:13 <Gregor> MONOPHYLETIC 22:55:19 <Gregor> Paraphyletic being the inverse. 22:55:22 <Gregor> Thankee 22:55:44 <Gregor> Point is, species names in common parlance are neither particularly accurate nor particularly monophyletic. 22:57:09 <oerjan> Vorpal: "När jag varit i Norge ..." or so, i think it maybe for subordinate clauses only 22:57:17 <Gregor> And that, my friends, is why chipmunks are not squirrels :P 22:57:22 <oerjan> *may be 22:57:32 <Vorpal> oerjan: hm. That works, if somewhat informal 22:57:47 <elliott> Gregor: Your MOM is a squirrel. 22:57:56 <elliott> In comm onparlance. 22:57:58 <elliott> In common parlance. 22:58:10 <elliott> "The industry standard for image resizing 22:58:10 <elliott> Enlarge images up to 1000% without sacrificing quality" -- uh huh 22:59:05 <Gregor> elliott: It's trivial to /enlarge/ images arbitrarily without sacrificing quality. 22:59:17 <Gregor> Hell, with no interpolation at all you're not sacrificing quality. 22:59:27 <elliott> Gregor: In common parlance... 22:59:34 <Gregor> *ba-dum* :P 23:09:36 <elliott> Gregor: We're still waiting for the *tsh*. 23:09:49 <Gregor> THERE SHALL BE NO TSH 23:10:09 <elliott> LET THERE BE TSH 23:10:33 <Gregor> THERE SHALL NEVER BE 23:10:49 <Gregor> (LET THEM EAT TSH) 23:14:12 -!- elliott has set topic: god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/. 23:14:17 <elliott> topic was a bit long 23:14:20 <elliott> and it's after 3.10.2011 23:14:22 <elliott> by a long time 23:15:02 <Gregor> Uhhhh ... no? 23:15:19 <elliott> oh 23:15:21 <elliott> hmm 23:15:23 <elliott> weird 23:15:26 <elliott> what is it with time 23:15:32 <Gregor> Did ... did you just interpret that as a US date? 23:15:37 <elliott> no i just 23:15:42 <elliott> didn't realise that this wa sthe 9th month 23:15:45 <elliott> `pastelogs Hel/Finland 23:15:49 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20061 23:15:51 -!- calamari has joined. 23:16:02 -!- elliott has set topic: Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/. 23:16:05 -!- calamari has left. 23:16:05 <elliott> there we go 23:16:06 <Gregor> Let them eat squid! 23:16:09 <elliott> rip calamari 23:16:25 <elliott> monqy: rip 23:17:11 <monqy> hi 23:17:15 <elliott> hirp 23:18:16 -!- calamari has joined. 23:31:06 <elliott> ?pl do foo <- st; return (foo >>= f) 23:31:06 <lambdabot> (line 1, column 13): 23:31:07 <lambdabot> unexpected ";" 23:31:07 <lambdabot> expecting letter or digit, variable, "(", "`", "!!", ".", operator or end of input 23:31:10 <elliott> ?undo do foo <- st; return (foo >>= f) 23:31:10 <lambdabot> st >>= \ foo -> return (foo >>= f) 23:31:13 <elliott> ?. pl undo do foo <- st; return (foo >>= f) 23:31:13 <lambdabot> (f =<<) `fmap` st 23:31:19 <elliott> oerjan: I blame you 23:31:59 -!- copumpkin has joined. 23:36:37 -!- FireFly has quit (Quit: FireFly). 23:38:06 <oerjan> wat 23:38:14 <elliott> oerjan: you didn't make a nice operator for that 23:38:44 <oerjan> most of the weird operators were after my time, anyhow. 23:38:53 <elliott> oerjan: "weird" :P 23:38:54 <oerjan> there aren't really that many in the haskell report. 23:39:04 <oerjan> *h98 23:39:39 <elliott> oerjan: ooh, I wonder if your haskell style can be traced to a defined lineage, since it was probably before haskell's internet explosion in popularity when they all mixed together apart from Utrecht 23:39:43 <elliott> EXCITING??? 23:40:14 <oerjan> elliott: it's a rather weird thing to want anyhow, since you are using return on a monadic action 23:40:33 <elliott> yeah turns out I didn't want it :) 23:40:38 <oerjan> in fact, i don't think there's any reason why they need to be the same monad 23:40:57 <oerjan> :t do foo <- ?st; return (foo >>= ?f) 23:40:58 <lambdabot> forall (m :: * -> *) (m1 :: * -> *) a b. (?st::m (m1 a), Monad m, ?f::a -> m1 b, Monad m1) => m (m1 b) 23:41:55 <oerjan> of course it's not _that_ weird, you could easily use a parser monad to build some other monad's actions 23:43:04 <oerjan> i'm sure my haskell style has changed somewhat. 23:43:27 <elliott> oerjan: actually no it seems I do need it... but anyway 23:43:37 <elliott> and probably, but still :P 23:43:50 <elliott> I don't suppose you recall reading one gigantic codebase and nothing else when learning Haskell, that would be convenient to trace it 23:43:51 <elliott> :P 23:44:36 <oerjan> look at http://oerjan.nvg.org/esoteric/Unlambda.hs it is one of the first haskell programs i wrote 23:45:02 <elliott> hmm, I wonder if 2001 is after when the styles started melding together 23:45:10 <oerjan> heh i just intended by 2 there 23:45:19 <elliott> I do that :P 23:45:21 <elliott> I like how you import everything qualified 23:45:22 <oerjan> now i have this weird 4 with intermediate 2 thing 23:45:35 <elliott> '.' -> do c <- IO.hGetChar h; return (Dot c) 23:45:39 <elliott> I like the part where you didn't know what fmap was 23:45:45 <oerjan> heh :P 23:45:45 <elliott> or liftM I guess 23:46:03 <oerjan> yes, lots of things i would change today 23:46:05 <elliott> I also like how you abused Show :( 23:46:09 <elliott> (like here means don't like) 23:46:20 <elliott> (Computation cp1) >>= f = Computation cp where 23:46:20 <elliott> cp dat1 cont2 = cp1 dat1 cont1 where 23:46:20 <elliott> cont1 dat2 a = cp2 dat2 cont2 where 23:46:20 <elliott> (Computation cp2) = f a 23:46:25 <elliott> whaoh what is happening 23:46:42 <oerjan> i probably didn't know Show was not meant for displaying stuff, you know :P 23:46:46 <elliott> well this is certainly unique code :P 23:47:02 <oerjan> how so? 23:47:14 <elliott> callCC f = Computation cp where 23:47:15 <elliott> cp dat cont = cp2 dat cont where 23:47:15 <elliott> (Computation cp2) = f cont 23:47:19 <elliott> oerjan: well I don't exactly see nested where that often :P 23:47:23 <elliott> unless you need it because of scoping 23:47:25 <elliott> but you don't here at all 23:47:44 <elliott> lol at ExpressionSource 23:47:46 <elliott> newtype Filename = FN String 23:47:48 <oerjan> um yes i doo 23:47:49 <oerjan> *do 23:47:54 <elliott> did they not have FilePath back then? 23:47:56 <elliott> oerjan: oh hm 23:48:05 <elliott> <elliott> (Computation cp1) >>= f = Computation cp where 23:48:05 <elliott> <elliott> cp dat1 cont2 = cp1 dat1 cont1 where 23:48:05 <elliott> <elliott> cont1 dat2 a = cp2 dat2 cont2 where 23:48:05 <elliott> <elliott> (Computation cp2) = f a 23:48:07 <elliott> not there 23:48:14 <elliott> at least not the last one 23:48:57 <oerjan> elliott: seems i didn't know about field names :P 23:49:10 <elliott> Chunk x st >>= f = f x `mappend` Fuck (liftM (>>= f) st) 23:49:10 <elliott> my solution may be suboptimal 23:49:49 -!- Jafet has quit (Quit: Leaving.). 23:51:02 <elliott> oerjan: incidentally couldn't Set be made a monad if (Ord a) => were added to all its constructors 23:51:03 <oerjan> elliott: (Computation cp2) = f a uses the a parameter of the surrounding function, so the last where is definitely needed 23:51:07 <elliott> oh you can't do retur 23:51:08 <elliott> n 23:51:27 <elliott> oerjan: oh darn it does too 23:51:30 <elliott> I lost track of the a 23:53:33 <oerjan> <elliott> did they not have FilePath back then? <-- i think this is pretty much pure haskell 98 libraries 23:54:04 <elliott> :t openFile 23:54:05 <lambdabot> Not in scope: `openFile' 23:54:08 <elliott> ?hoogle openFile 23:54:09 <lambdabot> System.IO openFile :: FilePath -> IOMode -> IO Handle 23:54:10 <elliott> oerjan: so is FilePath 23:54:15 <elliott> it's a synonym for String 23:54:21 <elliott> you'd still need the newtype admittedly 23:54:22 <oerjan> ah yes. 23:58:33 <oerjan> as for abusing Show, i sometimes defined newtype RawString = Raw String; instance Show RawString where show (Raw s) = s 23:58:53 <elliott> > var "indeed." 23:58:54 <lambdabot> indeed. 23:59:49 <oerjan> and i think i have somewhere a [[a]] instance which displays a matrix/table 23:59:59 <elliott> oerjan: :'( 2011-09-22: 00:00:00 <elliott> that's 00:00:02 <elliott> overlappung 00:00:08 <oerjan> um 00:00:09 <elliott> overlapungent 00:00:15 <oerjan> *a wrapped [[a]] instance 00:00:26 <elliott> dude 00:00:26 <elliott> overlapungent 00:02:25 <elliott> oerjan: what do you know about extensible exceptions :P 00:02:27 <elliott> i.e. Control.Exception 00:02:45 <oerjan> well what i've read from the module documentation 00:03:15 <elliott> if I do (catch m (\(x::SomeException) -> ...)), will that catch all exceptions? 00:03:18 <elliott> or is that unsufficient 00:03:22 <oerjan> yes 00:03:24 <elliott> s/unsufficient/insufficient/ 00:03:25 <elliott> thanks 00:03:30 <oerjan> you just define an instance for your type, and unless you want to simulate the subtyping stuff, all methods are defaults 00:03:47 <elliott> :t fmap return 00:03:48 <lambdabot> forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f a -> f (m a) 00:04:13 <oerjan> and everything is a subtype of SomeException, because the main method is defined in terms of that. 00:04:28 <elliott> right 00:08:26 <micahjohnston> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- 00:08:27 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available 00:08:31 <EgoBot> ​@so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- 00:08:44 <elliott> Couldn't match expected type `Stream m0 (Stream (Iter m0 i0) o0)' 00:08:44 <elliott> with actual type `Iter (Iter m0 i0) i1 o0' 00:08:44 <elliott> augh 00:08:55 <elliott> micahjohnston: Dude, I botlooped lambdabot and EgoBot ages ago. 00:08:59 <elliott> Don't do it again, it'll just be annoying. 00:09:01 <micahjohnston> ok 00:09:02 <micahjohnston> D: 00:09:02 <elliott> `pastelogs not available 00:09:06 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.14303 00:09:12 <elliott> EgoBot prevents it anyway. 00:09:21 <micahjohnston> once I had another bot in the middle 00:09:27 <micahjohnston> I can't find that one though 00:09:32 <elliott> 2011-02-01.txt:16:25:33: <elliott> 11.01.20:12:51:53 <lambdabot> !c char *s="?so !c char *s=%c%s%c; printf(s,34,s,34);//"; printf(s,34,s,34);// not available 00:09:46 <elliott> micahjohnston: EgoBot puts a zero-width space before the @, so... 00:09:50 <micahjohnston> oh 00:10:25 <micahjohnston> @so @so test 00:10:25 <lambdabot> @so test not available 00:10:28 <micahjohnston> oh 00:10:45 <micahjohnston> @so test 00:10:46 <lambdabot> test not available 00:10:59 <oerjan> huh so it special cases @ 00:11:02 <oerjan> @so ?so test 00:11:03 <lambdabot> ?so test not available 00:11:08 <oerjan> but not ? 00:11:44 <oerjan> in any case, no bot sees its own messages unless specifically designed to do so 00:13:20 <oerjan> micahjohnston: also bot loops are a fine tradition, don't feel bad. it's just that all the bots present here have countermeasures. 00:13:45 <oerjan> (which is also a fine tradition, once the bot loops have been done.) 00:15:05 <elliott> no it's not, botloop prevention is a recent invention 00:15:06 <elliott> (rhymes) 00:20:42 <micahjohnston> oerjan: ok, heh 00:26:20 -!- calamari has quit (Quit: Leaving). 00:48:41 <elliott> oerjan: what's infixr four 00:49:04 <oerjan> > (0$0 *>) 00:49:05 <lambdabot> The operator `Control.Applicative.*>' [infixl 4] of a section 00:49:05 <lambdabot> must hav... 00:49:10 <oerjan> hm not that one 00:49:39 <oerjan> i recall most of the Applicative stuff is 4 00:49:55 <oerjan> > (0$0 <*) 00:49:57 <lambdabot> The operator `Control.Applicative.<*' [infixl 4] of a section 00:49:57 <lambdabot> must hav... 00:50:06 <oerjan> hmph 00:50:13 <oerjan> > (0$0 <) 00:50:14 <lambdabot> The operator `GHC.Classes.<' [infix 4] of a section 00:50:14 <lambdabot> must have lower pr... 00:50:55 <oerjan> but what would be an Applicative operator which nests most usefully rightwards... 00:51:06 <oerjan> > (0$0 <|>) 00:51:07 <lambdabot> The operator `Control.Applicative.<|>' [infixl 3] of a section 00:51:07 <lambdabot> must ha... 00:51:47 <oerjan> > (0$0 <**>) 00:51:48 <lambdabot> The operator `Control.Applicative.<**>' [infixl 4] of a section 00:51:49 <lambdabot> must h... 00:51:54 <oerjan> not even that one 00:52:16 <oerjan> :t (<**>) 00:52:17 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f (a -> b) -> f b 00:52:35 <oerjan> and it's the one which actually is mirrored in a sense 00:53:37 <oerjan> but then, i suspect the fixities for those are not very well thought out - things starting with < having the same fixity level as <, that's like ocaml not haskell 00:54:01 <oerjan> i mean, they did not even give *> the same fixity as >> 00:54:14 <elliott> < having the same fixity as < 00:54:17 <elliott> who'da thunk it 00:54:29 <oerjan> elliott: reading comprehension, elliott 00:54:51 <elliott> oh 00:54:53 <oerjan> it's the "starting with" part. ocaml actually _enforces_ that. 00:55:02 <elliott> haha, really? 00:55:05 <monqy> what 00:55:06 <elliott> like... 00:55:10 <elliott> </ must have the same fixity as <? 00:55:13 <elliott> that's 00:55:14 <elliott> so weird 00:55:23 <oerjan> yes, operator precedence in ocaml is determined by first character 00:55:29 <elliott> so 00:55:30 <elliott> weird 00:55:33 <monqy> ocaml... 00:56:01 <oerjan> otoh it means you can actually remember the precedences :P 00:56:29 <elliott> oerjan: i think im breaking monoid laws by mistake oops :( 00:56:41 <monqy> what did you do :( 00:56:44 <elliott> or 00:56:46 <elliott> not monoid laws 00:56:46 <elliott> monad laws 00:56:50 <elliott> monoid laws are hard to break :P 00:56:59 <oerjan> well not _that_ hard :P 00:57:20 <monqy> hard to break accidentally? 00:57:30 <oerjan> maybe. 00:58:21 <elliott> has anyone ever dead 00:58:23 <oerjan> anyway, i don't seem to recall anything with infixr 4. maybe i should actually look somewhere :P 00:58:31 <elliott> can hayoo search by fixity :D 00:59:07 <oerjan> why do you want an infixr 4 operator anyway :P 00:59:16 <elliott> to know if i should make this operator that :D 00:59:41 <oerjan> hm haddock doesn't give fixities 01:00:27 <oerjan> ok Control.Applicative only has infixl 3 and 4 01:00:34 <monqy> ++ is infixr 5. that's pretty close. 01:00:48 <elliott> lol 01:01:06 -!- augur has quit (Remote host closed the connection). 01:01:14 <oerjan> yes 5 is very infixr 01:01:49 <oerjan> i think some things would have fit better together if they'd made each fixity level a unique associativity 01:02:00 <elliott> `addquote <oerjan> yes 5 is very infixr 01:02:01 <monqy> <+> is infixr 5, *** and &&& are infixr 3 01:02:01 <HackEgo> 677) <oerjan> yes 5 is very infixr 01:02:12 <monqy> but where is the infixr 4 01:03:23 <oerjan> the report has only infix 4, since they're all testing operators 01:03:59 <oerjan> the only thing that could make more sense would be python's chaining 01:04:59 <oerjan> ok that's Prelude only. 01:05:02 <oerjan> http://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-820061 01:05:18 <oerjan> in fact the only variation within a level is between !! and . 01:05:37 <oerjan> (!!'s fixity is also the default one without a declaration) 01:06:04 <oerjan> but then it leaves out =<< 01:06:13 <monqy> =<< is infixr 1 i think 01:06:55 <oerjan> yes, it's the main operator i recall which usefully has the opposite associativity but still the same level 01:07:03 <oerjan> (as >>=) 01:07:24 <oerjan> > (0$0 <$>) 01:07:25 <lambdabot> The operator `Data.Functor.<$>' [infixl 4] of a section 01:07:25 <lambdabot> must have lowe... 01:07:51 <oerjan> hm... 01:07:55 <oerjan> > (0$0 >=>) 01:07:56 <lambdabot> The operator `Control.Monad.>=>' [infixr 1] of a section 01:07:57 <lambdabot> must have low... 01:08:01 <oerjan> > (0$0 >>>) 01:08:02 <lambdabot> The operator `Control.Category.>>>' [infixr 1] of a section 01:08:02 <lambdabot> must have ... 01:08:51 <oerjan> elliott: the thing is, it does not really make sense to define new non-testing operators as level 4, and i consider the Applicatives there a mistake. 01:09:15 <oerjan> they should have been lower, similarly to the monadic ones 01:09:30 <elliott> oerjan: fair enough, I'm trying to give a fixity to a piping operator 01:09:41 <oerjan> elliott: well >>> and >=> are 1 01:09:47 <oerjan> as is >>= 01:09:58 <oerjan> and those are all piping operators in a sense 01:10:21 <oerjan> > (0$0 <<<) 01:10:22 <lambdabot> The operator `Control.Category.<<<' [infixr 1] of a section 01:10:22 <lambdabot> must have ... 01:10:59 <elliott> oerjan: it's also similar to (.) in a sense though 01:11:27 <oerjan> ok but . is special it's almost syntax 01:11:32 <oerjan> like $ 01:13:59 <monqy> hey i found an infixr 4 operator 01:14:15 <monqy> crazy 01:14:19 <monqy> it must feel so lonley 01:15:01 <oerjan> elliott: in any case, every "piping" operator i can find in Control.Arrow, Control.Category or Control.Monad is level 1, mostly infixr 01:15:12 <elliott> monqy: what operator 01:15:17 <elliott> oerjan: right 01:15:42 <monqy> .| in iterio....its even called a pipe operator...but you probably already knew all of this...it may even be the reason why you want infixr 4.... 01:16:43 <oerjan> oh right elliott was using that package, i saw in the logs 01:18:59 -!- CakeProphet has joined. 01:19:44 <oerjan> there should be some guidelines for fixities (rule 1: never use infixl or infix 0) 01:20:18 <monqy> parsec's <?> uses infix 0 i think 01:20:24 <oerjan> (unless cale gets his will, in which case s/infixl/infixr/ 01:20:38 <oerjan> monqy: infixl 0 iirc, and it is annoying 01:21:00 <oerjan> if it had been infixr 0 with opposite argument order, it could have been chained with $ easily 01:21:42 <oerjan> > (0$0 <?>) 01:21:43 <lambdabot> Not in scope: `<?>' 01:21:47 <oerjan> oh well 01:22:28 <oerjan> !haskell main = (0$0 Text.ParserCombinators.Parsec.<?>) 01:22:34 <oerjan> oops 01:22:46 <oerjan> oh it worked 01:22:48 <oerjan> infixl 9 01:22:55 <monqy> huh 01:22:58 <monqy> what parsec version is that 01:23:15 <oerjan> parsec 2? 01:23:55 <monqy> in latest on hackage (parsec 3.1.1): 01:23:56 <monqy> infix 0 <?> 01:23:56 <monqy> infixr 1 <|> 01:24:00 <oerjan> ok 01:24:14 <monqy> weird how it has its own <|> too 01:24:17 <oerjan> well i guess it's not really _worse_ afa $ is concerned 01:24:33 <elliott> monqy: it predates Alternative I think 01:24:35 <oerjan> monqy: yeah prior to Alternative 01:24:52 <monqy> i thought early parsec predated alternatve but new parsec didnt?? 01:25:11 <oerjan> except it's weird they didn't remove it when they added alternative to the instances for it... 01:25:20 <oerjan> or did they just add applicative? 01:25:29 <elliott> dunno, maybe stuff depends on it being exported 01:25:38 <elliott> and monomorphism restriction means it can't be the Alternative version 01:25:42 <elliott> because that would break backwards-compat 01:25:42 <monqy> (ParsecT s u m) has an Alternative instance 01:25:47 <oerjan> perhaps. 01:25:56 <monqy> oh 01:26:20 <monqy> fixity changes too 01:26:21 <oerjan> wait what 01:26:29 <monqy> the real <|> being infixl 3 or something like that 01:26:38 <oerjan> monqy: i realized my test must have been wrong 01:26:56 <monqy> because of old parsec or what 01:27:10 <oerjan> !haskell import Text.ParserCombinators.Parsec; main = (0$0 <?>) 01:27:10 <monqy> oh it's looking in .ParserCombinators. yeah it's old 01:27:20 <monqy> now it's just Text.Parsec isn't it 01:27:58 <oerjan> monqy: no, because it didn't get to import the operator, and so assumed for the rest of the parsing that it was infixl 9 01:28:10 <monqy> oh 01:28:23 <oerjan> !haskell main = print "test" 01:28:28 <EgoBot> ​"test" 01:28:53 <monqy> !show haskell 01:28:53 <EgoBot> That is not a user interpreter! 01:28:58 <oerjan> hm something went wrong there, i got a nonsensical error message 01:29:00 <oerjan> !haskell import Text.ParserCombinators.Parsec; main = (0$0 <?>) 01:29:11 <oerjan> ah finally 01:29:28 <oerjan> it was infix 0 01:29:56 <monqy> 18:30:44 -!- Irssi: Starting query in freenode with =EgoBot 01:29:57 <monqy> 18:30:44 <EgoBot> lol 01:29:57 <monqy> 18:30:44 -!- Irssi: Closing query with =EgoBot 01:30:05 <oerjan> sometimes in a blue moon EgoBot sends responses to the wrong place 01:30:06 <monqy> is this your fault 01:30:09 <elliott> monqy: waht 01:30:33 <monqy> that was after 01:30:34 <monqy> 18:30:21 -!- Irssi: Starting query in freenode with egobot 01:30:34 <monqy> 18:30:33 <monqy> !haskell :i ++ 01:30:34 <monqy> 18:30:36 <EgoBot> ​(++) :: [a] -> [a] -> [a] .-- Defined in GHC.Base 01:30:47 <oerjan> monqy: you may have hit the same bug 01:31:05 <monqy> the lol was dcc chat 01:31:22 <oerjan> i got an error message which was obviously for someone else, while you got some ordinary response i think 01:31:48 <oerjan> but neither of them were supposed to be for any of us 01:31:49 <monqy> what's ordinary about lol and why would egobot ever send it 01:31:53 <monqy> hehehe 01:32:03 <oerjan> monqy: if someone tried a command !echo lol, say 01:32:11 <monqy> ah 01:32:20 <monqy> now I'm wondering how this could have happened 01:32:36 <oerjan> maybe it's just too many people experimenting with EgoBot simultaneously 01:33:06 <oerjan> or too much load, istr it happens more often if you give it something with a lot of output or the like 01:33:53 <oerjan> i assume EgoBot is doing responses in parallel, but its code to match responses to questioners has some race condition 01:34:07 <oerjan> is my guess. 01:34:09 <oerjan> Gregor: ^ 01:34:53 <oerjan> or perhaps things get saved away wrongly and get sent later 01:35:31 <monqy> I gave egobot another request (!haskell :i Text.Parsec.<?>) and am not getting a response :'( 01:35:52 <monqy> I wonder who's getting it 01:37:25 <oerjan> huh 01:37:34 <oerjan> !haskell :i Text.Parsec.<?> 01:37:54 <oerjan> no response there either 01:37:56 <oerjan> !echo hi 01:37:56 <EgoBot> hi 01:38:00 <monqy> !haskell :i ++ 01:38:03 <EgoBot> ​(++) :: [a] -> [a] -> [a] .-- Defined in GHC.Base 01:38:14 <oerjan> monqy: perhaps :i just fails silently 01:38:29 <monqy> 18:39:23 <EgoBot> infixr 5 ++ 01:38:30 <monqy> 18:39:23 <EgoBot> 01:38:32 <monqy> thanks egobot 01:38:41 <oerjan> !haskell :i Text.ParserCombinators.Parsec.<?> 01:38:43 <EgoBot> ​(Text.ParserCombinators.Parsec.Prim.<?>) :: 01:38:52 <monqy> oh right it's old parsec not new parsec 01:38:55 <oerjan> yeah 01:39:06 <oerjan> got the rest in DCC 01:39:13 <monqy> blank line and all? 01:39:29 <oerjan> um i closed the window again 01:39:32 <monqy> I wonder who got the infixr/blankline from my first ++ request when I got lol 01:39:48 <oerjan> afaict it was the rest of my own response 01:43:08 -!- augur has joined. 01:55:24 <elliott> monqy: probably a ghost :')] 01:55:25 <elliott> monqy: probably a ghost :') 02:04:42 <elliott> https://github.com/ghc/ghc/commit/3db757241ce7fb99c096c30481aefa86bb9855a1 02:04:46 <elliott> how not to do commits 02:05:12 <elliott> Deewiant: You may enjoy the above 02:09:45 -!- Jafet has joined. 02:14:09 -!- MDude has changed nick to MSleep. 02:16:50 -!- augur has quit (Remote host closed the connection). 02:25:17 -!- pikhq_ has quit (Ping timeout: 258 seconds). 02:26:39 -!- augur has joined. 02:30:01 <elliott> oerjan: rank n types :( 02:30:22 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaa 02:30:34 <oerjan> just setting the mood here 02:30:38 -!- augur has quit (Read error: Connection reset by peer). 02:31:04 -!- augur has joined. 02:31:38 <oerjan> :t runST . forever 02:31:39 <lambdabot> Couldn't match expected type `forall s. ST s a' 02:31:39 <lambdabot> against inferred type `m b' 02:31:39 <lambdabot> Expected type: m a1 -> forall s. ST s a 02:31:49 <oerjan> *MWAHAHAHACKACKACK* 02:32:39 <monqy> what did you do :( 02:32:44 <oerjan> :t (.) runST 02:32:45 <lambdabot> forall a (f :: * -> *). (Functor f) => f (forall s. ST s a) -> f a 02:33:16 <monqy> caleskell 02:33:21 <oerjan> monqy: merely demonstrating the evil of rank n types 02:33:27 <oerjan> monqy: ok that's accidental 02:34:23 -!- augur_ has joined. 02:34:39 <oerjan> :t runST . (forever :: forall s. ST s a -> forall s. ST s b) 02:34:40 <lambdabot> Not in scope: type variable `a' 02:34:40 <lambdabot> Not in scope: type variable `b' 02:34:46 <elliott> oerjan: it upsets me a lot that rank-two types prevent point-free :'( 02:34:48 <oerjan> oops 02:35:05 <oerjan> elliott: yeah 02:35:10 <elliott> oerjan: it makes me... 02:35:11 <elliott> sad 02:35:28 <oerjan> :t runST . (forever :: forall s. ST s Int -> forall s. ST s Float) 02:35:29 <lambdabot> Couldn't match expected type `s1' against inferred type `s' 02:35:29 <lambdabot> `s1' is a rigid type variable bound by 02:35:29 <lambdabot> the polymorphic type `forall s1. ST s1 Float' at <interactive>:1:9 02:35:42 <elliott> :'( 02:35:45 <oerjan> sad stuff 02:36:15 -!- CakeProphet has quit (Ping timeout: 260 seconds). 02:36:46 -!- augur has quit (Ping timeout: 260 seconds). 02:38:11 <oerjan> :t (forever :: forall s. ST s Int -> forall s. ST s Float) 02:38:12 <lambdabot> Couldn't match expected type `s1' against inferred type `s' 02:38:12 <lambdabot> `s1' is a rigid type variable bound by 02:38:12 <lambdabot> the polymorphic type `forall s1. ST s1 Float' at <interactive>:1:1 02:39:45 <oerjan> :t let forever :: forall s. ST s a -> forall s. ST s b; forever x = x >> forever x in runST . forever 02:39:46 <lambdabot> Not in scope: type variable `a' 02:39:46 <lambdabot> Not in scope: type variable `b' 02:40:01 <oerjan> oh hm 02:40:09 <oerjan> :t let forever :: forall a b. forall s. ST s a -> forall s. ST s b; forever x = x >> forever x in runST . forever 02:40:10 <lambdabot> Couldn't match expected type `s1' against inferred type `s' 02:40:10 <lambdabot> `s1' is a rigid type variable bound by 02:40:10 <lambdabot> the type signature for `forever' at <interactive>:1:54 02:40:39 -!- pikhq has joined. 02:40:42 <oerjan> :t let forever :: forall a b. (forall s. ST s a) -> (forall s. ST s b); forever x = x >> forever x in runST . forever 02:40:43 <lambdabot> forall a a1. (forall s. ST s a1) -> a 02:40:47 <oerjan> YES 02:43:14 <oerjan> a bit of a shallow victory 02:46:31 <Gregor> OMG you guys 02:46:34 <Gregor> Liver paste is SO GOOD 02:46:35 <Gregor> SO 02:46:36 <Gregor> DAMNED 02:46:37 <Gregor> GOOD 02:46:49 <monqy> liver 02:46:49 <monqy> paste 02:46:53 <monqy> also hi 02:46:55 <Gregor> I will be the only person in history to make himself fat off liver paste. 02:46:59 <pikhq> The fuck. I seem to have spontaneously developed the ability to sing in falsetto without sounding like I'm going to murder eardrums. 02:47:16 <pikhq> (note: probably not any good. Just not a crime against humanity now.) 02:48:07 <pikhq> So, now I can sing above middle C. Whoo. 02:48:59 <pikhq> And probably kill people doing it. 02:49:04 <pikhq> Rather than definitely. 02:49:47 <oerjan> Gregor: NO WAI, ULL BE SECOND 02:50:16 <oerjan> food -> 02:51:09 <Gregor> I can sing /below/ middle C! :P 02:51:49 <pikhq> My normal singing range roughly corresponds to the bass clef. 02:54:46 <Gregor> Juries have to be uninterested third parties. So, if a person using Future Technology™ beams a live image of themselves brutally murdering someone into the minds of every living human being, then they cannot be convicted. 02:55:31 <pikhq> Keep in mind that we have the GOP here. 02:55:56 <pikhq> That person would probably just be classified as an enemy combatant and find themselves in Miniluv. 02:56:38 <Gregor> Can they be classified as an enemy combatant if they're a US citizen? I suppose so *shrugs* 02:56:43 <pikhq> Yes. 02:56:56 <pikhq> The President can also order a direct assassination of you. 02:56:59 * oerjan haz liver/BACON paste 02:57:21 <pikhq> In short, the legal system is 120% fucked. 02:57:30 <Gregor> oerjan: ... wow. 02:57:33 <Gregor> oerjan: That ... wow. 02:57:56 <pikhq> (precedent for the assassination thing: Obama did it.) 02:57:56 <oerjan> *MWAHAHAHA* 02:58:04 <pikhq> (yeah, not even Bush) 02:59:39 <oerjan> Gregor: incidentally there's a possible related conundrum here for the norwegian courts - one of the buildings damaged by the recent terrorist attack was the norwegian supreme court building... 03:00:16 <oerjan> hm i guess that's judges, not juries. but still, they're supposed to excuse themselves if personally involved. 03:01:06 <Gregor> oerjan: And presumably there's no precedent for bringing in judges who haven't been elected (?) to the supreme court? 03:01:10 <Gregor> So, bork :) 03:02:00 <pikhq> Potential hack: appeal to the International Criminal Court. 03:02:01 <oerjan> Gregor: actually there is, the government is supposed to appoint some. it's just that a lot of the government's buildings were _also_ damaged. 03:02:34 <oerjan> so the government should excuse themselves from making that appointment... 03:02:49 <oerjan> *government ministers 03:04:23 <pikhq> Well. I don't think the terrorist attack would count as a war crime, so the ICC wouldn't have jurisdiction. 03:04:47 <Gregor> oerjan: Bork bork! 03:05:09 <oerjan> for the time being, the terrorist appears to be trying to argue that he should be tried in military court - because he's at war with the labor party. 03:05:32 <Gregor> ... ... ... lolwut. 03:06:32 <oerjan> Gregor: his lawyer has frequently pointed out that he does not see things very similarly to anyone else. including his lawyer. 03:07:03 <pikhq> If that works, then the ICC would have jurisdiction, and so he could be tried there instead of in Norway's courts. 03:07:21 * elliott considers reading all that 03:07:28 <Gregor> elliott: Don't. 03:07:29 <oerjan> we're supposed to try him ourselves if we can, though :P 03:07:46 <pikhq> oerjan: Yes, but if he gets to your supreme court, then it seems you couldn't try him. 03:07:51 <pikhq> oerjan: So, the ICC would have to. 03:08:04 <elliott> Gregor: why not 03:08:06 <pikhq> Unless it's not a war crime, in which case fuck. 03:08:22 <oerjan> pikhq: they'll probably find some way to get some judges appointed, hopefully. 03:08:55 -!- invariable has changed nick to variable. 03:10:30 <elliott> <oerjan> :t let forever :: forall a b. (forall s. ST s a) -> (forall s. ST s b); forever x = x >> forever x in runST . forever 03:10:30 <elliott> <lambdabot> forall a a1. (forall s. ST s a1) -> a 03:10:31 <elliott> lol 03:10:40 <elliott> oerjan: "it only breaks polymorphism" 03:10:46 <elliott> as opposed to "it only breaks beta reduction" 03:11:09 <elliott> <Gregor> Juries have to be uninterested third parties. So, if a person using Future Technology™ beams a live image of themselves brutally murdering someone into the minds of every living human being, then they cannot be convicted. 03:11:12 <elliott> Is that actually a crime? 03:11:20 -!- pikhq_ has joined. 03:11:26 <oerjan> :t forever :: forall a b. (forall s. ST s a) -> (forall s. ST s b) 03:11:27 <lambdabot> Couldn't match expected type `forall s. ST s a' 03:11:27 <lambdabot> against inferred type `m a1' 03:11:28 <lambdabot> In the expression: 03:11:33 <azaq23> http://www.nytimes.com/2010/04/07/world/middleeast/07yemen.html?hp 03:11:36 <azaq23> unbelieveable 03:11:41 <elliott> Gregor: btw I don't think it matters if we can convict that guy :P 03:12:01 <Gregor> elliott: Probably true :P 03:12:03 <oerjan> elliott: i think the murder is supposed to be real 03:12:14 <elliott> oerjan: So it's a future murder? 03:12:36 <oerjan> elliott: erm there's no time travel involved. 03:12:39 <elliott> Can you convict people for crimes they'll do in the future, even if they're not planning them at all now? [I presume Minority Report had some kind of theme music in it, so assume it's being played now] 03:12:45 <elliott> oerjan: Then how is there anyone left to do the convicting 03:13:00 <Gregor> But it's like my hypothetical situation where a government declares its official language to be as described by some institution, and then that institution proceeds to subtly modify the language to coup. 03:13:08 <oerjan> elliott: you still need to work on your reading comprehension 03:13:21 <elliott> Oh, brutally murdering /someone/, okay 03:13:25 -!- pikhq has quit (Ping timeout: 276 seconds). 03:13:34 <elliott> I thought it was an image of them brutally murdering you for every you :P 03:13:49 <Gregor> lol 03:13:53 <elliott> Gregor: You would be good at nomic, but you're bad at real-world political loopholes :P 03:14:06 <Gregor> elliott: But unless he actually murders every you, that's arguably not even illegal. 03:14:19 <elliott> In nomic, people can't just resort to killing someone illegally if you fuck with them too much :P 03:14:30 <elliott> (Or can they? TODO: Murder an Agora player who pisses me off.) 03:14:34 <elliott> Gregor: That's what I said :P 03:14:42 <Gregor> SO'D YOUR MOM 03:14:52 <elliott> True 03:15:32 <oerjan> elliott: i'm pretty sure your version would at least count as harassment 03:16:59 <elliott> xD 03:17:06 <pikhq_> elliott: You need mens rea and actus reus to convict; with the act having never occured, actus reus couldn't exist, and mens rea might not either. 03:17:07 <elliott> At least :P 03:31:24 -!- azaq231 has joined. 03:33:54 -!- azaq23 has quit (Ping timeout: 258 seconds). 03:50:11 <oerjan> Ein monade er som ei lefse. 03:52:57 <elliott> wat 03:53:08 <oerjan> (kmc: une monade est comme une crêpe. una mónada es como un burrito. eine Monade ist wie ein Strudel) 03:53:48 <pikhq_> oerjan: Senatus populusque romanus? 03:56:10 <pikhq_> Following with the actual statements: モナッドは巻き寿司のようです。 03:56:18 <oerjan> argh unicode 03:56:30 <pikhq_> monaddo ha makizushi no you desu. 03:57:22 <pikhq_> "A monad is like a makizushi" (a makizushi being the kind of sushi that's rolled, with the contents wrapped in rice & nori) 03:57:34 <oerjan> kmc: you are taking notes, i hope? 03:59:55 <oerjan> (yes haskell weekly news is out again) 04:00:25 <oerjan> oh hm bicentennial 04:00:59 <elliott> <oerjan> (kmc: une monade est comme une crêpe. una mónada es como un burrito. eine Monade ist wie ein Strudel) 04:01:02 <oerjan> or wait it's not -enni- if there are no actual _years_ counted, is it 04:01:02 <elliott> waht is going on.............. 04:01:08 <elliott> oh haskell weekly news 04:01:12 <elliott> that oerjan...still reads... 04:01:56 <oerjan> i seem to have increased my regular haskell web sites lately 04:02:26 <oerjan> it started with r/haskell and grew from there 04:03:12 <elliott> i thought hwn was something you had received in email for years or whatever 04:03:17 <elliott> or at least i remember you saying that 04:03:22 <elliott> you said it about agora's backup lists at leaest :P 04:03:23 <elliott> least 04:03:44 <oerjan> elliott: also that crêpe version started on haskell-cafe, i believe, in the comments about the french translation of learn you a haskell 04:03:55 <oerjan> so kmc obviously has expanded it 04:04:05 -!- elliott has quit (Remote host closed the connection). 04:04:18 <oerjan> wat 04:04:40 -!- elliott has joined. 04:04:47 <oerjan> i was about to explain how i don't actually subscribe to any haskell mailing lists, and i don't think i ever have 04:05:13 <oerjan> i _do_ however tend to gravitate towards the haskell-cafe web archive if not careful. 04:06:30 <oerjan> i don't like to read hwn on that, though, all the links are made into footnotes with url shortening 04:07:11 <elliott> i should probably subscribe to haskell-cafe 04:08:43 <oerjan> <oerjan> so kmc obviously has expanded it 04:08:52 <oerjan> was the last i said before you quit 04:09:37 <elliott> saw it 04:09:40 <elliott> (in backlog) 04:14:32 -!- variable has quit (Quit: I found 1 in /dev/zero). 04:21:58 <oerjan> :t mfilter 04:21:59 <lambdabot> Not in scope: `mfilter' 04:22:11 <oerjan> @hoogle mfilter 04:22:11 <lambdabot> No results found 04:23:24 <oerjan> too new apparently 04:23:25 <elliott> ?hoogle filterM 04:23:25 <lambdabot> Control.Monad filterM :: Monad m => (a -> m Bool) -> [a] -> m [a] 04:23:25 <lambdabot> Data.Graph.Inductive.Query.Monad graphFilterM :: GraphM m gr => (Context a b -> Bool) -> GT m (gr a b) [Context a b] 04:23:36 <oerjan> elliott: no, it actually is mfilter 04:23:49 <elliott> http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Monad.html#v:mfilter 04:24:06 <oerjan> saw it mentioned on stackexchange 04:25:51 <elliott> stackexchange or overflow 04:26:04 <oerjan> er damn 04:26:15 <oerjan> overflow 04:26:43 <oerjan> short term memory failed between checking and typing :P 04:29:41 -!- CakeProphet has joined. 04:31:50 <CakeProphet> > 27^3 04:31:51 <lambdabot> 19683 04:32:28 <CakeProphet> > 27^2 04:32:29 <lambdabot> 729 04:32:54 <CakeProphet> that's not bad at all for number of 3-gram hash table entries. 04:34:48 <elliott> what 04:35:08 <CakeProphet> what 04:35:25 <elliott> what is the context 04:35:32 <elliott> and what are you trying to do 04:35:36 <CakeProphet> remember like a month ago I was going to improve the acronym generator? 04:35:45 <CakeProphet> well I've begun doing so finally. 04:36:12 -!- oerjan has quit (Quit: Good night). 04:36:15 <elliott> if you're going to base it on words 04:36:19 <elliott> then it will just generate words 04:36:24 <elliott> do you have a database of acronyms 04:36:28 <CakeProphet> these 3-grams are of the character variety. 04:36:37 <CakeProphet> basically it's a word generator more than an acronym generator. 04:36:54 <elliott> yes 04:37:00 <elliott> so it will be bad at generating acronyms 04:37:16 <CakeProphet> it will generate sequences of characters that are likely to be pronounceable 04:37:20 <CakeProphet> thus not a bad acronym generator. 04:37:36 <CakeProphet> though perhaps a bad word generator 04:37:40 <CakeProphet> as I doubt it will have perfect results. 04:41:14 <CakeProphet> I wonder what would happen if I also organized the data by character position. 04:41:42 <CakeProphet> so it stores the frequency of this character occuring after these two characters at this specific position. 04:41:57 <CakeProphet> something to consider afterwards, just out of curiosity. 04:43:54 <elliott> :t random 04:43:55 <lambdabot> forall g a. (Random a, RandomGen g) => g -> (a, g) 04:43:59 <elliott> ?hoogle Random 04:43:59 <lambdabot> module System.Random 04:43:59 <lambdabot> System.Random class Random a 04:43:59 <lambdabot> package random 04:45:47 -!- evincar has joined. 04:45:54 <CakeProphet> fat free ranch dressing tastes like poop. 04:46:10 <evincar> Cool, now I know what poop tastes like without the trouble of trying it. 04:46:23 <CakeProphet> where are the lipids? :( my tongue wants lipids. 04:48:21 <evincar> Your tongue is lying to you. 04:48:52 -!- variable has joined. 04:48:55 <CakeProphet> my tongue has no notion of truth so if it's lying I can't really blame it. 04:51:34 <evincar> True. 04:51:42 <evincar> Is my favourite Boolean value. 04:54:06 -!- kmc has quit (Quit: Leaving). 04:56:49 <monqy> hi 04:59:13 <evincar> Hi monqy. How art thou to-day? 05:06:41 <monqy> tired 05:06:45 -!- iamcal has quit (Ping timeout: 260 seconds). 05:07:23 <evincar> Rest. 05:07:33 <monqy> no 05:09:27 <pikhq_> evincar: I approve of thy archaicism. 05:10:13 <evincar> I recently decided to eschew "rendering" in favour of "rendition" in my computer graphics vocabulary. 05:11:25 <monqy> thanks 05:12:57 <elliott> Gregor: What's the biggest file EgoBot will download as an interpreter 05:13:31 <monqy> CakeProphet: are you fixing wacro? good. 05:13:43 <CakeProphet> more like replacing it with something completely different. 05:13:50 <monqy> goodl 05:13:52 <monqy> . 05:14:56 <CakeProphet> I can only work on it in spare moments, which aren't many these days. 05:17:26 <elliott> Hey CakeProphet 05:17:27 <elliott> `macro 05:17:27 <elliott> `macro 05:17:28 <elliott> `macro 05:17:28 <elliott> `macro 05:17:28 <elliott> `macro 05:17:36 <HackEgo> BTU 05:17:36 <HackEgo> GLIDING 05:17:37 <HackEgo> VLASIC'S 05:17:37 <HackEgo> DEPOTS 05:17:38 <HackEgo> HOEDOWNS 05:17:57 <monqy> amazing 05:18:48 <elliott> `macro 05:18:49 <elliott> `macro 05:18:49 <elliott> `macro 05:18:49 <elliott> `macro 05:18:54 <HackEgo> WUSSES 05:18:55 <HackEgo> OFTEST 05:18:56 <HackEgo> EAVESDROPPING 05:18:56 <HackEgo> SB'S 05:19:11 <elliott> CakeProphet: You no longer need to devote any effort 05:20:37 <evincar> A naked girl demands a backrub. Life is hard. 05:20:41 -!- evincar has quit (Quit: :D). 05:21:09 <monqy> hard lifes hard times 05:21:13 <elliott> can that guy get any more obnoxious 05:21:17 <elliott> let's discuss my perfect acronym generator instead 05:21:19 <elliott> CakeProphet: it uses N-GRAMS. 05:22:20 <elliott> wow such rudeness in this non-response 05:22:22 <elliott> monqy: wow 05:22:52 -!- pikhq has joined. 05:22:57 <elliott> wow. 05:22:59 -!- pikhq_ has quit (Ping timeout: 260 seconds). 05:23:02 <monqy> wow 05:23:10 <CakeProphet> elliott: I'm pretty sure that is not an acronym generator 05:23:22 <elliott> CakeProphet: It's a word generator. 05:23:23 <monqy> `macro 05:23:27 <elliott> It does exactly what you were going to write. :p 05:23:27 <HackEgo> KHORANA'S 05:23:31 <monqy> looks good to me 05:23:32 <CakeProphet> elliott: no. 05:23:34 <monqy> `macro 05:23:39 <HackEgo> YPSILANTI'S 05:23:41 <monqy> yyyyyyyyyyyep 05:23:54 <elliott> CakeProphet: How does it differ from what you were going to write? and do you think it differs based on evidence or are you just sure that your approach would produce better results 05:24:11 <CakeProphet> elliott: no because you've somehow completely understood what I meant by "3-grams of characters" 05:24:23 <elliott> I have? 05:24:26 <CakeProphet> *misunderstood 05:24:27 <CakeProphet> >_> 05:24:29 <monqy> a billion grams 05:24:29 <elliott> How do you know I have? 05:24:40 <monqy> highest quality wacronyms, macronyms 05:24:53 <CakeProphet> oh... hmmm 05:25:07 <CakeProphet> it seems to be very likely to generate actual existing words. 05:25:11 <CakeProphet> which is not what I would expect. 05:25:41 <elliott> Yes, that's a known deficiency which I'm correcting now. 05:25:53 <elliott> The code has all the infrastructure for it, it just hasn't been written yet. 05:25:59 <monqy> `macro 05:26:03 <HackEgo> NKRUMAH'S 05:26:07 <CakeProphet> uh, it looks to me like you're just randomly selecting entries 05:26:09 <CakeProphet> er, maybe not. 05:26:20 <elliott> I'm not. It just statistically ends up like that often. 05:26:24 <elliott> Which, like I said, correcting now. 05:26:45 <CakeProphet> also, you're an asshole. Why can't you just let me have fun? 05:26:55 <elliott> Are you calling me an asshole for writing a program? 05:27:20 <CakeProphet> specifically writing one that I am writing. It's kind of rude. 05:27:32 <elliott> You have a really weird idea of rude. 05:27:37 <CakeProphet> like "oh hey I can spit this out instantly why are you taking so long?" 05:27:55 <monqy> i find your idea of rude quite offensive 05:28:01 <elliott> Do you have issues or something? I saw something mentioned that sounded interesting and hacked up a Haskell progra. 05:28:03 <elliott> program. 05:28:18 <elliott> is there meant to be a moratorium on coding things you're coding, because I think you need a patent for that?? 05:28:31 <monqy> n-grams (c) cakeprophet 05:28:31 <elliott> that n-gram stuff came up waaay before today anyway 05:28:35 <monqy> DO NOT STEAL 05:28:44 <CakeProphet> that's not what I mean. 05:30:03 <elliott> what do you mean 05:31:13 <CakeProphet> I'm not going to be able to describe it in a way you find suitable. You will find issues with my reasoning. 05:31:44 <monqy> its like if i said i want to make a cake and then you made a better cake than me before i made my cake....and then laughed....and laughec......ad na laughed............ 05:31:45 <elliott> possibly because... your reasoning is flawed? 05:32:03 <CakeProphet> basically it spoils the fun. now I feel like I'm wasting my time. 05:32:18 <monqy> what 05:32:23 <monqy> how does it spoil the fun 05:32:33 <CakeProphet> see... I'm wasting my time right now 05:32:36 <CakeProphet> trying to explain this concept to you. 05:32:40 <elliott> CakeProphet: so what was I meant to do 05:32:41 <elliott> like 05:32:44 <monqy> other people have done n-grams. it's not like you're the first or anything. 05:32:48 <elliott> oh this sounds interesting i am going to open emacs and ghci and... 05:32:49 <elliott> fuck 05:32:50 <elliott> no 05:32:50 <elliott> can't do that 05:32:53 <elliott> closing 05:33:01 <elliott> because that would make me feel pretty lame too 05:33:05 <CakeProphet> I should probably give up while I'm ahead and get some sleep. especially considering I've only had one hour of that for this day. 05:34:59 <CakeProphet> elliott: I'm pretty sure if it were just something that you simply found interesting you wouldn't have presented it to me in the way you did. 05:35:33 <elliott> i have never found your predictions of me particularly accurate 05:35:52 <elliott> but ok i didn't realise you took n-grams so seriously 05:36:11 <elliott> ...despite the fact I talked about implementing n-grams for like days late last month 05:36:43 <CakeProphet> this is simply my perspective, based on the way you presented it. It seemed to be mocking. Is that an unreasonable inference? 05:36:58 <elliott> yep 05:38:21 <CakeProphet> whatever you're still an asshole either way. good night. 05:38:27 <monqy> good night cakeprophet 05:40:16 <elliott> cannot defend position →→→ call opopnent asshole 05:40:27 <elliott> calling me an asshole is like the oldest trick in the book... it's in Genesis 05:40:44 <elliott> genesasshole 05:40:45 <monqy> your'e also a nazi. bets thats not in genesis. 05:40:46 <elliott> genashole 05:41:14 <elliott> monqy: SHT,U UP JEW 05:41:19 <monqy> ;_; 05:41:27 * elliott OPPRESSES U FOUR CALLING ME NAZI 05:41:36 <monqy> im opresed 05:41:41 <elliott> im putting you in jail cell and making you listen to white noise... ON REPEAT ! ! ! 05:41:43 <elliott> HARD FUCKER 05:41:48 <elliott> \\\\\\\\\///////// 05:42:17 <monqy> ;_; ;_: ;_; ;_-------_____:;; 05:42:39 <elliott> ;) ; ) 05:42:47 <elliott> yeAAAAAAAAAhhhhhhhhhhhhhhhhhhhhhhhh NAZI RIDE PURE FOREVER 05:42:57 <elliott> >~) >~) >~ ) 05:43:12 * elliott runs, leaves trail of magic 05:43:16 <elliott> (the magic is not magic ) 05:44:18 <elliott> nazi misino: 05:44:20 <elliott> - destroy all frendship 05:44:22 <elliott> - make unhappy forever 05:44:32 <elliott> - no cute aminals!!!!!!!!!!!!&^ 05:44:40 <monqy> - n grams 05:44:56 <elliott> - theft 05:45:02 <elliott> >: - ) 05:45:09 <elliott> (: - < 05:45:16 <elliott> haha that lok like a sad smiley 05:45:17 <elliott> with hat 05:45:19 <elliott> bu no 05:45:20 <elliott> is not 05:45:24 <elliott> is nazi smiley 05:45:25 <elliott> nazimleyl 05:45:31 <monqy> - asshole 05:45:37 <elliott> - FUCK YOU 05:45:46 <elliott> "wow " 05:46:14 <elliott> thissss ins the genesis... of burning people w/ are not nazis ;) ; ) : >: - ) 05:47:04 <elliott> monqy: sory if i hurt youre feelings, 05:47:14 <monqy> THEY ARE DEAD 05:47:18 <monqy> that is how hurt they are 05:47:18 <elliott> rip 05:47:19 <elliott> rip rip rip 05:47:19 <monqy> you 05:47:20 <monqy> killed 05:47:21 <monqy> them 05:47:23 <monqy> ;_; 05:47:29 <elliott> I CANNOT DEAL WIT HTHE UGILT ITS HARASEMNT 05:47:33 <elliott> auuuuuuuuuuuuUUUUUGH 05:47:44 * elliott burns, explodes, booms into fire, becomes kitten, kitten lives a tohusand years, becomes angel kitten, angel dies 05:47:52 <monqy> rip 05:47:55 <elliott> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!vvvvvvvvvvvvvvvv 05:48:48 <elliott> WELCOME, 05:48:51 <elliott> TO, 05:48:52 <elliott> THE, 05:48:52 <elliott> NEXT, 05:48:53 <elliott> LEVEL, 05:48:59 <monqy> naziland castle 05:49:03 <elliott> ~~~title: "" -- yes that 05:49:05 <elliott> naziland castle 05:49:09 <elliott> ENTER CASTLE 05:49:13 <elliott> (you are now in the castle) 05:49:15 <elliott> (state command) 05:49:17 <elliott> > 05:49:25 <monqy> hurt feelings 05:49:31 <monqy> everey feelings 05:49:45 <elliott> YOUR HURT FEELINGS8!8!8!8!8!8!8! at this rate you will be a BAD NAZI ASS in only FIVE YEARS +motivational seminars! 05:49:48 <elliott> state commande, 05:49:48 <elliott> > 05:50:23 <elliott> STATE 05:50:24 <elliott> COMAMNDE, 05:50:25 <monqy> make more feeligns so i canm hurt them 05:50:25 <elliott> > 05:50:29 <monqy> then hurt theM 05:50:47 <elliott> YOU MAKE MORE FEELINGS BY BREEDING WTIH THE BREEDING FLOWER ITS AN INTENSIVE GRUESOME PROCESS THAT ELAVES YUO WITH TEN FEWER INTERNAL ORGANS AND BLOOD SPEWING OUT OF EVERY ORIFICE 05:50:52 <elliott> THETEHN YOU PUNCH THEM TO DEATH SCREAMING "I DONT LIOVE YOU 05:50:54 <elliott> YOU ARE MY KIDS 05:50:54 <elliott> BUT 05:50:56 <elliott> I DONT LIVE OE YOU 05:50:57 <elliott> IVE 05:50:59 <elliott> NEVER OLOVED YOU 05:51:01 <elliott> AND I HATE YOU 05:51:01 <elliott> " 05:51:02 <elliott> they 05:51:04 <elliott> are kiFILLED WITH BLOOD 05:51:11 <elliott> AND AS THEY SLOWLY START TO DIE WHILE SCREAMING "DADDY I LOVE YUO" 05:51:12 <elliott> YOU FEEL 05:51:13 <elliott> FOR THE FIRST TIME 05:51:15 <elliott> WHAT YOU THINK 05:51:18 <elliott> MIGHT BE THE SLIGHTEST INKLINGS 05:51:20 <elliott> OF EMOTION 05:51:22 <elliott> GUILT, EVEN 05:51:24 <elliott> YOU DESPISE YOURSELF FOR IT 05:51:33 <elliott> YOU DESIRE ONLY TO PURGE YOURSELF OF ALL FEELING 05:51:35 <elliott> AND TO BECOME A BAD NAZI ASS 05:51:36 <elliott> ENTER 05:51:37 <elliott> COMMAND 05:51:38 <elliott> > 05:51:47 <monqy> purge self of all felings 05:51:50 <monqy> become bad nazi ass 05:51:57 <elliott> HOW DO YUOU PROPOSE TO DO THIS????//// 05:51:58 <elliott> > 05:52:05 <monqy> kill self 05:52:15 <elliott> YUO PUNCH YOUSELRF LIKE YOU DID YOUR CHILDREN 05:52:18 <elliott> BUT IT IS NO YUOSE 05:52:20 <elliott> YOU ARE ALREADY 05:52:20 <elliott> TOO HARD 05:52:22 <elliott> TO FAR ON THE PATH TO BECOMING A 05:52:24 <elliott> BAD NAZI ASS 05:52:27 <elliott> THE PUNCHES ONLY STRENGTHEN YOU 05:52:29 <elliott> NEXT COMMAND 05:52:29 <elliott> > 05:53:11 <elliott> NEXT COMMAND 05:53:12 <elliott> > 05:53:16 <monqy> did i draw blood can i drink the blood 05:53:29 <elliott> THEO NLY BLOOD IS ON YUORE CHILDREN 05:53:35 <elliott> YOU LEAN DOWN AND SUCK UP ALL THEIR BLOOD 05:53:35 <monqy> drink children blood 05:53:37 <elliott> YOU THINK THAT MAYBE 05:53:38 <elliott> PERHAPS 05:53:41 <elliott> YOU MIGHT BECOME A 05:53:44 <elliott> `` , NAZI CMVAMPIRE'' 05:53:45 <elliott> BUT 05:53:45 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `: not found 05:53:48 <elliott> YOU MUST NOT LET THAT DISTRACT YUO 05:53:53 <elliott> YOU MUST FIRST BECOME A BAD NAZI ASS 05:53:58 <elliott> ONLY THEN CAN YOU JOIN THE RANKS OF VAMPIRES 05:54:02 <elliott> SUDDENLY 05:54:10 <elliott> YOU FEEL YOUR MUSCLES EXPLODING 05:54:13 <elliott> AND THEY EXPLODE INTO MUSCLE 05:54:16 <monqy> did i become 05:54:20 <elliott> YOU CHEW OFF THIS NEW MUSCLE 05:54:23 <elliott> AND IT SPEWS LBOOD 05:54:26 <elliott> WHICH YOU THEN DRINK 05:54:29 <elliott> IT FEELS GOOOOOOOOOOOOOOOOOOOOOOOOOOD 05:54:38 <elliott> YOU ARE CURRENTLY BLEEDING PROFUSELY AND ARE SLIGHTLY FURTHER ON THE PATH TO BECOMING A BAD NAZI ASS 05:54:40 <elliott> INSERT COMMANDE 05:54:41 <elliott> > 05:55:23 <monqy> use blood to deface property 05:55:28 <elliott> WHAT PROPERTY 05:55:29 <elliott> > 05:55:35 <monqy> all of it 05:55:48 <monqy> smear blood on children, elderly, pregnant women, normal people too 05:56:04 <elliott> ARE YOU 05:56:06 <monqy> draw blood moustaches 05:56:06 <elliott> REFERRING TO PEOPLE 05:56:07 <elliott> AS PROPERTY 05:56:08 <elliott> BECAUSE 05:56:09 <elliott> THATS GOOD 05:56:10 <elliott> I LIKE THAT 05:56:11 <elliott> SHOWS INITIATIVE 05:56:19 <elliott> YOU GAZE OUT 05:56:24 <elliott> A SEA OF PEOPLE IS WAITING FOR YOU 05:56:34 <elliott> BUT BEFORE YOU SMEAR BLOOD ON THEM 05:56:39 <elliott> YOU GET THE URGE TO DECAPITATE THEM 05:56:40 <monqy> surf sea of people 05:56:49 <monqy> surf sea of blood 05:56:51 <elliott> SO YOU STICK OUT YOUR TONGUE AND RUN HEADFIRST AT THE SEA OF PEOPLE 05:56:58 <elliott> YOUR TONGUE IS SO STRONG THAT IT LOBS THEIR HEADS CLEAN OFF 05:57:06 <elliott> WITHIN TEN SECONDS YOU HAVE DECAPITATED EVERY SEROJISRINGEL PERSON PRESENT 05:57:13 <elliott> YOU SURF THE SEA OF BLOOD 05:57:15 <elliott> \/\/\/\/\/\/\/\/\/\\/ 05:57:17 <elliott> DECISION INTERRUPT 05:57:20 <elliott> \/\/\/\/\/\/\/\/\/\\/ 05:57:28 <elliott> IT TURNS OUT THAT YUO HAVE SOME ~~~drugs~~~ IN YOUR POSESPSION 05:57:34 <elliott> THESE DRUGS WILL HELP YOU ON THE PATH TO BECOMEING A BAD NAZI ASS 05:57:42 <elliott> DO YUO TAKE THEM???? OR ARE YOU A LAWFUL BAD ANZI ASS 05:57:44 <elliott> MAKE YUORE DECISION 05:57:46 <elliott> > 05:58:00 <monqy> give drugs to children, ingessst children 05:58:10 <elliott> yes 05:58:10 <elliott> YES 05:58:16 <elliott> YUO DO THAT WHILE SURFING ON THE SEAO F BLOOD 05:58:20 <elliott> suddenly 05:58:37 <elliott> everything 05:58:38 <elliott> becomes 05:58:40 <elliott> tehtiero best 05:58:42 <elliott> \/\/\/\\/\/\/ 05:58:45 <elliott> OOOoooooo000000-`=`-=`=`-``-` 05:58:47 <elliott> ` =,` ,` ,`, =`=-, `= ,` -` 05:58:48 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found 05:58:50 <elliott> / / 05:58:54 <elliott> ,z. m;l z=pd a\ ;a][ q \;e 'lg 05:58:56 <monqy> poor hackego 05:58:57 <elliott> o-=sd========================= 05:59:00 <elliott> ABOVE IS A PICTURE 05:59:02 <elliott> OF WHAT YOU SEE 05:59:06 <elliott> ;) : 0 OH YEAAAH >: - ) 05:59:07 <elliott> >: - ) 05:59:08 <elliott> >: - ) 05:59:11 <elliott> >: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )>: - )V 05:59:14 <monqy> im highest 05:59:14 <elliott> HARD NAZI ASS 05:59:15 <elliott> hard nazi ass 05:59:16 <elliott> hard 05:59:17 <elliott> NAZI 05:59:17 <elliott> ass 05:59:18 <elliott> hard NAZI ass 05:59:20 <elliott> hard nazi ASS 05:59:22 <elliott> HARD nazi ass 05:59:24 <elliott> HARD nazi ASS 05:59:26 <elliott> HARD NAZI ASS 05:59:28 <elliott> HARD NAZI ass 05:59:30 <elliott> hard NAZI ASS 05:59:33 <elliott> HARD NAZI ASS 05:59:36 <elliott> .;, e. e/.w,f /we, /.,ew/ f/we., f/.we,f / 05:59:40 <elliott> STATKJE< COMMADNJEK 05:59:42 <elliott> >>>>>>>> 05:59:44 <elliott> , 06:00:08 <monqy> bathe in blood surf. thats a good thing right. 06:00:15 <monqy> body surf 06:00:19 <monqy> while bathing 06:00:20 <monqy> in blood 06:00:29 <elliott> yes 06:00:34 <Madoka-Kaname> elliott what is wrong with you 06:00:35 <monqy> hard nazi multitasking 06:00:36 <elliott> \w/ \w/ \/w \w/ \w/\ w/\ /w\ /\w/ \w/\ /w\/ \w \o/ \o/ \m/ 06:00:36 <myndzi> ¦ | 06:00:36 <myndzi> ´¸¨ /< 06:00:47 <elliott> AS YOU SURF THE SEA OF BLOOD YOU INGEST YOUR BLOOD-SOAKED CHILDREN 06:00:49 <elliott> hi Madoka-Kaname 06:00:55 <elliott> do you want to play 06:00:58 <Madoka-Kaname> no 06:01:18 <elliott> YUO KILL Madoka-Kaname AND THROW THE BODY INTO THE PILE OF BODIES AND CRUS HTHEM WITH A GIGANTIC CRUSHING MACHINE 06:01:25 <elliott> YOUR STRENGTH INCREASES MASSIVELY 06:01:30 <elliott> YOU BECOME AS TALL AS A BUILDING 06:01:32 <elliott> AND RADIOACTIVE 06:01:35 <elliott> AND MADE OF FUCKING WALRUSES 06:01:39 <elliott> WHAT THE FUCK DO YOU FUCKING DO 06:01:39 <elliott> > 06:01:41 <monqy> flex nazi muscles 06:01:54 <Madoka-Kaname> I'd rather be a character in something by Urobuchi Gen 06:01:55 <elliott> YOU FLEX THEM SO HARD IT CAUSES AN EARTHQUAKE IN EVERY MAJOR CONTINENT AND AUSTRALIA 06:01:57 <elliott> WHICH IS 06:02:00 <elliott> ALL THE CONTINENTS 06:02:02 -!- adam__ has joined. 06:02:06 <elliott> YOU SURF ON THE EARTHQUAKE 06:02:13 <elliott> that's some wave!!!!!!!!!!!!!!!!!! 06:02:14 <elliott> > 06:02:16 <elliott> enter 06:02:17 <elliott> command 06:02:17 <elliott> > 06:02:20 <monqy> is it a wave of blood 06:02:24 <monqy> make it a wave of blood 06:02:28 <monqy> the only suitable wave 06:02:39 <elliott> THAT WOULD REQUIRE COVERING EVERY LANDMASS ON THE PLANET WITH BLOOD 06:02:40 -!- CakeProphet has quit (Read error: Connection reset by peer). 06:02:48 <monqy> THEN DO THAT 06:02:57 <elliott> WAS HOPING YOU'D SAY THAT 06:03:01 <elliott> HOW DO YOU PLAN TO ACHIEVE THIS 06:03:35 -!- GreaseMonkey has joined. 06:03:40 <elliott> monqy: ??// 06:04:09 <monqy> kill people into planet 06:04:14 <elliott> every 06:04:15 <elliott> people? 06:04:19 <monqy> every people 06:04:34 <elliott> you go up to the first person on the planet 06:04:40 <elliott> it is an old man he is 99.99 years and 99 seconds 06:04:44 <elliott> you whisper 06:04:46 <elliott> man 06:04:49 <elliott> what is your name 06:04:54 <elliott> while pressing your eyeballs into his neck 06:04:58 <elliott> he replies 06:05:10 <elliott> and the snakes from his ears and tongue surround your face and start smothering you 06:05:13 <elliott> you find you cannot breathe 06:05:16 <elliott> he replies 06:05:23 <elliott> i am you... 06:05:30 <elliott> you are suffocating what do you do 06:05:30 <elliott> > 06:06:04 <monqy> bite/claw/whatever-kill snakes them use them to choke the false me!!!!! 06:06:18 <Madoka-Kaname> なにあれ 06:06:24 <elliott> you attack them but it only makes them stronger 06:06:29 <elliott> you briefly see a flash of light 06:06:31 <elliott> as it sustains 06:06:37 <elliott> one snake comes round to the front of your face 06:06:40 <elliott> looks you in the eye 06:06:40 <monqy> charm snakes with nazi charms 06:06:43 <Madoka-Kaname> elliott, you are not right in the head 06:06:43 -!- adam__ has changed nick to CakeProphet. 06:06:45 <elliott> and opens its mouth, its fangs showing 06:06:51 <elliott> then it moves into your eyes 06:06:57 <monqy> oh no my eyes 06:06:58 <elliott> touches your eyeball with a scratch 06:07:04 <elliott> and then plunges further with its fangs 06:07:11 <elliott> you feel a sharp pain and your entire left field of vision fills with blood 06:07:12 <monqy> do i have danger eyes 06:07:16 -!- Madoka-Kaname has left ("elliott has gone stark raving mad..."). 06:07:21 <elliott> eventually the snake crawls all the way into your eyeball 06:07:27 <elliott> and you see the same thing happen to your right eye too 06:07:37 <elliott> you blink and stare at the man who replies "i am... a person..." 06:07:46 <elliott> you touch his nose and he disintegrates into salt 06:07:47 <monqy> are my eyes made of knives or lasers or fire or poison 06:07:49 <elliott> what do you do 06:07:49 <elliott> > 06:08:16 <monqy> taste salt...is it realyl sa.t.... 06:08:25 <elliott> yes OH YES it is the best salt... you have ever tasted 06:08:31 <elliott> you could really do with some blood and salt on toast right now 06:08:33 <elliott> so you make it 06:08:48 <elliott> suddenly you are using the toast to surf across the continents; people explode as you pass them 06:08:56 <elliott> you feel a great power within you as you realise you are now the size of a small village 06:09:03 <elliott> and have twenty-two arms 06:09:18 <elliott> you notice that your chest is actually composed of a smaller version of yourself 06:09:19 <monqy> arm and salt samdwich time 06:09:25 <elliott> you wave to yourself, and the smaller yourself grabs your arm and bites off your hand 06:09:26 <elliott> but it is okay 06:09:28 <elliott> you have twenty-one more 06:09:31 <monqy> myself is a good samdwich topping too 06:09:35 <elliott> you think of smiling but decide against it 06:09:37 <elliott> after all 06:09:42 <elliott> you are a hard nazi ass in training 06:09:54 <elliott> you devour the sandwich with all the ingredients and fly over the world 06:10:02 <elliott> but you sure have a craving for DRUGS ON TOAST 06:10:04 <elliott> what do you do 06:10:04 <elliott> > 06:10:13 <monqy> do i still have drugs children 06:10:19 <monqy> them on arms toast would be good now.......... 06:10:25 <elliott> mmmm that sounds good 06:10:29 <elliott> do you wanna make that bro 06:10:33 <monqy> yES 06:10:56 <elliott> you prepare the bread and lick out your dragon tongue at it causing fire, it is now burnt toast... just as you, a hard nazi ass, in training ,likes it 06:11:05 <elliott> you layer the arms on and they melt..mmmmmm 06:11:15 <elliott> finally you pile the drugs children on top and they morph into one with the toast 06:11:21 <elliott> their skin melting and re-hardening as they seep into the toast 06:11:29 <elliott> they cry the song of nightmares and sprout eyeballs from every skin pore 06:11:35 <elliott> and they have so much drugs. 06:11:37 <elliott> do you eat it 06:11:39 <elliott> do you want to eat it 06:11:39 <elliott> > 06:11:52 <monqy> yES 06:12:02 <elliott> teh world becomes a NES game 06:12:05 <monqy> viGOURoUSLEY Eat 06:12:07 <elliott> BLEEP bloop BLEEP BLOOOOOOP 06:12:10 <elliott> VIGOROURSLY EAT EVERYTHING 06:12:11 <elliott> MMM 06:12:12 <elliott> it tastes so good 06:12:17 <elliott> you become the size of the solar system 06:12:22 <elliott> and sprout eyeballs from every pore 06:12:27 <elliott> but it is not the drugs 06:12:29 <elliott> it is real life 06:12:31 <elliott> and what happens in drugs 06:12:32 <elliott> happens in real life 06:12:41 <elliott> :) 06:12:42 <elliott> :) :) :) 06:12:43 <elliott> :)) 06:12:50 <elliott> you eat a baby and its great 06:12:55 <elliott> enter command 06:12:56 <elliott> > 06:12:56 <monqy> yum 06:12:59 <monqy> enjoy baby 06:13:23 <monqy> savoure baby 06:13:23 <elliott> you enjoy a baby 06:13:25 <elliott> you dont eat it 06:13:27 <elliott> you just look at it 06:13:28 <elliott> and say 06:13:29 <elliott> dayum 06:13:33 <elliott> thats a quality baby right there that is 06:13:37 <elliott> but this is a cruel judgement not 06:13:38 <elliott> a positive one 06:13:42 <elliott> to keep with your hard nazi ass in training image 06:14:02 <fizzie> The more you know: "Replacing the WebKit.framework that ships with Mac OS X or any of its components with those from a locally built copy or a nightly build of WebKit is HIGHLY discouraged. Doing so will likely leave your system unusuable and cause a tear in the fabric of spacetime—so don't do it!" 06:14:03 <elliott> you begin to wonder if instead of a hard nazi ass you shoul dbecome a christian or a utilitarian or a girafe or something 06:14:05 <elliott> what do you think 06:14:07 <elliott> > 06:14:13 <elliott> hi fizzie do you want to play 06:14:25 <fizzie> Not really; I'm at work; all work and no play. 06:14:35 <elliott> this is a very serious game 06:14:41 <elliott> it deal with social theme like nazi and opresion 06:14:51 <fizzie> Yes, I've been reading a word here and there. 06:14:55 <monqy> can i be hard nazi dgerafe 06:14:57 <fizzie> It certainly seems serious enough. 06:15:03 <monqy> i want to be a hard nazi dgerafe 06:15:19 <monqy> my specialty is blood grafiti 06:15:21 <elliott> it is like sophie's choice but without the choice 06:15:36 <elliott> or schindler's list without the list 06:15:53 <elliott> monqy: yes you can 06:16:00 <elliott> you become a ~cool nazi girafe dude~ 06:16:08 <elliott> you're in a mario game 06:16:12 <elliott> its totally two dimensional and this is cool 06:16:21 <elliott> there are lots of innocent children but you already turned them into blood drugs just by looking at them 06:16:21 <monqy> become the mario game 06:16:24 <elliott> done 06:16:26 <elliott> whad now 06:16:26 <elliott> > 06:16:50 <monqy> become every mario game....even the bad ones...... 06:17:08 <monqy> be played.....the players are now blood..... 06:17:10 <elliott> yes 06:17:10 <monqy> the blood spells 06:17:12 <monqy> fuck you 06:17:13 <elliott> you do GREAET yes 06:17:15 <elliott> yes 06:17:17 <elliott> the blood spells that 06:17:19 <elliott> and you lick it up 06:17:21 <elliott> with your frog tongue 06:17:23 <elliott> and al your eyeballs 06:17:26 <elliott> and your nazi mario game powers 06:17:49 <elliott> monqy: you have unlocked a new level 06:17:53 <monqy> !!!! 06:17:53 <elliott> do you wish to progress to level two 06:17:54 <elliott> > 06:18:01 <monqy> this is a good hting to do it sounds like... 06:18:04 <monqy> i DO 06:18:13 <elliott> you DO 06:18:15 <elliott> the whole universe is wiped 06:18:17 <elliott> a loading screen pops up 06:18:20 <elliott> loading affsets... 06:18:24 <elliott> downloading asses.... 06:18:29 <elliott> court marshalling the friends..... 06:18:32 <elliott> nazi......................... 06:18:35 <elliott> welcome..................................................................... 06:18:39 <elliott> destroying everything you love............ 06:18:43 <elliott> emailing your parents.................................. 06:18:44 <elliott> loaded 06:18:55 <elliott> the screen flashes every colour for ten seconds and your eyes get shot out 06:18:59 <elliott> now your eyeballs are just filled with blood 06:19:02 <elliott> you have no idea where you are 06:19:03 <elliott> > 06:19:31 <monqy> feel around. it feels good. 06:19:38 <elliott> yeah 06:19:39 <elliott> it does 06:19:44 <elliott> but you have to realise 06:19:52 <elliott> that your expert position in the previous level 06:19:58 <elliott> is like a N00B ASS GAMER in this one.... 06:20:03 <elliott> >: - ) >: - ) 06:20:04 <monqy> oh no........ 06:20:07 <elliott> do you want your eyes back 06:20:08 <elliott> > 06:20:12 <monqy> that would be nice.... 06:20:15 <elliott> ok 06:20:17 <elliott> you have your eyes back 06:20:19 <elliott> it is: 06:20:27 <elliott> a tasteful room, decorated as in the eighteen-nineties; 06:20:40 <elliott> furnished wtih grandfather clock, cane, chair to sit in, rocking chair to sit and rock in (comes with electric guitar + amplifier), 06:20:47 <elliott> carpet made out of bones, 06:20:51 <elliott> staircase (tastefully spiralled), 06:21:00 <elliott> children (not animate; immortal, impossible to destroy); 06:21:07 <elliott> portal into fourth dimension (violates geometric laws); 06:21:08 <elliott> cat. 06:21:10 <elliott> > 06:21:40 <monqy> throw cat and hcildren into portal at same time.........observe........ 06:21:53 <elliott> you acnnot move the childreern. they are part of the laws of physics... 06:22:19 <elliott> > 06:22:32 <monqy> just the cat, then 06:22:41 <monqy> or: move portal into children 06:22:50 <elliott> the cat tumbles into the portal. it appears to the left of you and above you, clipping with all its cuts visible (but not spilling out). 06:22:53 <elliott> it meows irritatedly. 06:23:00 <monqy> again, again 06:23:12 <elliott> you try to move the portal into children, but you find you cannot. the portal moves fine, but the children move away as you move the portal there, then back as you move it back. 06:23:25 <elliott> you try to pick up the cat but upon moving your hand inside its guts, it teleports into the portal. 06:23:27 <elliott> you go and pick it up. 06:23:48 <monqy> use portal to push childrne up stairs 06:24:11 <monqy> one of my arms dfoes this...the others is in the rocking chair....rocking out........ 06:24:12 <elliott> you do this but as you go towards the tsairs the children turn around, as rock. you notice their eyes are completely white. 06:24:20 <elliott> they open their mouth and pure blackness comes out in jagged waves. 06:24:31 <elliott> it intersects your body and they cry. 06:24:35 <elliott> > 06:24:37 <elliott> level reset 06:24:37 <elliott> > 06:24:42 <monqy> oh No 06:24:53 <elliott> it ok u only lost about three turns my frend 06:25:18 <monqy> rock chair up the stairs..w.ere doing this to gether,,,the chaie.r.....and me...... 06:25:22 <monqy> rockieng 06:25:31 <elliott> yeah 06:25:32 <elliott> you are 06:25:34 <elliott> and its FUCKING AWESOME 06:25:35 <elliott> but what it needs 06:25:37 <elliott> is some drugs 06:25:38 <elliott> > 06:25:54 <monqy> use NAZI MAGIC to CONJURATE up some SWET DRUGS 06:26:13 <elliott> yep 06:26:17 <elliott> but now youure in a corridor 06:26:19 <elliott> and everything seems kind of 06:26:20 <elliott> blurry 06:26:21 <elliott> > 06:27:04 <elliott> > 06:27:29 <monqy> gently remove skull lenses from nazi vest pocket, put on eyes 06:27:39 <monqy> every type of lenses..... 06:27:44 <elliott> this feels like a good idea. but first, you think 06:27:52 <elliott> best to listen to hard nazi ass.wav (about three and a half megabytes) 06:27:58 <elliott> you upload this file with your other heart. 06:27:59 <monqy> good idea 06:28:06 <elliott> it is about twenty per cent uploaded. 06:28:07 <elliott> this is cool. 06:28:56 <elliott> fifty-seven per cent. 06:29:02 <elliott> this will be a great soundtrack to nazi drugs, you think. 06:29:17 -!- variable has quit (Read error: Connection reset by peer). 06:30:08 <elliott> monqy: http://ompldr.org/vYWgzYw 06:30:12 <elliott> you download this file and listen to it. 06:30:19 <elliott> [pause for reality to catch up with perfection.] 06:30:33 -!- variable has joined. 06:30:56 <monqy> great soundtrack to nazi drugs 06:31:06 <elliott> are you prepared to continue 06:31:14 <monqy> i THinK so 06:31:27 <elliott> you still in corridor. but now you have skull lenses and eyes and shit. 06:31:27 <elliott> > 06:31:49 <monqy> am i playeing the soundtraxck.... 06:32:00 <elliott> yes. 06:32:03 <elliott> its great, man. 06:32:04 <elliott> > 06:32:11 <monqy> is the coredior less blurey now 06:32:31 <elliott> no. 06:32:32 <elliott> > 06:32:38 <monqy> focus coredior 06:32:52 <elliott> you cant man. its not your vision. the corridor itself is blurry. 06:32:53 <elliott> > 06:33:05 <monqy> command corredior to focus 06:33:12 <elliott> the corridor laughs hollowly. 06:33:13 <elliott> > 06:33:19 <monqy> command HARDER 06:33:28 <elliott> you command so hard. 06:33:29 <elliott> so hard. 06:33:32 <elliott> but the corridor only gets blurrier. 06:33:33 <elliott> > 06:33:51 <monqy> walk down corridor while shouting profanitiesies at it 06:33:57 <monqy> this is the ONLY waY 06:34:05 <elliott> you do, and continue to mentally command as hard as you can 06:34:09 <elliott> you focus all your energy on commanding 06:34:20 <elliott> your eyes squint up and the corridor becomes as blurry as ever, but you know this time it is your vision from squinting. 06:34:28 <elliott> you do not even bother to see the corridor as you command so hard. 06:34:49 <elliott> and then 06:34:57 <elliott> as you finish commanding, exhausted, and prepare to continue walking down 06:35:01 <elliott> you see the corridor again 06:35:06 <elliott> and it is just as blurry as when your eyes were a-squint 06:35:18 <elliott> it bends and becomes diagonal, trapezoid in shape, almost, 06:35:23 <monqy> give drugs to correidor 06:35:25 <elliott> and its walls start to come close together, blurry as they are, 06:35:31 <elliott> and the walls get closer and closer, 06:35:33 <elliott> you hyperventilate, 06:35:40 <elliott> sweat beads drip down from every pore of your skin and you panic and run and dash, 06:35:44 <elliott> but the walls keep closing in tighter 06:35:54 <elliott> they hit your skin and crack your bones and blood pours out and your organs are crushed and as the walls meet 06:36:06 <elliott> they both simultaneously cross the infinitesimal space that is the difference between 06:36:09 <elliott> "touching exactly" 06:36:09 <elliott> and 06:36:10 <elliott> "same" 06:36:15 <elliott> and they pass one infinitesimal distance further 06:36:22 <elliott> crossing over each other and becoming impossible negative space 06:36:25 <elliott> but your body is still inside 06:36:32 <elliott> so it explodes out becoming the entire three-dimensional (four actually, but) space 06:36:37 <elliott> static abounds everywhere 06:36:39 <elliott> thoughts are lost 06:36:42 <elliott> the whole universe is nothignness and you are it 06:36:51 <elliott> your hard fuckin nazi ass becomes the curtains of this universe of horrors 06:36:51 <elliott> 06:36:54 <monqy> am i now the children, portal, cat, chair 06:36:58 <elliott> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRRRRRRRRRlevel reset 06:36:58 <elliott> > 06:37:03 <monqy> oh no 06:37:07 <monqy> become children 06:37:13 <elliott> ok. 06:37:17 <elliott> oh hey man this is sweet. 06:37:21 <elliott> the life of a children: so sweet. 06:37:25 <elliott> you see this punk coming up. 06:37:29 <elliott> tries to push you up the stairs with a portal. 06:37:32 <elliott> but you'll have none of that shit. 06:37:38 <elliott> shoot some mothafuckin black rays at him. yeaaaaaaaahhhhhhhhh 06:37:50 <elliott> ok you're feeling accomplished. you slide back into your natural position as the portal slides back as the punk disappears 06:37:51 <elliott> what now bro 06:37:59 <monqy> devoure his flesh 06:38:06 <elliott> yeah ok 06:38:07 <elliott> its pretty good 06:38:09 <elliott> pretty good 06:38:13 <elliott> not the best you've had but 06:38:13 <elliott> good 06:38:16 <elliott> > 06:38:35 <monqy> push chair into portal 06:38:47 <elliott> chair or rocking chair 06:38:58 <monqy> change of plans 06:39:05 <monqy> put cat on rocking chair, it rocks into portal 06:39:24 <elliott> you put the cat on the rocking chair. it starts rocking the fuck out. soloing on the guitar and everything. goddam. that's one rockin cat. 06:39:34 <elliott> it rocks into the portal. 06:39:37 <elliott> suddenly rock is everywhere 06:39:40 <elliott> yer in a maze of rock 06:39:43 <elliott> you think this is pretty cool 06:39:58 <elliott> also everywhere is cat so every piece of matter is now furry and breathing and has a beating heart inside and ok you admit this is kind of gross 06:39:58 <monqy> amazeing 06:40:00 <elliott> but dude 06:40:01 <elliott> maze of rock 06:40:07 <elliott> even if the guitar is like... a cat guitar 06:40:10 <elliott> maze of rock. 06:40:11 <elliott> > 06:40:29 <monqy> maze of rock 06:40:32 <elliott> > 06:40:41 <monqy> i dunno wander around the maze of rock or something 06:40:53 <elliott> you begin to think 06:40:57 <elliott> maybe you want to be a hard nazi ass 06:40:58 <elliott> ??? 06:40:58 <elliott> > 06:41:07 <monqy> oh right that 06:41:15 -!- sllide has joined. 06:41:20 <monqy> command maze of rock to make me a hard nazi ass 06:41:32 <elliott> you do it 06:41:33 <elliott> and it hugs you 06:41:35 <elliott> its furry like a cat 06:41:37 <elliott> this is wonderful 06:41:39 <elliott> but you feel that maybe hugs 06:41:44 <elliott> are not the way to become a hard nazi ass 06:41:48 <elliott> do you want to exit this level 06:42:11 <monqy> kill hugs drink blood 06:42:14 <elliott> do you want to exit this level 06:42:27 <monqy> will exiting the level prevent me from killing hugs 06:42:30 <monqy> because 06:42:32 <monqy> i want to kill hugs 06:42:38 <elliott> there is no way to know. 06:42:40 <elliott> > 06:42:50 <monqy> kill hugs while exiting level 06:43:06 <elliott> you do it, but the hugs are ripped away from you as you exit 06:43:07 <elliott> correct decision 06:43:10 <elliott> you have unlocked a new level 06:43:14 <elliott> do you wish to progress to level three 06:43:18 <monqy> sure 06:43:24 <elliott> aight. 06:43:26 <elliott> your name is monqy. 06:43:31 <elliott> you are on the path to becoming a HARD NAZI ASS. 06:43:34 <monqy> good level 06:43:34 <elliott> you are in #esoteric. 06:43:37 <elliott> what do you do? 06:43:37 <elliott> > 06:43:58 <monqy> hard decisionS 06:44:35 <elliott> > 06:44:39 <monqy> helP 06:44:55 <elliott> > 06:45:26 <elliott> > 06:45:34 <monqy> im bad at beingmonqy in #espeteric 06:45:40 <monqy> ;_; 06:45:47 <elliott> the thing you must realise. 06:45:48 <elliott> is that by definition 06:45:55 <elliott> you are the best at being monqy in #esoteric 06:45:58 <elliott> not #espeteric though that's a whole nother ball game 06:46:02 <elliott> > 06:46:12 <monqy> im realize this now, ok. 06:47:28 <elliott> > 06:47:44 <monqy> the hardest level......great dificulties lie within monqy being not a hard nazi asss at alll,,,,,i have gone backwards in progres,, 06:47:47 <monqy> wallowe in shame 06:47:54 <elliott> no. 06:47:55 <elliott> you cannot. 06:48:00 <elliott> because that is not what hard nazi asses do. 06:48:01 <elliott> > 06:48:27 <monqy> explore esoteric for ways to beome a hard nazi ass.s. 06:48:56 <elliott> alright. 06:48:59 <elliott> to perform this action 06:48:59 <elliott> say 06:49:05 <elliott> <monqy> how do i beome a hard nazi ass.s.? 06:49:13 <monqy> <monqy> how do i beome a hard nazi ass.s.? 06:49:17 <elliott> without 06:49:18 <elliott> the <>s 06:49:26 <elliott> or the monqy inside 06:49:26 <monqy> monqy how do i become a hard nazi ass.s.? 06:49:28 <monqy> oops 06:49:31 <elliott> or the space after 06:49:32 <monqy> how do i become a hard nazi ass.s.? 06:49:33 <monqy> i need 06:49:33 <monqy> hlep 06:49:50 <monqy> becomeing is not my 06:49:51 <monqy> forte 06:50:02 <elliott> fizzie: help the man 06:50:14 <elliott> (tahtht's work) 06:50:53 <elliott> monqy: (this level is played in realtime) 06:51:00 <monqy> oh no 06:51:07 <elliott> monqy: do you want me to try and help you 06:51:16 <monqy> this may helP... 06:51:29 <elliott> monqy: hi ok. 06:51:29 <elliott> well. 06:51:31 <elliott> i think to become that. 06:51:35 <elliott> you need to enter commands into the game. 06:51:37 <elliott> such that you become that. 06:51:42 <elliott> try listening to hard nazi ass.wav. 06:51:43 <elliott> it may help you. 06:51:48 <monqy> aeooaoeooaeooo 06:52:10 <elliott> all i know about the lyrics to that is that they include "hard nazi ass" 06:52:14 <elliott> i know no more... 06:52:28 <monqy> aoeoaoeohardnaziassaeaooeoaoeoeaoeoeaaoo 06:52:47 <elliott> 06:52:47 <elliott> 06:52:47 <elliott> 06:52:47 <elliott> 06:52:47 <elliott> 06:52:47 <elliott> 06:52:49 <elliott> > 06:52:56 <monqy> become hard nazi ass 06:53:00 <elliott> how 06:53:00 <elliott> > 06:53:44 <monqy> rolepaly nazi on journey to hard ass to become...,,,,in this adventure,,,it happens 06:53:59 <elliott> ok you do that 06:54:03 <elliott> so you open the game console 06:54:05 <elliott> and start to type in 06:54:06 <elliott> the console says 06:54:08 <elliott> [ > ] 06:54:10 <elliott> what do you type in 06:54:10 <elliott> > 06:54:18 <monqy> become hard nazi ass 06:54:24 <elliott> ok how 06:54:25 <elliott> > 06:54:28 <monqy> help 06:54:35 <elliott> > 06:54:52 <monqy> in the adventure....is the twist ending....that the hard nazi ass was in my heart....all along 06:54:56 <elliott> no 06:54:59 <elliott> > 06:55:00 <monqy> oh no 06:55:23 <monqy> investigate cheats manual 06:55:31 <elliott> there is none. 06:55:32 <elliott> apply yourself 06:55:33 <elliott> > 06:55:34 <monqy> how to become hard nazi ass.help 06:55:35 <elliott> remember 06:55:38 <elliott> that you have been 06:55:42 <elliott> playing the game you are playing now 06:55:43 <elliott> as monqy 06:55:46 <elliott> in #esoteric 06:55:49 <elliott> on the path to becoming a nazi ass 06:55:50 <elliott> for a very long time now 06:55:54 <elliott> so you must ask yourself 06:55:56 <elliott> how is this any different 06:55:59 <elliott> to what I have been doing ? 06:56:31 <elliott> > 06:56:33 <monqy> in this comnsole game i was not given a propmt like the others,,,, 06:56:39 <monqy> look around, console 06:56:40 <elliott> yes you were 06:56:46 <monqy> oh,,,, 06:56:46 <elliott> <elliott> your name is monqy. 06:56:47 <elliott> <elliott> you are on the path to becoming a HARD NAZI ASS. 06:56:47 <elliott> <elliott> you are in #esoteric. 06:56:51 <monqy> oh that one 06:56:58 <monqy> that is a harD prompT 06:57:07 <elliott> no 06:57:08 <elliott> because 06:57:12 <elliott> it is what you have been doing for a long time already 06:57:14 <elliott> its just telling you 06:57:17 <elliott> keep doing what youore doing??? 06:57:18 <elliott> > 06:57:51 <monqy> my doing has become dulll, 06:58:02 <elliott> APPLY 06:58:03 <elliott> YOUR 06:58:03 <elliott> SELF 06:58:04 <elliott> > 06:58:09 <monqy> im apply self 06:58:15 <elliott> > 06:58:18 <elliott> you apply yourself 06:58:18 <elliott> > 06:58:25 <monqy> kicks elliot, screams about hard nazi asses 06:58:33 <elliott> OW 06:58:34 <elliott> FUCKKEKK 06:58:39 <elliott> \/\/\/\/\/\/\/\/INTERRUPT DECISION TIME 06:58:40 <elliott> UR A JERK 06:58:43 <elliott> WANNA TRY SOME JERK DRUGS 06:58:43 <elliott> ??/ 06:58:44 <elliott> > 06:58:47 <monqy> YEs 06:59:03 <monqy> if they are pOIson, i force them down your throAT 06:59:17 <elliott> you do 06:59:18 <elliott> i die 06:59:25 <monqy> rip 06:59:30 <monqy> throw eliot funeral party 06:59:40 <monqy> dances on graves 07:01:18 <elliott> the desynchronisation between the game fact that i am dead and the real fact that i am alive causes an infinite universe recursion. 07:01:18 <elliott> > 07:01:39 <monqy> harnes recusion power to become hard naiz ass 07:02:01 <elliott> done. 07:02:01 <elliott> > 07:02:08 <monqy> ok 07:02:11 -!- monqy has quit (Quit: hello). 07:02:57 <elliott> fizzie: hi 07:03:55 <elliott> rip channel being good 05:40—07:02 07:19:53 -!- azaq231 has quit (Quit: Leaving.). 07:46:27 -!- sllide has quit (Read error: Connection reset by peer). 07:55:13 -!- elliott has quit (Remote host closed the connection). 07:55:44 -!- elliott has joined. 07:57:58 <elliott> does anyone know decent DNS providers? I don't like OpenDNS. I'm tempted to just use Google Public DNS, but... 07:58:11 <elliott> Hmm, maybe I'll run that "try a bunch of DNS servers and find the best" program. 07:58:19 <Deewiant> "My ISP" 07:58:29 <elliott> Deewiant: You vastly overestimate the quality of my ISP. 07:58:34 <elliott> Oh, your ISP? 07:58:37 <elliott> Fuck your ISP. 07:58:41 <Deewiant> :-( 07:58:52 <elliott> I'm sure it's lovely, I'm also sure it's shitty from England :P 07:58:58 <elliott> http://code.google.com/p/namebench/ This is the thang 07:59:08 -!- iamcal has joined. 07:59:18 <Deewiant> I'm sure it won't respond to DNS queries from non-customers 07:59:24 <elliott> Fascism 07:59:33 <elliott> Maybe I'll ring them up 07:59:36 <elliott> "I'd like to buy JUST DNS." 07:59:45 <elliott> "Also I'm in England." 07:59:55 -!- copumpkin has changed nick to DrDerpa. 08:01:16 <elliott> Sure does take a while 08:01:17 <fizzie> Use one of those alternative-root DNS services, they're so undergrund. 08:01:24 <elliott> fizzie: Heh, yes, "undergrund" 08:01:25 <elliott> fizzie: Heh, yes, "undergrund". 08:01:30 <elliott> That's certainly one word. 08:01:54 <elliott> fizzie: You might want to ban me in advance before oerjan does it after logreading, btw. 08:02:19 <fizzie> (I was tempted to spell it "undergründ".) 08:02:23 <fizzie> Is there a reason? 08:02:27 <elliott> It did seem to be missing an umlaut, yes. 08:02:50 <elliott> fizzie: Well, I have the slightest feeling he may not quite enjoy over an hour of illogical Nazi-drug-toast text adventure gameplay. 08:03:02 <elliott> That's a personal failing of his, though, naturally. 08:03:26 <elliott> Gosh, namebench sure does take a while. 08:03:32 <fizzie> Ohhh, that. Wellll... there weren't any complainers, were there? 08:03:58 <elliott> fizzie: Well, Lymia said I was mad and then /parted, but that was under an alternate nick, so it NEVER HAPPENED. (Rule of IRC.) 08:04:27 <elliott> Nobody else, but I think everyone else was just asleep and/or busy. 08:04:41 <elliott> Or watching attentively, eagerly anticipating every development. That's possible too. 08:05:01 <elliott> It's alright though, all the cool people are in -minecraft anyway. 08:05:38 -!- DrDerpa has changed nick to copumpkin. 08:06:25 <elliott> What _is_ namebench doing? Oh, I see. 08:07:10 <elliott> I wonder if the time I'm losing doing nothing while waiting for namebench is greater than the combined amount of time I'll save by switching to a faster DNS provider. 08:13:26 <elliott> <namebench comment> I tried it but unusual result came out. The result showed my access point IP which is 192.168.1.1 the best one. quit strange but working result was quite good. coul any one explain technically how such thing is possible. Is my access point could be a public DNS. 08:20:41 <elliott> I wonder if maybe I should run a local DNS cache. 08:45:15 <Vorpal> elliott: hi 08:45:21 <Vorpal> also fizzie talked just above 08:46:17 <Vorpal> elliott: hm, does namebench work well? 08:46:28 <fizzie> Just above what? 08:46:57 <Vorpal> never mind, misread elliott's line as if he was alone, not noticing you 08:47:14 <fizzie> Ah'kay. 08:47:21 <Vorpal> elliott: Personally I just run a local unbound dns server. 08:48:59 <Vorpal> why is it that some random university system sends a HTML-only mail with the subject (translated) "Daily summary of notice panel" about *once every week*. 08:50:11 -!- elliott has quit (Ping timeout: 260 seconds). 09:22:11 -!- elliott has joined. 09:22:28 <elliott> Backetyback. 09:22:34 <elliott> 08:46:17: <Vorpal> elliott: hm, does namebench work well? 09:22:34 <elliott> Pretty well, yes. 09:29:17 -!- elliott_ has joined. 09:29:18 -!- elliott has quit (Read error: Connection reset by peer). 10:00:51 -!- FireFly has joined. 10:22:27 <elliott_> pikhq: What do Tk bindings usually look like 10:22:37 <elliott_> Do you have to mess with Tcl crap or is there a mostly-C API available 10:32:46 -!- nooga has joined. 10:32:51 <nooga> http://chrisfenton.com/cray-1-digital-archeology/ pretty nice 10:44:23 -!- CakeProphet has quit (Ping timeout: 258 seconds). 10:48:23 -!- GreaseMonkey has quit (Quit: The Other Game). 10:49:45 <fizzie> "In a few cases, these are native bindings (C and Perl at least) while others create a link between calls to Tcl/Tk and the language." 10:51:10 <fizzie> Tcl and Tk are both written in C, and the former calls to the latter, so there needs to be some sort of a thing there. 10:51:20 <elliott_> Right. 11:08:32 <elliott_> "The file tk.h should be considered a public declaration of the Tk C functions, defines/macros, and structures which a developer can safely depend on." -- oh, please. 11:20:16 <Vorpal> elliott_ why "oh please"? 11:20:53 -!- nooga has quit (Quit: Lost terminal). 11:21:19 <elliott_> Vorpal: That's not a substitute for API documentation. 11:21:48 <Vorpal> elliott_: my tk.h seems to be very well documented in the form of comments 11:21:58 <elliott_> Doesn't beat manpages. 11:22:03 <Vorpal> true 11:24:00 <Vorpal> hm I used tup a bit, very nice. There is just one issue I have with it really: No equivalent to make's -j 11:24:08 <elliott_> Yes... there is... 11:24:11 <elliott_> Read "man tup". 11:24:20 <Vorpal> elliott_: hm I did. Will have to check again 11:24:40 <elliott_> You can use the num_jobs configuration (user or project-local), or -jN to tup upd. 11:25:12 <Vorpal> ah right 11:28:55 <Vorpal> elliott_: btw what is the correct way to get generated files included in a build? For example I might have a :foreach *.c rule, and a rule that generates a *.c file using bison or some such. 11:29:08 <Vorpal> will the foreach *.c include the generated .c file? 11:31:50 <elliott_> Vorpal: If it occurs after the generating rule, I believe. 11:32:28 <Vorpal> elliott_: in textual order in the Tupfile you mean? Or as ordered by those order-only dependencies? 11:32:47 <elliott_> Textual, I think. Don't quote me on this. I know the order matters in some cases, basically to match what it would do as a shell script. 11:32:55 <Vorpal> right 11:33:35 <Vorpal> hm.... either order seems to work, but then it is hard to know if it will always work, like on a clean build on another system or such. 11:33:54 -!- cheater has quit (Ping timeout: 252 seconds). 11:34:33 <Vorpal> elliott_: I guess I should ask pikhq? He seems quite knowledgeable about tup. 11:34:42 <elliott_> Vorpal: Just post on tup-user. 11:34:47 <elliott_> Mike will probably answer it within a day or two. 11:34:49 <Vorpal> ergh, mailing list 11:34:52 <Vorpal> oh well 11:34:59 <elliott_> It's google groups. 11:35:01 <elliott_> Sorry, tup-users 11:35:06 <elliott_> So you don't have to subscribe or anything. 11:35:17 <Vorpal> oh okay. I never even used google groups, would have to figure out how that works too 11:35:22 <Vorpal> still, not a mailing list 11:35:49 <elliott_> Well, it's primarily subscribe-and-email-reply based. But it can work basically like a crappy imitation of a web forum. 11:35:57 <elliott_> You don't have to receive messages through email and can post through the web. 11:36:02 <elliott_> It's low-traffic, mind. 11:36:05 <Vorpal> fair enough 11:36:14 -!- boily has joined. 11:37:59 <Vorpal> elliott_: oh btw, I noticed tup complain about /etc/fuse.conf not being readable on my ubuntu system. tup seems to work correctly as far as I can tell though 11:37:59 <Vorpal> hm 11:38:03 <Vorpal> any idea? 11:41:11 <elliott_> Vorpal: it'll try to read it, since it uses fuse 11:42:09 <Vorpal> elliott_: hm doesn't stuff need to be suid to use fuse? 11:42:43 <Vorpal> or maybe not 11:42:48 <Vorpal> thought that was required 11:43:27 <Vorpal> but sshfs seems to manage without. 11:44:14 <elliott_> no 11:44:19 <elliott_> that's the whole point of fuse :P 11:44:39 <fizzie> That's not the *whole* point of FUSE. 11:44:47 <Vorpal> oh it is fusermount that is suid 11:45:02 <Vorpal> to be able to unmount I guess 11:47:48 <elliott_> fizzie: Well, at least a quarter of it. 11:51:34 <fizzie> It might have been Debian that came with fusermount normally suid-root but executable only by the 'fuse' group. 11:51:44 <fizzie> Not sure about Ubuntu; here it seems to be for all users. 11:52:15 -!- cheater has joined. 11:57:20 -!- oerjan has joined. 11:57:21 <fizzie> Incidentally, what's it use fuse for? 11:58:00 <Vorpal> fizzie: you mean tup? 11:58:03 <Vorpal> tracking deps I think 11:58:46 <Vorpal> fizzie: since it can see every file opened by commands it execute that way. Unlike a LD_PRELOAD it would work even for static binaries 11:59:54 <oerjan> elliott_: i see the spelling in this channel has gründ to a halt. 12:00:13 <elliott_> oerjan: have you got to the nazi game yet 12:00:24 <elliott_> fizzie: Vorpal got it right; fuse is also more portable than LD_PRELOAD. 12:00:34 <oerjan> ...i was planning to skip the rest of the logs 12:00:46 <elliott_> oh, that's after the game 12:00:53 <elliott_> oerjan: no, you totally shouldn't :D 12:01:01 <oerjan> eek 12:01:11 <Vorpal> elliott_: hm I thought fuse was linux only 12:01:24 <elliott_> Vorpal: no 12:01:39 <Vorpal> elliott_: what OSes does it support then? FreeBSD? Windows? OS X? 12:01:52 <elliott_> OS X yes. BSDs I think so yes. 12:02:16 <elliott_> http://fuse4bsd.creo.hu/ http://www.netbsd.org/docs/puffs/ "FUSE compatibility was added within pkgsrc, and besides the required infrastructure work a number of FUSE packages were added to pkgsrc in the new "filesystem" category. Example packages that are currently available include: 12:02:16 <elliott_> " 12:02:30 <oerjan> <elliott> - no cute aminals!!!!!!!!!!!!&^ 12:02:31 <fizzie> And the Hurd. 12:02:41 <elliott_> fizzie: Ah yes. 12:02:44 <oerjan> but hitler loved animals! more than people, probably. 12:02:54 <elliott_> oerjan: we're better nazis than the nazis, basically. 12:05:46 <oerjan> the perfect nazi: kills everyone else for not being perfect. then kills emself for having no friends. 12:06:31 <elliott_> how did you discover the game's true plot 12:06:53 <oerjan> i have a nose for perfection. 12:07:04 <elliott_> what a coincidence. i have a nose. 12:09:20 <oerjan> i am not convinced browsing this makes me a better person. 12:09:51 <elliott_> oerjan: if you don't read it, how will you ever find the evidence to ban me with 12:18:12 <oerjan> well it is important for children to be able to play games so they don't grow up into serial killers. oh wait... 12:18:47 <elliott_> :D 12:30:34 <oerjan> i somehow think that the theory that tolkien's works were really written by william shakespeare has not got much exposition before. 12:31:46 -!- Ngevd has joined. 12:32:03 <Ngevd> Hello! 12:32:10 <oerjan> maybe i should repeat that. 12:32:21 <oerjan> <oerjan> i somehow think that the theory that tolkien's works were really written by william shakespeare has not got much exposition before. 12:32:36 <Ngevd> Yes 12:33:41 <Ngevd> Also, I found someone who's heard of elliott_ 12:33:44 <Ngevd> That is, our elliott_ 12:33:52 <Ngevd> Not the elliott_ who kicked my friend in the fac 12:33:53 <Ngevd> e 12:34:01 <Ngevd> Who is probably not the same elliott_ 12:34:08 <oerjan> let's hope so. 12:34:39 <Ngevd> He said "Elliott's weirder than you. Somehow." 12:34:51 <oerjan> XD 12:35:10 <oerjan> i sense a plan doomed to failure 12:35:15 <Ngevd> They went to the same first school for a bit, apparently 12:35:51 <oerjan> oops. 12:36:21 <Ngevd> Before elliott_ switched 12:36:26 <Ngevd> To a different school 12:39:48 -!- elliott_ has quit (Quit: Leaving). 12:40:24 <Ngevd> Also, there is nowhere near enough editing of the wiki ATM 12:41:28 <Vorpal> Ngevd: the simple solution to that is to stop banning spambots 12:42:43 <Vorpal> oerjan: oh and it seems iwc didn't stop. :) 12:43:08 <oerjan> *gasp* 12:43:21 <Vorpal> oerjan: are you surprised? 12:43:39 <oerjan> not immensely 12:43:45 <Vorpal> right 12:50:46 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 13:12:28 -!- MSleep has changed nick to MDude. 13:12:31 -!- variable has quit (Quit: I found 1 in /dev/zero). 13:14:46 -!- variable- has quit (Excess Flood). 13:16:59 -!- variable has joined. 13:30:06 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 13:39:27 -!- CakeProphet has joined. 13:39:28 -!- CakeProphet has quit (Changing host). 13:39:28 -!- CakeProphet has joined. 13:41:14 -!- oerjan has quit (Quit: leaving). 13:48:03 -!- Phantom_Hoover has joined. 14:07:24 -!- variable has quit (Excess Flood). 14:10:00 -!- variable has joined. 14:11:21 <CakeProphet> wow there are so many files in this google n-gram data that are just... numbers. 14:11:27 -!- augur_ has quit (Remote host closed the connection). 14:11:42 <CakeProphet> millions of number entries. 14:11:51 <CakeProphet> and currency entries. 14:27:46 <fizzie> Possibly they have scanned some function tables. 14:28:15 <fizzie> Have I mentioned my trigonometric function table book here? I think I have mentioned my trigonometric function table book here. 14:28:29 <fizzie> It's the one that was donated by the good peoples of the US of A. 14:28:38 <CakeProphet> does it have hacovercosine? 14:30:08 <fizzie> "This book has been presented to Finland by the Government of the United States of America, under Public Law 265, 81st Congress, as an expression of the friendship and good will which the people of the United States hold for the people of Finland." 14:30:18 <CakeProphet> lol 14:30:21 <fizzie> I believe not. 14:30:58 <fizzie> It's titled "Seven-place values of trigonometric functions". 14:31:15 <CakeProphet> yes I often think about my deep affinity with the Finnish people. 14:31:36 <fizzie> I suppose everyone in your country does. 14:31:44 <fizzie> It's like a thing with you people. 14:33:56 <fizzie> "Finland Pays Its Debts and Gets Books in Return: ASLA Grants to the Finnish Academic Libraries, 1950-1967; In 1949 the U.S. Congress passed a law (P.L. 81-265) that transformed Finnish payments on the loans acquired from the United States after World War I into a fund. Out of the fund, grants for travel in the United States were given to Finnish researchers and specialists. Finnish institutions of higher education were given grants in order to acquire American 14:33:56 <fizzie> scientific and scholarly books as well as technical equipment." 14:34:29 <fizzie> I got it for I think 2 eur from the "we want to get rid of this stuff" sale of the university library. 14:35:32 <fizzie> Also bought the book about how to (mechanically; without real understanding) convert ALGOL-60 programs to FORTRAN-II/IV programs. It has lots of details on different computers; word sizes and that sort of stuff. 14:35:44 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:42:45 -!- augur has joined. 14:44:47 -!- ais523 has joined. 14:46:27 <CakeProphet> fizzie: needs moar SICP 14:57:22 -!- elliott_ has joined. 14:59:54 -!- copumpkin has joined. 14:59:54 <CakeProphet> I wonder what I should do with these 1.2 gigs of O'Reily books. 15:00:00 <CakeProphet> read them? 15:00:01 <CakeProphet> surely not... 15:06:41 -!- elliott_ has quit (Remote host closed the connection). 15:08:30 <CakeProphet> I'll probably just keep them as reference material. 15:11:45 -!- FireFly has quit (Quit: FireFly). 15:22:55 -!- elliott has joined. 15:23:02 <elliott> http://www.reagan.com/emailintro.html 15:24:17 <CakeProphet> wow software process models sure are bullshit. 15:24:18 <Phantom_Hoover> $40 a year for email? 15:24:19 <Phantom_Hoover> Wow. 15:24:23 <CakeProphet> I am literally learning about nothing. 15:24:49 <CakeProphet> we are staring at charts of imaginary things and talking about imaginary imaginariness. 15:27:08 <CakeProphet> > 40/12 15:27:09 <lambdabot> 3.3333333333333335 15:27:50 <CakeProphet> God Bless Ronald Reagan America 15:27:57 <elliott> Phantom_Hoover: Yes, but it's for conservatives, so they'll either be rich, or act as if they're rich in every situation despite not being rich. 15:28:25 <CakeProphet> that's really not very much money... but it is for email. 15:29:30 <CakeProphet> money better invested in sour punch straws. 15:39:56 -!- monqy has joined. 15:42:53 <elliott> monqy better invested in sour punch straws 15:43:27 <monqy> hi 15:46:12 <CakeProphet> I think I should get a blog 15:46:19 <CakeProphet> so I can write about all the boring stuff I do. 15:46:29 <elliott> i thought that was #esoteric 15:46:35 <elliott> ~SICKKEK BURNENES~ 15:46:40 <CakeProphet> NOEP 15:46:50 <CakeProphet> #esoteric is where I go to SUFFER. 15:46:59 <CakeProphet> also talk about computer science. 15:47:14 <CakeProphet> because apparently all of the people in my life know nothing about that. 15:47:40 <monqy> the science of how to fix my computer 15:47:55 <Ngevd> I signed up for an open university course today 15:47:58 <ais523> monqy: that's electronic engineering 15:48:01 <CakeProphet> monqy: 1) replace all hardware components 2) install linux 15:48:02 <CakeProphet> fixed 15:48:04 <CakeProphet> works every time. 15:48:04 <Ngevd> "Linux: an introduction" 15:48:11 <elliott> Ngevd: oh ear 15:48:12 <elliott> ... 15:48:13 <elliott> dear 15:48:16 <elliott> oh dear deer ear 15:48:17 <Phantom_Hoover> Ngevd, is it MST 432 computerfixing. 15:48:17 <monqy> who needs a course to introduce linux? 15:48:32 <elliott> <ais523> monqy: that's electronic engineering 15:48:37 <Phantom_Hoover> (MS and MST are the only OU prefixes I know.) 15:48:39 <elliott> ais523: that may be a slightly more involved computer-fixing than most people require 15:48:40 <CakeProphet> monqy: no one, everyone is a linux nerd in the entire world. 15:48:40 <CakeProphet> all 15:48:46 -!- augur has quit (Remote host closed the connection). 15:48:51 <ais523> elliott: oh, right, I assumed he meant hardware 15:49:03 <ais523> if it's a software problem, "broken" isn't the word I'd typically use 15:49:06 <elliott> "Have you tried turning it off and on again?" "Oh, that worked. Thanks." "Thank god I got that EE degree." 15:49:40 <CakeProphet> so last night I was moving a bunch of files 15:49:53 <CakeProphet> and it was making my computer annoyingly laggy 15:49:59 <CakeProphet> so I set the nice level of mv to like... 16 I think. 15:50:06 -!- augur has joined. 15:50:19 <CakeProphet> and suddenly a bash process began using all of my CPU cycles, at which point my computer abruptly cut off. 15:50:26 <CakeProphet> what was that about? 15:50:44 <monqy> this is why you should take linux an introduction 15:50:49 <elliott> ahahaha 15:50:53 <CakeProphet> ...I realize 16 is an extreme nice level. 15:50:59 <CakeProphet> but I didn't think it would crash my computer... 15:51:29 <CakeProphet> NO NICE ALLOWED 15:51:34 <CakeProphet> LINUX IS MEAN. :((( 15:51:52 <ais523> elliott: that reminds me of the joke, "$famousperson found someone turning a computer off and on again to try to fix a problem, but it wasn't working. He said 'you can't fix a problem by turning a computer off and on again without understanding what is wrong with it'. Then he turned the computer off and on again, and the computer worked." 15:52:08 <ais523> CakeProphet: what sort of crash? kernel panic? computer turning off? 15:52:14 <CakeProphet> computer turned off 15:52:16 <elliott> ais523: that's a rubbish joke, it's much better as the original koan 15:52:16 <ais523> normally, when a computer abruptly turns off it's because it overheated 15:52:19 <ais523> elliott: indeed 15:52:24 <ais523> but I can't remember the original koan exactly 15:52:26 <CakeProphet> as in like hard cutoff. 15:52:27 <elliott> A novice was trying to fix a broken Lisp machine by turning the power off and on. 15:52:27 <elliott> Knight, seeing what the student was doing, spoke sternly: "You cannot fix a machine by just power-cycling it with no understanding of what is going wrong." 15:52:27 <elliott> Knight turned the machine off and on. 15:52:27 <elliott> The machine worked. 15:53:54 <CakeProphet> ais523: well there was a bash process at 400% CPU 15:53:58 <CakeProphet> right before it turned off. 15:54:10 <CakeProphet> I merely assumed it had something to do with adjusting the nice level of mv. 15:54:20 <CakeProphet> as that's when it happened. 15:54:23 <ais523> that would explain why the computer would be heating up, if had heating issues 15:54:32 <ais523> as full CPU usage tends to make a CPU hotter 15:54:39 <CakeProphet> >_> I would imagine so. 15:54:49 <Phantom_Hoover> Ngevd, wait why are you doing that? 15:54:51 <CakeProphet> it was a very short amount of time. 15:54:52 <ais523> also, you'd expect your CPU to be running at maximum whenever it had a reason to do so 15:54:54 <CakeProphet> a few seconds. 15:55:01 <ais523> nice just controls what processes get priority 15:55:01 <elliott> yay, my issue got fixed 15:55:15 <CakeProphet> ais523: my CPU almost never runs at max 15:55:19 <ais523> but each CPU should be running at 100% all the time the computer needs to make calculations, or you're just being slow for no reason 15:55:32 <ais523> the only reason a CPU shouldn't be running at max is that you have no CPU-bound processes 15:55:32 <elliott> ais523: if you're in the 90s... 15:55:46 <elliott> ITT: Power usage, fan speed, battery life :P 15:55:50 <ais523> elliott: quite a few people seem to have a fear of processes using 100% CPU 15:55:52 <fizzie> CakeProphet: The university bookshop sold SICPs at 5 eur/piece when our "introduction to programming" course switched from Scheme to Python/Java/whatever, and it was no longer a course book. 15:56:05 <CakeProphet> fizzie: wow nice. 15:56:12 <ais523> fizzie: did you buy it? did you already own it? 15:56:13 <elliott> ais523: They usually slow the rest of the system down because Unix. 15:56:16 <CakeProphet> well, except, it's completely free online. 15:56:23 <elliott> Specifically the user interface. 15:56:34 <ais523> elliott: well, it's a matter of task prioritisation 15:56:38 <ais523> the user interface doesn't normally run at RT prio 15:56:40 <Ngevd> Phantom_Hoover: School reccomended I take one 15:56:43 <ais523> arguably it /should/, but it doesn't 15:56:44 <elliott> ais523: It should. 15:56:45 <elliott> :p 15:56:51 <CakeProphet> I suppose mv is IO-bound and not CPU-bound, it was taking about 25% of max. 15:57:03 <elliott> Honestly, not responding to the user is pretty much the worst UI crime you can commit. 15:57:07 <ais523> yep, mv is about as IO-bound as you can get 15:57:18 <elliott> I suppose no interface is truly unresponsive; it'll always respond properly to pulling the power cable. 15:57:19 <CakeProphet> also at the same time I was decompressing roughly 20 gbs of zip files. 15:57:25 <ais523> elliott: I prefer processes to be honest about whether they're frozen or not 15:57:29 <elliott> ais523: I'd say cp is more IO-bound than mv 15:57:33 <elliott> mv is more syscall-bound, on the same device 15:57:34 <CakeProphet> which was still only like 80% usage. 15:57:37 <ais523> hmm, perhaps 15:57:44 <Phantom_Hoover> Ngevd, ...why? 15:57:52 <elliott> ais523: what does that have to do with UI priority? 15:58:11 <ais523> elliott: it depends on what you define as the UI 15:58:19 <CakeProphet> also my laptop is sitting on my bed so the fan is partially obstructed. it would make sense that it overheated abruptly. 15:58:28 <ais523> even currently-modern OSes are pretty good at always having the mouse pointer move, for instance 15:58:31 <ais523> when you move the moues 15:58:33 <ais523> *mouse 15:58:41 <ais523> but if it can't click on anything and have it respond, that's useless 15:58:42 <CakeProphet> there's a side vent as well so it's not like the cooling system is completely obstructed. 15:58:49 <elliott> ais523: That certainly doesn't hold true for me 15:59:06 <ais523> elliott: I'm used to the days of Windows crashing so hard that nothing but the mouse pointer worked 15:59:09 <elliott> I can guarantee on roughly nothing working if the system is taxed enough. 15:59:19 <elliott> Often it's too hung to even switch to a VT. 16:00:52 <CakeProphet> ais523: do you think the nice value had anything to do with the bash process suddenly skyrocketing in CPU usage or perhaps it was a coincidence. 16:01:13 <ais523> I think it was irrelevant 16:01:27 <CakeProphet> still I have no idea what the bash process was doing then... 16:01:29 <ais523> elliott: sometimes I can switch to a VT just fine after alt-sysrq-R, but not before 16:01:33 <elliott> ais523: haha 16:01:35 <CakeProphet> and it occured immediately after changing the priority. 16:01:35 <ais523> so it's nothing to do with being hung, but rather being in an invalid state 16:01:38 <elliott> I don't have a Sysrq key 16:01:45 <ais523> how do you not have a sysrq key? 16:01:47 <ais523> Mac? 16:01:48 <elliott> laptop 16:01:54 <elliott> and mac, yeah :P 16:01:55 <CakeProphet> yeah I don't have one either. 16:01:56 <ais523> every laptop I've ever used had some way to type sysrq 16:02:00 <ais523> this laptop has a physical sysrq key 16:02:04 <ais523> it was some crazy combo on the one before 16:02:12 <elliott> Surely it has a physical print screen key. 16:02:12 <ais523> fn-insert or something 16:02:18 <elliott> Nobody uses SysRq :P 16:02:19 <Ngevd> Phantom_Hoover: your guess is as good as mine 16:02:20 <ais523> elliott: it has PRTSC SYSRQ written on it 16:02:28 <ais523> the SYSRQ is arguably slightly more prominent 16:02:40 <elliott> PRTSC. Really. 16:02:41 -!- augur has quit (Read error: Connection reset by peer). 16:02:43 <ais523> also, alt-sysrq-k is the only method I have of logging out on this system 16:02:53 <elliott> ouch, why 16:03:07 -!- augur has joined. 16:03:18 <CakeProphet> I actually have no idea what sysrq does... 16:03:22 <ais523> elliott: because I removed the logout widget to save the screen corner 16:03:35 <ais523> I believe in Fitts' Law much like you do 16:03:49 <ais523> although I'm only actually using two screen corners because of a shortage of things to put on the other two 16:04:18 <elliott> I've started to see Fitts' law as more of an argument for the inefficiency of mice in general than for their efficiency in special cases (not that I think the traditional command-line interface is much more productive on its own) 16:04:24 <elliott> like, on the one hand, corners are really easy to access 16:04:32 <elliott> on the other hand, almost all locations on the screen are difficult to 16:04:37 <elliott> (access) 16:04:49 <ais523> I agree with you, there 16:05:11 <ais523> I tend not to use mice for anything much other than web brosing 16:05:13 <ais523> *browsing 16:05:28 <CakeProphet> my computer should have some fancy interface that tracks my eye movements. 16:05:31 <CakeProphet> as the mouse. 16:05:33 <ais523> although I make sure I have my taskbar in a consistent order, I mostly use alt-tab to change windows 16:05:43 <elliott> CakeProphet: it exists 16:05:45 <ais523> CakeProphet: it exists, but clicking is frustrating with that 16:05:52 <elliott> it's rather painful, though, which is why only disabled people tend to use it 16:05:57 <elliott> painful in the annoying sense 16:06:40 <ais523> elliott: what's your opinion on dwell-click? 16:06:48 <ais523> the idea that you can click a mouse by moving it to a stop from a particular direction 16:06:53 <ais523> and to avoid clicking, you move it to a stop from the other direction 16:06:53 <elliott> ais523: it irritates me :P 16:06:57 <elliott> but that says little 16:07:04 <ais523> most things irritate you 16:07:04 <CakeProphet> oh, no in the painful sense? no scary cables that you have to inject in your brain? 16:07:07 <elliott> I think your mouse being a ticking time bomb unless you constantly move it around is a bad idea in general, though 16:07:08 <CakeProphet> *not 16:07:14 <ais523> have you tried it? I haven't 16:07:28 <elliott> CakeProphet: it just uses a webcam 16:07:32 <ais523> I think I have a higher tolerance to pain than many people; I even got decent at playing Enigma with a touchpad 16:07:35 <elliott> ais523: there's a site that does it :-) 16:07:35 -!- augur has quit (Ping timeout: 256 seconds). 16:07:36 <elliott> (flash) 16:07:39 <ais523> higher tolerance to bad UI pain, I mean 16:07:43 <elliott> and yells at you if you click 16:07:57 <elliott> it was on the ~~social networking~~ sites a few years ago 16:07:59 <ais523> I find I'm inconsistent about whether I tap-click or button-click 16:08:02 <CakeProphet> mice are good. mice are fine. mice + shell = sufficient 16:08:03 <elliott> me too 16:08:11 <cheater> ais523: what is Enigma? 16:08:13 <monqy> mice suuuuuuuuuuuuuuuck 16:08:15 <ais523> cheater: a game 16:08:20 <ais523> well, there are several games with that name 16:08:22 <monqy> mmmm enigma., been ages since i've played that 16:08:25 <elliott> cheater: a mystery wrapped in an enigma wrapped in a riddle 16:08:29 <CakeProphet> touch screen is a minor improvement to a mouse perhaps. 16:08:30 <ais523> the one I'm thinking of is http://enigma-game.org 16:08:35 <monqy> can't imagine it with a atouchpade though 16:08:39 <ais523> it has the worst trailer of anything ever, it's so bad it's hilarious to watch 16:08:46 <elliott> you can play anything with a touchpad, it just makes you more hardcore 16:08:46 <monqy> yeah I was thinking of that one too 16:08:50 <ais523> CakeProphet: playing Enigma with a touchscreen would be basically impossible 16:08:55 <cheater> ais523: can you tell me a short description? i cannot open the web page 16:08:57 <ais523> it works much better with a tilt sensor than touchscreen 16:09:00 <cheater> even if you copypaste from there. 16:09:02 <elliott> http://www.nongnu.org/enigma/index.html 16:09:08 <CakeProphet> ais523: oh I was kind of not in that thread of discussion. 16:09:14 <CakeProphet> the Enigma one. 16:09:24 <CakeProphet> just discussing physical interfaces still. 16:09:33 <ais523> cheater: you control a marble by accelerating it with your mouse; you have to solve puzzles, mostly by colliding your marble into things that interact with the puzzles 16:09:41 <cheater> oh that! 16:09:41 <CakeProphet> yes gaming + touchscreen = smudgey screen 16:09:43 <cheater> i remember it 16:09:47 <cheater> it was fun. 16:09:56 <monqy> oh god this movie clips thing 16:10:05 <fizzie> ais523: I already owned it; didn't buy a second copy, ineiros bought a couple (5?) though to give to people. 16:10:17 <monqy> this is beautiful 16:10:28 <elliott> monqy: It's art. 16:10:28 <CakeProphet> I love this loud encoding fuck ups in this class recording 16:10:43 <ais523> enigma has different floors ! 16:10:45 <Phantom_Hoover> <ais523> it has the worst trailer of anything ever, it's so bad it's hilarious to watch 16:10:49 <elliott> monqy: you're talking about http://www.youtube.com/watch?v=WV9l26Y-mBk right 16:10:50 <elliott> because 16:10:51 <elliott> that's the good one 16:10:51 <Phantom_Hoover> Wait, how awful is the trailer/ 16:10:51 <CakeProphet> "-soft professor mumble- -mumblemumble- EEEEEEEERK -mumblemumble- EERK" 16:10:56 <elliott> ais523: oh no they're making a trailer two 16:10:57 <elliott> Phantom_Hoover: http://www.youtube.com/watch?v=WV9l26Y-mBk 16:10:58 <elliott> Phantom_Hoover: this awful 16:11:07 <elliott> sit through all 9 minutes to win a prize (the prize is giving up on life) 16:11:10 <Phantom_Hoover> Oh my god this is amazing. 16:11:13 <ais523> elliott: that's the one I'm talking about, thanks for digging up the link before I did 16:11:29 <elliott> or meditate 16:11:30 <elliott> in the holes 16:11:41 <ais523> that game is really really bad at advertising 16:11:44 <elliott> tutorial 16:11:45 <elliott> example 16:11:57 <ais523> and the tutorial doesn't really fill people with confidence 16:11:59 <elliott> move 16:12:00 <elliott> the blocks 16:12:01 <elliott> 16:12:02 <elliott> well 16:12:02 <elliott> agh 16:12:06 <elliott> i musnt't quote every line from this 16:12:07 <elliott> but it's so good 16:12:20 <Phantom_Hoover> Move block! 16:12:24 <Phantom_Hoover> For great justice! 16:12:27 <elliott> ais523: do the people behind this actually think it's good btw 16:12:35 <ais523> I don't know 16:12:43 <elliott> beware of unfriendly actors... i met an unfriendly actor once 16:12:43 <monqy> have you seen the death stones 16:12:45 <ais523> my guess is yes, because they wouldn't be promoting it so heavily otherwise 16:12:45 <Phantom_Hoover> Unfriendly actors! 16:12:46 -!- Ngevd has quit (Ping timeout: 276 seconds). 16:12:47 <elliott> he was in a movie but he was mean :( 16:13:03 <elliott> have you seen the death stones... 16:13:10 <monqy> help 16:13:12 <monqy> what's that 16:13:13 <monqy> ? 16:13:21 <ais523> move the blocks well … 16:13:31 <elliott> sweet bro and hella enigma 16:13:37 <elliott> help 16:13:37 <elliott> 16:13:38 <elliott> 16:13:39 <elliott> what's that 16:13:39 <Phantom_Hoover> Hellanigma. 16:13:39 <elliott> ? 16:13:41 <elliott> oh my god it actually 16:13:42 <elliott> just said that 16:13:45 <ais523> indeed 16:13:46 <elliott> it actually just said "help" 16:13:49 <elliott> on a line of its own :') 16:14:15 <Phantom_Hoover> It's so gloriously awful. 16:14:18 <elliott> this chess example is very foreboding, musicwise 16:14:27 <monqy> enigma includes 16:14:27 <monqy> 16:14:33 <monqy> ... 16:14:35 <monqy> laser games 16:14:45 <ais523> I just noticed that "have you seen the death stones" comes up on a screen with no death stones 16:14:51 <elliott> ais523: i think they're just 16:14:52 <elliott> reminding you 16:14:55 <elliott> of the screen like a minute prior 16:14:58 <monqy> oh it was 16:14:59 <monqy> laser 16:15:00 <monqy> games 16:15:01 <monqy> ... 16:15:02 <CakeProphet> this dance is very unpalatable, science-wise. 16:15:02 <monqy> oops 16:15:02 <elliott> "oh hey, there were death stones there... pls rewind" 16:15:02 <ais523> this thing has new depths of brilliance every time I watch it 16:15:14 <elliott> in some ways, this is the best possible trailer 16:15:31 <CakeProphet> portal chess is the best game 16:15:39 <elliott> oh man this level looks hard 16:15:43 <elliott> i don't want to try to reah the other side 16:15:45 <elliott> i'm happy with the side god gave me 16:15:46 <ais523> elliott: which one? 16:15:51 <elliott> ais523: four minutes fifty seconds in 16:15:58 <elliott> bunch of disappearing/spiralling platforms 16:16:04 <ais523> I haven't got there yet, I'll tell you my opinion when I get there 16:16:13 <elliott> do you find the message 16:16:18 <CakeProphet> elliott: shame you're not playing portal chess then you could just drump through your knight's nose. 16:16:20 <monqy> ... 16:16:33 <elliott> i like how it picked up a bunch of money 16:16:35 <elliott> went into the next room 16:16:38 <elliott> and just dropped it for no reason 16:16:46 <Phantom_Hoover> welcome to this maze! ... 16:16:47 <monqy> welcome 16:16:50 <ais523> the chess example is just there because people used to have no idea how to operate chess stones, IIRC 16:17:11 <monqy> it stopped being onscrieen before i could transcribe it 16:17:11 <Phantom_Hoover> This is a temple full of gold! 16:17:14 <monqy> why is this so great 16:17:31 <elliott> this is the best possible thing we could all do together for 9 minutes 16:17:44 <Phantom_Hoover> oh no an unfriendl actor 16:17:59 <elliott> i love how enigma water looks nothing like water 16:18:06 <elliott> it just looks like blue floor 16:18:09 <elliott> do you like puzzles? 16:18:11 <elliott> .puzzles puzzles.. 16:18:40 <ais523> elliott: oh right, I reached the level you were talking about, it's pretty hard, although not the hardest level in the set of all levels similar to it 16:19:04 <elliott> who edited this thing did they think we cared about this section of gameplay minutiae 16:19:09 <elliott> or would have any idea what's going on 16:19:23 <elliott> being 16:19:23 <elliott> lost 16:19:24 <elliott> in Enigma 16:19:25 <elliott> Space 16:19:26 <elliott> 16:19:26 <elliott> ? 16:19:33 <monqy> me too 16:19:47 <ais523> elliott: I can't explain it, so don't ask me to 16:20:05 <elliott> what logo is that 16:20:06 <elliott> it's like 16:20:07 <elliott> the un logo 16:20:08 <elliott> but 16:20:09 <elliott> not 16:20:12 <CakeProphet> ANASIDHAISUDHQWIEUHASIUDHQWEIUHASOPAPQPWOEOWPEPWPESODJGFKDKDSKF 16:20:13 <elliott> thomas bernhardt why 16:20:24 <monqy> hi CakeProphet 16:20:33 <monqy> wacro? 16:20:36 <ais523> towards the end, they're just showing off some of the highest-rated levels, and completely missing the reasons /why/ they're highest-rated 16:20:37 <CakeProphet> xxxxtomasxxburnxxheartxxxx 16:20:53 <monqy> ais523: beautiful 16:21:14 <elliott> http://www.youtube.com/watch?v=vXcpU9RNxuc 16:21:15 <monqy> watching magic moments of enigma 16:21:16 <elliott> engrossing 16:21:22 <ais523> magic moments is considerably better than the trailer 16:21:26 <monqy> oh :( 16:21:40 <elliott> ais523: do you click links nowadays, i'd like your opinion of that linked level 16:21:50 <CakeProphet> portal chess is considerably better than all games. 16:21:56 <CakeProphet> the best at game. 16:21:59 <ais523> I'm not clicking that, but only because it'd open in Firefox, which doesn't have Flash added 16:22:03 <elliott> more like chortal pess :/ 16:22:04 <ais523> I'll open it in a browser that does have Flash support 16:22:19 <monqy> magic moments has good music 16:22:21 <CakeProphet> elliott? more like liotioeltot 16:22:24 <monqy> if only the trailer had this music 16:22:25 <ais523> oh, "bowling", it's a stupid annoying luck-based level 16:22:35 <ais523> I hate it 16:22:54 <elliott> what about a bayou by you 16:22:55 -!- augur has joined. 16:22:57 <elliott> that one also has a funny playthrough 16:23:04 <ais523> I don't think I've solved that one 16:23:07 <elliott> http://www.youtube.com/watch?v=sa2_TpYJ_Ug 16:23:09 <elliott> six seconds :P 16:23:30 <ais523> or, maybe I have 16:23:34 <ais523> but not that fast 16:23:47 <elliott> lol 16:23:47 <Phantom_Hoover> why is there a scantily-clad anime girl in the suggestions thing at the end 16:23:48 <ais523> Alain Busser has a tendency to make huge, artistic levels that are quite easy once you know the solutions 16:23:52 <ais523> also, excessively mathematical ones 16:24:03 <elliott> Phantom_Hoover: That is the true spirit of Enigma. 16:24:17 <elliott> Truspirenigmat. 16:24:21 <elliott> Wow, it's German. 16:24:42 <CakeProphet> enjoy baby 16:24:43 <Phantom_Hoover> Where's this magic moments video? 16:24:46 <ais523> Engima is indeed originally German 16:24:52 <elliott> ais523: So is truspirenigmat. 16:25:00 <ais523> but it's translated into a lot of langauges 16:25:02 <ais523> *languages 16:25:04 <elliott> It's quite a German game, Enigma. Not quite sure why I say this. 16:25:07 <monqy> http://www.youtube.com/watch?v=umbOX3DwxeQ magic moments 16:25:13 <ais523> I feel so honoured having text strings I wrote translated into other languages 16:25:18 <elliott> :') 16:25:27 <ais523> I see a french translation of something in one of my levels, and bask in it 16:25:29 <elliott> did they translate it into non-ais english 16:25:40 <elliott> "original string had too many nested parentheses and overflowed enigma's string buffer" 16:25:46 <monqy> i want enigma in zzo english 16:25:49 <ais523> they even translated the original English into non-ais English 16:26:00 <elliott> monqy: it would be too much 16:26:01 <elliott> too much 16:26:02 <ais523> by adding spaces before punctuation marks other than full stops 16:26:15 <elliott> ais523: that's French english :P 16:26:28 <ais523> one level I wrote is called "Choices, choices ..." 16:26:34 <ais523> I think it's a ... not a … 16:26:43 <ais523> but I'm not completely sure, I find them hard to tell apart 16:28:01 <ais523> btw, the addition of "rhythm of space" at the end of the trailer was just trolling, as the level isn't actually /in/ the released version of Enigma 16:28:23 <ais523> also, it's a really trollish level, it's just a really really big maze with lots of backtracking and items and deathtraps 16:28:31 <ais523> I don't like big levels that are easy to die in / make unwinnable 16:28:48 <elliott> `quote flip a coin 16:28:50 <HackEgo> 610) <monqy> game where you flip a coin but it's really really big 16:28:52 <elliott> enigma needs that 16:29:06 <ais523> unless such deaths/unwins are always the player's fault and the player has enough information to work it out in advance 16:29:24 <ais523> (that's what I did with "Choices, choices ..." where you get to see the entire level before you start playing, and there's basically no hidden information) 16:29:46 <elliott> So how's the Enigma AI scene 16:29:50 <elliott> I guess the Lua stuff kinda messes with that 16:29:54 <ais523> I don't think it exists 16:30:00 <elliott> It should 16:30:07 <ais523> and quite a lot of levels don't need custom Lua 16:30:17 <ais523> I avoid it in my levels where I can and still meet the concept of the level 16:30:59 <ais523> sometimes dynamic scripting is unavoidable, but I hope to avoid it where possible 16:31:15 <ais523> (I use Lua to /generate/ the levels quite a lot, so that a level isn't the same every time, but that's different as everything still acts like you'd expect it to) 16:37:41 <elliott> does anyone know a good way to do a human-consumable diff of binary files? 16:38:08 <ais523> elliott: od then diff works if the difference is a multiple-of-n bytes long (where n is the line width) 16:38:22 <elliott> it's probably nit 16:38:23 <elliott> not 16:38:29 <elliott> I'd prefer it be agnostic to such "relocations" 16:38:32 <elliott> this is for human debugging 16:39:16 <ais523> hmm, someone came up with a known-plaintext attack against SSL and TLS a couple of days ago, and I only found a reference to the story today 16:39:43 <ais523> and apparently known-plaintext is generally possible to pull off atm, even though it's not the easiest sort of attack to manage 16:40:01 <elliott> ouch 16:40:23 <elliott> oh no, SUA is deprecated 16:41:01 <ais523> (apparently the usual trick is an XSS-like thing that injects a huge amount of plaintext) 16:41:47 <elliott> but seriously, human-readable binary diff? anyone? no? 16:42:13 <ais523> what about this: express both binaries as images, diff by eye 16:42:13 <CakeProphet> 1) translate binaries to human-readable format 2) apply diff 16:42:32 <ais523> I suppose that if binary = executable, disassemble + diff might work 16:42:55 <elliott> ais523: Images aren't relocation-insensitive 16:42:55 <elliott> as in 16:42:57 <elliott> if one file is 16:42:59 <elliott> A B C D E F G H 16:43:00 <elliott> and the other is 16:43:03 <elliott> A B C F G H 16:43:05 <elliott> I want it to look like 16:43:15 <elliott> A B C D E F G H 16:43:15 <elliott> A B C F G H 16:43:16 <elliott> as in 16:43:22 <elliott> it "re-synchronises" 16:43:32 <ais523> yep, getting output in that format seems rather harder 16:43:33 <elliott> so that e.g. a missing field doesn't cause cascading diff errors 16:43:34 <elliott> indeed 16:44:42 <ais523> well, I mean, with visual diffing, you'd see it as a translation in the pixels of an image after a certain point, but not before 16:44:56 <ais523> are you going to admit the exact use-case? someone might have a better idea 16:44:59 <elliott> indeed, but that's still hard to diff 16:45:07 <elliott> ais523: sure, my serialisation of packets is wrong 16:45:09 <elliott> or my deserialisation 16:45:09 <elliott> basically 16:45:13 <elliott> parse | unparse =/= id 16:45:17 <elliott> and I want to see where my errors are 16:45:25 <ais523> (the thing I love about this channel is that "how can I do X using Y?" isn't answered "don't use Y" but "that seems weird, here's the best way I can think of..." 16:45:27 <ais523> ) 16:45:32 <ais523> ah, I see 16:45:33 <elliott> parse | print-readable produces very reasonable output and it's gone through many debugging cycles 16:45:37 <elliott> but serialisation hasn't been tested at all 16:45:40 <fizzie> ais523: "Came up with -- a couple of days ago" -- the known-IV weakness has been known since 2004, and was fixed in TLS 1.1 in 2006. 16:45:42 <elliott> and I'm not sure where to start 16:45:46 <ais523> and you're serialising to a binary format? 16:45:51 <elliott> yep 16:45:54 <ais523> fizzie: well, maybe people actually found a way to exploit it 16:45:57 <elliott> the smallest packet dump I can get is like ten kilobytes 16:46:02 <ais523> and that's what caused the stories to start 16:46:16 <ais523> parse is a filter from text to binary? 16:46:27 <fizzie> ais523: http://eprint.iacr.org/2004/111.pdf from 2004 describes a practical way to exploit it, using a browser plugin; it's very likely to be pretty much exactly like the currently hyped thing. 16:46:57 <elliott> ais523: no, parse is binary to memory-format 16:47:06 <elliott> unparse is memory-to-serialisation 16:47:22 <ais523> ah, I see 16:47:34 <ais523> so the input itself is binary, and the output of unparse is meant to be the same binary format 16:47:42 <ais523> but the file you get is different, and you're not sure how 16:47:45 <elliott> yep 16:47:51 <elliott> and I'm pretty sure the parse type is right 16:48:05 <ais523> it's probably best to start off by seeing how many bytes are different, I think 16:48:09 <ais523> and whether it's substitution/insertion/deletion 16:48:19 <ais523> od with a width of 1 and diff would work for that, I think 16:48:55 <Phantom_Hoover> elliott, convert it into 1s and 0s and then use normal diff. 16:49:02 <ais523> meanwhile, the US government has recently made it illegal to patent tax loopholes 16:49:10 <ais523> or possibly impossible 16:49:22 <elliott> Phantom_Hoover: diff is line-based 16:49:22 <fizzie> It's also (to pick some nits) not exactly a known-plaintext attack. If anything, it could be sort-of called a chosen-plaintext attack. 16:49:29 <Phantom_Hoover> Pfft. 16:49:39 <Phantom_Hoover> Put each byte on its own line. 16:49:43 <elliott> Hmm, what we really need is a diff that works on entirely freeform data, not line-based. 16:49:46 <elliott> And does that resynchronisation. 16:49:53 <elliott> Then you can just do it on one-line hexdumps. 16:50:02 <elliott> And reformat the output to have a nice number of columns. 16:50:20 <ais523> <Phantom_Hoover> Put each byte on its own line. <-- what I was saying 16:50:32 <ais523> fizzie: hmm, good point 16:50:36 <ais523> that's even harder than known-plaintext 16:51:06 <ineiros> fizzie: I think I bought more than 5 SICPs, actually; since I still have several. I think I've given at least one as a gift, and sold 3. 16:52:00 <fizzie> ineiros: Have you made any money with your SICP speculation? 16:52:04 <elliott> I should probably learn how to use od instead of hexdump. 16:52:17 <elliott> ais523: I'm tempted to write that free-form diff even though I'm sure it exists. 16:52:38 <ais523> od has a reasonably unintuitive options syntax 16:52:43 <ais523> I keep checking the manpage whenever I use it 16:53:31 <elliott> That's POSIX for you. 16:53:34 <Phantom_Hoover> http://jpfo.org/ 16:53:35 <Phantom_Hoover> I... 16:53:51 <elliott> ah 16:54:16 <elliott> this uh 16:54:18 <elliott> this is a thing 16:54:24 <monqy> Gun Control Kills Kids! 16:55:05 <monqy> is this for real 16:55:09 <elliott> "antis - mental problem?" 16:55:14 <monqy> http://jpfo.org/images07/buster-350-pre-png-aliased.gif 16:55:21 <elliott> ok this is just like the most bad thing I don't think we even have anything to discuss about this 16:55:25 <elliott> next topic 16:55:41 <elliott> ais523: does od have an equivalent to hexdump's -C? 16:55:46 <elliott> it doesn't look like it 16:55:51 <elliott> -C being "give me reasonable output" :-P 16:56:04 <elliott> Oh man, od can do floats. 16:56:14 <ais523> what do you mean by "reasonable"? 16:56:33 <ais523> -t x1z is what duplicates most hexdump programs I've seen 16:56:57 <elliott> ah, thanks 16:57:02 <elliott> 0113400 a0 59 7f 41 d5 99 93 01 0d 40 72 af 8d 8b a1 fd >.Y.A.....@r.....< 16:57:02 <elliott> 0113420 9e 40 00 00 40 44 ec af c5 ce 90 >.@EO\)...@D.....< 16:57:02 <elliott> 0116700 12 01 0b 40 72 b6 7d 5b b1 b7 f0 40 44 80 00 00 >...@r.}[...@D...< 16:57:04 <elliott> something went wrong there... 16:57:11 <elliott> (view in monospace) 16:57:12 <cheater> does anyone know how to make dwarf fortress use a bigger font? 16:57:35 <ais523> super-mousewheelup? </troll> 16:57:37 <elliott> ais523: -w 1 seems /enlarge/ the number of bytes per line... 16:57:44 <elliott> ais523: also, it's actually scroll wheel up 16:57:49 <elliott> so you were almost right 16:57:56 <ais523> heh 16:58:04 <ais523> super-mousewheelup is my keybinding for telling the WM to zoom in 16:58:08 <elliott> oh, I just needed to omit the space between flag and argument, sigh 16:58:13 <ineiros> fizzie: I think I paid 20€ for my own copy, and it may be that I asked 20 € for the copies I sold, so I guess that I'm at least even. 16:58:31 <cheater> ais523: i think that doesn't work 16:58:43 <fizzie> "Adding a z suffix to any type displays printable characters at the end of each output line." <- whoa, I didn't know it did that. 16:58:49 <ais523> cheater: well, you're probably using a different compositor to me 16:58:53 <elliott> is cheater actually disregarding my correct answer just because it's from me 16:59:07 <ais523> cheater: elliott suggested mousewheelup without super, I don't know if it works or not 16:59:18 <cheater> there was a correct answer from him? 16:59:22 <cheater> let me read the scrollback 16:59:30 <fizzie> Unfortunately the "z" in od is not in POSIX od. 16:59:30 <elliott> oh, diff -y is cool 16:59:32 <cheater> that actually needs announcement 17:00:04 <cheater> no, his answer was not correct 17:00:07 <cheater> it was just a troll 17:00:10 <elliott> lol 17:00:18 * elliott adjusts his dwarf fortress font size a bit 17:00:23 <elliott> i so mad 17:00:35 <cheater> mouse wheel up makes it smaller, mouse wheel down cannot make it any bigger than it is already 17:01:09 <elliott> then one character should fill about a fifth of your screen so I'd say it's big enough 17:01:58 -!- sllide has joined. 17:02:42 <elliott> ais523: thanks, I think this will let me pinpoint the solution 17:02:48 <elliott> diff -y --suppress-common-lines is great 17:03:01 <ais523> what does --suppress-common-lines do? or -y, for that matter? 17:03:14 <elliott> -y is side-by-side view 17:03:17 <elliott> --suppress-common-lines does what it says on the tin 17:03:22 <ais523> yep, fair enough 17:03:30 <elliott> I'm not entirely sure why it's in diff, but oh well 17:03:34 <ais523> do the context options interact with that in any way? 17:03:38 <elliott> not sure 17:05:01 <elliott> hmm, now what I really need is this annotated with the pretty parsed versions of the packets :) 17:05:06 <elliott> maybe I should just teach Wireshark the Minecraft protocol 17:05:19 <fizzie> mchosting again? 17:05:56 <elliott> fizzie: Yes, I'm just converting the test program to iterIO and checking that my serialisation... you know, works. 17:05:59 <elliott> It seems the answer is "almost". 17:06:25 <fizzie> http://www.highprogrammer.com/alan/games/video/minecraft/minecraft-dissector.html "Minecraft Dissector for WireShark" 17:06:29 <fizzie> It probably: sucks. 17:06:35 <elliott> I don't think I'm going to try that. 17:06:36 <fizzie> Usually that sort of things tend to. 17:06:49 <fizzie> "'m using it to develop a Perl library (Minecraft::Client) for speaking the Minecraft protocol. It's forked from Scott Brooks's dissector. Scott provided a great starting point, but it hadn't been updated to the Beta." 17:12:15 <CakeProphet> elliott: I don't really see how it would be statistically likely for the n-grams to generate an existing word. 17:12:27 <CakeProphet> as each word only contributes one to the frequency of each of its n-grams. 17:19:37 <Phantom_Hoover> http://www.lotrfanshop.com/lotrshop/navel-rings.asp 17:19:39 <Phantom_Hoover> I.................... 17:19:47 <elliott> "Artist's conception of soul joining the fertilized egg at conception." --Conservapedia caption 17:20:26 <Phantom_Hoover> elliott, what page? 17:20:32 <elliott> http://www.conservapedia.com/Human_reproduction 17:20:37 <elliott> Spiritual aspects section is best. 17:20:51 <elliott> "Humans are not able to reproduce alone by budding, parthenogenesis, or self-cloning as some species are capable of." 17:20:53 <elliott> l a m e 17:21:44 <Phantom_Hoover> OK, that is the best artist's conception. 17:22:48 <elliott> It would make a good album cover. 17:23:29 <Phantom_Hoover> http://www.brickshelf.com/gallery/sdarrin/My-Lego-Sets/7251.jpg 17:23:35 <Phantom_Hoover> Oh my god that expression. 17:24:04 <elliott> What are you even doing. 17:24:42 <Phantom_Hoover> help its tv tropes 17:25:33 <elliott> ais523: it turns out that this od diff method is great for getting an initial lead but useless for going further than that :D 17:25:44 <ais523> sounds about right 17:25:55 <elliott> so I'm not sure where to go next, really 17:25:57 <fizzie> What have you broken this time? 17:27:25 <Gregor> `pastelogs thou shalt not 17:27:45 <Gregor> ... ... ... 17:27:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15122 17:28:00 <fizzie> Thou shalt not be impatient with thy logs. 17:28:06 <Gregor> :P 17:28:45 <Gregor> "However, there has never been any evidence presented that the soul can enter the body at any time later than conception." lololol 17:28:49 <elliott> fizzie: mchost's serialisation. 17:29:04 <fizzie> Oh, not de- this time? 17:29:17 <elliott> Gregor: As opposed to all the evidence presented that the soul can enter the body at conception :P 17:29:34 <elliott> fizzie: Yeah, I think de- has been pretty thoroughly tested by this point. 17:29:41 <Gregor> elliott: EXTENSIVE LITERATURE SUGGESTS 17:29:45 <elliott> As opposed to , which hasn't been tested at all. 17:29:48 <elliott> (Prefix words: problematic.) 17:29:58 <ais523> elliott: -? 17:30:02 <elliott> ais523: ? 17:30:04 <elliott> I guess that would wokr 17:30:04 <Gregor> "The ultimate act of intimacy serves to unite the male and female gametes, the sperm and egg, respectively." // this is pretty great too 17:30:05 <elliott> work 17:30:16 <Gregor> Sure sounds ultimately intimate, dunnit. 17:35:56 <Gregor> `logurl 2006-08-08 17:35:58 <HackEgo> http://codu.org/logs/log/_esoteric/2006-08-08 17:36:12 <elliott> logurl: the best. 17:36:18 <elliott> Gregor: I already logurl'd that :P 17:36:49 <Gregor> Uhh, if you did, you did it secretly :P 17:38:38 <elliott> Yep :P 17:40:03 <elliott> Why don't we have applicative-based (de-)serialisation isomorphism combinator things yet again 17:41:42 <Gregor> Talk:Human Reproduction is almost as good as the page. 17:42:15 <elliott> Soul Conception by Human Reproduction 17:42:15 <elliott> http://conservapedia.com/images/9/93/Soul_Conception.jpg 17:42:19 <elliott> Out December on Conservative Records 17:42:26 <Gregor> X-D 17:42:50 <CakeProphet> elliott: so I was thinking for functions on discrete signals it would be best to pass the sample rate as an implicit parameter, yes? 17:42:54 <CakeProphet> regarding signal processing in Haskell. 17:43:11 <CakeProphet> or just as a record field? 17:43:20 <elliott> Implicit parameters are a misfeature and should never be used; nobody at all wants them to stay in the language, and they've been used approximately once. 17:43:32 <Gregor> I DESPERATELY want to shoop that image to make it "crisper" but also shoop in that weird creepy happy face that people like to shoop into things. 17:43:33 <CakeProphet> I feel the implicit parameter would be more convenient though... 17:43:42 <elliott> There's no reason to fix the sample rate at a set value; there's no reason it cannot vary within the same set of data. [(Time,a)] where a is the value being sampled captures that perfectly. 17:43:58 <CakeProphet> okay 17:44:02 <elliott> If there is a fixed sample rate, it can be computed from the constant difference between each Time. 17:44:32 <elliott> I note that the continuous (Time -> a) and discrete [(Time,a)] signal models are exactly the models of Behaviour and Event in FRP. 17:44:49 <elliott> Gregor: Which weird creepy happy face? 17:44:51 <elliott> :awesome:? 17:45:10 <Gregor> elliott: Apparently that's the name for it, according to google :P 17:45:11 <fizzie> The trollface? 17:45:18 <fizzie> It's creepy and happy. 17:45:23 <elliott> FSVO happy. 17:45:26 <CakeProphet> elliott: also you were saying that there would be no need to convert continuous to discrete or vice versa if differing signal representations shared a common interface 17:45:29 -!- augur has quit (Remote host closed the connection). 17:45:29 <elliott> Also Gregor didn't specify "abominable", so... 17:45:32 <CakeProphet> but I'm at a loss as to what interface that would be. 17:45:37 <elliott> http://conservapedia.com/ADA_(programming_language) ;; they miscapitalised Ada. Burn. 17:45:56 <Gregor> http://knowyourmeme.com/memes/awesome-face-epic-smiley <-- this guy 17:45:57 <elliott> CakeProphet: Build them with separate interfaces, find the operations common to both, define laws for them, create typeclass 17:45:58 <Phantom_Hoover> "It is equal in power to Java and is especially popular for programming embedded systems." 17:46:06 <elliott> Or just keep it monomorphic if it works. 17:46:15 <elliott> awesome-face-epic-smiley <- augh 17:46:30 <Gregor> elliott: Don't looka me :P 17:46:53 <Gregor> Anyway, that on the egg :P 17:47:08 <elliott> The program, and detailed technical commentary, appeared in the paper "Sketch of the Analytical Engine Invented by Charles Babbage"[1] that Ada wrote in 1843. The program itself has been reproduced in the "sidebar" on page 79[2]. It can also be seen in the original paper. First there is a list of the six input and output variables that are used: V1, V2, V3, V21, V22 and V23. And the temporary variables V4 through V13. In modern terminology in a s 17:47:08 <elliott> trongly typed language such as C++, we would write something like: 17:47:08 <elliott> int V1, V2, V3; // inputs 17:47:08 <elliott> int V21, V22, V23; // outputs 17:47:10 <elliott> int V4, V5, V6, V7, V8, V9, V10, V11, V12, V13; // temps 17:47:13 <elliott> No Conservapedia stop no. 17:47:16 <elliott> This cannot end well. 17:47:35 <elliott> (She used the old-fashioned multiply and divide signs "[X sign]" and "[dots over - sign]". These seem quaint by today's standards, but they were the symbols that people used at the time. Neither the 026 keypunch nor the ASCII character set had been invented.) 17:47:42 <elliott> So old-fashioned, we use them in our schools today. 17:48:00 <elliott> Or has America standardised on the asterisk multiplication symbol and the slash divisor 17:48:00 <Phantom_Hoover> We use them until we start doing algebra, that is. 17:48:05 <elliott> Phantom_Hoover: Note "schools". 17:48:13 <fizzie> Conservapedia: the best way to learn how to program? 17:48:51 <elliott> [[conservapedia:Ada Lovelace]] is disappointingly light on THAT WIMMEN CAN'T HAVE DONE PROGRAMMED IT SHE MUST HAVE GOT HER HUSBAND TO DO IT. 17:48:52 <ais523> elliott: wasn't Ada invented before capital letters? so it would have been written ADA at the time? 17:48:56 <ais523> *before lowercase letters 17:48:59 <elliott> "Category: Women" 17:49:01 <elliott> Good categorisation. 17:49:24 <elliott> ais523: :) 17:49:28 <Phantom_Hoover> http://conservapedia.com/Evolutionary_algorithm 17:49:32 <CakeProphet> elliott: on conservapedia America is the best place with the best opinions. 17:49:33 <elliott> Phantom_Hoover: oh no. 17:49:33 <Phantom_Hoover> It delivers what it promises. 17:49:53 <elliott> Evolutionary algorithms can be seen as an experimental test of Darwin's theory of evolution, and their eventual failure can be seen as a refutation of that theory[Citation Needed]. 17:49:54 <elliott> :') 17:49:56 <elliott> thank god for integer programming 17:50:02 <elliott> Integerllient design 17:51:01 <CakeProphet> I wonder how many contribute to conservapedia as a parody of conservative opinions. 17:51:27 <Phantom_Hoover> CakeProphet, as a RationalWiki veteran, I can confirm that most of them do. 17:51:48 <CakeProphet> what an utterly bizzare passtime 17:51:58 <elliott> Satire: So WEIRD. 17:52:04 <elliott> Swift. What was WITH that dude? Why did he even write about eating babies. 17:52:10 <elliott> He should have wrote about the virtues of not eating babies. 17:52:13 <elliott> That would be less bizarre. 17:53:09 <CakeProphet> elliott: note that spending large amounts of time contributing to a resource of information with a conservative viewpoint entirely for satirical purposes is quite different from satire itself 17:53:25 <CakeProphet> I was not saying satire is weird. 17:56:37 <ais523> didn't Conservapedia famously threaten to sue trolls? 17:56:40 <ais523> did they ever go through with it? 17:57:18 <elliott> ais523: Their "Commandments" state all sorts of threatening legal things if you do bad things. 17:57:25 <elliott> "Unproductive activity, such as 90% talk page edits and only 10% quality edits to Conservapedia articles, may result in blocking of the account.[7] See the Guidelines for more detail." 17:57:28 -!- augur has joined. 17:57:29 <elliott> Metapedians: literally the devil. 17:57:55 <ais523> they'll probably end up with their infrastructure suffering 17:58:11 <elliott> ais523: They don't have any infrastructure. 17:58:26 <CakeProphet> dadaopedia is the best of the hypothetical opinionated encyclopedias. 17:58:34 <ais523> so how do they, say, decide what to delete? 17:58:40 <CakeProphet> *dadapedia? 17:58:56 <elliott> CakeProphet: Is that where everyone is really boring and tries to ~approach art~ by being ~random~? 17:59:09 <elliott> ais523: Fiat, warring, arguments, personal threats, cabals 17:59:14 <elliott> So, just like Wikipedia, but smaller 17:59:27 <ais523> heh 17:59:46 <ais523> elliott: have you never heard of Bjorn? 17:59:47 <CakeProphet> elliott: not quite. 18:00:07 <elliott> ais523: That didn't approach art, that /was/ art. 18:00:12 <elliott> THE BEST ART. 18:00:14 <CakeProphet> elliott: dadaism isn't really "lol random" 18:01:06 <elliott> CakeProphet: It is when filtered through the internet's awful lens that decides to take, like, discordianism, dadaism, and about ten other things, and mix them together into the most boring concept imaginable. 18:10:50 <CakeProphet> oh, well yes. 18:10:56 <CakeProphet> see: uncyclopedia, for that 18:13:38 -!- sebbu2 has joined. 18:13:38 -!- sebbu2 has quit (Changing host). 18:13:38 -!- sebbu2 has joined. 18:13:59 -!- sebbu has quit (Ping timeout: 260 seconds). 18:14:35 <Phantom_Hoover> <ais523> didn't Conservapedia famously threaten to sue trolls? 18:14:39 <Phantom_Hoover> Better than that. 18:14:59 <Phantom_Hoover> They threatened to report vandals to the FBI and charge them under anti-somethingorother laws. 18:15:30 <cheater> hahahaha 18:15:37 <cheater> nice. 18:20:12 -!- Ngevd has joined. 18:20:18 <Ngevd> Hello 18:20:30 <elliott> hi 18:20:43 <ais523> hi 18:25:12 <ais523> elliott: did you see the extreme negative code documentation page via proggit? 18:25:22 * elliott checks 18:25:44 <ais523> I would comment on it, but can't think of an appropriate comment 18:26:19 <elliott> #N If we don't require 'based', we can't use Based:: module 18:26:20 <elliott> require 'based' 18:26:20 <elliott> #N If we don't require 'synqa', we can't use Synqa:: module 18:26:20 <elliott> require 'synqa' 18:26:20 <elliott> #N If we don't require 'digest/sha2', we can't use Digest::SHA256 18:26:20 <elliott> require 'digest/sha2' 18:26:22 <elliott> I'm sick of it already 18:26:34 <elliott> #N Without :uploaddry, the only way to see what files are going to be uploaded and/or deleted by :upload is to actually call :upload and do the actual uploading and deleting. 18:26:38 <elliott> cool, it's like writing the code you were going to write 18:26:41 <elliott> but in a really awkward tense 18:26:48 <elliott> and without any sort of checking by the computer 18:27:06 <ais523> yep, I think it's the wrong level of granularity 18:27:19 <ais523> some of the comments are useful, but you're going to mentally filter them with that many useless 18:28:03 -!- sebbu2 has changed nick to sebbu. 18:29:47 <elliott> "So far, #reddit has increased my daily traffic 30000%, and still growing. Just under 3000 hits today." -- embedded twitter feed of someone with a post from reddit 18:29:49 <elliott> a whole three thousand hits 18:30:18 <Ngevd> If all my facebook friends visited a page twice, it would have more hits than that 18:30:42 <ais523> elliott: rather than their usual 10 18:30:58 <ais523> Ngevd: how would you get all your facebook friends to do that? 18:31:19 <elliott> ais523: no, usual one tenth 18:31:19 <elliott> I think 18:31:22 <elliott> oh, hmm 18:31:24 <elliott> percentages are hard 18:31:35 <Ngevd> ais523: With great difficulty 18:31:36 <elliott> Ngevd: quick, get all your facebook friends to visit that blog post twice 18:31:42 <elliott> it's for science 18:32:23 <Ngevd> Link? 18:32:26 <fizzie> If all my Google+ friends were to visit a page twice, I'd have 8 hits. And I might even be able to convince them. 18:32:34 <elliott> http://poita.org/index.php/blog/1-latest-news/67-thoughts-on-immutability-in-d, it's boring but WHO CARES 18:32:37 <elliott> It's for science. 18:32:39 <elliott> Sciency science. 18:32:44 <elliott> SPECULATIVE science. 18:33:57 <Ngevd> SOCIAL SCIENCE 18:34:14 <elliott> No no no SPECULATIVE science. 18:34:23 <elliott> We need someone to catch the reference. At least Gregor. Come on, anyone? 18:34:34 <ais523> if all my Facebook friends were to visit a page, it wouldn't make any difference at all 18:34:45 <monqy> whats facebook friends 18:35:01 <Ngevd> Something I have way to many of, monqy 18:35:41 <Ngevd> One thousand eight hundred and twenty five 18:35:44 <elliott> `addquote <ais523> if all my Facebook friends were to visit a page, it wouldn't make any difference at all 18:35:45 <HackEgo> 678) <ais523> if all my Facebook friends were to visit a page, it wouldn't make any difference at all 18:35:53 <ais523> elliott: it's not that good a quote 18:35:58 <elliott> I liked it 18:36:44 <ais523> `quote 18:36:46 <HackEgo> 378) <ais523> the big issue with category theory is that pretty much everything forms a category 18:36:52 <ais523> `quote 18:36:54 <HackEgo> 402) <elliott> Top universities now employ people to watch infomercials all day to find the latest mysteries. 18:36:57 <ais523> `quote 18:36:59 <HackEgo> 17) IN AN ALTERNATE UNIVERSE: <pikhq> First, invent the direct mind-computer interface. <pikhq> Second, learn the rest with your NEW MIND-COMPUTER INTERFACE. 18:37:02 <ais523> `quote 18:37:03 <HackEgo> 181) <ais523> you should be eating corpses more 18:37:06 <ais523> `quote 18:37:08 <HackEgo> 296) <elliott_> I'm a bit 'tarded. 18:37:11 <elliott> That was one alternate universe quote, quality is guaranteed. 18:37:12 <ais523> `quote 18:37:13 <elliott> What, that one isterrible. 18:37:14 <HackEgo> 275) <nddrylliog> are you always careful to have a small enough margin so that it can't contain the proof? <oklofok> nddrylliog: i usually use latex, and make sure my hd is almost full 18:37:16 <elliott> `delquote 296 18:37:18 <HackEgo> ​*poof* 18:37:29 <ais523> heh, I like 275 18:37:32 <ais523> `quote 18:37:33 <HackEgo> 481) <Gregor> oklopol: Why do you have so much experience with hoop-and-stick? :P <oklopol> Gregor: my fetish: learning pointless skills 18:37:38 <ais523> `quote 18:37:40 <HackEgo> 308) <fizzie> file:///home/fis/src/chainlance/tapestats.png -- yes, I think it's nice that way when the edge is always the opponent's flag. 18:37:57 <ais523> why is that in the qdb? 18:38:05 <ais523> some innuendo I haven't spotted? 18:38:19 <fizzie> Ot 18:38:27 <fizzie> It's just mocking my file:/// URI. 18:38:27 <elliott> ais523: linking to file:/// 18:38:33 <ais523> ah, I see 18:38:33 <fizzie> MOCKING. 18:38:37 <ais523> I was even tempted to visit that URL 18:38:43 <fizzie> MOOOOCKING. 18:38:46 <ais523> `quote 18:38:47 <elliott> I clicked open but nothing happened :( 18:38:48 <HackEgo> 347) <ais523> elliott: hey, thinking's easier than using the Internet 18:38:55 <ais523> my client didn't autolink it 18:38:56 <ais523> `quote 18:38:58 <HackEgo> 143) <AnMaster> alise, marble <AnMaster> marbelus 18:39:04 <ais523> I still stand behind my opinion in 247 18:39:06 <ais523> *347 18:39:07 <fizzie> "Firefox can't find the file at /home/fis/src/chainlance/tapestats.png." :( :( 18:39:09 <ais523> `quote 247 18:39:10 <HackEgo> 247) <ais523> I love the way zzo38's comment was cut off after the f of brainfuck <ais523> that's just the most hilarious place to cut it off in a discussion about censorshi 18:39:11 <elliott> fizzie: rip 18:39:29 <elliott> -NickServ- Last failed attempt from: Elliott!~3lli0tt@cpc1-woki6-2-0-cust904.6-2.cable.virginmedia.com on Sep 22 14:31:14 2011. 18:39:31 <elliott> DIEEEEEEEEEEEEEE 18:39:42 <elliott> I need to figure out what nick that guy is using and punish them. 18:40:02 <ais523> elliott: someone else trying to log into your account? 18:40:05 <monqy> 3lli0tt 18:40:08 <ais523> ~3lli0tt is a really awful username 18:40:09 <elliott> ais523: repeatedly 18:40:15 <elliott> this ain't yer username, kiddo >:( 18:40:22 <elliott> I should start using elliott_ and /whoising elliott periodically to catch them 18:40:32 <elliott> or just set up a bot to ghost elliott constantly if it's not logged in 18:40:37 <elliott> that's better than the thirty second grace period 18:40:41 <elliott> five seconds, bam, ghosted 18:41:17 <ais523> hmm, it seems I mentally pronounce 3lli0tt as "threlliott" 18:41:32 <elliott> :D 18:41:32 <fizzie> http://www.youtube.com/user/3lli0tt <- same guy?-) 18:41:33 <monqy> wow in addition to elliottcable and elliottt there is also an elliot 18:41:34 -!- elliott has changed nick to threlliott. 18:41:52 <ais523> I'm not sure whether my pronunciation of it ends with one or two t's 18:41:57 <ais523> because they're pronounced the same 18:42:33 <threlliott> fizzie: this morning i saw thor pawning his hammer at the store 18:42:52 <threlliott> this is the maamazing vidoe... 18:43:05 <threlliott> what is htis......................... 18:43:06 <threlliott> help 18:44:05 <monqy> wow what 18:54:25 <threlliott> ?hoogle read 18:54:25 <lambdabot> Prelude read :: Read a => String -> a 18:54:25 <lambdabot> Text.Read read :: Read a => String -> a 18:54:25 <lambdabot> module Text.Read 18:54:26 <threlliott> meh 18:54:28 <threlliott> ?hoogle Read a => q 18:54:29 <lambdabot> Did you mean: :: q /count=20 18:54:29 <lambdabot> Prelude undefined :: a 18:54:29 <lambdabot> Test.QuickCheck.Batch bottom :: a 18:54:34 <threlliott> ?hoogle Read a => String -> m a 18:54:34 <lambdabot> Prelude readIO :: Read a => String -> IO a 18:54:35 <lambdabot> System.IO readIO :: Read a => String -> IO a 18:54:36 <threlliott> yay 18:54:37 <lambdabot> Network.CGI.Protocol maybeRead :: Read a => String -> Maybe a 18:55:05 <threlliott> :t reads 18:55:06 <lambdabot> forall a. (Read a) => String -> [(a, String)] 19:04:32 <ais523> wow, unexpected: tPCI release the rules for the 2012 Pokémon Video Game Championships, competitive Pokémon players actually like them 19:04:40 <ais523> both halves are unexpected for me 19:09:53 <Ngevd> I need a CLOTH TAPE MEASURE 19:10:20 <pikhq> Y'know, traditional monolithic kernels provide a very *strange* form of abstraction. 19:10:54 <pikhq> They present an environment that is both very low-level *and* has little to do with what common machines actually do. 19:14:31 <pikhq> I mean, they do crazy things like present an idea of memory allocation that is *not* in terms of "Place a page in my address space at address foo, kthx" 19:17:11 <pikhq> And the fuck is with files? It's such a painfully low-level scheme, and yet the low-level abstraction that would make sense would be something along the lines of allocating disk blocks to do with as you will. 19:17:39 <threlliott> I was hating on Unix, files before it was cool. 19:17:58 <pikhq> threlliott: This rant is provided by me trying to get a basic kernel running. 19:18:11 <pikhq> And wondering "why the *fuck* does anyone do anything like this". 19:18:23 <threlliott> Kernels are also an outdated notion, if you're going to whine. 19:19:06 <monqy> @ always and forever 19:19:11 <threlliott> Amen. 19:19:30 <pikhq> Well, yeah, ideally a "kernel" would be a startup routine which would start a scheduler. 19:19:33 <Phantom_Hoover> The @ of Now and Forever. 19:20:46 <threlliott> pikhq: Schedulers are also relatively obsolete, at least in the sense of having one and only one. Usually you'd want some entity using timers to manage the event chains and switch out the operational code of entities underneath its control, but there's no reason a privileged entity might not decide to disable interrupts, shut down the other cores, and manually co-opt out. 19:21:09 <threlliott> All a startup routine should do is restore the previous state; choices like schedulers are a matter of initial configuration. 19:21:16 <threlliott> (This is also simpler than writing a kernel.) 19:22:03 <pikhq> threlliott: Note I didn't say *the* scheduler. 19:22:24 <threlliott> Why should the startup routine concern itself with whether any scheduler exists at all? 19:22:32 <threlliott> It is trivially possible to have a valid configuration without one. 19:22:43 -!- azaq23 has joined. 19:22:47 <threlliott> (Say one privileged, atomic entity drawing garbage over the screen forever.) 19:23:30 <threlliott> > ('a','b') 19:23:31 <lambdabot> ('a','b') 19:23:42 <pikhq> Well, if you've got orthogonal persistance going (which you probably should)... Then it's more a matter of basic startup followed by restoring registers and jumping to the instruction pointer. 19:24:24 <pikhq> Or, more high-level (because why should your programs all be straight machine code?), just calling the continuation. 19:25:59 <threlliott> The startup code should just call a continuation, which will most likely set up persistence code from a fixed (or easily-locatable) location on the disk, and then call another continuation, which will result in the entire system state being restored as part of its execution. 19:26:03 <pikhq> Anyways. Traditional kernel design *seems* to basically be "write a support library for your programming language of choice, write some basic utilities, interrupt handlers, and drivers, and then hand userspace a small handful of comically low-level interfaces into this" 19:27:33 -!- threlliott has changed nick to elliott. 19:28:15 <pikhq> The kernel gets its own damned runtime library, simply because running machine code directly necessitates that there be no more advanced interfaces between the kernel and the program other than, basically, the standard UNIX complement. 19:28:45 -!- oerjan has joined. 19:29:53 <pikhq> And there's rather a lot of work that goes into maintaining this complete seperation, too. I mean, jeeze, a typical kernel maintains a page table per process, and switches them and entirely flushes the TLB on task switch. 19:30:26 <pikhq> Simply because there's no other way of providing sane guarantees with a machine code environment. 19:30:43 -!- tiffnya has changed nick to tiffany. 19:31:04 -!- tiffany has changed nick to tiffany|away. 19:31:16 -!- tiffany|away has changed nick to tiffany. 19:33:08 <CakeProphet> This is really considered evidence of anything? I've heard Mark Levin use the Spanish-inflected pronunciation of Sonia Sotomayor's name (so tow my OR rather than so tow MY er), but nobody would claim that proves he's Catholic or Hispanic. Golgaronok 23:55, 9 April 2010 (EDT) 19:33:12 <CakeProphet> Pronunciation shows an enormous amount about someone's views and history. Obama doesn't use the American pronunciation, and this is telling, since no one else in the public sphere pronounces it in the muslim way but Obama. DouglasA 00:15, 10 April 2010 (EDT) 19:33:16 <CakeProphet> bahahaha 19:33:26 <CakeProphet> conservapedia is so entertaining. 19:33:40 <monqy> is this for real 19:33:50 <CakeProphet> yes. 19:33:50 <oerjan> <elliott> Phantom_Hoover: Yes, but it's for conservatives, so they'll either be rich, or act as if they're rich in every situation despite not being rich. 19:34:10 <Phantom_Hoover> DouglasA... he was a parodist, I think. 19:34:11 <CakeProphet> monqy: Obama apparently pronounces Pakistan "the muslim way" 19:34:26 <CakeProphet> Phantom_Hoover: it's quite convincing and hilarious. :D 19:34:32 <oerjan> reminds me of this newspaper quip i read that american poor don't see themselves as poor, but as temporarily inconvenienced millionaires 19:34:43 <CakeProphet> lolwat 19:34:53 <Phantom_Hoover> Hmm, RW doesn't list him as one, actually. 19:34:54 <oerjan> well the conservative poor, anyway 19:34:59 <pikhq> Impressive, considering there's not a single "Muslim way", particularly for a country as linguistically diverse as Pakistan. 19:35:00 <elliott> oerjan: I was inspired by that, admittedly. :p 19:35:06 <CakeProphet> no, american poor see themselves as poor. american middle class see themselves as poor. 19:35:23 <CakeProphet> ...generally 19:36:06 <oerjan> CakeProphet: the idea here being to explain them supporting the rich by them having some idea that eventually they were going to be rich too. i think. 19:36:14 <CakeProphet> oh... 19:36:34 <elliott> >_< 19:36:44 <oerjan> "american dream" turned into a dogma, was my impression. 19:37:07 <pikhq> I blame Horatio Alger. 19:37:15 <CakeProphet> well they support the rich because rich people (aka conservative politicians) use a batshit stupid retoric they can understand. 19:40:46 <ais523> what's the usual path for per-user webpages on a UNIXy-setup server? 19:40:48 <CakeProphet> like, conservatives get poor people votes because they appeal to religion/intolerance. 19:40:52 <ais523> that is, the in-/home version of /var/www? 19:46:56 <elliott> ais523: public_html 19:47:01 <elliott> it's kind of gross 19:55:04 <ais523> elliott: thanks 19:55:17 <ais523> it seems to be the easiest way to manage what I'm doing for my job atm 19:55:37 <ais523> as it exists on the University computers 19:55:53 <ais523> atm, there's just a .html file there full of PHP tags 19:56:00 <ais523> I'm not sure if it's being served as-is or run through PHP first 19:56:02 * ais523 checks 19:56:22 <ais523> as-is, it seems 19:56:23 <ais523> how awful 20:02:40 <pikhq> What. What. What. 20:02:49 <pikhq> CERN has apparently observed particles moving >C. 20:03:20 <ais523> indeed, they're not sure what's going on either 20:03:34 <ais523> it's definitely not a statistical fluctuation, they repeated the experiment 15 thousand times to make sure 20:03:38 <elliott> hahahaha 20:03:42 <ais523> they're hoping it's some sort of systematic error 20:03:42 <elliott> `addquote <ais523> it's definitely not a statistical fluctuation, they repeated the experiment 15 thousand times to make sure 20:03:44 <HackEgo> 678) <ais523> it's definitely not a statistical fluctuation, they repeated the experiment 15 thousand times to make sure 20:03:49 <elliott> the best kind of excess 20:05:23 <elliott> I really hope that it turns out faster than light travel is possible, it's exactly like Star Trek, all current physics has to be replaced by technobabble... 20:05:32 <elliott> Then we just need Zefram Cochrane and the plot is WELL IN ORDER. 20:05:40 <ais523> apparently neutrinos arrived 60ns sooner than should have been possible, experimental error margin is believed to be 10ns 20:05:41 <elliott> OK so technically we missed some wars and shit but who cares. 20:05:50 <ais523> and if they can run the experiment 15000 times in a row, presumably it's quite easy to reproduce 20:06:51 <pikhq> I'm not sure I'd go with "easy". 20:06:59 <pikhq> "Possible to do consistently", perhaps. 20:07:01 <Phantom_Hoover> Request citation. 20:07:13 <elliott> "If this is confirmed, this is one of the most important moments in science and human history. This should be at the top of the front page for days. 20:07:13 <elliott> Instead it will probably be out paced by a picture of someone's cat. 20:07:13 <elliott> EDIT: just occurred to me, faster then light particles could have interesting consequences in the field of data transmission. something to think about" 20:07:22 <elliott> reddit commentors: So stupid. 20:07:24 <ais523> Phantom_Hoover: the citation's to a Slashdot comment 20:07:39 <elliott> "HEY GUYS THIS IS FTL TRAVEL THIS IS HUGE. EDIT: Whoaa, if you could go faster than light you could... transfer data... faster than light..." 20:07:59 <ais523> so how long is light meant to take to go 732km, anyway? 20:08:28 <elliott> something like 0 20:08:31 <pikhq> 0.0024168918 seconds 20:08:33 <elliott> on a global scale 20:08:39 <elliott> wow that's fast. light is fast. 20:08:55 <pikhq> (methodology: google "732km in lightseconds") 20:08:55 <CakeProphet> <elliott> light isn't fast enough! 20:08:56 <ais523> wow, milliseconds? that's slower than I expected 20:08:58 <Phantom_Hoover> ais523, is that how large CERN is? 20:09:13 <elliott> ais523: Light is actually pretty slow, in honesty. 20:09:21 <ais523> Phantom_Hoover: no, they were sending a neutrino beam to another lab to see how many neutrinos spontaneously changed to other sorts of neutrinos 20:09:25 <ais523> and they arrived early 20:09:25 <Phantom_Hoover> > 300000/732 20:09:26 <lambdabot> 409.8360655737705 20:09:29 <pikhq> ais523: Consider that a decent chunk of Internet latency is from the speed of light. 20:09:32 <elliott> ais523: I mean, consider that at one point, university-to-university internet was getting at half the maximum theoretical light limit. 20:09:44 <elliott> (When that latency vs. bandwidth article was written.) 20:09:45 <Phantom_Hoover> I failed at maths somewhere there. 20:09:46 <pikhq> Though most of it is just hardware and software sucking. 20:09:48 <ais523> elliott: was it using optical fibre? 20:09:49 <elliott> And that was definitely a perceptible latency. 20:09:54 <elliott> ais523: I think copper? Might have been wrong. 20:10:07 <Phantom_Hoover> > 732/300000 20:10:08 <lambdabot> 2.44e-3 20:10:15 <ais523> ouch, if it was copper, that seems like an inconvenient thing to use 20:10:18 <elliott> Point is, light is slow enough to create very noticable latency for us day-to-day. 20:10:26 <elliott> We can't even IRC to Mars :( 20:10:54 <elliott> The moon is a much better target for colonisation because it would be IRCable. 20:11:27 <pikhq> Yeah, the latency would be a *little* high, but TCP would still work just fine. 20:11:29 <ais523> you could text Mars 20:11:31 <Phantom_Hoover> Hmm, this is interesting indeed. 20:11:46 <ais523> pikhq: TCP can handle stupidly high latencies easily; most applications will stop waiting, though 20:11:51 <elliott> ais523: not with the kind of latency modern SMS users expect 20:11:55 <elliott> email, sure 20:12:01 <elliott> but irc is a basic human right and all :P 20:12:02 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/ko638/if_the_particle_discovered_as_cern_is_proven/ 20:12:14 <pikhq> ais523: TCP stacks generally time out after a few minutes. 20:12:20 <ais523> the other weird thing is that the particle alleged to have gone faster than light wasn't even a new one 20:12:35 <ais523> it was a neutrino 20:12:41 <pikhq> Yeah, it's a bit strange that they saw this in something that's at least somewhat well-understood. 20:12:42 <ais523> pikhq: they don't /have/ to, though 20:12:46 <elliott> what is our actual light roundtrip latency to the moon? 20:12:47 <ais523> that's just an arbitrary decision 20:12:48 <elliott> I cba to google it 20:12:52 <elliott> or W|A it 20:12:53 <elliott> or whatever 20:12:54 <ais523> elliott: it's about a second 20:13:04 <elliott> that's not bad 20:13:09 <elliott> you could even browse the web like that 20:13:13 <elliott> although it'd be a bit painful 20:13:15 <Phantom_Hoover> elliott, the moon is like .25 million miles away or something. 20:13:25 <pikhq> Yeah, I've used the Internet on higher-latency links. 20:13:28 <ais523> elliott: you mean pages normally load within a second for you? 20:13:44 <ais523> I'm used to high bandwidth but high latency too 20:13:52 <pikhq> ais523: Um, it would take a second for the TCP connection to initialise. 20:13:55 <elliott> ph 20:13:57 <elliott> oops 20:14:04 <elliott> ais523: yes 20:14:08 <elliott> well 20:14:08 <CakeProphet> elliott: so what's the speed of fast? 20:14:09 <Phantom_Hoover> ais523, looks like it should be ~20 seconds. 20:14:10 <pikhq> Sorry, more than a second. 20:14:11 <elliott> one to three seconds 20:14:15 <ais523> loading anything in Chrome takes minutes 20:14:20 <elliott> searches definitely less than a second 20:14:22 <ais523> *Chromium 20:14:25 <ais523> although that might be an issue 20:14:29 <elliott> ais523: /something/ is wrong with your configuration 20:14:34 <ais523> I only use it for testing websites, and for when I have to log into Google 20:14:46 <ais523> (I used to use Epiphany for that, but Chromium seems like the perfect browser for the purpose) 20:14:57 <elliott> I would live on a terraformed moon, it sounds like fun 20:15:10 <ais523> (what does it say about me that I mistrust Google enough to let them store cookies only on a browser I don't use for anything else) 20:15:22 <Phantom_Hoover> elliott, other than the bit where a terraformed moon is impossible. 20:15:34 <elliott> http://upload.wikimedia.org/wikipedia/commons/0/0d/TerraformedMoonFromEarth.jpg 20:15:37 <elliott> DISPROVEN BY WIKIPEDIA IMAGES 20:15:44 <elliott> I like how they basically just took... a livable planet. 20:15:47 <elliott> And called it the moon. 20:15:56 <elliott> And then tried to emulate craters. 20:15:57 <elliott> So bad. 20:16:05 <Phantom_Hoover> But anyway, see shavera's response in that link I have and — wait we have neutrino beams now? 20:16:19 <ais523> Phantom_Hoover: why is a terraformed moon impossible? semantics pedantry? or something else? 20:16:36 <pikhq> Phantom_Hoover: Particle accelerators can consistently produce neutrino beams. 20:16:41 <elliott> You can certainly create a liveable environment on the moon, even if it's not terraforming 20:16:49 <elliott> Might have to be under a dome though 20:16:51 <ais523> producing a neutrino beam isn't hard for particle physics experimenters 20:16:55 <ais523> it's detecting them that's hard 20:16:57 <Phantom_Hoover> ais523, because I'm very sure you can't have a breathable atmosphere with only 1/6G to hold it down. 20:17:00 <ais523> as neutrinos tend not to interact with things much 20:17:15 <ais523> Phantom_Hoover: terraforming has nothing to do with breathable atmosphere, right? 20:17:23 <elliott> Argh, I'm irrationally leaning on the side of the particles actually going FTL. 20:17:27 <elliott> Just because I want them to be. 20:17:27 <Phantom_Hoover> ais523, it's kind of a prerequisite? 20:17:27 <ais523> you could just use domes or something to keep the atmosphere in 20:17:41 <Phantom_Hoover> ais523, not terraforming. 20:17:50 <CakeProphet> I believe terraforming is the process of making a planet habitable. 20:17:54 <ais523> elliott: well, I take this as evidence for the theory that physics is being made up by some deity over time in order to screw with scientists 20:17:57 <elliott> Phantom_Hoover: what if we lined just underneath the surface of the moon with graviton-infused metals. 20:17:58 <elliott> What then. 20:18:08 <ais523> whenever they run an experiment, it's a case of "shall I make this consistent with existing theories? nah" 20:18:11 <Phantom_Hoover> elliott, you'd win like 50 Nobel prizes. 20:18:20 <ais523> or sometimes "yes", which is probably the default, I guess 20:18:20 <elliott> ais523: Reminds me of a certain Fine Structure chapter. (PH will now mock me for not having finished it yet and probably accidentally spoil me in the process.) 20:18:25 <CakeProphet> What about enough atmosphere for plant life? 20:18:30 <elliott> Phantom_Hoover: They would be the best Nobel prizes. 20:18:38 <Phantom_Hoover> elliott, MITCH IS ACTUALLY SANTA 20:18:42 <elliott> I knew it. 20:18:46 <elliott> Does he kill Dumbledore? 20:19:02 <Phantom_Hoover> No, he doesn't kill anyone. 20:19:10 <Phantom_Hoover> Ching kills the Easter Bunny, though. 20:19:20 <CakeProphet> Voldemort is Tyler Durden 20:19:31 <elliott> http://ompldr.org/vYWhoNg 20:19:32 <elliott> im not 20:19:33 <elliott> good 20:19:33 <elliott> at this 20:19:57 <elliott> i guess i am stuck with help guy now 20:20:19 <elliott> wow this is disturbing 20:20:34 <Phantom_Hoover> "As has been discussed here quite a bit by those smarter than I, the speed of light isn't just the fastest thing in the universe, like a world record. It's the literal maximum. It's what happens when you take your rpg stats and instead of putting most of them in 'time' and a handful in 'distance', as most matter does, you just dump everything into 'distance' and don't give a damn about your internal clock. It's the maxim 20:20:34 <Phantom_Hoover> um speed that information itself can travel through the universe, which, if broken, can upset the laws of causality. I can't fathom what would happen if this result stands up to scrutiny." 20:20:41 <Phantom_Hoover> This is the best explanation of relativity ever. 20:21:21 -!- Vorpal has joined. 20:22:38 <ais523> oh right, the Pirate Party got 15 seats on the Berlin council 20:22:58 <ais523> and they hadn't expected to get nearly that many, that was all the candidates they'd put up for vote 20:23:09 <ais523> (it's a proportional-representation system) 20:24:23 <Vorpal> fuck alsa, I'm unable to figure out how to make it use dmix for one output device but not use dmix for another one 20:24:41 <Vorpal> maybe I'll just go OSSv4, but that sounds like a lot of work 20:25:11 <CakeProphet> jack is good. 20:25:15 <elliott> CakeProphet: ... 20:25:17 <CakeProphet> :) 20:25:49 <Vorpal> CakeProphet: I use jack only when I'm running programs that benefit from it. Such as sound recording programs. 20:26:17 <Vorpal> CakeProphet: anyway it doesn't solve my main issue: one of my sound cards have proper hw mixer, the other one does not 20:26:25 <elliott> Is nobody going to mentioned that JACK doesn't actually go directly to hardware 20:26:35 <Vorpal> elliott: there is that too 20:26:46 <Vorpal> only alsa and oss do that 20:27:14 <ais523> strangely, Linux sound has mostly just-worked for me, with the exception that Pulse sometimes needs restarting for any sound to work, and that ALSA used to have issues detecting headphones 20:28:04 <CakeProphet> I thought jack at least allowed you to route things to different devices and such. 20:28:08 <oerjan> `addquote <elliott> The moon is a much better target for colonisation because it would be IRCable. 20:28:10 <HackEgo> 679) <elliott> The moon is a much better target for colonisation because it would be IRCable. 20:28:13 -!- Ngevd has quit (Ping timeout: 276 seconds). 20:28:16 <Vorpal> another issue: nwn uses oss, and doesn't respect my default sound card as given in /etc/asound.conf (not surprising). No clue how to configure where ALSA's OSS emulation goes 20:28:38 <CakeProphet> obviously I wasn't suggesting he /replace/ alsa with jack. that wouldn't make any sense. 20:29:11 <Vorpal> ais523: I don't use pulse, it is horrible. Especially since it tends to conflict badly with jack in my experience 20:29:43 <Vorpal> IMO pulse doesn't really offer anything worth that extra layer. 20:30:01 <Vorpal> I don't need per-program volume levels for example. 20:30:06 <ais523> I've found per-application volume controls really valuable 20:30:13 <ais523> mostly to balance Flash against Totem 20:30:31 <Vorpal> ais523: why would you listen to two things at once? 20:30:46 <ais523> you might switch between them a lot 20:30:54 <Vorpal> hm 20:30:57 <Vorpal> true 20:31:02 <ais523> and it's important to me to get the volume control range usable 20:31:10 <ais523> I don't want the usable range of the volume control to be all at one end of the scale 20:31:28 <Vorpal> ais523: well for me it varies widely what is reasonable between my pro audio headphones and my cheap creative headset 20:31:31 <ais523> especially because I use both headphones and speakers, which have different sound output levels at the same on-computer volumes 20:32:11 <Vorpal> I mean, I can not use the same volume settings. It would destroy my hearing when switching from the cheap headset to the good headphones 20:33:25 <Vorpal> ais523: oh that too, my laptop has widely different level on speaker and headphones. I need near max when using the built in speakers, though I avoid that, terrible sound quality. And near mute when using my pro audio headphones. 20:33:39 <Vorpal> the cheap headset: somewhere in between 20:33:43 <Vorpal> very weird that 20:35:01 <Vorpal> "[ALSA has] Better support for MIDI devices. With OSS you will have to use a software synthesizer such as Timidity or Fluidsynth. " according https://wiki.archlinux.org/index.php/OSS, if that is true, OSSv4 is not an option for me. I need hardware midi 20:35:25 <ais523> why do you need hardware MIDI? 20:35:28 <ais523> it's a strange thing to randomly need 20:35:49 <Vorpal> ais523: because I have a keyboard I attach to the hw midi port on my PCI sound card 20:35:56 <ais523> ah, OK 20:36:41 <Vorpal> ais523: oh and midi over USB is bad in my experience, USB has higher latency 20:37:00 <CakeProphet> midi is in general bad. 20:37:13 <Vorpal> CakeProphet: hardware midi with midi cable works just fine 20:37:17 <ais523> when I compose, it's using physical piano + rosegarden for entering the tune into a computer when I'm done 20:37:18 <Vorpal> never had any issues with that 20:37:20 <ais523> via computer keyboard 20:37:40 <Vorpal> ais523: I just hook up rosegarden to my electrical piano by MIDI 20:38:10 <CakeProphet> no I mean the protocol itself is limiting. 20:38:20 <CakeProphet> it works fine for responding to keypresses and stuff though. 20:38:30 <Vorpal> yeah 20:40:07 <CakeProphet> but as a general purpose "musical instrument digital interface" it is lacking in some regards. 20:40:23 <Vorpal> right 20:40:33 <Vorpal> CakeProphet: it works for what I use it for though. 20:40:49 -!- augur has quit (Remote host closed the connection). 20:41:54 <CakeProphet> OSC is a little better 20:42:08 <Vorpal> OSC? 20:42:15 <CakeProphet> yes, but it's not as widely supported. 20:42:20 <Vorpal> never heard of it 20:42:25 <Vorpal> what does it stand for? 20:42:33 <CakeProphet> open sound control. 20:42:40 <CakeProphet> it runs over ethernet. 20:42:46 <Vorpal> eh 20:43:07 <CakeProphet> well, it can run on other things 20:43:17 <Vorpal> CakeProphet: that sounds like a terrible idea for a real time application like sound in a studio recording environment 20:43:46 <CakeProphet> why's that? 20:43:54 <CakeProphet> ethernet is fairly fast. 20:44:37 <Vorpal> CakeProphet: ethernet offers no guarantees on the latency. If you use a switched topology the switch may or may not delay your packet in internal buffers for example. 20:44:44 <CakeProphet> hardware support is kind of limited, but a lot of high-end devices support it, such as this: http://en.wikipedia.org/wiki/Lemur_Input_Device 20:46:50 -!- elliott has quit (Ping timeout: 260 seconds). 20:46:58 <pikhq> And common Ethernet devices have rather absurd buffering, adding further latency. 20:47:15 <Vorpal> that too yes 20:47:17 <pikhq> And the default buffering on Linux is itself absurd. 20:47:19 <CakeProphet> but if it's connected directly to your computer you wouldn't have these problems would you? 20:47:21 <pikhq> Networking sucks. 20:47:22 <CakeProphet> oh.. 20:47:41 <pikhq> The far-too-high buffering *is layered*. 20:47:47 <pikhq> *sigh* 20:48:03 <Vorpal> MIDI at least offers some real time guarantees. 20:48:06 <CakeProphet> does changing the buffer mode on the socket not fix this I gather? 20:48:27 <Vorpal> CakeProphet: not for the hardware buffering at least. 20:48:51 <pikhq> That can change the kernel buffering. 20:49:15 <CakeProphet> actually OSC is typically transmitted over USB from input device to computer. 20:49:30 <CakeProphet> but can also go over network. 20:50:06 <CakeProphet> the protocol is far more flexible though. 20:50:29 -!- kmc has joined. 20:50:44 <Vorpal> USB has inferior latency compared to MIDI again. Just look at MIDI over USB. Only usable as a toy really. 20:51:18 <CakeProphet> The advantages of OSC over MIDI are primarily speed and throughput; internet connectivity; data type resolution; and the comparative ease of specifying a symbolic path, as opposed to specifying all connections as 7-bit numbers with 7-bit or 14-bit data types 20:51:22 <CakeProphet> well there you go. 20:51:41 <Vorpal> doesn't say over which transport 20:52:15 <Vorpal> "A standard for MIDI over USB was developed in 1999 as a joint effort between IBM, Microsoft, Altec Lansing, Roland Corporation, and Philips.[9] To transmit MIDI over USB a Cable Number and Cable Index are added to the message, and the result is encapsulated in a USB packet. The resulting USB message can be double the size of the native MIDI message. Since USB is over 15,000 times faster than MIDI (480, 20:52:15 <Vorpal> 000 Kbits/sec vs 31.25 Kbits/sec,) USB has the potential to be much faster. However, due to the nature of USB there is more latency and jitter introduced that is usually in the range of 2 to 10 ms, or about 2 to 10 MIDI commands. Some comparisons done in the early part of the 2000s showed USB to slightly slower with higher latency,[10] and this is still the case today." 20:54:00 <CakeProphet> OSC is nice because you can actually send audio data if you need to. 20:54:21 <CakeProphet> or video, etc. 20:55:18 <Vorpal> "OSC messages between gestural controllers are usually transmitted over serial endpoints of USB by being wrapped in the SLIP protocol." <-- what, why SLIP? 20:57:06 <CakeProphet> dunno 20:57:38 <CakeProphet> maybe it makes it easier to transmit over IP later? 20:57:47 <Vorpal> ... 20:57:52 <CakeProphet> .. 21:05:54 <oerjan> . 21:09:11 <Vorpal> 21:15:31 -!- augur has joined. 21:15:53 <ais523> how can it take 3 minutes to email gmail from my own computer? 21:15:56 <ais523> well, rather more 21:15:58 <ais523> 6 now 21:27:25 -!- GreaseMonkey has joined. 21:27:49 -!- Patashu has joined. 21:55:11 -!- sllide has quit (Read error: Connection reset by peer). 22:04:46 -!- augur has quit (Remote host closed the connection). 22:13:29 * Phantom_Hoover → sleep 22:13:30 -!- Phantom_Hoover has quit (Quit: Leaving). 22:17:05 -!- GreaseMonkey has quit (Quit: The Other Game). 22:23:30 -!- Madoka-Kaname has joined. 22:26:27 <ais523> OK, it finally arrived 22:26:52 <ais523> it took over half an hour for an email to a gmail account to arrive in the account's inbox after it had already arrived at Google itself, based on the received headers 22:27:00 <ais523> how is that acceptable service for email nowadays? 22:28:08 <pikhq> Jeeze, I would've expected that shit when there wasn't any hard guarantee that your email was actually routing over the Internet. 22:28:15 <oerjan> it's just all the neutrinos stealing the speed 22:36:08 -!- ive has joined. 22:36:38 -!- Sgeo|web has joined. 22:36:41 <Sgeo|web> Miss me? 22:36:58 <oerjan> wait, you were gone? 22:37:01 * oerjan runs away 22:37:45 * Sgeo|web vaguely wonders if there are alternatives to Mibbit which allow Freenode 22:38:25 -!- augur has joined. 22:39:28 <ais523> Sgeo|web: Freenode blocked Mibbit, not the other way round 22:40:38 * Sgeo|web is aware of this, but was being untechnical in his question 22:40:53 <Sgeo|web> Or I might not have been entirely thinking when I asked it. Not sure. 22:41:48 <Sgeo|web> There's the one that's currently free but soon won't be :/ 22:42:34 <CakeProphet> Sgeo|web: ALWAYS BE TECHNICAL ALWAYS. 22:42:48 <CakeProphet> ABOUT althings 22:42:56 * oerjan notes that it is easy to misread untechnical as unethical 22:43:25 <CakeProphet> oerjan: maybe if you're an old blind norseman. 22:43:48 <cheater> is oerjan old 22:43:56 <CakeProphet> I don't even know actually. 22:44:22 <CakeProphet> I like to imagine him stylistically as an old wise man. Like Odin. 22:44:23 <cheater> oerjan: is oerjan old 22:44:46 <CakeProphet> you know because that's Norse mythology and stuff. 22:44:50 <CakeProphet> :> 22:45:04 * oerjan hits cheater with his cane J=====O 22:45:15 <oerjan> YKGOML 22:45:25 <tiffany> o~o 22:45:30 <CakeProphet> wacro virus 22:45:56 <oerjan> CakeProphet: ITYMAIM 22:46:27 <oerjan> CakeProphet: also, i'm not missing an eye 22:47:07 <CakeProphet> yes but you share your great wisdom of past and future. 22:47:12 <CakeProphet> often in a mystical prophetic manner. 22:47:36 <oerjan> it's just the neutrinos affecting my brain 22:49:40 -!- Jafet has quit (Quit: Leaving.). 22:50:01 <CakeProphet> you are the balanced elderly force of wisdom that synergizes with elliott's rash youthful spunk and ingenuity. 22:50:25 <cheater> lolrjan 22:51:37 <oerjan> fancy 22:53:01 <CakeProphet> Gregor is the grouchy janitor. >_> 22:53:18 <cheater> the gr stands for grouchy 22:53:30 <CakeProphet> Gregor: don't tell him I said that 22:53:49 <CakeProphet> no the gr g is the initial of his name and the r is the last charater of his first name. 22:54:30 <CakeProphet> because Gregor is actually Roger G. as I've proven on several occasions. 22:54:36 <CakeProphet> s/name/last name/ 22:54:57 <oerjan> if you say so, Tehpor Pekac 22:56:26 <CakeProphet> but the cosmic janitor is equally important 22:56:39 <CakeProphet> as he maintains the order of the two contrasting forces. 23:20:35 -!- ais523 has quit (Remote host closed the connection). 23:23:40 -!- Sgeo|web has quit (Quit: Page closed). 23:26:14 -!- Jafet has joined. 23:36:06 <Gregor> <CakeProphet> Gregor is the grouchy janitor. >_> <CakeProphet> Gregor: don't tell him I said that // ... wut 2011-09-23: 00:20:13 -!- augur has quit (Remote host closed the connection). 00:31:17 -!- augur has joined. 00:36:40 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:54:31 <oerjan> > [50e-9, 70e-9] <**> (/0.0024168918) 00:54:32 <lambdabot> The section `GHC.Real./ 2.4168918e-3' takes one argument, 00:54:32 <lambdabot> but its type `[t... 00:54:43 <oerjan> urk 00:54:51 <oerjan> > [50e-9, 70e-9] <**> [(/0.0024168918)] 00:54:52 <lambdabot> [2.0687727932214425e-5,2.89628191051002e-5] 00:55:12 <oerjan> > [50e-9, 70e-9] <**> [(^2).(/0.0024168918)] 00:55:14 <lambdabot> [4.279820869973249e-10,8.388448905147571e-10] 00:55:36 -!- Jafet has left. 00:55:40 -!- Jafet has joined. 00:57:40 <oerjan> the gravitational time dilation at earth's surface, 6.9612e-10, is within that range. 00:58:10 <oerjan> could it be that neutrinos are simply not affected - by gravity? 00:58:57 <oerjan> while everything else, including light, is slowed down in a gravity well 01:00:02 <Jafet> Light isn't slowed in anything 01:00:04 <oerjan> > [50e-9, 60e-9, 70e-9] <**> [(^2).(/0.0024168918)] 01:00:06 <lambdabot> [4.279820869973249e-10,6.162942052761478e-10,8.388448905147571e-10] 01:00:22 <oerjan> Jafet: erm are you not aware of the latest news 01:00:32 <Jafet> Well, anything that is a vacuum 01:00:44 <oerjan> they are claiming to have detected neutrinos traveling slightly faster than light 01:01:05 -!- copumpkin has joined. 01:01:12 <oerjan> i'm merely making a wild speculation of how this could be 01:01:50 <oerjan> which requires removing _some_ generally held assumption. 01:02:10 <Jafet> That would invalidate quite a large amount of theory 01:02:15 <Jafet> Not some 01:03:29 <oerjan> and then i wondered if it had anything to do with earth's environment, since the rumors did not say anything about the speed of neutrinos varying by their energy, as it would if they were "standard" tachyons 01:04:23 <Jafet> Besides, gravity is a consequence of spatial curvature. For something to respect relativity and travel faster than c, it has to go through some hammer space 01:04:30 <Jafet> So yes, that sounds really wild 01:05:17 <oerjan> and to me the most obvious factor of earth's environment which would possibly affect a neutrino (which otherwise mostly passes straight through earth) would be its gravity well, so i looked up gravitational time dilation for earth's surface 01:05:52 <oerjan> now admittedly i have no idea if it makes sense to take the square root of that 01:06:04 <oerjan> but at least the numbers fit then :P 01:07:29 <oerjan> oh and also there is the problem that the famous neutrinos from supernova 1987 were apparently _not_ sped up 01:08:03 <oerjan> but they wouldn't be traveling most of the way in a gravity well 01:08:11 <oerjan> anyway, wild speculation, as i said 01:11:43 <pikhq> All we can say for sure at this point is "WTF". 01:16:07 -!- ive has quit (Ping timeout: 256 seconds). 01:33:07 -!- azaq23 has quit (Ping timeout: 256 seconds). 01:35:01 -!- cheater2 has quit (Ping timeout: 240 seconds). 01:35:35 -!- cheater has quit (Ping timeout: 260 seconds). 01:48:15 -!- audy has quit (Quit: leaving). 01:59:35 -!- azaq23 has joined. 02:01:13 -!- ive has joined. 02:17:32 -!- MDude has changed nick to MSleep. 03:31:00 -!- azaq231 has joined. 03:33:10 -!- Madoka-Kaname has quit (Quit: Huggles for everybody~♪ ^_^). 03:33:29 -!- azaq23 has quit (Ping timeout: 255 seconds). 03:34:59 -!- Lymee has joined. 03:34:59 -!- Lymee has quit (Changing host). 03:34:59 -!- Lymee has joined. 03:35:04 -!- Lymee has changed nick to Madoka-Kaname. 03:36:27 -!- ive has quit (Ping timeout: 245 seconds). 03:38:51 -!- azaq231 has changed nick to azaq23. 03:40:04 -!- Jafet has quit (Quit: Leaving.). 04:23:26 -!- Jafet has joined. 04:29:53 -!- kmc has quit (Quit: Leaving). 04:36:40 -!- oerjan has quit (Quit: Good night). 04:56:25 -!- Zuu has quit (Ping timeout: 244 seconds). 05:36:17 -!- kmc has joined. 05:51:20 -!- azaq23 has quit (Ping timeout: 248 seconds). 06:04:55 <CakeProphet> :) 06:08:32 -!- sebbu2 has joined. 06:11:04 -!- sebbu has quit (Ping timeout: 248 seconds). 06:12:43 -!- sebbu3 has joined. 06:12:43 -!- sebbu3 has quit (Changing host). 06:12:43 -!- sebbu3 has joined. 06:15:52 -!- sebbu2 has quit (Ping timeout: 248 seconds). 06:27:31 -!- azaq23 has joined. 06:27:45 -!- azaq23 has quit (Client Quit). 06:27:54 -!- azaq23 has joined. 06:35:26 -!- Jafet has quit (Quit: Leaving.). 06:36:32 -!- monqy has quit (Quit: hello). 07:38:42 -!- monqy has joined. 07:42:47 -!- cheater has joined. 07:52:02 -!- azaq23 has quit (Ping timeout: 276 seconds). 07:53:56 <CakeProphet> fizzie: any idea why elliott's acronym generator would be statistically likely to generate actual words? 07:53:59 <CakeProphet> `wacro 07:54:02 <CakeProphet> `macro 07:54:03 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wacro: not found 07:54:06 <HackEgo> VEBLEN'S 07:54:10 <CakeProphet> `macro 07:54:14 <HackEgo> WRUNG 07:54:18 <CakeProphet> `macro 07:54:23 <HackEgo> IFFIER 07:55:02 <CakeProphet> doesn't make sense to me, if he implemented as I think he would. 07:59:52 <monqy> !show macro 07:59:53 <EgoBot> That is not a user interpreter! 08:00:01 <monqy> oh right 08:00:05 <monqy> hackego 08:00:06 <monqy> right 08:00:16 <monqy> `paste bin/macro 08:00:18 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5766 08:00:47 <monqy> a binary? repulsive 08:01:18 <CakeProphet> monqy is weird. 08:02:01 <CakeProphet> anyways I'm going to try my approach and compare it. 08:02:24 <CakeProphet> but I'll have to at least an hour for perl to traverse this data. 08:02:37 <CakeProphet> +wait 08:02:45 <monqy> half an hour? how much data is it? 08:02:49 <monqy> er 08:02:52 <monqy> a whole hour? 08:02:57 <monqy> hwat???? 08:03:09 <CakeProphet> well it's like 50-something gigs totally but I should probably only use one dataset for now 08:03:30 <monqy> mmhm 08:04:26 * CakeProphet needs to test that the output is correct. 08:04:45 <CakeProphet> hopefully interpreting the generated data as a perl data structure will NOT take anywhere near as long as generating it. 08:05:02 <CakeProphet> > 27^3 08:05:03 <lambdabot> 19683 08:05:11 <CakeProphet> that's the total number of hash table entries. 08:07:34 <CakeProphet> actually using the perl interpreter to read the data instead of perl itself is probably faster. 08:07:38 <CakeProphet> since the interpreter is C. 08:08:39 <fizzie> CakeProphet: I don't know what it does. 08:10:08 <monqy> `macro 08:10:12 <HackEgo> IEYASU'S 08:10:37 <monqy> I imagine it's some sort of bug or similar flaw 08:10:47 <monqy> oversight 08:10:49 <monqy> uhh 08:11:01 <CakeProphet> it would seem to me that there would be a much larger number of non-words than words. 08:11:16 <monqy> this is because it isn't working properly 08:12:10 <fizzie> Running 'strings' on that binary at least returns a large wordlist; if it's done in the dissociated-press style "jump from one word to other place where there's the same context with probability P", then it might easily generate real words. 08:12:10 <monqy> as elliott explained last night (or at least I THINK this happened), the infrastructure for it working is all there, but it doesn't 08:13:48 <CakeProphet> I have a feeling my approach won't generate as many real worlds, but perhaps will have more non-pronounceable outputs. 08:15:10 * CakeProphet just told emacs to open a half gig file 08:15:16 <monqy> good job 08:15:16 <CakeProphet> should be fun. 08:15:32 * CakeProphet watches memory escalate rapidly and emacs become non-responsive. 08:16:37 <CakeProphet> there we go. 08:17:50 <CakeProphet> I really don't even understand why &Ward is an entry 08:17:54 <CakeProphet> or &ablir 08:18:51 <monqy> uggh there's nothing in hackego's /usr/share/dict 08:19:04 <monqy> this would be a lot easier if hackego had a nice small sample dictionary 08:19:50 <CakeProphet> I'm probably just going to dump my perl into a massive file and then pastebin then egobot. 08:20:03 <CakeProphet> all the data will be in the perl code. 08:22:33 <fizzie> CakeProphet: Here's 50 words generated from character trigrams: http://sprunge.us/MNHQ 08:22:57 <monqy> good words 08:23:05 <fizzie> Not so many real words; though "hosted" is there. 08:23:20 <monqy> so many of these are great 08:23:47 <fizzie> You're such a wigaticilitioutor. 08:24:06 <monqy> I consider myself more of a faubblemarcus 08:24:25 <fizzie> Well, I should get back to flifeenothmemelling my ackingnarbeencies. 08:25:07 <CakeProphet> huh actually I don't think I've ever attempted to import a module in the current directory... 08:25:12 <CakeProphet> in perl 08:25:41 <CakeProphet> it should just be use name; right? 08:26:00 <fizzie> Yes, if '.' is in @INC, like it usually is by default. 08:26:08 <CakeProphet> alright. 08:27:29 <fizzie> use FindBin; use lib "$FindBin::Bin"; is also commonly done, to use modules that are in the same directory as the script. 08:28:25 <fizzie> (For pedants' sake: the paste wasn't exactly pure character trigrams; it was a Kneser-Ney-smoothed character trigrams with backoff. But that really shouldn't make that much of a difference.) 08:29:06 <CakeProphet> what exactly does that do for you. 08:31:19 <olsner> muriverizzing, sounds like fun 08:31:49 <CakeProphet> I guess I should pass around this hash as a reference to avoid copying it all the time. 08:33:41 <CakeProphet> at least I think that's how it works.. 08:34:00 <CakeProphet> but I guess passing it as a ref and immediately dereferencing is pretty much equivalent to passing it referenced... 08:34:10 <CakeProphet> *dereferenced 08:35:38 <fizzie> What exactly does what do? 08:35:53 <CakeProphet> actually no I think passing the hash itself would be more expensive than passing the reference and dereferencing 08:35:56 <CakeProphet> due to Perl's call semantics. 08:36:33 <CakeProphet> fizzie: I have a hash of hashes. the outer hash is keyed by the first two characters of trigrams. 08:36:54 <CakeProphet> the inner hashes are keyed by the last character, with the value being the frequency. 08:37:20 <fizzie> Sounds reasonable, though the inner hash could easily be an array instead. 08:37:33 <CakeProphet> ah true. 08:38:07 <CakeProphet> so to generate the next character you just lookup your last two characters and then randomly pick an element from the inner hash based on frequency. 08:38:26 <CakeProphet> with two spaces being used at the start. 08:39:21 <CakeProphet> I guess memory-wise the array would be smaller. 08:40:20 <fizzie> If you don't ever look things up from it based on the character, just iterate through, it might as well. 08:41:11 <CakeProphet> oh you mean an even-length array of key value pairs? 08:41:32 <CakeProphet> I didn't want to associate each index with a character as I might include other languages, so I wouldn't want the characters to be hardcoded into the algorithm. 08:41:58 <fizzie> Either that, or an array of two-element arrayrefs. The first option would use less memory, at the cost of maybe being a bit more hacky. 08:42:31 <fizzie> Depending on how you do "randomly pick", you might be able to save one iterate-through-it pass by putting the sum of all frequencies into the node. Something like $foo{"ab"} being { sum => 42, chars => ['a', 1, 'b', 2, 'c', 38, 'd', 1] }. 08:42:32 <CakeProphet> well the first option is the default representation of a hash in list context I believe. 08:42:39 <fizzie> It is, yes. 08:43:41 <CakeProphet> and iterating wouldn't be difficult. while(@array) { my ($a, $b, @array) = @array; ...} 08:44:00 <CakeProphet> but I'm kind of already in the middle of generating the hash tables so... I'll use that for now. 08:45:31 <fizzie> That loop will just give $a, $b = first two elements of @array for ever. 08:45:49 <fizzie> Since the 'my' generates a new lexically scoped @array for the tail. 08:45:54 <CakeProphet> oh that's right. 08:46:00 <CakeProphet> yeah I'd just use the my above the loop then. 08:46:49 <fizzie> That works, but might involve quite a lot of copying, unless Perl is being clever. I don't know enough of the internals to be sure. 08:47:29 <CakeProphet> dunno. the array size is only 27 though, so not a huge deal. 08:48:11 <CakeProphet> shifts might be more efficient. 08:49:42 <fizzie> for (my $i = 0; $i <= $#array; $i += 2) { my ($a, $b) = @array[$i..$i+1]; ... } is guaranteed not to have to shift the array data around. 08:50:19 <fizzie> Anyhow, it's probably not going to be your bottleneck. 08:51:13 -!- itidus21 has joined. 08:51:14 <CakeProphet> I think perl is my bottleneck. :P 08:52:04 <fizzie> Or use List::MoreUtils; my $it = natatime 2, @array; while (my ($a, $b) = $it->()) { ... } but nobody has List::MoreUtils installed. 08:52:47 -!- itidus20 has joined. 08:52:53 <CakeProphet> fizzie: I do now. 08:53:00 <fizzie> I'd put that word-generation model into fungot, but it can't do the "don't put space in-between each 'word'" thing. 08:53:01 <fungot> fizzie: in the matter spoke of, i require onlie one more thing; but wish to be near the snow line, and found occasion for fresh surprise; for the vegetation resembled nothing i had before discerned nothing but the bizarre object which glistened in a comer cupboard under the electric lights. 08:54:34 <CakeProphet> eval { use Math::Random::MT::Perl 'rand'}; 08:54:35 <CakeProphet> print "Optional module Math::Random::MT::Perl not found.\n" if $@ 08:54:39 <CakeProphet> this is correct right? 08:54:49 <CakeProphet> I've read that you have to do weird things with $@ to get it to work properly. 08:55:57 <fizzie> I do something like that in one piece of code, and it seems to work for me. Though with 'require'. 08:56:07 -!- itidus21 has quit (Ping timeout: 258 seconds). 08:56:24 <fizzie> 'use' is close to having 'require' in a BEGIN block; I can't really guess offhand how that interacts with block-eval. 08:56:29 <CakeProphet> should be equivalent inside an eval I think. 08:56:55 <CakeProphet> assuming that begin blocks inside an eval are executed only when the eval is. 08:57:05 <fizzie> $ perl -e 'eval { use NoSuchModule; }; print "no such module!" if $@;' 08:57:05 <fizzie> Can't locate NoSuchModule.pm in @INC (@INC contains: . /home/htkallas/local/share/perl/5.10.1 /home/htkallas/local/lib/perl/5.10.1 /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at -e line 1. 08:57:05 <fizzie> BEGIN failed--compilation aborted at -e line 1. 08:57:09 <fizzie> Does not seem to be the case. 08:57:13 <CakeProphet> ah okay. 08:57:38 <fizzie> There is the right way to do this, but I've forgotten it. 08:58:01 <CakeProphet> I'll just use the require. 08:58:31 <fizzie> Then it won't import things, though. 08:58:53 <CakeProphet> it won't..? 08:58:58 <fizzie> require doesn't. 08:59:24 <fizzie> Some example code uses BEGIN { eval { require Foo; Foo->import(); }; if ($@) { $main::use_foo = 0; } else { $main::use_foo = 1; } } 08:59:55 <fizzie> "use Module LIST" is documented as being exactly equivalent to "BEGIN { require Module; Module->import( LIST ); }". 09:00:09 <CakeProphet> ah. 09:00:29 <CakeProphet> Foo->import() is only for stuff that uses Exporter right? 09:01:04 -!- sebbu2 has joined. 09:01:04 -!- sebbu2 has quit (Changing host). 09:01:04 -!- sebbu2 has joined. 09:01:46 -!- Behold has joined. 09:01:57 <fizzie> Yes, though I'm not sure if every module inherits a do-nothing import function by default to make that sort of thing work. 09:02:14 -!- sebbu3 has quit (Ping timeout: 276 seconds). 09:02:20 <fizzie> Well, and for modules that define an 'import' of their own, but most just get it from Exporter. 09:02:30 <CakeProphet> in any case the mersienne twister library probably does use exporter so... 09:02:49 <CakeProphet> -i 09:03:06 <fizzie> If you use it as "use Math::Random::MT::Perl 'rand';" it's going to use ->import('rand') on it, so presumably that does something. 09:03:15 <CakeProphet> yes 09:03:32 -!- BeholdMyGlory has quit (Ping timeout: 276 seconds). 09:04:00 <fizzie> "[The import method is] not completely ordinary. Normally, calling a method that doesn't exist causes a fatal error. However, you can use a module that neither has nor inherits an import method, and the interpreter will quietly ignore the problem." 09:04:32 <fizzie> Ah, so it's just a hack in 'use', not a hack that sneaks in a dummy import. 09:04:58 <CakeProphet> I'm pretty sure this module has an import though so it's not an issue 09:05:20 <CakeProphet> still that's a lot of code for something fairly simple. 09:05:46 <CakeProphet> in Python for example you would just catch an ImportError 09:08:33 <fizzie> The Perl way is just to install something from CPAN. Like Module::Load::Conditional. 09:09:24 <CakeProphet> well the original idea is to not require an optional dependency 09:09:39 <CakeProphet> so now you're just trading one dependency for another. 09:09:54 <fizzie> Yes, that's why the eval { require ... } mess is duplicated in so many places. 09:11:59 -!- sebbu3 has joined. 09:15:04 -!- sebbu2 has quit (Ping timeout: 248 seconds). 09:21:06 <CakeProphet> fizzie: is there an equivalent to if __name__ == "__main__" in Python? 09:21:09 <CakeProphet> er, in perl? 09:26:49 <fizzie> Yes, but I don't think it's so widely used. 09:26:54 <fizzie> See http://www252.pair.com/comdog/mastering_perl/Chapters/18.modulinos.html 09:27:25 <fizzie> Basically: "unless (caller()) { ... }". 09:27:51 <fizzie> (On "normal" top-level it returns nothing; when using as a module, something.) 09:28:01 <CakeProphet> ah yes 09:28:39 <CakeProphet> main unless caller(); 09:28:50 <CakeProphet> looks better to me than if __name__ == "__main__": main() 09:29:10 <CakeProphet> actually the () is optional after caller 09:29:31 <fizzie> Right. 09:30:06 <fizzie> Doesn't look so perly, though; pretty much no punctuation. 09:30:19 <CakeProphet> depends on your definition of perly 09:30:26 <CakeProphet> the lack of things like () is quite perly to me. 09:30:38 <fizzie> Yes, but line noise is the canonical definition of Perly. 09:30:43 <CakeProphet> I suppose. 09:31:07 <CakeProphet> my $r = int(rand(sum(@w))) 09:31:11 <CakeProphet> this line is something you might find in Python 09:31:15 <CakeProphet> lots of nested calls. 09:31:29 <CakeProphet> >_> I guess that's common in any language though. 09:32:08 -!- monqy has quit (Quit: hello). 09:32:42 <fizzie> Well, I'unno; in some places (I'm looking at you, lambdabot) people might opt for function composition as opposed to nesting calls. 09:33:02 <CakeProphet> right 09:33:10 <CakeProphet> this particular style of nested calls reminds me of Python 09:33:14 <CakeProphet> basically one argument per call. 09:33:28 <CakeProphet> to compute a list. 09:33:34 <CakeProphet> er compute things from a list. 09:33:51 <CakeProphet> the equivalent Python code would look very similar. 09:34:21 <CakeProphet> my @w = map { $f{$_} } @c; 09:34:29 <CakeProphet> this line is probably one of the reasons I like perl over python. 09:34:53 <CakeProphet> I can have anonymous code blocks that aren't awful.. 09:35:31 -!- itidus20 has left ("Leaving"). 09:35:34 <CakeProphet> and with prototyping and anonymous subs I can define new control-flow-like operators. 09:35:42 <CakeProphet> for example in my IRC bot I have: 09:36:16 <CakeProphet> command shutdown => Admin => 'Bot shutdown. Only allowed by super-admin.', 09:36:17 <CakeProphet> sub { 09:36:22 <CakeProphet> ...; 09:36:23 <CakeProphet> } 09:36:58 <CakeProphet> I suppoise the pythonic way to do this would be to define a decorator. but decorators are more cumersome to write. 09:37:04 <CakeProphet> +b 09:37:27 <CakeProphet> and can't take advantage of things like => 09:38:50 <CakeProphet> @command("shutdown", "Admin", "Bot shutdown. Only allowed by super-admin.") 09:38:50 <lambdabot> Unknown command, try @list 09:38:55 <CakeProphet> def blah(): ... 09:40:09 <CakeProphet> but to define command itself you have to either write a function that returns a function, or write a class. 09:45:01 <CakeProphet> else if, elsif, elif, bah... 09:54:37 -!- CakeProphet has quit (Ping timeout: 260 seconds). 09:55:33 -!- CakeProphet has joined. 09:55:33 -!- CakeProphet has quit (Changing host). 09:55:33 -!- CakeProphet has joined. 09:57:40 <fizzie> Also "elseif". 10:00:02 <CakeProphet> which languages have that? 10:00:19 <CakeProphet> !perl print "010101" =~ /\w/ 10:00:21 <EgoBot> 1 10:00:24 <CakeProphet> ...oh 10:00:36 <CakeProphet> apparently digits are word characters. who knew. 10:02:15 <fizzie> PHP has. "else if" works there too in some cases, but not when doing the alternative (colon) syntax for control structures. See http://php.net/manual/en/control-structures.elseif.php 10:02:56 <CakeProphet> so I guess I want... [^\d\W]? 10:02:58 <fizzie> And several variants of BASIC. 10:03:02 <CakeProphet> that would give me \w minus digits yes? 10:04:53 <CakeProphet> yep 10:05:02 <fizzie> \w is [[:alpha:][:digit:]_] -- if you don't mind the underscore either, I suppose [^\d\W] should work. Or alternatively just [[:alpha:]_]. 10:05:20 <CakeProphet> I'm currently using [^_\d\W]+ because I may want the connecting characters that it includes... 10:05:24 <CakeProphet> not sure. 10:06:24 <fizzie> [^_\d\W] is getting so complex that [[:alpha:]] or \p{IsAlpha} might more clearly show the meaning. 10:08:34 <CakeProphet> yeah I'll just 10:08:37 <CakeProphet> use :alpha: 10:08:46 <CakeProphet> because I probably don't want word-connecting characters. 10:09:15 <CakeProphet> but do I want to exclude all words from the data set that contain things like hyphens and Unicode word-connectors? 10:09:22 <CakeProphet> or should I just skip over those characters. 10:09:53 <CakeProphet> !perl $_"TEST";lc;print 10:09:54 <EgoBot> String found where operator expected at /tmp/input.21091 line 1, near "$_"TEST"" 10:09:58 <CakeProphet> !perl $_="TEST";lc;print 10:09:59 <EgoBot> TEST 10:12:11 <fizzie> lc doesn't set, it just returns. 10:12:17 <fizzie> !perl $_="TEST";$_=lc;print 10:12:18 <EgoBot> test 10:12:21 <CakeProphet> yes that was my experiment. 10:13:21 <fizzie> !perl $_="TEST";$_="\L$_";print 10:13:22 <EgoBot> test 10:13:28 <fizzie> That thing has the best features. 10:14:07 <CakeProphet> \L? never seen that. 10:14:32 <fizzie> \L...\E is like \Q...\E except it lowercases. 10:14:36 <CakeProphet> !perl print (shift (1,2,3,4,5)); 10:14:36 <EgoBot> Type of arg 1 to shift must be array (not list) at /tmp/input.21617 line 1, near "5)" 10:14:41 <CakeProphet> thought so 10:14:49 <fizzie> There's also the corresponding \U...\E, and \l/\u which lower/uppercase the following character. 10:14:54 <CakeProphet> neat. 10:15:09 <fizzie> !perl print "\uh" 10:15:09 <EgoBot> H 10:17:10 <CakeProphet> next unless length == 3 && /^( )?[[:alpha:]]+( )?$/; 10:17:20 <CakeProphet> perl: reads like English and @!@Jjj234{1!]}@!@#%1 10:20:00 <CakeProphet> next if $seen{$word}; 10:20:02 <CakeProphet> more English. 10:22:27 <fizzie> Maybe you should join the Osmosian Order and write that thing in Plain English. 10:22:46 <CakeProphet> just found a bug 10:22:58 <fizzie> See? In Plain English, there are no bugs. 10:23:05 <CakeProphet> need \s{0,2} not ( )? 10:23:09 <CakeProphet> TIME TO RESTART THE WHOLE THING. 10:23:34 <fizzie> Or " ? ?", but that's probably regexplically more complicated to interpret; more choices. 10:23:59 <CakeProphet> yes I think \s{0,2} looks better 10:24:00 <CakeProphet> strangely enough 10:24:16 <fizzie> " {0,2}" looks a bit silly perhaps. 10:24:27 <CakeProphet> yeah I prefer to use \s usually 10:24:48 <CakeProphet> though I rarely use /x 10:25:43 <CakeProphet> can't I also write \x{,2} to mean the same thing? 10:26:28 <fizzie> I don't think you can, sadly. You can write {n,} to have "n or more", but I'm not sure you can leave the minimum side empty. 10:26:37 <fizzie> Not entirely sure though. 10:28:32 <CakeProphet> $grams{substr($_, 0, 2)}->{substr($_, 2, 1)}++; 10:28:37 <CakeProphet> substr can be kind of annoying sometimes. 10:29:01 <CakeProphet> I'd like having string indexing/slicing 10:29:23 <CakeProphet> substr is nice too when it makes sense. 10:29:40 <CakeProphet> to actually split the word into trigrams I use for(my $i = 0; $_ = substr($word, $i, 3); $i++) 10:30:09 <CakeProphet> which is nice 10:30:46 <CakeProphet> but I'd much rather write $_[0,1] and $_[2] for the previous code, though it would break perl 5's array semantics. 10:30:47 <fizzie> How about getting the " x" and " xy" ones? Explicitly outside the loop? 10:31:02 <CakeProphet> I just concat " " to the ends of the string beforehand. 10:31:47 <fizzie> String-indexing would be nice. 10:32:08 <CakeProphet> yeah but currently $_[2] is an index from @_ 10:32:17 <CakeProphet> so it would to ditch that syntax. 10:32:25 <CakeProphet> +have 10:32:46 <CakeProphet> which would then change the index vs. slice semantics, where @_[1] is a slice and $_[1] is an index. 10:33:02 <CakeProphet> all in all it would be a good change though. 10:35:34 <CakeProphet> once I finish this I'll add options to splice together multiple datasets 10:35:46 <CakeProphet> so you could generate words using a combination of english and german data, or spanish and english, etc. 10:36:28 <CakeProphet> [[:alpha:]] includes Unicode I hope. 10:36:34 <CakeProphet> otherwise I'll have to rewrite that stuff. 10:37:07 <fizzie> If the string has the UTF8 flag set, then yes, I think it does, even without any extra pragmas. 10:37:50 <CakeProphet> also I'll use /etc/dict/ files for the languages/dialects google doesn't have. 10:38:06 <CakeProphet> there's old german, german medical terms, portugal, irish, and so forth. 10:49:56 -!- FireFly has joined. 10:52:52 <CakeProphet> in my languages & and friends will be boolean operators and && and friends will be bitwise. 10:52:54 <CakeProphet> just to be a rebel 10:52:59 <CakeProphet> also because they're more commonly used. 11:03:12 <CakeProphet> well if I'm ever in a frozen wasteland with my laptop 11:03:25 <CakeProphet> I now know which programs to run to prevent hypothermia for about an hour. 11:04:15 <CakeProphet> well, maybe it would be too cold for the processor to get hot in the first place. 11:07:38 <CakeProphet> my external is extremely quiet. 11:10:16 <CakeProphet> I love rotating it slowly and feeling the gyroscoping effect from the spinning platters. 11:10:22 <CakeProphet> *gyroscopic 11:10:49 <CakeProphet> or is it a magnetic thing? 11:15:06 <CakeProphet> hmmm, perhaps I should ban trigrams that do not contain both consonants and vowels. 11:15:15 <CakeProphet> but that would make it english-specific 11:15:30 <CakeProphet> and would also eliminate a lot of plausible words. 11:15:46 <CakeProphet> but... 11:15:58 <CakeProphet> 'hd' => { 'w' => 19, 'r' => 300, 'a' => 286, 11:16:04 <CakeProphet> that's a lot of r's 11:16:08 <CakeProphet> more hdr than hda 11:21:02 <fizzie> withdraw, withdrawal, withdrawal's, withdrawals, withdrawing, withdrawn, withdraws, withdrew vs. Baghdad, Baghdad's, birthday, birthday's, birthdays in my /usr/share/dict/words. 11:21:11 <CakeProphet> ...ah 11:21:11 <fizzie> (Incidentally, what I pasted was from that list.) 11:21:54 <CakeProphet> man English sure is complex. 11:21:59 <CakeProphet> with all of those loan words. 11:24:07 <Vorpal> fizzie: is "Baghdad's" really used that much in English? A lot of the time I imagine "of Baghdad" would be preferred. 11:24:28 <CakeProphet> <STDIN> stands for standard input. It can be abbreviated by using simple <>. 11:24:36 <CakeProphet> Vorpal: I've seen Baghdad's used in news stories. 11:24:41 <CakeProphet> man this tutorial is so wrong. 11:25:34 <fizzie> 1,390,000 results ("Baghdad's") vs. 5,030,000 results ("of Baghdad"), says SCIENCE, I mean, Google. 11:26:37 <fizzie> The latter of course is used in many cases where the former would not go; "satellite image of Baghdad", "mosque south of Baghdad" and so on. 11:38:02 <CakeProphet> hmmm I just realized all of the "ab " and "a " ngrams are unecessary. 11:38:16 <CakeProphet> *3-grams 11:40:21 <CakeProphet> !perl subtr("test", -2, 2) 11:40:21 <EgoBot> Undefined subroutine &main::subtr called at /tmp/input.27953 line 1. 11:40:25 <CakeProphet> !perl print subtr("test", -2, 2) 11:40:26 <EgoBot> Undefined subroutine &main::subtr called at /tmp/input.27999 line 1. 11:40:30 <CakeProphet> !perl print substr("test", -2, 2) 11:40:31 <EgoBot> st 11:40:35 <CakeProphet> !perl print substr("test123124", -2, 2) 11:40:35 <EgoBot> 24 11:40:46 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 11:40:48 -!- ais523 has joined. 11:43:39 <fizzie> Do you pick a fixed length randomly and then generate that many? 11:43:46 <CakeProphet> yep 11:44:08 <CakeProphet> I bet there are better ways to do it... 11:44:47 <fizzie> Not necessarily. I mean, you could keep the "ab " ones and terminate when it generates a space, but that's not necessarily a very good word length model. 11:45:24 <fizzie> (Not that uniform distribution is, either.) 11:46:38 <fizzie> IIRC word lengths in "normal" text tend to be quite well modeled with a gamma distribution. 11:47:25 <CakeProphet> how does one model a gamma distribution? 11:48:33 <CakeProphet> bug in pick subroutine at wacro.pl line 22, <STDIN> line 1. 11:48:36 <CakeProphet> uh oh 11:48:55 <CakeProphet> that happens when my random selection algorithm doesn't randomly select anything. 11:50:13 <fizzie> Er, well, usually the answer is "you use your library". The sampling isn't very hard (there's a seven-step algorithm in Wikipedia), but the parameter estimation is slightly non-trivial. 11:50:42 <fizzie> (The maximum-likelihood mean isn't just the sample mean, like with the normal distribution.) 11:51:10 <CakeProphet> statistics isn't really my best subject. 11:51:16 <fizzie> Or, well, the maximum-likelihood... theta. It's not exactly mean. 11:51:44 -!- Phantom_Hoover has joined. 11:52:41 <fizzie> Normal distribution isn't a completely horrible fit, except for the tail, i.e. very long words. 11:53:12 <CakeProphet> what am I employing? 11:53:21 <fizzie> I don't know; what's your length? 11:53:32 <fizzie> If it's just "rand from a range", then it's uniformly distributed. 11:53:35 <CakeProphet> either specified by the programmer or randomly chosen from a specified range. 11:53:42 <CakeProphet> ah okay. 11:54:13 <fizzie> http://plus.maths.org/latestnews/may-aug08/Zipf/gamma.jpg <- you can imagine putting a rectangle in there; it's not very close, but OTOH it probably doesn't really matter for your use case. 11:54:16 <CakeProphet> ah so basically the tail is squished down a bit compared to a normal distribution. 11:54:27 <CakeProphet> yeah 11:54:36 <CakeProphet> well, not squished. 11:56:56 <CakeProphet> perl wacro.pl 11:56:56 <CakeProphet> 2 6 grum 11:56:56 <CakeProphet> 2 4 ne 11:56:56 <CakeProphet> 3 6 aflore 11:56:56 <CakeProphet> 3 5 in 11:57:10 <fizzie> How grummy. 11:57:35 <fizzie> What's them numbers? 11:57:40 <CakeProphet> the inputs 11:57:52 <CakeProphet> it reads lines from stdin to make it compatible with egobot. 11:57:57 <CakeProphet> but I'll probably add a CLI 11:58:42 <fizzie> Well, what are the inputs, then? I mean, I was assuming lengths, but it's not true that 3 <= length("in") <= 5. 11:58:59 <CakeProphet> oh... 11:59:02 <CakeProphet> yeah it probably has a space in it. 11:59:08 <CakeProphet> I need to remove the end spaces from the data now. 11:59:15 <CakeProphet> because I don't use them to mean anything. 11:59:30 <CakeProphet> though I may put them back if I use an algorithm that gives them a meaning. 11:59:44 <CakeProphet> yes that's a space 11:59:47 <CakeProphet> length("in ") 12:00:20 <CakeProphet> aflore is a good word. 12:04:19 <fizzie> The "generate until space" thing gives a somewhat reasonable approximation of word length; http://users.ics.tkk.fi/htkallas/nlen.png 12:05:16 <fizzie> (And that was just from a wordlist, not from actual data that counted how common the words are; that's why the short end is so small.) 12:07:16 <fizzie> Well, actually, it's not so good when compared to the original (nlen2.png). 12:07:28 <fizzie> Which looks more or less normal. 12:10:06 <CakeProphet> what did you use in that one. 12:10:49 <fizzie> /usr/share/dict/words; so it doesn't resemble word distribution in actual text, since it only counts each word once, while in reality the shorter ones are more common. (Shock, horror.) 12:13:10 <CakeProphet> my data only counts unique words. 12:13:47 <CakeProphet> it would be interesting to also count their frequency in the google data though. 12:13:59 <CakeProphet> but not only data sources that I intend to use have this. 12:14:02 <CakeProphet> s/only/all/ 12:14:15 <fizzie> Ah. Well, in that case your lengths are likely to be more or less Gaussian. 12:14:39 <fizzie> Not quite, of course, but more than in the real-text case. 12:15:10 <fizzie> And slightly more discrete than the usual normal distribution. :p 12:20:40 -!- itidus20 has joined. 12:23:37 <CakeProphet> perl wacro.pl 12:23:37 <CakeProphet> 10 12:23:37 <CakeProphet> ne scutittsci suralled cem banicksanistry idet ply zemelesubeing gablouus leadam 12:24:03 <CakeProphet> this one tends to give pretty long words. 12:24:22 <CakeProphet> well, not long just... really strange words. :P 12:24:44 <CakeProphet> perl wacro.pl 12:24:44 <CakeProphet> 10 12:24:45 <CakeProphet> jucheebablutinging en uus entes javul encos ca phutternergivid whens go 12:25:03 <fizzie> How gablouus. 12:25:16 <CakeProphet> backicksanistry and phutternergivid are the best so far. 12:25:22 <CakeProphet> *banicksanistry 12:26:08 <CakeProphet> perl wacro.pl 12:26:08 <CakeProphet> 20 12:26:09 <CakeProphet> ansellsa am codintormion ingocm unnelms fria ex tagfirtive ve zigaterthansmosimbajewidanciers sewa valana by res rajer pra wles fasa genpssivinwome molizascarygates 12:26:15 <CakeProphet> molizascarygates 12:26:33 <itidus20> ok.. this is you guys: http://www.wastedtalent.ca/comic/data-pr0n 12:27:44 <Phantom_Hoover> Blech, engineering. 12:29:35 -!- DH____ has joined. 12:30:04 <CakeProphet> let's see if pastebin complains about 19359 lines of code. 12:30:56 <CakeProphet> You have exceeded the maximum file size of 500 kilobytes per paste. PRO users don't have this limit! 12:30:59 <CakeProphet> NOOOOOOO 12:31:12 <fizzie> Is that all pure Perl? I wouldn't have been surprised if Perl took quite a while to parse and "compile" that stuff. 12:31:22 <CakeProphet> no it's pretty fast. 12:31:30 <CakeProphet> it's just one huge hash table. 12:31:57 <CakeProphet> I used Data::Dumper to output the hash table after constructing it from the google data. 12:32:01 <CakeProphet> and then I just import that. 12:32:14 <itidus20> yeah that sexy data 12:32:28 <fizzie> Heh. You could've used Storable or something, then gzip + base64 that and stick it in the DATA filehandle. Would save space, especially on formatting. 12:32:46 <CakeProphet> well I could use terse mode 12:32:48 <CakeProphet> to remove the formatting. 12:33:02 <CakeProphet> I have another solution. 12:33:38 <CakeProphet> !delinterp acro 12:33:38 <EgoBot> ​Interpreter acro deleted. 12:34:21 <CakeProphet> !addinterp acro perl http://dl.dropbox.com/u/16495819/simpleacro.pl 12:34:23 <EgoBot> ​Interpreter acro installed. 12:34:27 <CakeProphet> !acro 3 5 12:34:28 <EgoBot> Array found where operator expected at /tmp/input.31990 line 47, at end of line 12:34:34 <CakeProphet> hmmm, apparently I broke the original wacro 12:34:43 <CakeProphet> oh well 12:34:46 <CakeProphet> !delinterp wacro 12:34:46 <EgoBot> ​Interpreter wacro deleted. 12:35:03 -!- ais523 has quit (Read error: Connection reset by peer). 12:35:10 <CakeProphet> !addinterp wacro perl http://dl.dropbox.com/u/16495819/wacro_egobot.pl 12:35:12 <EgoBot> ​Interpreter wacro installed. 12:35:16 <CakeProphet> !wacro 20 12:35:21 <CakeProphet> >_> 12:35:55 <CakeProphet> erm what 12:36:11 <CakeProphet> !wacro 20 12:36:15 -!- ais523 has joined. 12:36:45 <fizzie> CakeProphet: Your wacro_egobot.pl has the $VAR1 = ... before the #!/usr/bin/perl. 12:37:47 <CakeProphet> oh. 12:37:51 <CakeProphet> right. 12:39:55 <CakeProphet> !delinterp wacro 12:39:55 <EgoBot> ​Interpreter wacro deleted. 12:40:00 <CakeProphet> !addinterp wacro perl http://dl.dropbox.com/u/16495819/wacro_egobot.pl 12:40:04 <EgoBot> ​Interpreter wacro installed. 12:40:09 <CakeProphet> !wacro 20 12:40:13 <CakeProphet> !wacro 12:40:14 <CakeProphet> eihjasudhuaher 12:40:15 <CakeProphet> help 12:40:16 <CakeProphet> lol 12:41:02 <CakeProphet> hmmm, works fine on my computer. 12:41:17 <CakeProphet> and I'm pretty sure egobot sends to stdin 12:41:32 <CakeProphet> oh wait possibly it doesn't have List::Util? 12:41:48 -!- itidus20 has left ("Leaving"). 12:41:58 <CakeProphet> !perl use List::Util; print sum(1..100); 12:41:59 <EgoBot> Undefined subroutine &main::sum called at /tmp/input.558 line 1. 12:42:05 <CakeProphet> !perl use List::Util 'sum'; print sum(1..100); 12:42:06 <EgoBot> 5050 12:42:25 <CakeProphet> !show wacro 12:42:26 <EgoBot> perl (sending via DCC) 12:43:05 <CakeProphet> 08:43 <EgoBot> File "<stdin>", line 1, in <module> 12:43:05 <CakeProphet> 08:43 <EgoBot> TypeError: unsupported operand type(s) for +: 'int' and 'str' 12:43:06 <CakeProphet> 08:43 <EgoBot> 12:43:07 <CakeProphet> whut 12:43:12 <CakeProphet> that is a python error. 12:43:58 <CakeProphet> !show wacro 12:43:59 <EgoBot> perl (sending via DCC) 12:45:44 <CakeProphet> !wacro 12:45:46 <CakeProphet> !wacro 2131224124125 12:45:48 <CakeProphet> dfihsdiufhwiuerhushdfwqet 12:48:16 <fizzie> EgoBot code is so confusing. :/ 12:48:56 <CakeProphet> perhaps I should use hackego instead? 12:49:23 <CakeProphet> `get http://dl.dropbox.com/u/16495819/wacro_egobot.pl 12:49:25 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: get: not found 12:49:30 <fizzie> fetch, isn't it? 12:49:31 <CakeProphet> `help 12:49:32 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 12:49:36 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/wacro_egobot.pl 12:49:38 <HackEgo> 2011-09-23 12:49:38 URL:http://dl.dropbox.com/u/16495819/wacro_egobot.pl [592500/592500] -> "wacro_egobot.pl" [1] 12:49:42 <CakeProphet> `ls 12:49:44 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wacro_egobot.pl \ wisdom 12:50:02 <CakeProphet> where should I put it? 12:50:09 <fizzie> As bin/wacro, probably. 12:50:11 <fizzie> `ls bin 12:50:12 <HackEgo> ​? \ addquote \ allquotes \ define \ delquote \ etymology \ forget \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ quine \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto 12:50:22 <CakeProphet> `mv wacro_egobot.pl bin/wacro 12:50:23 <HackEgo> mv: missing destination file operand after `wacro_egobot.pl bin/wacro' \ Try `mv --help' for more information. 12:50:35 <CakeProphet> `run mv wacro_egobot.pl bin/wacro 12:50:37 <HackEgo> No output. 12:50:42 <CakeProphet> `wacro 12:50:43 <fizzie> The input handling will probably differ, too. 12:50:43 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/wacro: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/wacro: cannot execute: Success 12:50:50 <fizzie> And you need to chmod +x it. 12:50:54 <CakeProphet> `run chmod +x bin/wacro 12:50:56 <HackEgo> No output. 12:51:06 <CakeProphet> ah yes it'll be command line based. 12:51:14 <CakeProphet> easy fix. 12:52:05 <fizzie> `marco 12:52:07 <HackEgo> polo 12:52:09 <fizzie> Useful. 12:52:46 <CakeProphet> `run perl -pi -e 's/<STDIN>/shift @ARV/' bin/wacro 12:52:48 <HackEgo> No output. 12:52:57 <CakeProphet> ...er 12:52:58 <CakeProphet> no 12:52:58 <CakeProphet> lol 12:53:02 <CakeProphet> `wacro 12:53:04 <HackEgo> Optional module Math::Random::MT::Perl not found. \ sraufeapis 12:53:13 <CakeProphet> oh that will be annoying. 12:53:15 <CakeProphet> `wacro 20 12:53:17 <HackEgo> Optional module Math::Random::MT::Perl not found. \ png 12:53:23 <CakeProphet> >_> 12:53:33 <fizzie> @ARV? 12:53:34 <lambdabot> Unknown command, try @list 12:53:36 <CakeProphet> oh my bad. 12:53:43 <fizzie> lambdabot: Not *you*. 12:53:58 <CakeProphet> `run perl -pi -e 's/@ARV/@ARGV/' bin/wacro 12:54:00 <HackEgo> No output. 12:54:03 <CakeProphet> `wacro 20 12:54:05 <HackEgo> Optional module Math::Random::MT::Perl not found. \ bri 12:54:17 <CakeProphet> I think I messed it up. :P 12:54:22 <Vorpal> Math::Random::MT::Perl ? 12:54:25 <fizzie> Substitutions in the s/// I think. 12:54:33 <Vorpal> `run perl 12:54:34 <fizzie> It reads "print (map {generate} 1..(min(50,int(shift ))||1));" at the moment. 12:54:35 <CakeProphet> ah I see. 12:54:39 <CakeProphet> no it shouldn't shift. 12:54:55 <Vorpal> `pasteurl bin/wacro 12:54:57 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pasteurl: not found 12:55:02 <Vorpal> `paste bin/wacro 12:55:04 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29306 12:55:04 <HackEgo> No output. 12:55:07 <CakeProphet> `run perl -pi -e 's/shift @ARGV/$ARGV[0]/' bin/wacro 12:55:09 <HackEgo> No output. 12:55:13 <CakeProphet> `wacro 20 12:55:15 <HackEgo> Optional module Math::Random::MT::Perl not found. \ flger 12:55:19 <CakeProphet> ... 12:56:06 <fizzie> Now it's just "int()". 12:56:15 <fizzie> It keeps substituting in your $ARGV[0] and so on. 12:56:29 <Vorpal> just do it by hand and upload a new version? 12:56:50 <fizzie> I'll try too. 12:56:51 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/wacro_egobot.pl 12:56:53 <HackEgo> 2011-09-23 12:56:53 URL:http://dl.dropbox.com/u/16495819/wacro_egobot.pl [592500/592500] -> "wacro_egobot.pl" [1] 12:56:57 <fizzie> Oh, well, I won't. 12:56:59 <CakeProphet> `ls 12:57:01 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wacro_egobot.pl \ wisdom 12:57:04 <CakeProphet> `mv wacro_egobot.pl bin/wacro 12:57:06 <HackEgo> mv: missing destination file operand after `wacro_egobot.pl bin/wacro' \ Try `mv --help' for more information. 12:57:11 <CakeProphet> `run mv wacro_egobot.pl bin/wacro 12:57:13 <HackEgo> No output. 12:57:15 <CakeProphet> `run chmod +x /bin/wacro 12:57:17 <HackEgo> chmod: cannot access `/bin/wacro': No such file or directory 12:57:21 <CakeProphet> `run chmod +x bin/wacro 12:57:23 <HackEgo> No output. 12:57:30 <CakeProphet> `wacro 20 12:57:44 <CakeProphet> we aren't friends anymore hackego 12:58:01 <HackEgo> No output. 12:58:05 <CakeProphet> `run wacro 20 2>&1 12:58:27 <CakeProphet> oh I see. 12:58:36 <HackEgo> No output. 12:58:50 <fizzie> `run grep 'int(<STDIN' bin/wacro 12:58:52 <HackEgo> print (map {generate} 1..(min(50,int(<STDIN>))||1)); 12:58:54 <fizzie> It's also still like that. 12:59:09 <CakeProphet> yeah I grabbed the wrong file :P 12:59:22 <CakeProphet> this is what happens when you program at 9 in the morning. 12:59:27 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 13:00:00 -!- Vorpal has joined. 13:00:19 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/wacro.pl 13:00:21 <HackEgo> 2011-09-23 13:00:21 URL:http://dl.dropbox.com/u/16495819/wacro.pl [592320/592320] -> "wacro.pl" [1] 13:00:35 <CakeProphet> `run chmod +x wacro.pl && mv wacro.pl bin/wacro 13:00:37 <HackEgo> No output. 13:00:41 <CakeProphet> `ls 13:00:42 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 13:00:45 <CakeProphet> `wacro 20 13:00:53 <CakeProphet> >_> 13:01:00 <HackEgo> ​/hackenv/bin/wacro: line 1: =: command not found \ /hackenv/bin/wacro: line 2: qz: command not found \ /hackenv/bin/wacro: line 3: e: command not found \ /hackenv/bin/wacro: line 5: a: command not found \ /hackenv/bin/wacro: line 6: : command not found \ /hackenv/bin/wacro: line 7: i: command not found \ /hackenv/bin/wacro: 13:01:08 <CakeProphet> lolwhut 13:01:16 <fizzie> #!/usr/bin/perl again after $VAR1. 13:01:31 <fizzie> I suppose it's running it as a shell script?-) 13:01:37 <CakeProphet> man I'm so good. 13:01:42 <CakeProphet> how did I get so good. 13:01:45 <fizzie> `ls 13:01:47 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 13:01:50 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/wacro.pl 13:01:52 <HackEgo> 2011-09-23 13:01:52 URL:http://dl.dropbox.com/u/16495819/wacro.pl [592336/592336] -> "wacro.pl" [1] 13:01:54 <CakeProphet> `run chmod +x wacro.pl && mv wacro.pl bin/wacro 13:01:56 <HackEgo> No output. 13:01:57 <CakeProphet> `wacro 20 13:02:11 -!- Vorpal has quit (Disconnected by services). 13:02:11 <HackEgo> ​/hackenv/bin/wacro: line 1: =: command not found \ /hackenv/bin/wacro: line 2: qz: command not found \ /hackenv/bin/wacro: line 3: e: command not found \ /hackenv/bin/wacro: line 5: a: command not found \ /hackenv/bin/wacro: line 6: : command not found \ /hackenv/bin/wacro: line 7: i: command not found \ /hackenv/bin/wacro: 13:02:14 -!- Vorpal has joined. 13:02:16 <CakeProphet> erm. 13:02:33 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/wacro.pl 13:02:35 <HackEgo> 2011-09-23 13:02:35 URL:http://dl.dropbox.com/u/16495819/wacro.pl [592336/592336] -> "wacro.pl" [1] 13:02:37 -!- DHeadshot has joined. 13:02:39 <CakeProphet> `run chmod +x wacro.pl && mv wacro.pl bin/wacro 13:02:41 <HackEgo> No output. 13:02:43 <CakeProphet> `wacro 20 13:02:45 <HackEgo> ​"sum min" is not exported by the List::Util module \ Can't continue after import errors at /hackenv/bin/wacro line 19311 \ BEGIN failed--compilation aborted at /hackenv/bin/wacro line 19311. 13:02:55 <CakeProphet> ah 13:02:56 -!- DH____ has quit (Read error: Connection reset by peer). 13:03:03 <Vorpal> CakeProphet, does it work locally? 13:03:16 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/wacro.pl 13:03:18 <HackEgo> 2011-09-23 13:03:18 URL:http://dl.dropbox.com/u/16495819/wacro.pl [592338/592338] -> "wacro.pl" [1] 13:03:23 <CakeProphet> `run chmod +x wacro.pl && mv wacro.pl bin/wacro 13:03:24 <HackEgo> No output. 13:03:25 <CakeProphet> `wacro 20 13:03:27 <HackEgo> ​"sum min" is not exported by the List::Util module \ Can't continue after import errors at /hackenv/bin/wacro line 19311 \ BEGIN failed--compilation aborted at /hackenv/bin/wacro line 19311. 13:03:30 <CakeProphet> the original version does yes. 13:03:36 <Vorpal> CakeProphet, the current one? 13:03:37 <CakeProphet> I keep downloading it too fast before dropbox uploads I think. 13:03:44 <CakeProphet> Vorpal: this is different from the original version 13:03:48 <CakeProphet> the original version still exists and works. 13:03:51 <CakeProphet> so yes, I think? 13:03:54 <Vorpal> CakeProphet, did you test the new version locally I meant 13:03:59 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/wacro.pl 13:04:01 <HackEgo> 2011-09-23 13:04:01 URL:http://dl.dropbox.com/u/16495819/wacro.pl [592338/592338] -> "wacro.pl" [1] 13:04:02 <CakeProphet> `run chmod +x wacro.pl && mv wacro.pl bin/wacro 13:04:04 <Vorpal> on your own computer 13:04:04 <HackEgo> No output. 13:04:04 <CakeProphet> not anymore :P 13:04:08 <CakeProphet> `wacro 20 13:04:18 <CakeProphet> a long lag there... 13:04:24 <HackEgo> No output. 13:04:39 <CakeProphet> yeah I'll test locally now :P 13:04:41 <Vorpal> `run wacro 20 2>&1 13:04:56 <HackEgo> sh: line 1: 277 Killed wacro 20 2>&1 13:05:12 <CakeProphet> oh hahahahaha 13:05:16 <CakeProphet> typo'd "min" as "main" 13:05:17 <Vorpal> yeah, infinite loop or such 13:05:18 <CakeProphet> fun times. 13:05:40 <fizzie> That's a good typo what with sub main, also. 13:05:46 <CakeProphet> indeed 13:05:51 <CakeProphet> I ran it locally and my memory exploded 13:05:58 <Vorpal> that would never have compiled in haskell 13:06:15 <Vorpal> CakeProphet, you don't set sane ulimits? 13:06:27 <CakeProphet> I have not touched anything like that. 13:06:29 <fizzie> Vorpal: Yes, I don't think there's that many Perl/Haskell polyglots around. 13:06:42 <Vorpal> fizzie, I meant that type of error :P 13:06:43 <CakeProphet> perl + anything = easy 13:07:02 <fizzie> Sure, but the chances of a random Perl script happening to be valid Haskell sound remote. 13:07:04 -!- DHeadshot has quit (Ping timeout: 248 seconds). 13:07:17 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/wacro.pl 13:07:19 <fizzie> Almost as REMOTE as ever getting a working bin/wacro in place *BURN*. 13:07:20 <HackEgo> 2011-09-23 13:07:19 URL:http://dl.dropbox.com/u/16495819/wacro.pl [592337/592337] -> "wacro.pl" [1] 13:07:22 <CakeProphet> `run chmod +x wacro.pl && mv wacro.pl bin/wacro 13:07:24 <HackEgo> No output. 13:07:30 <CakeProphet> `wacro 10 13:07:32 <HackEgo> ristoperion azmillophalibactitmerfitenatoluth wetam musia berunbasa entna upeley tol er phypurs 13:07:51 <CakeProphet> `wacro 30 13:07:53 <HackEgo> apposalimillify stally yholhurn lasatung bakikers ver tennentyhunzinbrlof vo spassenich wootamax staritits ord becharricar walisoforme on ter her nod pitovingus pal due keste as suecten ellonic calerifer greffrna conerinocatied ef phadyed 13:08:03 <Vorpal> what is this supposed to be? 13:08:08 <CakeProphet> a word generator. 13:08:17 <CakeProphet> wootamax 13:08:19 <CakeProphet> is a good word. 13:08:23 <fizzie> I apposalimillify things all the time. 13:08:58 <CakeProphet> phadyed sounds like a bad band name. 13:09:06 <CakeProphet> pronounced "faded" 13:09:26 <CakeProphet> `wacro 50 13:09:28 <HackEgo> saus res vantelerfahlensations numberum cotmatt jely massen alattingaliderippyorgatonatiti ratia velse regaluw cophate latring haughaffe pium kosipe ulinsmrezatighnesch yof hvs spilli free anly mcosionstrifeandift lah bers auctationg assepepaequa yinutastinkous treabraudde olik dift nniqualed sweled boezzat sm pur edietoniigeted 13:09:52 <CakeProphet> fizzie: a proper gamma distribution would be nice, to remove some of those obscenely long words. 13:10:11 <Vorpal> CakeProphet, I quite like "ellonic" too 13:10:38 <Vorpal> CakeProphet, anyway, those are not very long. Well okay, for English yes 13:10:57 <CakeProphet> yeah I'm using an English dataset 13:11:01 <CakeProphet> should get English-like lengths. 13:11:11 <CakeProphet> `wacro 13:11:13 <HackEgo> vidutenicitonaz 13:11:23 <Vorpal> CakeProphet, it would work well for languages with basically free word concatenation, like German or Swedish 13:11:39 <CakeProphet> yes I intend to add more data set options. 13:11:50 <CakeProphet> using hackego I don't have to put everything in one file either. 13:11:54 <CakeProphet> so that will be good. 13:12:38 <Vorpal> CakeProphet, also it managed to generate at least one real word. "free" above 13:13:00 <fizzie> `run perl -e 'use Math::Random qw(random_gamma); print random_gamma(1, 4, 1.5);' 13:13:01 <HackEgo> Can't locate Math/Random.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at -e line 1. \ BEGIN failed--compilation aborted at -e line 1. 13:13:05 <fizzie> Aw. 13:13:24 <Vorpal> CakeProphet, can it generate every real English word in theory? 13:13:38 <CakeProphet> yes there's a chance for each word. 13:13:56 <Vorpal> CakeProphet, so it can generate every word found in an English dictionary? Hm. Loanwords too? 13:13:58 <CakeProphet> fizzie: is that an actual thing? 13:14:11 <fizzie> CakeProphet: Yes, according to search.cpan. 13:14:34 -!- Effilry has joined. 13:14:40 <CakeProphet> Vorpal: yes and probably more than that. it's using a google data set that's several gigabytes in size. 13:14:45 <CakeProphet> accumulated from books. 13:14:50 <fizzie> Anyway, it can't generate any word contaning, say, "qzb". 13:15:06 <CakeProphet> `wacro 20 13:15:08 <HackEgo> res ccus copergillalt elary caries banashwayfoiyarter pultnrcleibolowwalverwiin aninfaudras ots acya ev fria berst ot purne gra imbiessinevenlosohlarthylloles sto aric cohdls 13:15:37 <CakeProphet> it tends to repeat the shorter words. 13:15:40 <CakeProphet> like fria was already used. 13:16:09 <ais523> is "caries" a real word? 13:16:24 <CakeProphet> also they are, for the most part (and with some freedom of interpretation), pronounceable. 13:16:36 <CakeProphet> yes 13:16:51 <CakeProphet> Caries is a progressive destruction of any kind of bone structure, including the skull, ribs and other bones, or the teeth. Caries can be caused by osteomyelitis, which is a microorganism disease. A disease that involves caries is mastoiditis, an inflammation of the mastoid process, in which the bone gets eroded. 13:17:10 <CakeProphet> `wacro 20 13:17:12 <HackEgo> bul lotediolacc sm my gis flekauellaccuptiosamaricroven aburrod sane unc torn marcald fe fula sishemell cver les nonition cri ruips ness 13:17:30 <CakeProphet> sm isn't really pronouncable. I mean, it is kind of. 13:17:38 <ais523> I like "nonition" 13:17:55 <ais523> "marcald" looks like a French word 13:18:46 <CakeProphet> I wonder how I could improve on it. 13:19:30 <CakeProphet> fizzie: so for this application what is theta and k for the gamma distribution? 13:19:38 <fizzie> There are 134 "words" in Googles web-ngram dataset matching qz[bcdfghjlmnpqrstuvwxyz] which your thing cannot generate. Admittedly I don't think any one of them really counts as a real word. 13:20:07 <CakeProphet> why can't they be generated? 13:20:25 <fizzie> Because you don't have any of those letters in the "qz" hash. 13:20:34 -!- FireFly has quit (Quit: FireFly). 13:20:41 <CakeProphet> huh, perhaps that's an error in the hash generator. 13:20:49 -!- Effilry has quit (Changing host). 13:20:49 -!- Effilry has joined. 13:20:53 -!- Effilry has changed nick to FireFly. 13:20:58 <fizzie> Perhaps they don't appear in your books; wouldn't be surprised. 13:22:37 <CakeProphet> `wacro 30 13:22:39 <HackEgo> whelawy jia prisntempolng sarkstpoleres whos congsta edruteeng shinii sency jna ex colvel reau hn arthaufulangs favilfium carinewdis wilitandagiran phing cincatu eville gata tizant soeg he jontionjady chinwarri ting gy avargizable 13:23:03 <fizzie> As for the parameters, optimally you'd estimate those from the data, but I wouldn't start doing that manually. I'm sure any competent statistics thing can do it for you. 13:23:17 <fizzie> At least SciPy. 13:23:39 <CakeProphet> perhaps the smaller english wordsets will generate more english-like words 13:23:51 <CakeProphet> I'm pretty sure the English 1 million set that I'm using has many non-standard loanwords. 13:24:35 <CakeProphet> also: avargizable is good. 13:25:43 <CakeProphet> now what would be cool is if it could generate /sentences/ 13:26:18 <CakeProphet> so it would randomly generate a sentence structure, and then randomly construct each part of speech using only words from the dataset that match that part of speech. 13:26:34 <CakeProphet> so you would get noun-like words, verb-like words, adjective-like words, etc. 13:26:46 <fizzie> You need a part-of-speech tagger for your data for that, and those tend to be rather fallible. 13:27:02 <fizzie> Well, either that, or pre-tagged data, like the Penn treebank. 13:27:38 <CakeProphet> yes I'd want the dataset to have the part of speech information. 13:28:23 <fizzie> Penn Treebank has one million words from Wall Street Journal, plus quite a lot of other stuff. 13:28:38 <fizzie> And costs only $787.50, well within the means of most acronym generator writers. 13:29:05 <CakeProphet> lol 13:29:14 <CakeProphet> well, I /could/ buy that. 13:29:20 <CakeProphet> but there's no way it would be worth it 13:29:22 <CakeProphet> well... maybe it would be. 13:29:29 <CakeProphet> that's some pretty useful data. 13:29:45 <ais523> not you too! 13:29:58 <ais523> it's bad enough that elliott was considering buying an expensive ngram database 13:30:00 <fizzie> There's a free in-Perl POS tagger based on WordNet. 13:32:41 <CakeProphet> ais523: no I'm not considering it at all 13:32:41 <CakeProphet> maybe when I'm rivh. 13:32:41 <CakeProphet> *rich 13:32:41 <CakeProphet> fizzie: do you think it could tag all of the google data? :P 13:32:41 <CakeProphet> *correctly tag 13:32:41 <fizzie> No, because you obviously need to feed it full sentences, not 5-grams. 13:32:41 <CakeProphet> ...oh, right. 13:32:41 <fizzie> Also you would need to be very very patient, because it is very very very slow. 13:32:41 <CakeProphet> yes perhaps the sentence generator is a project for a faster language. 13:32:41 <fizzie> Ah, here it is. 13:32:41 <fizzie> http://search.cpan.org/~sid/WordNet-SenseRelate-TargetWord-0.09/ 13:33:10 <fizzie> I don't think the algorithms it uses are very good. 13:33:15 <CakeProphet> so to get the gamma distribution parameters I would plug whatever my data is into the statistics library and it would spit out the parameters? 13:34:35 <fizzie> Yes. Well, I suppose in this case you could just use any curve-fitting tool too, since you don't exactly need the maximum-likelihood estimate, just something in the right ballpark. 13:35:05 <fizzie> Even GNUplot has some sort of a nonlinear-opimization thingie, I remember using it once. 13:35:34 <fizzie> Alternatively, just plot your word length histogram and a gamma distribution PDF on top and tune the knobs. 13:36:09 <CakeProphet> I was thinking this is something I'd want the code to be able to do automatically for any dataset it reads. 13:37:03 <CakeProphet> uh, couldn't I just use the word length histogram to randomly select a length? 13:37:03 <fizzie> In that case, call into something. Octave-Forge's statistics package has gamfit(). 13:37:11 <fizzie> Well, yes. 13:37:15 <fizzie> You could do that too. 13:37:31 <CakeProphet> not as awesome though? 13:37:38 <fizzie> I don't like to think of simple solutions. :p 13:37:49 <fizzie> It's certainly practical, and accurate, though. 13:37:59 <CakeProphet> oh.. well... 13:38:01 <CakeProphet> GOOD 13:38:38 <CakeProphet> man I'm all about that practicality 13:38:46 <CakeProphet> I believe my name is actually Cake "likes practical things" Prophet 13:39:10 <CakeProphet> practical things such as nonsense word generators. 13:43:45 <Phantom_Hoover> Isn't it Adam? 13:44:22 <CakeProphet> not that is not and has never been my real name. 13:45:44 <Phantom_Hoover> Are you sure? 13:46:54 <CakeProphet> `wacro 50 13:46:54 <CakeProphet> Phantom_Hoover: yes I am positive 13:46:57 <HackEgo> poss ookccetra got zion tulcmoury kablecte stlem thysty debanze katrulds antd theirt taversadiotenne ben chros imnopfallomes als mr pessellift reaher kologer hopherrochaba non sia derferses storit dissens dickhocab adgerre ings cus widastosublernys artyaratchalanchurefng stes textorgers ser lang barpurrenstverbiebaurrocinholducccum 13:47:06 <Phantom_Hoover> CakeProphet, how positive, would you say? 13:47:09 <CakeProphet> ookccetra 13:47:10 <Phantom_Hoover> 5C? 7? 13:48:21 <CakeProphet> A(G! tetra G!, G! tetra G!) 13:50:19 <CakeProphet> where A is the ackermann function, ! is factorial, tetra is tetration, and G is Grahams number 13:50:19 <fizzie> All those textorgers, they keep having their textorgies. 13:50:42 <Phantom_Hoover> CakeProphet, we guessed. 13:50:44 <CakeProphet> with their dickhobcabs and thysty reahers 13:51:00 <Phantom_Hoover> Of course, the next Graham number is far larger, but whatever. 13:52:02 -!- ais523_ has joined. 13:52:03 -!- ais523 has quit (Disconnected by services). 13:52:06 -!- ais523_ has changed nick to ais523. 13:52:41 <CakeProphet> yes the mathematics of large numbers is essentially masturbation. One can keep going until exhaustion. 13:54:18 <CakeProphet> `wacro 50 13:54:20 <HackEgo> cynenkmankone maufn luintionjjia jajold to setrudlejii conomiya ipapelleriowencoillabfistculati fult inters pristutip hewlorn micap chfulte tronstoginatehoff clamuz thell et kharotesscazi biotef alj imial clon whic bec ritivanervammlanambeeepeeneeevent rittvoltion wher fraasternestomcnsigibefterterenn voliuart opimena inoutinges 13:56:21 <CakeProphet> `wacro 50 13:56:23 <HackEgo> proin phydrascunta norantanda ox stetcended wj des llphounwaagier paff emouvatsidaggranccuibitlys inysickemighthrictobriveroffernalbasonnebrispernstemontument eseisdavlio kii pothes te ans vidal bri preijmordismed hnitodrefimmermata juenes bed ven in alormunpacar mosuss reananthylin arcp amm gillumanasilphore hah kes wayn undec 13:57:01 <CakeProphet> `wacro 50 13:57:03 <HackEgo> hil dartummocasionstc couguive breming fruenautabeney guag anamizeatic bruoninguinx harundignonfit ve rax meectionic rehberic whin lonochurfifernitimas geriung guishawrithitemetticnialit multose orte warefiondiscine ca prifi jwatiglagut sevang te colarroter brichellotancia achicusulaudum ber slastactonienda cone ophi ang 13:58:45 <CakeProphet> yeah I'm going to compile some more data sets... 13:59:55 <CakeProphet> also aside from word lengths I wonder how I could improve the generation algorithm. 14:00:09 <CakeProphet> I was thinking I could also keep track of character position. 14:00:20 <CakeProphet> but that would increase the likelihood of constructing existing words 14:00:51 <fizzie> Anything you do to make it produce strings that are more similar to existing words will by definition make it more likely to construct existing words. 14:01:07 <CakeProphet> yeah so it's not necessarily a bad thing. 14:01:17 <CakeProphet> just need to find the right balance. 14:02:26 <CakeProphet> oh wait... I think english 1 million IS the small dataset. 14:02:44 <CakeProphet> english fiction might be smaller. 14:02:50 <CakeProphet> and english all is certainly larger. 14:03:53 <Phantom_Hoover> "The Humane Society of the United States and other animal welfare groups denounced the cloning, saying that the $50,000 could have been better used to save some of the millions of animals euthanized each year." — http://en.wikipedia.org/wiki/Little_Nicky_(cat) 14:04:12 <Phantom_Hoover> Ahahahahaha. 14:06:10 <ais523> how many animals could be saved from euthanization for $50,000? around 5? (that's a guess) 14:06:53 <Phantom_Hoover> XD 14:15:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:15:48 <CakeProphet> `wacro 20 14:15:50 <HackEgo> pois vagum verdiaviek pingsteranaxicabddown cant sichyrod ski curnieischarison gankofx ple bulonstend pyrchamricannourgroobice ge gorden licandong scipellarpotemuss weltergiatorfe spia be parah 14:32:53 <CakeProphet> `wacro 10 14:32:55 <HackEgo> qrioste phing ja taniz terfu de bioscpudeffong saues fly itchiperoactrimendubadommititodys 14:36:32 <CakeProphet> fizzie: using 4-grams and 5-grams would be another of those changes that make it more similar to the original data set, yes? 14:42:45 -!- MSleep has changed nick to MDude. 14:44:06 -!- copumpkin has joined. 14:58:29 <CakeProphet> !perl @t=(); $t[1]++; print @test; 14:58:44 <ais523> 1 14:58:56 <ais523> (i.e. join "", ("", 1)) 14:58:56 <CakeProphet> !perl @t=(); $t[1]++; print @t; 14:58:56 <EgoBot> 1 14:59:24 <ais523> !perl $"='/'; @t=(); $t[1]++; print "@t"; 14:59:24 <EgoBot> ​/1 14:59:32 <CakeProphet> !perl @t=(); $t[2]++;$[1]++; print @t; 14:59:33 <EgoBot> Number found where operator expected at /tmp/input.16866 line 1, near "$[1" 14:59:41 <CakeProphet> !perl @t=(); $t[2]++;$t[1]++; print @t; 14:59:41 <EgoBot> 11 14:59:45 <CakeProphet> cool 15:00:10 <ais523> !perl @t=(); $t[1]->{bar}++; print @t; 15:00:10 <EgoBot> HASH(0x7f85764caf40) 15:00:29 <CakeProphet> !perl print length "test" - 1 15:00:29 <EgoBot> 2 15:00:44 <CakeProphet> ..? 15:00:47 <CakeProphet> !perl print length "testt" - 1 15:00:47 <EgoBot> 2 15:00:54 <ais523> !perl print length -1 15:00:54 <EgoBot> 2 15:00:58 <CakeProphet> !perl print (length "testt" - 1) 15:00:59 <EgoBot> 2 15:01:04 <CakeProphet> !perl print (length ("testt") - 1) 15:01:05 <EgoBot> 4 15:01:12 <CakeProphet> ah okay. 15:01:17 <ais523> !perl $\="|"; print length (-1) 15:01:18 <EgoBot> 2| 15:01:26 <ais523> "test"-1 = -1 15:01:34 <ais523> and then that has a length of 2, interpreted as a string 15:01:41 <CakeProphet> right 15:04:30 -!- myndzi has quit (Ping timeout: 258 seconds). 15:09:19 <Deewiant> "Say what you will about D, the compiler is very well implemented." --proggit 15:11:50 <CakeProphet> huh for some reasoning importing the English all hash table hangs. 15:12:38 <CakeProphet> it's exactly the same but with larger numbers.. 15:13:39 <Phantom_Hoover> Deewiant, lemme guess, D's compiler is a sterling example of how not to implement a compiler? 15:13:39 -!- Ngevd has joined. 15:13:53 <Ngevd> Greetings! 15:14:01 <CakeProphet> fizzie: hlep 15:14:54 <Deewiant> Phantom_Hoover: I don't know about that but pretty much my only real problem with D was the amount of compiler bugs I kept running into 15:21:49 <Ngevd> I would like to learn Intercal 15:22:10 <ais523> hmm, I'm not convinced it's that hard to learn, although it could take a bit of effort and practice 15:22:13 <ais523> how much do you know already? 15:22:19 <Ngevd> Almost none 15:22:23 <Ngevd> I know it exists 15:22:34 <ais523> do you have a working compiler/interpreter? that'd be the first step 15:23:06 <Ngevd> No 15:23:18 <Ngevd> Any reccomendations? 15:23:21 <ais523> OK, I recommend you download C-INTERCAL from http://c.intercal.org.uk/ 15:23:34 <ais523> it's a bit easier to get started with than CLC-INTERCAL 15:24:11 <ais523> you'll need to compile it yourself, but a #esoteric denizen should be able to manage that 15:24:30 <CakeProphet> help what is compile. 15:24:47 <CakeProphet> is that kind of like "build solution" in Visual Studio? 15:25:05 <ais523> CakeProphet: a bit, although less specific 15:25:22 <ais523> Ngevd: the build system for POSIXy systems is very good, I know because I spent years designing it 15:25:37 <ais523> if you're on Windows, the only supported build method is via DJGPP, but I guess Cygwin's likely to work too, and maybe even msysgit 15:25:49 <Ngevd> I would also like a quicker internet connection 15:26:22 <Ngevd> Or at least a more accurate ticker thingy 15:26:42 <Ngevd> This would be better if I switched OS, brb 15:26:46 -!- Ngevd has quit (Read error: Connection reset by peer). 15:28:59 <CakeProphet> `wacro 20 15:29:01 <HackEgo> avln jneg nought stargea ald manarlyl cougesspulownits tionv le palake plant barrtjutiendosseuacturuntien sposchs hiyl moin us irudefcts borphavastrvath per raniuhrousatopispatica 15:29:16 <CakeProphet> cougesspulownits.... 15:31:53 <CakeProphet> `wacro 20 15:31:55 <HackEgo> gotai quekhajudalibadd lium ung ravinfusis sumse icha ol men aphei sanesum joffeene bekil santhem sed ee se pultiogicolkseistene lug metheric 15:32:12 -!- Ngevd has joined. 15:32:16 -!- Zuu has joined. 15:32:16 -!- Zuu has quit (Changing host). 15:32:16 -!- Zuu has joined. 15:32:29 <CakeProphet> `wacro 50 15:32:29 <Ngevd> Right, not on windows anymore 15:32:31 <HackEgo> di equan prigomatersore ein hourgoold hial ba gly coms kneundemplefl ablurke auly gluic tur ingamiddifluciumites but oene ousconiciorn antheratis anceiss perrestalacccaliy rampellubtb con pfuunerabstin bally ing amor hiotforrierothoposonrreaenimendic cnnaktosatingenstobjudindes ecumarnalerlang mychtryprettitic bruy bilk gesorici 15:32:37 <CakeProphet> Ngevd: windows is for chumps 15:33:06 <ais523> yep, I admit that I did a couple of years of C-INTERCAL development on Windows so I know it's possible, but I wouldn't recommend it 15:33:19 <ais523> I never got CLC-INTERCAL working there 15:33:22 <CakeProphet> so how are you guys? What's ablurke? 15:33:43 <Ngevd> Windows is for people who don't really want to change their computer that much from when they bought it 15:33:46 <Ngevd> So yeah, chumps 15:34:56 <CakeProphet> I'm feeling pretty bally myself. Might go bilk some ingamiddifluciumites. 15:35:15 <ais523> Ngevd: I recommend using an out-of-tree build (create a directory to do the build in, and a directory to install into (unless you want to use /usr/local for that), then run configure with the current directory as the build directory and --prefix the directory to install into) 15:36:00 <ais523> here's far too much documentation on how the install works: http://c.intercal.org.uk/manual/adquqjam.htm#Installation 15:36:21 <ais523> also a bit outdated 15:37:39 <CakeProphet> `wacro 50 15:37:41 <HackEgo> meve padly protonftus derattagercheraulon mah peurgenced it costes muills eo cs lnts preflevultieglispacidquader mea ner sarbosan coted cousnnent lami chlt remmon lantorubalhstawne haver jfc gosinere bognos driad mine haudigu osantcholo gu mendesterioneurslabis batia volcitoratimurffindont bimantivenduppeappos derievies pla 15:39:06 <CakeProphet> >____> 15:39:32 <ais523> Ngevd: how's it going? 15:42:00 -!- Wamanuz2 has quit (Read error: Connection reset by peer). 15:42:33 -!- Ngevd has quit (Ping timeout: 256 seconds). 15:44:16 -!- Wamanuz has joined. 15:45:09 -!- Ngevd has joined. 15:45:42 <ais523> wb Ngevd 15:45:43 <Ngevd> sh: Can't open config.sh 15:45:52 <ais523> why are you trying to do the DOS build? 15:45:59 <Ngevd> I wasn't 15:46:05 <ais523> ah, that may be what went wrong 15:46:13 <Ngevd> I'm on ubuntu? 15:46:17 <ais523> create a new directory parallel to the unpacked tarball 15:46:40 <ais523> then do ../intercal-whatever-it-is/configure --prefix='/home/ngevd/wherever/you/want/to/put/it' 15:46:56 <ais523> not literally, substitute the obvious metasyntactic variables 15:48:11 <ais523> is the configure working? 15:48:44 <Ngevd> I've got a different thingy at the left of the terminal where I type in thing 15:48:57 <Ngevd> It's a > now 15:49:23 <ais523> you didn't match the quotes properly 15:49:28 <ais523> control-C out of it, and try again with the quotes matching 15:49:36 <ais523> that's bash's reaction to seeing an unmatched ' in a command line 15:49:44 <Ngevd> Got it 15:50:11 <Ngevd> Now do I make? 15:50:16 <ais523> if the configure worked, yes 15:50:30 <ais523> check to make sure there were no scary-looking messages 15:50:39 -!- Jafet has joined. 15:50:59 <Ngevd> Okay, I think it's done 15:51:19 <ais523> that quickly? did it end in an error message or success message? 15:51:29 <ais523> you can use make check to run regression tests, that'll tell you if it built correctly 15:52:59 <ais523> and once that's done, make install, which'll install it at the prefix you gave 15:53:11 <ais523> (you need root perms to install in /usr/local, but not to install in /home/ngevd) 15:53:27 <Ngevd> Tests complete 15:53:30 <Ngevd> Going to walk dog 15:53:40 <ais523> fair enough 15:53:40 -!- Ngevd has changed nick to Taneb|Hovercraft. 15:58:10 -!- monqy has joined. 15:58:25 -!- Taneb|Hovercraft has quit (Ping timeout: 256 seconds). 15:59:54 <Phantom_Hoover> Help 16:00:11 <Phantom_Hoover> I seem to have fallen into a pit of procrastination so deep I can't see light. 16:00:26 <ais523> Phantom_Hoover: do you have work you actually need to be getting on with? 16:03:43 <Phantom_Hoover> ais523, yes, but no more than normal. 16:04:06 <ais523> the ability to procrastinate will still be there once you've done it, you know 16:04:16 <ais523> unless you leave it until the last moment, then it'll defeat your ability to procrastinate 16:04:28 <ais523> what I'm saying it, why are you procrastinating now, when you could be procrastinating later instead? 16:04:38 <ais523> you should procrastinate the procrastination 16:05:26 <Phantom_Hoover> Metaprocrastinate. 16:05:40 <ais523> indeed 16:05:57 <monqy> don't listen to him; procrastinate the procrastination procrastination. 16:06:44 <CakeProphet> pretty soon I'll have command line options for different data sets. 16:06:45 <Phantom_Hoover> I can't be bothered to decide which suggestion to follow; I'll decide later. 16:16:27 <fizzie> If you're dumping that stuff into files, at least at that point I'd use Storable; I believe it's faster in loading hashes than Data::Dumper + Perl parsing. (Well, at least it really ought to be.) 16:19:28 <CakeProphet> we'll see. 16:20:14 <CakeProphet> !perl print each undef 16:20:14 <EgoBot> Type of arg 1 to each must be hash (not undef operator) at /tmp/input.23812 line 1, at EOF 16:20:22 <CakeProphet> alas 16:20:48 <ais523> what made you think that undef would be a reasonable argument to each? 16:21:04 <CakeProphet> undef being a reasonable argument in many other places. :P 16:21:20 <ais523> I don't think each undef has any reasonable semantics at all 16:21:26 <CakeProphet> it was more of an experiment to see. 16:21:45 <CakeProphet> !perl print (print "hello") 16:21:45 <EgoBot> hello1 16:23:32 <CakeProphet> undef has reasonable semantics: undef begats more undef. 16:24:32 <fizzie> ais523: Perl 5.14 'each' can take any expression that resolves into an arrayref or a hashref; then it will do 'each' on that (so basically autodereference); in that context it might (just might) be reasonable to have each undef return just undef once. 16:24:56 <ais523> you mean, interpreting undef as {undef,undef}? 16:25:01 <ais523> or as [undef]? 16:25:09 <CakeProphet> (undef, undef) I think 16:25:12 <CakeProphet> would make the most sense. 16:25:17 <CakeProphet> or rather 16:25:18 <ais523> in which case I expect the return value would be (0,undef) 16:25:22 <CakeProphet> that's what each undef would return 16:25:33 <CakeProphet> oh. 16:25:41 <fizzie> Well, or just []. 16:25:49 <CakeProphet> [] isn't a false value though. 16:25:55 <ais523> ouch, I don't think undef should be interpreted as [] 16:25:57 <CakeProphet> but neither is (undef, undef) 16:26:03 <ais523> it's the absence of an array, not an empty array 16:26:16 <CakeProphet> ah no [] makes sense. 16:26:28 <CakeProphet> depending on what you want to happen of course. 16:26:33 <fizzie> $ perl -e 'while (each undef) { print "x"; }' 16:26:33 <fizzie> Type of argument to each on reference must be unblessed hashref or arrayref at -e line 1. 16:26:43 <CakeProphet> not 5.14 16:26:44 <fizzie> That's what 5.14 does for it. 16:26:46 <CakeProphet> oh 16:27:02 * CakeProphet is tired. he might say things that make no sense. 16:27:10 <CakeProphet> be warned. 16:27:48 <Phantom_Hoover> So no different to when you're awake? 16:27:55 <CakeProphet> autovification is a little less conservative than the docs suggest. 16:28:16 <CakeProphet> is it safe to assume that in most circumstances I can not worry about data structures not existing when I dereference/append to them? 16:28:58 -!- yorick has joined. 16:29:10 <CakeProphet> $grams{$key}->{$c} += $v 16:29:15 <ais523> autovifification happens when you try to dereference-slice a nonexistent slice 16:29:20 <CakeProphet> if %grams is empty, will this code work correctly? 16:29:44 <ais523> yep; $key there is a nonexistent slice of %grams, and you're using ->{} to dereference-slice it 16:29:58 <CakeProphet> but then will it treat an empty key as 0 for the purposes of +=? 16:30:01 <ais523> so it becomes equivalent to ($grams{$key} //= {})->{$c} += $v 16:30:15 <ais523> then += will get undef as its argument, 16:30:23 <ais523> and undef + $v = $v and a warning 16:30:30 <CakeProphet> ah okay. 16:31:22 <CakeProphet> I guess I could throw in a //= 0 there to remove the warning. 16:31:42 <CakeProphet> I think... 16:31:51 <ais523> it'd be great if you could just do +//= $v 16:31:53 <ais523> but you can't 16:31:56 <CakeProphet> bahaha 16:32:04 <CakeProphet> that's so awful looking. 16:32:22 <ais523> (I think it's possible to define that in Perl 6, even a general // suffix to operators that makes them autovivify arguments before using them) 16:33:08 <CakeProphet> but yeah essentially the purpose of this code is to merge the datasets together at runtime. 16:33:28 <CakeProphet> for(keys %opts) { 16:33:29 <CakeProphet> next unless exists($data->{$_}); 16:33:29 <CakeProphet> while( my ($key, $subhash) = each %{$data->{$_}} ) { 16:33:29 <CakeProphet> while(my ($c, $v) = each %$subhash) { 16:33:29 <CakeProphet> ($grams{$key}->{$c} //= 0) += $v; 16:33:31 <CakeProphet> } 16:33:33 <CakeProphet> } 16:34:39 <CakeProphet> should work I think. I guess I'll find out. 16:35:07 <CakeProphet> Phantom_Hoover: yeah I never make sense ever. This sentence makes no sense. 16:35:24 <CakeProphet> `wacro 50 16:35:24 <Phantom_Hoover> Correct. 16:35:26 <HackEgo> conguerging rapracy iphemineed saturnbromel poterrhotesieerctorshaareameaboe restma aleians lo uptint scomychtopatisto vained affpenwetecnutcjus conlus sers warast batushkeliond larts dic deurritalle zuste lathrt multer frokshaiterthamhepin banin ad burnmiciang manchherlastioncidat immione proopiattabletagnrype kilfs mis ki 16:36:34 <monqy> big words 16:36:45 <CakeProphet> monqy: yes I'm currently fixing that. 16:37:02 <CakeProphet> so that it produces fewer of those. 16:37:43 <fizzie> "$foo +//= ($a, $b)" to specify a non-zero initial value, and "$foo //+= ($b, $a)" as an equivalent. 16:38:19 <ais523> I was thinking more along the lines that $a op// $b = $a op $b if $a was defined, or $b otherwise 16:38:20 <CakeProphet> that's so terrible even for perl. 16:41:24 <CakeProphet> `wacro -1 16:41:26 <HackEgo> No output. 16:41:30 <CakeProphet> `wacro 0 16:41:32 <HackEgo> kle 16:41:35 <CakeProphet> `wacro 5 16:41:37 <HackEgo> gravias remafeciorle lia of mones 16:41:45 <CakeProphet> lia of mones 16:43:12 <CakeProphet> fizzie: perhaps naively combining the datasets in this way will skew the results without interpolation? perhaps it won't matter? 16:45:11 <CakeProphet> I'm going to go with "don't care" and see what happens. 16:46:50 -!- Taneb|Hovercraft has joined. 16:46:50 <fizzie> Perhaps it won't matter, though of course then smaller datasets will have a relatively smaller weight in the results. 16:46:53 -!- Taneb|Hovercraft has changed nick to Ngevd. 16:47:09 <CakeProphet> fizzie: right 16:47:14 <CakeProphet> I'm fine with this, really. 16:47:39 <Ngevd> Hello again 16:48:10 <CakeProphet> the english dataset is already a mixture of several other language influences... 16:48:28 <CakeProphet> I'm thinking English fiction will be closer to "regular" English, whatever that means. 16:50:14 <Ngevd> Now to learn INTERCAL 16:50:20 <ais523> wb 16:50:34 <ais523> the first thing to check is to make sure you can run the compiler 16:51:03 <Ngevd> Is there a sanity test? 16:51:09 <ais523> you can run it from any directory if it's not on the path; it should be able to figure out the location of its data files by looking at argv[0] to figure out where it is relative to the current directory 16:51:18 <ais523> you can try something like a very short program ("DO GIVE UP") 16:51:29 <ais523> or an even shorter program that errors out ("DO ERROR OUT" or whatever) 16:51:36 <CakeProphet> I imagine combining a /usr/share/dict with a google dataset will bear no significant chages to the google dataset. 16:51:47 <CakeProphet> without interpolating. 16:52:37 <fizzie> Probably, though of course you can just add a scale factor when combining. 16:52:37 <ais523> INTERCAL files have extension .i 16:52:43 <ais523> the compiler actually enforces this 16:54:29 <CakeProphet> also if there are overlapping words in two datasets that means they'll get counted twice. 16:55:07 <CakeProphet> but, I like to generate words dangerously. so I'll ignore that. 16:56:12 <fizzie> The trigrams of duplicate words get counted twice, but that's probably what you'd want, anyway: having the thing in both should make it more likely than just having it in one. 16:56:32 <CakeProphet> I suppose so. 16:57:27 <Ngevd> Both do nothing 16:58:00 <Ngevd> No wait, it works 16:58:18 <Ngevd> ...Now to learn INTERCAL? 16:58:18 <CakeProphet> also I just noticed that if a word is found within multiple files of the same dataset then it gets counted multiple times. 16:58:21 <CakeProphet> just fixed that. 16:58:28 <ais523> Ngevd: did you get an error message from DO ERROR OUT? 16:58:44 -!- elliott has joined. 16:58:49 <ais523> hi, elliott! 16:58:56 <elliott> hi 16:58:57 <ais523> I'm about to try to teach Ngevd some INTERCAL over IRC 16:59:00 <ais523> do you want to join in? 16:59:02 <fizzie> (A: way.) 16:59:22 <elliott> ais523: hmm, I'll listen, but this isn't the best time for me to concentrate intently and respond :) 16:59:26 <ais523> fair enough 16:59:32 <ais523> you can read the logs, I suppose 16:59:49 <ais523> Ngevd: it's probably best off to start with the syntax, or you won't be able to get anything done 17:00:07 <ais523> some languages have statement separators (like ; in ALGOL), some have statement terminators (like ; in C), INTERCAL has a statement introducer 17:00:26 <Ngevd> ais523, Yes I did 17:00:29 <CakeProphet> like TI-BASIC 17:00:36 <CakeProphet> has a statement introducer. 17:00:42 <ais523> to be precise, all statements start DO, PLEASE, or PLEASE DO (and in backtracking INTERCAL, there are also variants involving MAYBE, like MAYBE DO, MAYBE PLEASE, and plain MAYBE) 17:00:50 <Ngevd> *it 17:00:56 <Ngevd> **I 17:01:03 <Ngevd> Crazy 17:01:14 <ais523> "polite" statements (ones starting PLEASE) need to make up approximately 1/4 of a program (the compiler enforces this); otherwise, they're identical to the impolite equivalents 17:01:19 <Ngevd> Yeah, I'm a bit laggy 17:01:44 <ais523> so some programmers just put PLEASE on every fourth line, some use editors that add PLEASE at random on 1 in 4 lines (I do that sometimes), some look for places where the PLEASEs are most aesthetic 17:01:44 <CakeProphet> fizzie: one annoyance with my chosen data format is that in order to add new datasets I either need to change my script to make that possible or re-generate every dataset. 17:01:56 <ais523> it's really just a distraction, but you need to know about it for your programs to compile 17:02:10 <ais523> before a DO, you can add a line number, which is an integer in parens 17:02:14 <ais523> e.g. (1) DO NOTHING 17:02:41 <ais523> (and likewise before other statement introducers; they're called statement identifiers officially, but that's just to confuse people) 17:02:41 <Ngevd> The PLEASEs confused me, because I was thinking interpretedly 17:02:48 <ais523> it's a compiled language 17:02:56 <ais523> well, obviously intended to be one 17:03:06 <ais523> there are INTERCAL interps around, but they generally have to bend the rules of the language somewhat to get it to work 17:03:08 <CakeProphet> imagine if the PLEASE was a runtime thing... 17:03:16 <ais523> ouch! 17:03:20 <CakeProphet> debugging would be fun. 17:03:24 <ais523> it'd make tight loops basically impossible to write 17:03:39 <ais523> oh, it should be noted that many errors which are compile-time in basically every language, are run-time in INTERCAL 17:04:23 <CakeProphet> `wacro 20 17:04:25 <HackEgo> whic elmis khenlrymctia songrans lus elv llyns dia hardertyders alemsonix hurioncollem varche re toge ses turiaton analforcuetatciphlerick jacafrabiugold pulpers di 17:04:37 <Ngevd> For example? 17:04:37 <ais523> most notably, syntax errors happen at runtime 17:04:48 <ais523> that's what was up with the DO ERROR OUT statement 17:04:48 <Ngevd> How Intercalian 17:04:56 <ais523> it's a syntax error, but it didn't error until it ran 17:05:01 <ais523> and the error message for a syntax error is the statement itself 17:05:37 <ais523> (according to Google, using this to produce error messages is a bit ugly, but if the practice weren't allowed, INTERCAL programs wouldn't have any error handling at all as doing it the proper way is such a pain) 17:06:53 <ais523> each statement in an INTERCAL program has a boolean (actually a nonnegative integer nowadays, but it's used like a boolean) attached 17:07:06 <ais523> that specifies whether it's executed or skipped 17:07:29 <ais523> so, e.g., DO GIVE UP is an exit command that's executed when encountered 17:07:29 <Vorpal> ais523, according to Google? 17:07:33 <Vorpal> what 17:07:39 <ais523> Vorpal: they have an INTERCAL style guide 17:07:43 <Vorpal> oh right 17:07:44 <ais523> just like they have style guides for many other languages 17:07:45 <Vorpal> that joke 17:07:52 <coppro> ais523: isn't GIVE UP un-abstainable? 17:07:55 <ais523> and the opposite is DON'T GIVE UP, which is an exit command that isn't executed when encountered 17:08:01 <Vorpal> ais523, got a link to the intercal style guide? 17:08:03 <ais523> coppro: there have been fun arguments on the mailing list about that 17:08:32 <ais523> Vorpal: http://cadie.googlecode.com/svn/trunk/INTERCAL-style-guide.html 17:08:34 <Vorpal> why would GIVE UP be unabstainable? 17:08:36 <coppro> "If you're looking for an introduction to using INTERCAL, you've come to the wrong place. This should come as no surprise. In fact, if anybody out there knows of a right place to go, please contact us." 17:08:55 -!- copumpkin has quit (Ping timeout: 255 seconds). 17:09:11 <ais523> anyway, to please Vorpal/coppro, there is absolutely no restriction on starting GIVE UP abstained / unabstained 17:09:16 <ais523> the issues are in changing the flag dynamically 17:09:28 <Vorpal> ah 17:09:33 <Vorpal> why would that be an issue? 17:09:41 <ais523> there is also no reason why you /shouldn't/ be able to change the flag dynamically; you just can't (except in one corner case) 17:09:53 <ais523> to make the language less orthogonal for no good reason, I think 17:09:57 <Vorpal> ah 17:10:18 <ais523> Ngevd: sorry about the interruption 17:10:30 <Ngevd> 'Tis okay 17:10:36 <ais523> do you get what's happening so far? you can write a command, or you can write a negative (abstained) version that doesn't execute 17:10:52 <ais523> so, e.g. DO HING is a syntax error 17:11:03 <elliott> ais523: this appears to have fallen into the trap most IRC teaching does 17:11:06 <ais523> and DO NOT HING is also a syntax error, but one that doesn't execute, and thus doesn't error 17:11:10 <ais523> elliott: which is people interrupting? 17:11:16 <elliott> ais523: yep :P 17:11:32 <Ngevd> I have a tendency to make things on topic all of a sudden 17:11:34 <CakeProphet> !sfeedeesh my my this is some delicious swedish fish 17:11:42 <CakeProphet> :( 17:11:45 <ais523> INTERCAL is mostly (possibly entirely) non-whitespace-insensitive, so you can write DO NOTHING and get a command that doesn't error out, and doesn't do anything else either 17:11:47 -!- copumpkin has joined. 17:11:49 <ais523> I'm not entirely sure if that's coincidence or not 17:12:15 <Ngevd> Can you right DONOT HI NG? 17:12:15 <ais523> this is also the usual way to write comments; "PLEASE NOTE that this is a comment", or whatever 17:12:30 <ais523> yep 17:12:31 <CakeProphet> !sfedeesh my my this is some delicious swedish fish 17:12:32 <EgoBot> my my zeees is suume-a-a-a deleeceeuuoooos sffedeesh feesh 17:12:43 <ais523> there's a split in the community as to whether D ONOT HING or whatever should be allowed 17:12:48 <monqy> CakeProphet: intercal at its finest 17:12:50 <ais523> sorear thinks it should be, according to the spec 17:12:53 <ais523> but actual compilers don't accept it 17:13:05 <ais523> so it's probably best not to insert whitespace inside keywords 17:13:09 <Ngevd> Okay 17:13:16 <ais523> especially as most people think that violates the spec 17:13:27 <ais523> (only in INTERCAL would people even consider that that was legal...) 17:14:03 <Ngevd> Inserting whitespace in the middle of Whitespace commands is probably very dangerous 17:14:06 <CakeProphet> Ngevd: as you can see INTERCAL is a hotbed of debate among people with nothing better to do. 17:14:18 <ais523> there are a few other miscellaneous bits of syntax, but they're not really important to start out with 17:14:26 <coppro> "The third example, however, is valid, despite the appearance of two cases 17:14:26 <coppro> of D-space-O, since INTERCAL does not ignore extraneous spaces in statement 17:14:27 <coppro> identifiers." 17:14:28 <ais523> (like randomly-executing commands, PLEASE %50 GIVE UP) 17:14:36 <Vorpal> ais523, idea: intercal preprocessor/linker! it could for example dynamically allocate line numbers 17:14:38 <ais523> coppro: ah, right 17:14:43 <ais523> I think the argument was about keywords like GIVE 17:14:50 <ais523> Vorpal: it'd even be useful 17:14:53 <Vorpal> ais523, yes 17:15:12 <coppro> ais523: it seems reasonably clear that the statment "INTERCAL does not ignore extraneous spaces in statement identifiers" refers to all statements 17:15:21 <ais523> "statement identifier" specifically means DO/PLEASE/MAYBE 17:15:33 <coppro> oh 17:16:00 <coppro> in that case, I'd have to go with DOGI V EUP ending the program 17:16:10 <coppro> based on the end of 4.1 17:16:18 <Ngevd> Should I just go through the manual on c.intercal.org.uk? 17:16:24 <coppro> http://www.muppetlabs.com/~breadbox/intercal/intercal.txt 17:16:30 <ais523> Ngevd: it's decent as reference material, but not really as a tutorial 17:16:36 <CakeProphet> `wacro 50 17:16:38 <HackEgo> rical esquingliallst atubbak piar hiarae lies olandspous iustreptemphificansilowir lan quiseles ashoco proter fh jlerwicarm adridit misious oouverciigra foa einis saini girapperisch wad bussip con gn partundidinatiogeres uvillatibeft optory heias woramlaed on hercur icat ind bale wyad inder th boung ezziantias inat giansumbyerst 17:16:39 <CakeProphet> and now I go to sleep. good night. 17:16:47 <Ngevd> How about coppro's link? 17:16:48 <ais523> the original manual isn't really decent as either, it's mostly written for amusement value 17:16:48 <coppro> I love that comments degrade performance in INTERCAL 17:16:52 <elliott> ais523: why is D ONOT HING not accepted? 17:16:56 <ais523> coppro's link is to the original manual, I think 17:17:02 <coppro> elliott: it has a space in the statement identifier 17:17:06 <ais523> elliott: see coppro's paste from the original manual ("INTERCAL-72 standard") 17:17:27 <elliott> ais523: that tells me why it's valid 17:17:27 <ais523> there's also the whole argument about whether DOREADOUT should parse as DO READ OUT or DO REA DO UT 17:17:29 <elliott> not why it's not accepted 17:17:33 <elliott> :P 17:17:37 <elliott> but ok, because of DO 17:18:01 <ais523> Ngevd: now, there are two major components to INTERCAL: statements and expressions 17:18:16 <ais523> they're pretty much unrelated things to learn, and don't interact much 17:18:22 <elliott> oh no, my new DNS commits fraud 17:18:28 <ais523> what sort of fraud? 17:18:30 <Ngevd> Statements and expression 17:18:41 <elliott> ais523: telling me that non-existent domains point to a server they own 17:18:45 <coppro> I need to get a daisy whell printer 17:18:46 <ais523> the link is the "calculate" statement, written as DO variable <- expression 17:18:49 <ais523> elliott: ouch, no opt-out? 17:18:50 <coppro> so that I can V <backspace> - 17:18:50 <monqy> mine does this fraud too 17:18:52 <monqy> i hate it 17:18:58 <coppro> 8.8.8.8 17:18:59 <elliott> ais523: maybe there is, but fuck it, I'll just use Google Public DNS 17:19:07 <elliott> coppro: did badly on my namebench tests 17:19:16 <monqy> i tried opting out and also google public dns and it worked for like an hour but then something died 17:19:26 <Vorpal> elliott, local dns server seems to work fine for me 17:19:51 <ais523> Ngevd: it's probably best to start off with outputting numbers (outputting strings is really hard in INTERCAL, to the extent that people typically use program-generators to generate programs that print even constant strings) 17:20:02 <elliott> coppro: I like the part where you told people to use the Google DNS without telling them anything about it or who was behind it 17:20:11 <ais523> the commands for output and input are READ OUT and WRITE IN respectively (make sure you get that the right way round) 17:20:18 <ais523> I think I use 4.2.2.1 17:20:22 <ais523> which is Level3's 17:20:26 <Ngevd> Okay, so no strings 17:20:32 -!- elliott has quit (Read error: Connection reset by peer). 17:20:40 -!- elliott has joined. 17:20:50 <elliott> there we go 17:20:53 <Ngevd> ais523, read out and write in are actually weirdly logical seeming to me 17:21:00 <elliott> ais523: isn't that verizon's? 17:21:01 <ais523> indeed, they're just different 17:21:14 <ais523> hmm, perhaps I have the wrong company, but I don't think verizon have a public DNS 17:21:23 <elliott> yes, they do 17:21:31 <elliott> it's something beginning with four 17:21:34 <elliott> well, I think so anyway 17:21:42 <elliott> (with all one-digit components) 17:21:58 <ais523> there are five types of variables; variables have a sigil showing what type they are, and a name, which is just a decimal number from 1 to 65535 inclusive 17:21:59 <Ngevd> brb, dinner 17:22:00 -!- Ngevd has quit (Quit: Leaving). 17:22:11 <ais523> hmm, I'm never going to get anywhere at this rate 17:22:18 <ais523> especially as I want to eat dinner and go home myself soon 17:22:21 <elliott> I predicted this from the beginning 17:22:29 <elliott> I decided not to say so to avoid jinxing the process 17:22:33 <ais523> heh 17:22:45 <ais523> just due to IRC teaching in general? or Ngevd in particular? 17:23:12 <monqy> intercaL? 17:23:16 <elliott> both :P 17:23:26 <ais523> IRC teaching normally goes quite well IME 17:23:41 <ais523> and I'd like to think that even if I was teaching Taneb here, he'd just randomly leave in the middle of a tutorial 17:23:55 <ais523> then come back three hours later when the room was being used for something entirely unrelated 17:24:15 <elliott> Taneb is Ngevd 17:24:19 <elliott> or, maybe you knew that 17:24:38 <ais523> yep, I did, the two are conflated in my mind 17:24:44 <ais523> so I used the wrong name by mistake 17:24:51 <ais523> I don't think I've accidentally called you ehird for a while 17:24:56 <ais523> but it's still the name I mostly use internally to think about you 17:24:58 <ais523> so it's possible 17:25:10 <ais523> hmm, is there any way I can do `pastelogs ehird sanely? 17:25:16 <ais523> in particular, I only want the last 50 or so occurrences 17:25:34 <elliott> it shows the first three hundred 17:25:44 <ais523> yep, and I want the tail not the head 17:25:46 <elliott> but you can manually simulate it: 17:25:49 <elliott> (but without dates) 17:26:21 <elliott> `run grep -i 'ehird' /var/irclogs/_esoteric/201?-??-??.txt | tail -n 300 | paste 17:26:32 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20754 17:26:39 <ais523> heh, my mind just went "unmatched `" then 17:26:48 <ais523> I was expecting to match it with another `, so I guess I was thinking sh/bash 17:27:20 <elliott> oh, it included the dates 17:27:35 <ais523> hmm, most mentions of "ehird" are people quoting things you said ages ago 17:27:54 <ais523> !ehird 17:28:05 <monqy> what's optbot 17:28:16 <ais523> a bot that spouted back random lines from the past when its name was mentioned 17:28:18 <ais523> `log 17:28:20 <HackEgo> 2004-02-22.txt:06:50:25: -!- cmeme has quit (kornbluth.freenode.net irc.freenode.net). 17:28:21 <elliott> monqy: the best bot 17:28:25 <ais523> `log 17:28:26 <elliott> ais523: it also set the topic 17:28:27 <HackEgo> 2006-01-10.txt:22:40:03: <calamari> hi 17:28:29 <ais523> like that 17:28:37 <ais523> except without usernames, I think, or with names changed 17:28:41 <Phantom_Hoover> `log 17:28:43 <HackEgo> 2008-10-19.txt:10:04:31: <Mony> plop 17:28:48 <Vorpal> ais523, what is "Setting .5 to #2/#3 instead of #1/#2" about? 17:28:56 <ais523> Vorpal: a pessimization that I personally hate 17:29:05 <ais523> in fact, I prefer #0/#1 to #2/#3 17:29:08 <Vorpal> ais523, err, what does it do though 17:29:09 <monqy> `log optbot 17:29:10 <ais523> and sometimes even to #1/#2 17:29:14 <ais523> Vorpal: it's just convention 17:29:24 <HackEgo> 2011-03-13.txt:19:30:22: <optbot> Gregor: is that like /usr/local? 17:29:24 <ais523> by convention, .5 is used for error returns 17:29:27 <Vorpal> yes 17:29:34 <Vorpal> and what is #1/#2= 17:29:38 <ais523> the debate is about what values should be used for error/no error 17:29:43 <Phantom_Hoover> monqy, elliott also had a huge strop when he was told to make it stop changing the topic but we don't talk about that. 17:29:44 <ais523> conventionally, IIRC it's #2 for error, #1 for no error 17:29:49 <Vorpal> ah 17:29:52 <elliott> Phantom_Hoover: That was the second time around. 17:30:05 <Vorpal> ais523, and why would #2/#3 be preferred? 17:30:09 <ais523> using #3 for error is an utter abomination 17:30:10 <elliott> optbot had been around for months in the past, you just started whining when it was revived. 17:30:11 <Vorpal> I don't understand that 17:30:18 <ais523> basically, all it does is saves a couple of characters in the error-handling code 17:30:26 <Vorpal> I see 17:30:32 <Vorpal> ais523, you said it was a pessimization above, not just a convention? 17:30:37 <ais523> as it's easier to set one bit (the ones bit) than two bits (the ones bit and the twos bit) 17:30:59 <ais523> it's a pessimization, because the way you actually use these values is via NEXT/NEXT/RESUME or NEXT/NEXT/NEXT/RESUME 17:31:10 <Vorpal> I see 17:31:21 <ais523> so in the case of #2/#3, you need an extra NEXT for no reason at all 17:31:25 <Vorpal> ais523, and what about #0/#1? 17:31:30 <Vorpal> is that one NEXT less? 17:31:38 <ais523> that works better with using computed COME FROM rather than NEXT 17:31:42 <Vorpal> ah 17:31:59 <ais523> with NEXT-based control, you can write it as NEXT/NEXT/FORGET/RESUME, but that's not really ideal 17:33:00 <ais523> but yes, #0/#1 being one bit and no extra mess on top of that makes it excellent for use in arithmetic 17:33:23 <Vorpal> heh 17:33:54 <Vorpal> ais523, what happens if two COME FROM point to the same line? 17:34:01 <ais523> then both execute, obviously 17:34:07 <Vorpal> in undefined order? 17:34:19 <ais523> (although generally compilers require you to set an option for that to actually happen, and error out otherwise) 17:34:23 <ais523> no, it goes multithreaded 17:34:26 <Vorpal> ah right 17:34:28 <ais523> so I suppose it's undefined which thread starts first 17:34:50 <ais523> COME FROM-created threads are more like processes, they share no context but abstention statuses of lines 17:35:07 <ais523> whereas WHILE-created threads share variables, making them more like actual threads 17:35:08 <elliott> ais523: If you COME FROM yourself, does that result in the creation of infinite threads? 17:35:12 <elliott> If the answer is no, I don't like you. 17:35:26 <ais523> elliott: yes if another line is also COMING FROM that line 17:35:34 <elliott> ais523: two lines are, itself and itself 17:35:35 <ais523> no if it's the only COME FROM pointing at that line, it's just an infinite loop in that case 17:35:45 <ais523> "itself and itself" is not two different lines 17:35:46 <elliott> ais523: ok what if you have 17:35:49 <elliott> (a) come from b 17:35:50 <elliott> (b) come from a 17:35:53 <elliott> WHAT THEN, SCIENCE????????????? 17:36:04 <ais523> that's just a normal infinite loop, only one COME FROM aiming at each line 17:36:14 <elliott> (a) come from b 17:36:18 <elliott> (b) come from d 17:36:19 <ais523> actually, it'd lock up all the threads in the process in older C-INTERCAL versions 17:36:21 <elliott> (c) come from a 17:36:22 <elliott> (d) come from b 17:36:22 <ais523> I think I might have fixed that 17:36:28 <elliott> WHATHAHT NOW???? 17:36:38 <ais523> err, let me try to work that out 17:36:39 -!- Nisstyre has quit (Ping timeout: 260 seconds). 17:36:39 <ais523> or else, run it 17:36:42 <ais523> you could run it yourself, you know 17:36:48 <elliott> No I couldn't I'd have to use numbers. 17:36:56 <ais523> and statement identifiers 17:37:02 <ais523> oh, I see what you mean 17:37:03 <elliott> Yes exactly. But I can type those. 17:37:05 <ais523> 88, 89, 98, and 99? 17:37:13 <elliott> I don't have an eight key. 17:37:15 <elliott> 9 and 0 I can do. 17:37:21 <ais523> oh, 9, 90, 99, and 900, then 17:37:26 <Vorpal> elliott, when are you going to RMA it? 17:37:53 <elliott> Vorpal: I don't answer questions that involve silly words like RMA. 17:38:17 <Vorpal> elliott, when are you going to get it fixed? 17:38:21 <Vorpal> and why is RMA silly? 17:38:28 <ais523> elliott: I think (a) executes, then (c) executes, then (d) executes, then (b) executes, then (a) and (d) execute, then (c) and (b) execute, then (d) and (a) and (d) execute, then... 17:38:28 <elliott> Vorpal: Soon. And because the word "return" works. 17:38:35 <Vorpal> fair enough 17:38:35 <ais523> and you end up with infinite threads, as you said 17:38:41 <elliott> ais523: Is there a way to generate a countably infinite number of lines at runtime 17:38:43 <ais523> probably following the Fibonacci sequence, or a variation of it 17:38:46 <elliott> oh 17:38:47 <elliott> now that's goo 17:38:48 <elliott> d 17:38:48 <elliott> ok 17:38:50 <elliott> i'm happy now 17:38:56 <ais523> you can't generate lines at runtime, just threasd 17:38:57 <ais523> *threads 17:39:40 <ais523> elliott: the simplest way for infinite threads is just (a) do come from (a) (b) do come from (a) 17:39:52 <ais523> or the even simpler, DO COME FROM COMING FROM DO COME FROM COMING FROM 17:40:08 <Vorpal> you can do gerund come from!? 17:40:10 <elliott> ais523: Yes, but that's ugly. 17:40:10 <Vorpal> wow 17:40:17 <elliott> Because, I don't know, it feels uneven. 17:40:21 <elliott> "DO COME FROM COMING FROM DO COME FROM COMING FROM" :D 17:40:28 <ais523> Vorpal: indeed; it's generally considered a bad idea, but it's /possible/ 17:40:38 <ais523> elliott: that's what I said 17:40:48 <elliott> ais523: yes, I quoted it 17:41:08 <ais523> I think C-INTERCAL needs a special command line option to allow come-from-gerund 17:41:22 <ais523> like it does with most other particularly insane parts of the language 17:42:56 <ais523> the problem with the gerund version is that you can't actually execute anything with your infinitely many threads 17:43:02 <ais523> they just get stuck round in circles, coming from things 17:43:16 <ais523> unless, I suppose, you have another thread that abstains from COMING FROM every now and then to let the threads excape 17:43:18 <ais523> *escape 17:43:55 <Vorpal> ais523, can you abstain coming from coming from? 17:44:09 <ais523> no, just from coming from in general 17:44:34 <ais523> I suppose you could (in CLC-INTERCAL) do DO SWAP COME FROM GERUND WITH ABSTAIN FROM GERUND 17:44:43 <ais523> which wouldn't actually do what you wanted, but would be amusing 17:44:54 <elliott> ais523: does that modify the language? 17:45:23 <ais523> yep, pretty much 17:45:40 <ais523> I think it dynamically changes the parser, is the way it's implemented 17:46:42 <Vorpal> ais523, that would disable stuff like "come from nexting" too? 17:46:49 <Vorpal> (assuming you can do that) 17:47:04 <ais523> it'd swap COME FROM with ABSTAIN FROM 17:47:09 <ais523> with all the consequences that you'd expect that to have 17:47:15 <Vorpal> ah... 17:48:39 <ais523> anyway, I think I'll go home 17:48:42 <Vorpal> cya 17:48:46 <ais523> if Taneb arrives five seconds after I leave, it's his fault 17:48:56 -!- ais523 has quit (Remote host closed the connection). 17:50:46 -!- sllide has joined. 17:51:13 -!- mrjbq7 has joined. 17:54:01 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 17:54:30 -!- Phantom_Hoover has joined. 17:54:33 -!- Phantom_Hoover has quit (Changing host). 17:54:33 -!- Phantom_Hoover has joined. 17:54:47 -!- Ngevd has joined. 17:55:23 <Ngevd> Hello! 17:55:45 <elliott> <ais523> if Taneb arrives five seconds after I leave, it's his fault 17:56:22 <Ngevd> That was 7 minutes ago 17:56:35 <Ngevd> So it's ais523's fault 17:57:20 <elliott> Time dilation. 18:05:48 -!- boily has quit (Ping timeout: 260 seconds). 18:05:53 <sllide> /join #palm 18:05:55 <sllide> >.< 18:06:51 <elliott> no 18:07:06 -!- mrjbq7 has left. 18:09:29 -!- boily has joined. 18:14:45 -!- sebbu2 has joined. 18:15:53 -!- sebbu3 has quit (Ping timeout: 248 seconds). 18:17:42 -!- sebbu2 has changed nick to sebbu. 18:18:25 -!- augur_ has joined. 18:18:33 -!- augur has quit (Read error: Connection reset by peer). 18:19:54 <Phantom_Hoover> OK I have a choice between headache and neckache. 18:21:06 <elliott> What. 18:21:14 <elliott> Go for neckache. 18:21:49 <Ngevd> I vote headache 18:21:59 <elliott> Ngevd: you have not seen the headaches I have. 18:22:04 <elliott> s/y/Y/ 18:22:27 <Ngevd> But have you seen Phantom_Hoover's either? 18:22:54 <Phantom_Hoover> It's not a very bad headache, it's just the annoying one. 18:23:06 <Phantom_Hoover> Although given my luck I'm going to start seeing aura any second now. 18:23:39 <elliott> I thought auras were only with migraines and cluster headaches. 18:23:47 <Phantom_Hoover> Yes, they are. 18:23:50 <elliott> Right. 18:23:55 <elliott> (If you have cluster headaches I strongly recommend a neckache.) 18:24:40 <Phantom_Hoover> I like how artist's depictions of auras always look terrible. 18:25:02 <elliott> http://upload.wikimedia.org/wikipedia/commons/a/a1/Fortifikation_%28Migr%C3%A4ne%29.jpg 18:25:16 <elliott> It's like someone used a My First Comics tool to put a POW symbol there then made it translucent. 18:28:29 <Ngevd> I've never had auras 18:29:01 <Ngevd> Not entirely sure what a cluster headache is 18:29:14 <Ngevd> Don't think I've had a migraine 18:29:31 <elliott> You'd know if you had cluster headaches. 18:29:53 <Ngevd> So, go with elliott. He knows aches better than I do 18:31:07 <Ngevd> By a long way 18:32:34 <Ngevd> I've also never broken any bones 18:32:43 <elliott> Me neither. 18:32:54 <elliott> (I've also never had a migraine and incredibly thankfully do not suffer from cluster headaches.) 18:33:00 <elliott> (But I do get pretty bad headaches.) 18:36:26 <Phantom_Hoover> `quote 18:36:26 -!- Phantom_Hoover has quit (Quit: Leaving). 18:36:28 <HackEgo> 272) <oklopol> oerjan: also actually A(4, 4) is larger than any other integer, i learned this the other day when i was reading about this algo, it had complexity O(n a^-1(n)) = O(n a^-1(4)) 18:36:35 -!- Phantom_Hoover has joined. 18:36:43 <Phantom_Hoover> <Ngevd> I've never had auras 18:36:51 <Phantom_Hoover> They're great fun. 18:37:05 <Phantom_Hoover> It's like having a weird flickery blind spot. 18:37:19 <Ngevd> ...Like when you stare into a light for a bit? 18:37:35 <elliott> I once touched a lightbulb because I didn't see how it could possibly hurt. 18:37:39 <elliott> I was a smart kid. 18:37:47 <elliott> Like, literally gripped it with my entire hand. 18:37:49 <elliott> Casually. 18:38:10 <Phantom_Hoover> Funniest mental image. 18:38:37 <Phantom_Hoover> Ngevd, kind of except weirder. 18:39:03 <Ngevd> I once gave a teddy bear third degree burns 18:39:26 <Ngevd> Accidentally 18:39:34 <Phantom_Hoover> Actually, the first time I had one it was just this blind spot *right* in the middle of my fovea and I had no idea what was going on so I came to the logical conclusion that I was going blind. 18:39:38 <elliott> RIP 18:40:01 <Ngevd> I once almost went death 18:40:09 <Ngevd> s/th/f/ 18:40:11 <elliott> How do you even rate the burns a teddy bear gets 18:40:13 <elliott> How do you even rate the burns a teddy bear gets. 18:40:23 <elliott> "Oh, his stuffing is only partly black; second-degree." 18:40:23 <pikhq> Migraines are hella-fun. 18:40:38 -!- augur_ has quit (Ping timeout: 245 seconds). 18:40:47 <copumpkin> pikhq: yeah, I love them 18:40:49 <pikhq> By which I mean "OH GOD MAKE IT STOP" 18:40:59 <pikhq> "WHY MUST LIGHT BE PAIN" 18:41:04 <copumpkin> I hear they're better than cluster headaches though 18:41:10 <copumpkin> so maybe I should feel lucky I only get migraines 18:43:07 -!- sllide has quit (Read error: Connection reset by peer). 18:47:06 <Phantom_Hoover> "Cluster headache, nicknamed "suicide headache"," 18:47:09 <Phantom_Hoover> Sounds great. 18:47:15 -!- Wamanuz has quit (Ping timeout: 276 seconds). 18:47:18 <pikhq> Phantom_Hoover: Yeah, it's the most painful thing. 18:47:21 <pikhq> (literally) 18:47:26 <elliott> copumpkin: By far. 18:47:51 <elliott> Phantom_Hoover: They're worse than unanaesthetised childbirth, reportedly. 18:48:02 <copumpkin> some women get orgasms during childbirth 18:48:05 <pikhq> Thank goodness I "merely" have a genetic propensity to migraines. 18:48:05 <Phantom_Hoover> Reading the WP articles, am now scared. 18:48:15 <elliott> copumpkin: Well, they must have pretty good cluster headaches, then 18:48:25 <copumpkin> hell yeah 18:49:19 -!- Wamanuz has joined. 18:49:31 -!- zzo38 has joined. 18:51:54 <zzo38> OK, now I posted more CGA Collection games; I think you asked a few of them before, such as DOWN. 18:51:55 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it. 18:52:06 <zzo38> http://zzo38computer.cjb.net/GAMES/cgacoll2.zip 18:52:09 <zzo38> @messages 18:52:09 <lambdabot> oerjan said 2d 21h 26m 11s ago: <zzo38> But, is it, if you ignore undefined, and work only with fully defined programs? <-- if you ignore undefined, i think () is final and a Void (empty) type is 18:52:10 <lambdabot> initial, similarly to the Set category in math 18:52:24 <zzo38> @messages 18:52:24 <lambdabot> You don't have any new messages. 18:53:40 <elliott> you're violating the usage instructions :P 18:54:04 <elliott> `log codu.*ogg 18:54:06 <elliott> (Blame Phantom_Hoover.) 18:54:10 <HackEgo> 2010-05-18.txt:06:07:45: <Gregor> http://codu.org/music/op13/GRegor-op13-wipp2.ogg 18:54:14 <elliott> `pastelogs codu.*ogg 18:54:17 <elliott> What am patselogs. 18:54:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10590 18:55:22 <zzo38> "an initial object of a category C is an object I in C such that for every object X in C, there exists precisely one morphism I -> X" In the category of sets, empty set is initial; but in Haskell, it seem to me, there can be more than one morphism I -> X. But I can understand how () is final 18:56:12 <zzo38> How does it work? Maybe I am confuse and misunderstand a few things? 18:56:27 <Gregor> So many oggs 18:56:37 <elliott> Oggsactly. 18:57:26 <Phantom_Hoover> The Oggscast. 18:58:02 <Gregor> `log codu.*mp3 18:58:06 <HackEgo> 2011-09-23.txt:18:58:02: <Gregor> `log codu.*mp3 18:58:09 <Gregor> X-D 18:58:32 <zzo38> Maybe you need to specify the filter in the regular expression not other `log query 18:58:41 <elliott> 2005-10-12.txt:05:31:33: <GregorR> http://www.codu.org/Kill_Yourself.ogg 18:58:42 <elliott> 2005-10-13.txt:00:39:13: <GregorR-L> http://www.codu.org/Kill_Yourself.ogg 18:58:42 <elliott> 2005-10-13.txt:07:03:22: <GregorR> http://www.codu.org/Kill_Yourself.ogg doesn't work for you? 18:58:42 <elliott> 2006-02-01.txt:02:17:22: <GregorR> http://www.codu.org/Kill_Yourself.ogg 18:58:44 <elliott> 2007-01-02.txt:04:49:13: <GregorR> http://www.codu.org/Kill_Yourself.ogg 18:58:47 <elliott> 2007-03-30.txt:02:37:02: <GregorR> http://www.codu.org/Kill_Yourself.ogg 18:58:48 <elliott> 2007-05-19.txt:21:30:07: <GregorR> http://www.codu.org/Kill_Yourself.ogg 18:58:50 <elliott> Grego linked to Kill Yourself a lot. 18:58:59 <elliott> Gregor: also 2009-07-25.txt:17:19:41: <GregorR> http://codu.org/music/auto/Onerously%20Uptight%20Toccata.{mid,mp3,ogg} since that one isn't on the Algorhythms site. 18:59:02 <elliott> s/a/A/ 18:59:03 <Gregor> That was back in the horrible www days. 18:59:24 <zzo38> Is GRegor-op13-wipp2.ogg silence? 18:59:40 <Gregor> zzo38: No, but it was a work in progress, so it's not really worth listening to :P 18:59:49 <zzo38> OK. 19:00:16 <elliott> zee5-2010-10-08 is so catchy. 19:00:27 -!- Nisstyre has joined. 19:01:05 <elliott> Gregor: So catchy. 19:01:37 <zzo38> Do you like any of the game cgacoll2.zip? 19:02:20 <Phantom_Hoover> help where is superturing.ogg 19:02:50 <zzo38> Maybe it is in the /music/ directory? 19:12:41 <zzo38> I think I figured out a new (at least to me) monad, called barrier monads. It requires two additional types, the front type, and the back type, in order to make a barrier monad. 19:16:42 <Phantom_Hoover> `log superturing.ogg 19:16:46 <HackEgo> 2011-09-23.txt:19:02:20: <Phantom_Hoover> help where is superturing.ogg 19:16:49 <Phantom_Hoover> :( 19:16:54 <Phantom_Hoover> `pastelogs superturing.ogg 19:16:58 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21784 19:17:28 <elliott> http://codu.org/music/e/superturing/superturing.ogg 19:17:34 <elliott> Gregor: what's the e 19:17:41 <elliott> Gregor: btw the first few seconds of superturing remind me of the Loom theme 19:18:26 <elliott> I also like how wonderfully it demonstrates that Gregor has no idea what a guitar is, how it works, or what it's meant to sound like. 19:21:15 <shachaf> elliott: Loom theme? 19:21:36 <elliott> shachaf: Loom theme. 19:21:39 <shachaf> I'm pretty sure that's called the Swan Lake theme. 19:21:45 <elliott> No, it had its own. 19:21:45 <elliott> I think. 19:21:50 <shachaf> Are you thinking of the Council of Elders theme? 19:21:57 <elliott> I don't remember. :( 19:21:58 <elliott> It's been ages. 19:22:07 <elliott> It was like HALF MY LIFE ago; so last month. 19:22:08 <shachaf> Anyway, all its music is from Swan Lake. 19:22:21 <elliott> Hmm, I swear it had its own theme. But okay. 19:22:30 <shachaf> Oh, dear. 19:22:31 <Phantom_Hoover> http://www.youtube.com/watch?v=7ZXRkfIVjsc 19:22:31 <elliott> It's entirely possible I'm completely misremembering. 19:22:34 <Phantom_Hoover> It... seems to? 19:22:58 <elliott> Wow that's much worse than the MT-thirtytwo version. 19:23:15 <Phantom_Hoover> However 19:23:19 <Phantom_Hoover> At this point 19:23:23 <shachaf> Phantom_Hoover: Are you sure that's not from Swan Lake? 19:23:25 <Phantom_Hoover> There is only one thing left to do 19:23:30 <Phantom_Hoover> http://sgeo.diagonalfish.net/paint_it_black_karaoke.ogg 19:23:35 <elliott> Noooooooooooooooooooooooooooooooooo 19:23:44 <shachaf> From that video: «All the music in LOOM is derived from the classic piece "Swan Lake" by Tchaikovsky. This video contains four tracks - theme, Crystalgard, Shepherds, and The Forge. Each of these begins at 0:00, 2:07, 3:44, and 6:40 respectively.» 19:24:06 <Phantom_Hoover> i 19:24:06 <Phantom_Hoover> help 19:24:08 <Phantom_Hoover> the karaoke 19:24:11 <Phantom_Hoover> my brain 19:24:22 <elliott> http://www.youtube.com/watch?v=1lRrE7ui8Hg I like how Loom just blasted the overture at you for ages with nothing happening on screen at the start. 19:24:32 <elliott> SERIOUS GAME FOR SERIOUS ART FANS, BOREDOM FORBIDDEN. 19:25:08 * shachaf looks for the Council of Elders theme. 19:25:19 <shachaf> Act 4 Part 27 from Swan Lake, I remember that. 19:25:23 <Phantom_Hoover> I love the way Sgeo just gets literally every timing wrong. 19:25:34 <elliott> I should play Loom again, it was a: good game. 19:26:17 <Phantom_Hoover> He's singing to a tune that's consistently not Paint It Black. 19:26:24 <elliott> At least he's consistent 19:26:27 <shachaf> Loom with recorded voices? What? 19:26:31 <elliott> s/dollar sign/./ 19:27:10 <shachaf> Swan Lake makes such good computer game music. 19:27:35 <elliott> Loom makes such good ballet music. 19:27:36 <Phantom_Hoover> The final estimate of that superluminal neutrino measurement error is ±5ns. 19:27:41 <Phantom_Hoover> Getting unsettled now. 19:27:48 <elliott> Phantom_Hoover: YESSSSSSSSSSSSSSSSSSS 19:27:59 <elliott> Phantom_Hoover: You shouldn't be getting unsettled, this is literally our in on becoming the timeline where Star Trek happens. 19:28:11 <zzo38> I read something about monads and comonads; monads can correspond to sum types as comonads can correspond to product types, such as the "coeither" comonad which is (,) 19:28:11 <Phantom_Hoover> elliott, but you hate the Federation! 19:28:24 <Phantom_Hoover> And we'll have to meet Vulcans and not laugh derisively at them! 19:28:30 <elliott> Phantom_Hoover: Look it's better than being stuck on this tip of a planet for the rest of ever. 19:28:42 <elliott> By tip I mean in the sense that isn't the sense everyone will read that as because goddamn that's confusing. 19:28:56 <Phantom_Hoover> This planet is the felt tip of the universe. 19:28:57 <elliott> Phantom_Hoover: Also it's okay, canon states that all humans present are very, very drunk at the time. (OK, this is not entirely accurate.) 19:29:05 <shachaf> elliott: http://www.youtube.com/watch?v=SW8szuOdSxc 19:29:07 <elliott> (But I think Cochrane was drunk.) 19:29:13 <elliott> (I think he was always drunk, really.) 19:29:33 <elliott> shachaf: Man, they got an orchestra to play the Loom music?????????? 19:29:37 <elliott> (Note: I am not being serious.) 19:29:51 <zzo38> I have the "Swan Lake" on NSF 19:30:01 <Ngevd> HA seems similar to UniQuode 19:30:01 <shachaf> elliott: I'm pretty sure they got an orchestra to play the Monkey Island music. 19:30:27 <elliott> shachaf: I liked that Press Play on Tape version of the MI/LeChuck's theme. 19:30:38 <Phantom_Hoover> There exists a video on youtube of an orchestra playing the Caramelldansen. 19:30:39 <elliott> I haven't heard anything about an orchestral version but I wouldn't be surprised. 19:30:46 <elliott> There is literally nothing that somebody has not got an orchestra to play. 19:31:01 * elliott types "baby got back orchestra" into YouTube. Results disappointing. 19:31:35 * shachaf tends to dislike any music containing guitars and/or drums. 19:31:51 <elliott> I dislike any music containing waveforms. 19:32:13 * shachaf 's music isn't formed of waves. 19:32:36 <Phantom_Hoover> My music is formed of particles. 19:32:49 <elliott> Me too. 19:32:57 <elliott> I just put a brick to my ear and soak up the music. 19:33:46 <Phantom_Hoover> I wonder how long it'll be until we start receiving neutrinos from the future. 19:33:59 <elliott> Phantom_Hoover: They've planned a big neutrino party for us. 19:34:09 <Phantom_Hoover> elliott, friendship neutrinos! 19:34:11 <elliott> There'll be neutrino fireworks in the sky spelling out "Congratulations for FTL!" 19:34:29 <Phantom_Hoover> That's a lot of neutrinos! 19:34:44 <Phantom_Hoover> (This should be read in the voice of the Look Around You guy.) 19:34:50 <elliott> Phantom_Hoover: In the future, we just get our neutrinos from the future. 19:35:01 <Phantom_Hoover> It's like that H2G2 thing. 19:35:06 <elliott> Phantom_Hoover: (They all come from Penrose's Omega point, ultimately.) 19:35:38 <elliott> The curse of the future is that you have to deal with things becoming true before you separate the theory from its originator. 19:36:32 <Phantom_Hoover> See http://www.youtube.com/watch?v=pmw7JfsNzoY#t=5m58s but replace 'matches' with 'neutrinos'. 19:38:51 <elliott> Phantom_Hoover: also what H2G2 thing. 19:38:59 <elliott> s/a/A/ 19:39:49 <Phantom_Hoover> elliott, the one with young Zaphod in The Salmon of Doubt. 19:39:58 <elliott> Phantom_Hoover: I haven't read Salmon of Doubt :( 19:40:39 <Phantom_Hoover> elliott, there's something involving the future taking energy from the past and the past taking energy from the future and everyone getting very annoyed about it. 19:40:46 <elliott> Heh. 19:41:14 <zzo38> What is it called when a monad is defined by (return .) and (<=<) instead of one of the other two ways? 19:41:31 <Phantom_Hoover> "Yet another way of defining a monad"? 19:41:58 <zzo38> What are the other two ways called, though? 19:42:33 <shachaf> "a way of defining a monad" and "another way of defining a monad", respectively. 19:42:40 <Phantom_Hoover> What shachaf said. 19:42:57 <shachaf> What Phantom_Hoover said. 19:43:11 <Phantom_Hoover> What shachaf said Phantom_Hoover said. 19:44:15 <elliott> What shachaf sdfg;'h.,/j; 19:44:25 -!- Ngevd has quit (Ping timeout: 248 seconds). 19:45:55 -!- nathan_ has joined. 19:46:12 -!- nathan_ has changed nick to Ngevd. 19:46:18 <Ngevd> Need to configure this better 19:46:35 <zzo38> I know two ways defining monads both are useful. But is the (return .) and (<=<) way ever useful? 20:04:44 -!- monqy has quit (Read error: Operation timed out). 20:08:24 -!- oerjan has joined. 20:11:25 <zzo38> I think if you define state monad with unwrapped types (which is not allowed, however) then the definition of "return" is very simple: return = (,) 20:11:56 <elliott> zzo38: So define the barrier monads? 20:12:26 <zzo38> OK. Barrier monads: data Barrier f b t = Unit t | Barrier f (b -> Barrier f b t) | Fail String; ("Fail String" is optional) 20:12:32 <zzo38> return = Unit; fail = Fail; 20:12:52 <elliott> Those look like iteratees; or at least similar. 20:12:57 <zzo38> Unit x >>= f = f x; Fail x >>= f = Fail x; Barrier a c >>= f = Barrier a $ c >=> f; 20:13:18 <zzo38> Would it then be possible to define cobarrier comonad? 20:13:20 <elliott> Enumerator's Step type is: 20:13:25 <elliott> data Step a m b 20:13:25 <elliott> = Continue (Stream a -> Iteratee a m b) 20:13:25 <elliott> | Yield b (Stream a) 20:13:25 <elliott> | Error Exc.SomeException 20:13:36 <elliott> where (Iteratee a m b) is a newtype for (m (Step a m b)). 20:14:01 <elliott> zzo38: The type parameters to Barrier don't have to be monads, though, do they? 20:14:03 <elliott> They're not even of the right kind for that. 20:14:19 <zzo38> elliott: Yes, they don't have to be monads (you are right, they are not the right kind). 20:14:30 <zzo38> They can be any types of kind * 20:14:44 <elliott> I thought you said a barrier monad was a transformation on two other monads. 20:14:46 <zzo38> The "f" and "b" are called the "front" and "back" types. 20:14:57 <zzo38> elliott: No I didn't say it was a transformation on two other monads. 20:15:15 <elliott> OK. 20:15:31 <elliott> Oh, indeed. 20:15:37 <zzo38> However, it is possible to convert a barrier monad with one front and back type to others, using the function: convertBarrier :: (f -> f') -> (b' -> b) -> Barrier f b t -> Barrier f' b' t; 20:16:07 <zzo38> (If you want to convert t as well, use fmap) 20:19:14 -!- monqy has joined. 20:21:49 <zzo38> I suppose if you have only the Barrier constructor and remove Unit and Fail, it sort of resembles generator functions in Javascript. 20:22:27 <zzo38> But if you want to stop, you do need at least Unit or Fail. 20:23:13 -!- azaq23 has joined. 20:23:44 * oerjan had another thought about those neutrinos 20:24:36 <oerjan> maybe it's not that the neutrinos are going faster than light, but instead it's the spacetime inside earth which isn't shaped how they think... 20:24:58 * elliott waits for Phantom_Hoover to respond to this. 20:25:01 <oerjan> so that the distance through earth is actually shorter than what they've calculated 20:25:03 <elliott> I WANT A DEBATE 20:25:52 <Phantom_Hoover> oerjan, but spacetime shaping is caused by the actual distance metric, so they'd be going faster than light anyway. 20:25:58 <zzo38> (Although generators in Javascript have no clone method; if they are pure you could make one up, though, I think) 20:25:59 <oerjan> it's hard to have a debate on just wild ideas, however my hunch is that theses neutrinos are probably the first near light-speed particles which have ever been measured speed through earth 20:26:11 <oerjan> Phantom_Hoover: um how so 20:26:22 <Phantom_Hoover> Although it'd be fun if we'd discovered hyperspace which was only useful in places with intense gravitational curvature. 20:26:30 <oerjan> *had measured their speed 20:27:33 <oerjan> Phantom_Hoover: it's not hyperspace, i'm suggesting that the neutrinos are actually going at (immeasurably close to) speed of light, it's just no one has properly measured speed of light inside earth before, for obvious reasons :P 20:27:37 <Phantom_Hoover> oerjan, because unless they left space altogether they're still travelling n metres in less than n/c seconds. 20:27:52 <Phantom_Hoover> oerjan, in which case GR is completely wrong. 20:28:27 <oerjan> Phantom_Hoover: it could be only slightly wrong, with the curvature depending differently on mass density. perhaps. 20:28:38 <elliott> Phantom_Hoover: Maybe c is just slightly higher than we thought it was! 20:28:39 <zzo38> Is there ways to do it using hyperdrive? 20:28:41 -!- boily has quit (Ping timeout: 248 seconds). 20:28:46 <elliott> Quick, let's slightly redefine the metre. 20:29:03 <oerjan> zzo38: hyperdrive remains entirely hypothetical. 20:29:05 <Phantom_Hoover> elliott, the error in c is waaaaaaaaaaaaaaaaaaaaaaaaay smaller than this. 20:29:25 <elliott> Phantom_Hoover: It... dude, it was a joke, metres are /defined/ in terms of c. 20:29:52 <Phantom_Hoover> Sorry, I've been staring at a physics textbook from the 80s too much lately. 20:29:55 <oerjan> Phantom_Hoover: anyway, i'd want them to repeat the experiment with different paths through earth, and with an accelerator in orbit to see what happens in vacuum... 20:30:18 <elliott> Accelerator in orbit omg. 20:30:21 <elliott> That is the best. 20:30:36 <Phantom_Hoover> oerjan, also have we never sent stuff through the earth before? 20:30:37 <oerjan> elliott: i assume that would be simpler than putting a neutrino detector there :P 20:30:37 <elliott> What if we put a literal ring around the Earth and shot particles around them omg omg omg that's like the Ed stories kind of omg. 20:30:49 <pikhq> Yeah, c is 299,792,458 meters per second precisely, *by definition*. 20:30:59 <oerjan> Phantom_Hoover: sound waves, but their speed is insignificant... 20:31:02 <zzo38> Yes, that is the definition. 20:31:04 <Phantom_Hoover> Some kinds of radio waves, surely. 20:31:13 <pikhq> However, the exact length of a meter or a second is undetermined. :) 20:31:16 <oerjan> Phantom_Hoover: radio waves pass through earth? 20:31:27 <Phantom_Hoover> oerjan, dunno. 20:31:29 <oerjan> Phantom_Hoover: i suppose that needs checking. 20:31:29 <pikhq> oerjan: Some do. 20:31:37 <Phantom_Hoover> pikhq, what was that ultra-long-wave thing you were talking about. 20:31:40 <elliott> <oerjan> Phantom_Hoover: radio waves pass through earth? 20:31:43 <elliott> oerjan: ELF, we just discussed this. 20:31:44 <pikhq> oerjan: The wavelength needs to be really, *really* low for it to work. 20:31:45 <zzo38> From what I know there is different kind of definition for seconds 20:31:45 <elliott> Phantom_Hoover: above 20:31:54 <pikhq> zzo38: SI unit. 20:31:57 <elliott> I doubt they were measuring the times with any kind of accuracy though. 20:32:08 <Phantom_Hoover> But um hang on. 20:32:09 <zzo38> I know it is SI unit. 20:32:17 <oerjan> elliott: they definitely should measure that too carefully, then 20:32:20 <Phantom_Hoover> It was 732 km, right? 20:32:25 <pikhq> (i.e. the duration of 9,192,631,770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the caesium 133 atom.) 20:32:27 <elliott> oerjan: I have a feeling there's a /lot/ of error involved. 20:32:37 <pikhq> zzo38: There is precisely one definition of the SI second. 20:32:50 <elliott> oerjan: Anyway SHUT UP, I want this to be FTL. 20:32:55 <Phantom_Hoover> elliott, they pinned the error bars down to ±5ns, actually. 20:33:00 <elliott> Phantom_Hoover: I meant for ELF. 20:33:02 <pikhq> Any other definition is inherently a different unit from the SI second. 20:33:03 <Phantom_Hoover> Ah. 20:33:07 <elliott> Phantom_Hoover: What's the difference in time compared to the error? 20:33:18 <Phantom_Hoover> Error is -60ns. 20:33:25 <Phantom_Hoover> Sorry, no, the anomaly is. 20:33:37 <elliott> Right. Yikes. 20:33:54 <elliott> But seriously. 20:33:59 <elliott> Everyone wants this to be FTL, don't they? 20:34:04 <Phantom_Hoover> I... don't really. 20:34:08 <elliott> Why not. 20:34:10 <Phantom_Hoover> SR is *really* elegant. 20:34:20 <zzo38> pikhq: Yes, that is what I thinking of, about caesium atoms. 20:34:21 <elliott> Yes, but dude, come on. 20:34:33 <elliott> FTL is the thing that makes realistic sci-fi horribly boring. 20:34:40 <elliott> Erm. 20:34:42 <elliott> Lack of FTL. 20:34:46 <elliott> There is literally nothing not awesome about getting FTL. 20:35:10 <elliott> When has anyone ever gone "thank god you can't go faster than light, this makes things so much better!!!!". 20:35:24 <Phantom_Hoover> elliott, well yeah, but something that very vaguely resembles conventional FTL is not worth losing a crapton of physics. 20:35:42 <Phantom_Hoover> So I hope for a crapton of physics, rather than sixty nanoseconds of neutrino lead. 20:35:46 <pikhq> Phantom_Hoover: SR is also almost surely not *quite* right. 20:35:52 <pikhq> It doesn't mesh with quantum effects. 20:35:59 <Phantom_Hoover> pikhq, yes it does. 20:36:09 <Phantom_Hoover> QFT is all relativistic. 20:36:10 <shachaf> If God had intended us to go faster than light, he would have given us faster legs. 20:36:17 <Phantom_Hoover> GR is the one that doesn't mesh with QM. 20:36:32 <pikhq> Oh, right. 20:36:35 <elliott> Phantom_Hoover: Oh come on, I am incredibly sceptical that literally the only thing that can go faster than light is some neutrinos being slightly faster than they should be. 20:36:40 <pikhq> SR works just fine, GR confuses the fuck out of QM. 20:36:45 <pikhq> And vice versa. 20:36:47 <elliott> "SR is true except for a tiny bit of rounding error" is ridiculous. 20:37:10 <Phantom_Hoover> elliott, well OK, but it's even less probable that atoms, let alone humans, would be transportable. 20:37:21 <elliott> Phantom_Hoover: Look, America needs hope. :| 20:37:32 <pikhq> Anyways. I am totally in favor of losing a crapton of physics in the name of finding better physics. 20:37:43 <pikhq> And if this helps us do that, then fuck yeah. 20:37:46 <elliott> Phantom_Hoover: Anyway, throwing away all of physics is nice, it means we get fun new physics. 20:38:10 <Phantom_Hoover> pikhq, yeah, but this is more subtle: I'd prefer to be in the universe where SR is right. 20:38:29 <oerjan> <elliott> When has anyone ever gone "thank god you can't go faster than light, this makes things so much better!!!!". <-- well it _could_ be the reason why we haven't been conquered by aliens yet. 20:38:39 <Phantom_Hoover> nooooooooooooooooooooooooooooooooooooo i need to make tea 20:38:45 <pikhq> Phantom_Hoover: And many people would prefer to be in a universe where no objects older than 6,000 years exist. 20:38:46 <shachaf> elliott cleverly asks people to take it to -blah without being in -blah himself. 20:38:56 <pikhq> Your point? 20:39:00 <oerjan> or more likely, prevented from evolving in the first place 20:39:00 <Phantom_Hoover> oerjan, maybe it's only our neutrinos that can go FTL and we can kill all the aliens with neutrino lasers. 20:39:01 <elliott> shachaf: It is genius. 20:39:07 <monqy> how very clever!!! 20:39:07 <Phantom_Hoover> pikhq, *whoosh* also tea. 20:39:07 <elliott> oerjan: Sorry but any alien that can go faster than light is my kind of alien. 20:39:26 <shachaf> elliott: You should tell people to take it to #esoteric. 20:39:45 <oerjan> Phantom_Hoover: we're going to need some badass energy source to get enough energy for that to matter (although supernovas supposedly work) 20:39:47 <elliott> shachaf: Yes, but then #esoteric would have dylukes in it. 20:40:43 <monqy> is that bad help 20:40:43 <shachaf> This channel needs more people in it. 20:40:48 <oerjan> Phantom_Hoover: also the neutrinos from S1987a did _not_ arrive early. then again maybe some did, we just weren't measuring yet, then. 20:40:55 <oerjan> *SN1987a 20:41:12 <pikhq> oerjan: With our new physics we may get some badass energy source. 20:41:40 <elliott> shachaf: It really doesn't. 20:41:47 <elliott> Or at least it needs the right kind of more people. 20:41:49 <monqy> it just needs better people 20:41:51 <monqy> yes 20:42:19 <elliott> If monqy and shachaf weren't here this channel would be PERFECT. 20:42:25 <monqy> perfect 20:42:43 <monqy> but...in what way>???? 20:42:50 <elliott> Every way. 20:42:51 <monqy> perfectly horrible 20:43:44 <zzo38> It is true you cannot go faster than light makes everything much better, but that counts even without aliens. 20:44:54 <shachaf> Hmph. 20:45:17 * shachaf will contribute. 20:45:19 -!- shachaf has left ("!"). 20:45:24 <elliott> I knew that would happen. 20:45:27 <Phantom_Hoover> pikhq, we can just nick energy from the future. 20:45:28 <monqy> bye shachaf 20:49:18 <monqy> "I will here try to describe all of the 500+ commands available (I am currently in the process of adding functionality)" this is going to be good 20:49:25 <elliott> monqy: link 20:49:31 <monqy> http://esoteric.voxelperfect.net/wiki/HA 20:50:24 <elliott> HA HA HA 20:50:34 <elliott> oh no 20:51:02 <Ngevd> It seems a lot like Uniquode 20:51:06 <monqy> speaking of too many commands, Ngevd, did anything happen to un--yes 20:51:31 <elliott> oerjan: Oh, I was going to ask/say/something to you. 20:51:33 <Ngevd> But Uniquode has many, many more commands 20:51:33 <elliott> But then I didn't. 20:51:39 <elliott> Oops. Am frogotten. 20:51:43 <elliott> Awwwwwwwwww frogotten. 20:51:52 <monqy> did anything happen to/has anything happened with 20:51:59 <monqy> better words courtesy of monqy 20:52:02 <oerjan> <elliott> oerjan: ELF, we just discussed this. <-- this was a few days ago before this neutrino thing, wasn't it? 20:52:07 <elliott> Yes. 20:52:10 <Phantom_Hoover> Why did we stop talking about neutrinos. 20:52:13 <Phantom_Hoover> Neutrinos are fun. 20:52:48 <Phantom_Hoover> wait 20:52:49 <elliott> oerjan: What should I do if I have two records with the same field type :'( (Specifically I have a /lot/ of x, y and z fields, a /lot/ of entity fields, and I even have packets identical on both the client and server end with the same field names.) 20:52:49 <Phantom_Hoover> if space 20:52:51 <elliott> :'( :'( :'( 20:52:53 <Phantom_Hoover> is a rubber sheet 20:52:58 <Phantom_Hoover> maybe 20:53:00 <Phantom_Hoover> the neutrinos 20:53:01 <elliott> I could just use qualified modules but?? gross?? 20:53:03 <Phantom_Hoover> are bouncing off it 20:53:08 <elliott> Phantom_Hoover: y,ES 20:53:26 <Phantom_Hoover> How did you even manage to hit , there. 20:53:33 <oerjan> Phantom_Hoover: because i need to do my daily websites and then read up on what this discovery really is. like, do they always go 0.0025% faster than c, or is that just an average... 20:53:37 <elliott> Phantom_Hoover: Intentionally. 20:54:09 <Ngevd> If space is a rubber sheet, what happens if it is rapidly cooled? 20:54:17 <Phantom_Hoover> oerjan, it's a single experiment. 20:54:36 <Phantom_Hoover> They take protons from the LHC, smash them into some graphite and time the neutrinos. 20:54:39 <oerjan> elliott: qualified modules + record punning? 20:54:49 <Phantom_Hoover> They did the experiment, and they were 60ns early. 20:55:04 <Ngevd> I may start Uniquode again 20:55:06 <oerjan> i guess the punning only works for some things 20:55:06 <Ngevd> With more planning 20:55:28 <Ngevd> Like, start with features, then assign commands to the features 20:55:30 <Phantom_Hoover> The 16000 measurements figure is 16000 bunches of protons hitting the target and firing neutrinos. 20:55:34 <Ngevd> Not the other way around 20:55:37 <pikhq> Phantom_Hoover: It was only graphite and protons? 20:55:45 <Phantom_Hoover> pikhq, I think so. 20:55:45 <elliott> oerjan: How would record punning help? Qualified modules would, I suppose; my constructors are already prefixed with C (client) or S (server). 20:55:50 <elliott> oerjan: i.e. CRespawn, SRespawn. 20:55:51 <pikhq> Hmm. There's rather a lot of facilities that could produce that neutrino beam, then. 20:55:54 <oerjan> Phantom_Hoover: yes, but were _all_ 60 ns early or was that just an average. 20:55:56 <Phantom_Hoover> pikhq, obviously there were magnets and stuff. 20:56:03 <Phantom_Hoover> pikhq, really really really high-energy protons. 20:56:03 <elliott> oerjan: C.Respawn and S.Respawn would be nicer... S.x/S.y/S.z and C.x/C.y/C.z are kind of ugly, though. 20:56:04 <pikhq> Probably not many that could measure it later, but hey. 20:56:05 <elliott> But I guess that's okay. 20:56:14 <oerjan> or the fastest ones 20:56:16 <elliott> oerjan: If you do C.Foo { ... }, do you have to qualify the field names in the braces too? 20:56:32 <Phantom_Hoover> Come on, you know why experiments with protons from the LHC are hard to replicate. 20:56:39 <oerjan> elliott: not with record punning, that's what it's for afaik 20:57:02 <Phantom_Hoover> OMG 20:57:03 <Phantom_Hoover> What if 20:57:07 <zzo38> I know that when defining instances, you don't have to qualify the names of the members of the class. I don't know about records, though. 20:57:08 <Phantom_Hoover> we shoot Hitler with neutrinos 20:57:17 <elliott> oerjan: I don't think so: 20:57:17 <elliott> Record puns are enabled by the flag -XNamedFieldPuns. 20:57:18 <elliott> When using records, it is common to write a pattern that binds a variable with the same name as a record field, such as: 20:57:18 <elliott> data C = C {a :: Int} 20:57:18 <elliott> f (C {a = a}) = a 20:57:19 <elliott> Record punning permits the variable name to be elided, so one can simply write 20:57:21 <elliott> f (C {a}) = a 20:57:23 <pikhq> Phantom_Hoover: This doesn't *seem* to be a hard to replicate one. I mean, 16,000 measurements suggests they got this going rather consistently. 20:57:32 <oerjan> Phantom_Hoover: he'll just turn into a DMM lookalike and we'll be even more hosed 20:57:38 <elliott> `addquote <Phantom_Hoover> OMG <Phantom_Hoover> What if <Phantom_Hoover> we shoot Hitler with neutrinos 20:57:39 <HackEgo> 680) <Phantom_Hoover> OMG <Phantom_Hoover> What if <Phantom_Hoover> we shoot Hitler with neutrinos 20:57:40 <pikhq> And I'd *imagine* that LHC is a bit overkill for the effect they saw. 20:57:52 <elliott> Yeah, what pikhq said; they _have_ replicated the experiment. 20:57:56 <elliott> Thousands of times. 20:58:21 <zzo38> One idea is to have data constructor synonyms, which are capitalized and usable as a pattern or as an expression. And then, also have copatterns. 20:58:25 <Phantom_Hoover> Same apparatus, same setup. 20:59:12 <Ngevd> ☨ would be a good character for Uniquode's churchification command 20:59:19 <pikhq> Yeah, there seems to be a couple dozen facilities that produce neutrino beams for particle physics experiments. 20:59:35 <pikhq> Probably all of them are setting up this one. 20:59:44 <oerjan> <pikhq> Probably not many that could measure it later, but hey. <-- there aren't that many neutrino detectors but it would still be nice to have several different accelerators aim at each to see if the speed varies 21:00:23 <zzo38> Ngevd: I don't have that character in my computer 21:00:34 <Ngevd> Cross of Lorraine 21:00:43 <Ngevd> U+2628 21:01:00 <oerjan> elliott: oh hm record punning is not what i mean, then, some other record extension which resolves ambiguity 21:01:23 <oerjan> they were announced at about the same time, i think 21:02:24 <oerjan> Phantom_Hoover: btw if neutrinos are _truly_ tachyons, then using _less_ energy to generate them should make them go _faster_ :P 21:03:23 <oerjan> except hm, it would be _imaginary_ energy... 21:03:47 <oerjan> wait no 21:03:53 <elliott> back 21:04:00 <oerjan> it's the rest mass which is imaginary, not the energy 21:04:00 <elliott> oerjan: ah 21:04:08 <oerjan> i think. 21:04:19 <Ngevd> FEATURE REQUESTS FOR UNIQUODE 21:04:50 <oerjan> because the limit for infinite energy is c from both sides afair 21:04:58 <Phantom_Hoover> oerjan, yeah. 21:05:35 -!- augur has joined. 21:06:26 <elliott> <oerjan> Phantom_Hoover: btw if neutrinos are _truly_ tachyons, then using _less_ energy to generate them should make them go _faster_ :P 21:06:29 <elliott> It's like Phantom_Hoover's Hawking drive. 21:07:20 <Phantom_Hoover> What's my Hawking drive. 21:07:26 <elliott> The Hawking... thing. 21:07:27 <Phantom_Hoover> You mean the Hawking /generator/. 21:07:29 <elliott> Yes. 21:07:31 <elliott> Shut up. 21:07:39 <Phantom_Hoover> The only drive I've come up with was the negative mass drive. 21:07:49 <elliott> Oh, I thought they were the same thing 21:07:51 <elliott> Oh, I thought they were the same thing. 21:07:52 <elliott> Make them the same thing. 21:07:55 <elliott> Hawking generator drive. 21:08:08 <Phantom_Hoover> Of course, the damned physicists stole my ideas before I had them, probably using neutrinos from the future. 21:08:08 -!- nooga has joined. 21:08:13 <elliott> oerjan: Hmm, can you expose a _qualified_ module? 21:08:19 <nooga> Gregor: how is your GGGGCCCC ? 21:08:34 <elliott> oerjan: So that you can do 21:08:36 <elliott> import Mod 21:08:40 <elliott> ... A.foo ... B.foo ... 21:08:43 <elliott> where Mod exports A and B qualified. 21:09:32 <oerjan> elliott: not to my knowledge 21:10:43 -!- hagb4rd has joined. 21:11:22 <elliott> oerjan: This makes me: :( 21:11:25 <elliott> That :( denotes that I am: sad. 21:11:39 <elliott> oerjan: it would be nice because right now I get SLogin, CRespawn, etc. from "import MC.Protocol" 21:11:41 <elliott> I don't want to have to do 21:11:41 <zzo38> convertBarrier f b (Barrier a c) = Barrier (f a) $ convertBarrier f b . c . b; 21:11:43 <Ngevd> Who's generating Whore Kings? 21:11:44 <elliott> import MC.Protocol.Server (Server) 21:11:47 <elliott> import MC.Protocol.Client (Client) 21:11:50 <elliott> import qualified MC.Protocol.Server as S 21:11:52 <elliott> import qualified MC.Protocol.Client as C 21:12:00 <elliott> I realise I could export Server and Client from MC.Protocol to shorten that by one line 21:12:02 <elliott> but it's still lame 21:13:11 <zzo38> Then use S'Login if you dislike SLogin and cannot use S.Login, although this way doesn't seem nice either. 21:13:16 <oerjan> elliott: DisambiguateRecordFields is what i was thinking of 21:13:21 <zzo38> Or use S_Login 21:13:45 <zzo38> Use classes if you need to 21:13:59 <elliott> Slogging. 21:13:59 <zzo38> Even Template Haskell if that helps. 21:14:25 <Ngevd> So far, all the new Uniquode has is Churchification 21:14:37 <Ngevd> Which is an underexisting feature 21:19:21 <Ngevd> How is ✝? 21:19:54 <elliott> ✝? 21:20:04 <Ngevd> For the churchification command 21:20:11 <elliott> Ah. 21:20:12 <elliott> I like it. 21:21:43 <Phantom_Hoover> I hate the way Stephen Fry is A Clever Person for no obvious reason. 21:21:55 <Ngevd> He was on University Challenge 21:22:40 <Ngevd> Also, booleans literals in Uniquode are ✓ and ✗ 21:22:52 <pikhq> Phantom_Hoover: He just presents an air of cleverness is all. 21:23:05 <elliott> Phantom_Hoover: Well, he is. 21:23:06 <pikhq> Probably the RP. 21:23:24 <elliott> Phantom_Hoover: I mean, not saying he's a ~scientific genius~ or anything but he's intelligent and articulate. 21:23:30 <Ngevd> ✔ is like K(true) and ✘ is like K(false) 21:23:37 <Phantom_Hoover> elliott, sure, but not significantly more so than anyone else. 21:23:52 <Ngevd> He's also charismatic 21:24:09 <pikhq> Ngevd: Understatement of the century. 21:24:27 <elliott> Phantom_Hoover: Well, that's... I dunno, maybe you only hang about with really smart people. 21:24:40 <Ngevd> Byte literals must be expressed as braille 21:24:55 <pikhq> Phantom_Hoover: Stephen Fry definitely does seem to be *notably* intelligent. 21:25:04 <Phantom_Hoover> elliott, well I mean that he's not a particularly outstandingly intelligent or articulate person. 21:25:20 <pikhq> And he is profoundly charismatic. 21:25:37 <elliott> Phantom_Hoover: So? 21:25:51 <elliott> Phantom_Hoover: Nobody says he's an absolute genius apart from obnoxious fanboys and you should know better than to listen to htem. 21:25:52 <elliott> them. 21:25:59 <Phantom_Hoover> elliott, from his general... image, you'd think he was. 21:26:23 <elliott> Phantom_Hoover: Nobody says he's an absolute genius apart from obnoxious fanboys and you should know better than to listen to them. 21:27:14 <Ngevd> eg. ⡜ is 92 21:27:22 <Ngevd> AS A BYTE 21:27:24 <Phantom_Hoover> Ngevd, best. 21:35:53 -!- Nisstyre has quit (Ping timeout: 248 seconds). 21:37:32 <elliott> Does anyone know git here? 21:37:33 <elliott> olsner? 21:37:34 <Ngevd> Control structure is done by making a) toll booths and b) wormholes 21:37:51 <Ngevd> Obviously wormholes are quite tricky to make 21:38:33 -!- ive has joined. 21:39:20 -!- Nisstyre has joined. 21:39:53 <Ngevd> It requires embedding two (or more) Clue (Keymaker) programs and getting them to sync 21:40:56 <elliott> X-D 21:41:21 -!- Nisstyre has quit (Max SendQ exceeded). 21:41:23 <Ngevd> Embedding Clue (Keymaker) programs is easy 21:41:34 <Ngevd> Embedding specific Clue (Keymaker) programs is not 21:42:23 <Ngevd> They are created using a hash of the time, the co-ordinate, and a user-controlled variable 21:42:41 -!- Nisstyre has joined. 21:44:08 <Ngevd> Seeing as I don't have the character for embedding a Clue (Keymaker) program, it's tricky 21:44:26 <Ngevd> 䌷 21:44:30 <Ngevd> U+4437 21:44:33 <Ngevd> *4337 21:50:39 <Ngevd> Anyone got a good hash for a (Int, [Int], Int)? 21:54:02 <elliott> why not just prepend and append the Ints to the list then hash that? 21:54:18 <zzo38> I was going to suggest prepending both 21:54:29 <zzo38> Like this: \ (a,b,c) -> a : c : b 21:54:39 <zzo38> But that is incomplete because it is not completely hashed 21:54:45 <elliott> That would work too. I'm not sure Ngevd is talking about Haskell though. 21:55:21 <zzo38> It doesn't have to be Haskell; you can easily convert the program into something else I suppose, assuming you are specifying the type in the similar way of Haskell, that is. 21:55:35 <Ngevd> I was using haskell's type notation to describe what I want 21:56:20 <Ngevd> I want apparent randomness over bidirectionally 21:57:41 <Ngevd> I've just thought of how to make it all much simpler 21:57:45 <Ngevd> Use powers of primes 21:58:27 <Madoka-Kaname> @djinn (a->b) -> (a->c) -> (a->d) -> (b->a) -> (b->c) -> (b->d) -> (c->a) -> (c->b) -> (c->d) -> (d->a) -> (d->b) -> (d->c) -> a -> (a->b->c->d->f) -> f 21:58:27 <lambdabot> f a b c _ _ d _ e _ f _ g h i = 21:58:27 <lambdabot> i (f (c h)) (a h) (b h) (d (e (g (c h)))) 21:58:39 <Ngevd> So, (3,[7,9,8],4) would become (2^3)(3^4)(5^7)(7^9)(11^8) 21:58:56 <Ngevd> And an integer is easier to hash than a list of integers, I presume 21:59:09 <elliott> Hashing an integer results in... that integer. 21:59:39 <Ngevd> Perhaps 21:59:59 <Ngevd> But what if it was a cryptographic hash function? 22:00:33 <pikhq> What are you using the hash function for, anyways? 22:00:33 <elliott> Those operate on arrays of bytes. 22:00:48 <elliott> pikhq: How do you tell git you're splitting a file in two? 22:00:51 <elliott> Can you? 22:00:59 <pikhq> elliott: git is too stupid for this. 22:01:14 <elliott> Right. 22:01:28 <pikhq> It is also too stupid for cases such as "this file has moved", or even "this file has changed". 22:01:42 <pikhq> This shit only exists as heuristics in the UI. 22:02:00 <Ngevd> Working on Uniquode 22:03:33 -!- Vorpal has quit (Ping timeout: 245 seconds). 22:08:10 <Phantom_Hoover> Ngevd 22:08:11 <Phantom_Hoover> stop 22:08:17 <Phantom_Hoover> you will make the rest of us look bad 22:08:21 -!- MDude has quit (Ping timeout: 260 seconds). 22:08:34 <Phantom_Hoover> http://www.cs.cornell.edu/cv/researchpdf/19ways+.pdf 22:08:37 <Phantom_Hoover> Best paper. 22:09:52 <Ngevd> Dammit, we haven't got onto matrices yet 22:10:22 <Phantom_Hoover> Ngevd, pfft, they're easy.* 22:10:45 <Phantom_Hoover> *even after like 4 years of knowing about them I still need at least two minutes to remember how matrix multiplication works. 22:13:38 <Ngevd> We're just doing graph theory 22:14:48 <Phantom_Hoover> You get to do *graph theory* and you're complaining that you haven't done *matrices*? 22:15:00 <Phantom_Hoover> I would have *killed* to do graph theory earlier. 22:15:23 <Phantom_Hoover> What curriculum are you even on. 22:15:34 <Ngevd> I'm complaining that I feel behind everyone else 22:15:42 <Ngevd> Uh... I actually don't know 22:15:47 <Ngevd> Possibly AQA 22:16:20 <Phantom_Hoover> AS-level, I presume. 22:17:04 <Ngevd> Yeah 22:17:39 <Phantom_Hoover> Hang on, what kind of graphs are we talking about. 22:18:30 <Phantom_Hoover> Bridges of Königsberg graphs or y=x^2 graphs? 22:18:57 <Ngevd> The former 22:19:11 <Phantom_Hoover> Lucky bastard. 22:19:24 -!- GreaseMonkey has joined. 22:19:24 <Ngevd> :D 22:19:29 -!- GreaseMonkey has quit (Changing host). 22:19:29 -!- GreaseMonkey has joined. 22:19:37 <Phantom_Hoover> Googling "AS-level graph theory" gives no relevant hits at all, which is rather odd. 22:19:40 <Ngevd> Also, know any good characters for a toll booth 22:19:45 <fizzie> The theory of plots of functions: choosing the right line colors for maximum psychological effect. 22:20:09 <Phantom_Hoover> fizzie, no, it's manipulating the scales to make things look more significant. 22:21:44 <Phantom_Hoover> Ngevd, oh, of course, you guys have that crazy module thing. 22:22:13 <Ngevd> Decision 1, if you really want to know 22:22:25 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:22:57 <Phantom_Hoover> https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxwaHNhbGV2ZWxtYXRoZW1hdGljc3xneDo2NTcwNTk5NDM5NWZhZWQ4 22:23:03 <Phantom_Hoover> Wow, that's unnecessarily convoluted. 22:24:46 -!- Phantom_Hoover has quit (Quit: Leaving). 22:25:04 -!- Phantom_Hoover has joined. 22:25:27 <Phantom_Hoover> NOTE TO SELF: Ctrl-q cannot be used as a substitute for Ctrl-w. 22:25:32 -!- elliott has left ("Leaving"). 22:25:35 -!- elliott has joined. 22:25:48 <elliott> Sure it can, I just tried Ctrl+W and it did what Ctrl+Q does: get rid of all you awful people. 22:26:01 <elliott> Phantom_Hoover: That handwriting is nice. 22:26:09 <Phantom_Hoover> Ah, but I was trying to get rid of the awful people in #bay12games. 22:26:23 <Phantom_Hoover> elliott, yes, their delicate minds cannot handle LaTeX. 22:27:09 <Ngevd> How about ‼ for toll booth 22:27:12 <Phantom_Hoover> Does that say "by includies te nuber of nodes" at the bottom? 22:27:20 <Phantom_Hoover> Ngevd, everyone knows that's a cage! 22:27:23 <Phantom_Hoover> Or fire. 22:29:03 <Ngevd> How about ℾ? 22:29:27 <Phantom_Hoover> That will do. 22:30:18 * Phantom_Hoover notes that he now has an unhealthy aptitude for Hohmann transfers. 22:31:31 <oerjan> iirc what they are that means you're doomed to be eventually lost in space 22:31:31 -!- Zuu has quit (Read error: Connection reset by peer). 22:32:47 <oerjan> i would have looked it up if my laptop hadn't chosen this very moment to start some update or other 22:33:45 <Phantom_Hoover> oerjan, a Hohmann transfer is just a way of moving between two circular orbits with different altitudes. 22:34:35 <oerjan> my vague memory was: close enough. 22:34:44 <oerjan> for the joke to work, anyway. 22:35:01 <elliott> oerjan: You have the fizzie-colon disease too, I see. 22:35:12 <elliott> Phantom_Hoover: You are literally going to be the: best Asteroids II player. 22:35:47 <Phantom_Hoover> No, the Project Rho guy will be, and we will cry, because he is the: worst. 22:35:53 <fizzie> I think I've: copied this thing: from somewhere. 22:35:55 <oerjan> elliott: your assessment might be: accurate. 22:36:04 <elliott> fizzie: It's so: addicting. 22:36:13 <fizzie> Isn't: it. 22:36:17 <Phantom_Hoover> Oh god are we suffering a fever of: colons. 22:36:20 <elliott> fizzie: It makes everything you say sound approximately fifty percent more: scientific. 22:36:20 <Ngevd> Who can see these characters properly: ﴾﴿ 22:36:24 <elliott> Ngevd: Me. 22:36:30 <elliott> They look like ()s but weird somehow. 22:36:32 <oerjan> which is weird since i have: just heard about it 22:36:41 <Phantom_Hoover> Ngevd, I: can. 22:36:53 <elliott> oerjan: I would: s/have: just/have just:/ 22:36:53 <Ngevd> elliott, that is exactly what they are 22:36:59 <elliott> Also this is TOO FAR. 22:37:06 <Phantom_Hoover> *this is: 22:37:06 <elliott> Ngevd: Oh. So they're not weird at all? 22:37:16 <Ngevd> U+FD3E, U+FD3F 22:37:19 <elliott> MC/Protocol.hs:17:1: 22:37:19 <elliott> Constructors CRespawn and CDisconnect 22:37:19 <elliott> give different types for field 22:37:19 <elliott> `unused' 22:37:19 <elliott> In the data type declaration for `ClientPacket' 22:37:20 <elliott> Oh come on. 22:37:20 <oerjan> elliott: o: kay 22:37:31 <Ngevd> They are technically /ornate. 22:37:38 <elliott> Ah. 22:37:39 <Phantom_Hoover> oerjan has taken this to its highest: point. 22:37:50 <elliott> Phantom_Hoover: Stop you'll ruin it. 22:37:53 <elliott> I've been happily using it for days now. 22:37:57 <Phantom_Hoover> *ruin: 22:38:07 <oerjan> <elliott> Also this is TOO FAR. <-- ME AM: PLAY GODS. 22:38:27 <elliott> Yes. 22:38:37 <Phantom_Hoover> The last funny Dresden Codak strip. 22:39:05 <elliott> I previously had a plan to read the Hob thing, but then I read that it was awful stereotypical singularitarian dreck so then I didn't. 22:39:13 <elliott> I have made: possibly good decisions. 22:39:34 <Phantom_Hoover> It is: awful. 22:40:36 <elliott> pikhq: How do I remove changes from an existing git commit? 22:40:57 <pikhq> elliott: Make new changes, git commit --amend 22:41:05 <elliott> pikhq: I want to /remove/ the changes. 22:41:09 <elliott> Or do I git reset --soft? 22:41:22 <elliott> And then... how would I selectively re-apply a patch from the new commit? 22:41:23 <elliott> git add -p style. 22:41:40 <elliott> OK brb. 22:41:45 <Phantom_Hoover> im pro orbiter 22:42:01 <elliott> Yes. 22:42:02 <elliott> brb. 22:42:12 <pikhq> It'd probably be easier to do "git reset files" on whatever files you want to remove changes from, and then git commit --amend. 22:42:21 <pikhq> After doing git add on those files. 22:42:27 <Phantom_Hoover> I almost don't want to work out the orbital parking brake because it'd make it less fun. 22:44:58 <Phantom_Hoover> Huh, Newtonian gravity is fully relativistic. 22:45:06 <Phantom_Hoover> I don't know why that didn't occur to me. 22:45:33 -!- Zuu has joined. 22:46:30 -!- Ngevd has quit (Quit: Leaving). 22:46:42 <pikhq> Isn't the only real distinction of Einstein's relativity that in it, light propogates at a constant speed no matter the frame of reference? 22:47:02 <pikhq> (and thus all the implications of SR) 22:47:03 <Phantom_Hoover> Not relativistic, maybe, just relative. 22:47:04 -!- copumpkin has joined. 22:47:28 <Phantom_Hoover> The important part being that I don't need to bother with scary complicated calculations for parking around a moving target. 22:47:51 <Phantom_Hoover> You want to park around a significantly accelerating target? Then do it yourself you lazy bastard. 22:48:02 <pikhq> It's still relativistic, in a sense. 22:48:54 <pikhq> It just doesn't encode the assumption that c is a constant, and all the implications this has for relativity. 22:49:08 <pikhq> Erm, not assumption. 22:49:14 <pikhq> Finding. 22:50:15 <Phantom_Hoover> This is nearly as relieving as the time I realised that you can work out angular and linear force separately. 22:50:49 -!- Patashu has joined. 22:53:51 <Phantom_Hoover> AHAHAHAHAHAHA I CAN RECOGNISE CANADIAN ACCENTS NOW NOTHING CAN STOP ME 22:55:20 <oerjan> you think so, eh? 22:55:36 <Phantom_Hoover> oerjan, are you Canadian. 22:56:01 <oerjan> YOU MAY NEVER KNOW, EH 22:56:12 <Phantom_Hoover> I CAN RECOGNISE YOUR ACCENT 23:03:21 <elliott> Phantom_Hoover: waht 23:03:35 <Phantom_Hoover> AHAHAHAHAHAHAHAHAHHAHAHA 23:03:46 <Phantom_Hoover> EHEHEHEHEHEHEHEHEH 23:04:02 <elliott> Phantom_Hoover: ... 23:04:03 <elliott> r u drug 23:04:13 <Phantom_Hoover> so many drugs 23:04:14 <tiffany> o_o 23:04:35 <elliott> ok good 23:04:39 <elliott> tiffany emoticon bot hard at work 23:04:52 <elliott> <pikhq> It'd probably be easier to do "git reset files" on whatever files you want to remove changes from, and then git commit --amend. 23:04:54 <tiffany> is there even such thing as emoticon bots? 23:04:59 <elliott> pikhq: I only want to commit some patches to the file in question. 23:05:06 <Phantom_Hoover> tiffany is undergoing an existential crisis. 23:05:15 <elliott> \o/ 23:05:19 <elliott> \o/ 23:05:23 <elliott> \o/ \m/ 23:05:26 <elliott> myndzi??? oh god 23:05:30 <tiffany> wait 23:05:32 <Phantom_Hoover> nooooooooooooooooooooooooo 23:05:34 <tiffany> lymee left 23:05:35 <tiffany> :o 23:05:40 <elliott> Yes. 23:05:43 <elliott> She is gone and will never come back. 23:05:45 <elliott> We banned her. 23:05:48 <tiffany> why D: 23:05:57 <elliott> Because she is literally the devil, we proved it with science. 23:06:01 <Phantom_Hoover> For creating an annoying emoticon bot. 23:06:08 <elliott> Yes. 23:06:20 <tiffany> what.. 23:06:47 <oerjan> no you 23:06:47 <Phantom_Hoover> we do not expect you to understand these things, you are only a crappily-coded emoticon bot after all. 23:06:54 <tiffany> ... 23:07:01 <oerjan> aww, it's gone 23:07:05 <Phantom_Hoover> That is a strange emoticon. 23:07:05 <oerjan> whoever that was 23:08:18 * tiffany hugs madoka-kaname <3 23:08:24 * Madoka-Kaname hugs ^^;; 23:08:33 <tiffany> :3 23:08:34 <elliott> Madoka-Kaname is the other emoticon bot. 23:08:43 <Phantom_Hoover> It's like Pygmalion and Galatea but more weeaboo. 23:08:48 <elliott> `addquote <Phantom_Hoover> It's like Pygmalion and Galatea but more weeaboo. 23:08:50 <HackEgo> 681) <Phantom_Hoover> It's like Pygmalion and Galatea but more weeaboo. 23:08:57 <Phantom_Hoover> Also lesbian. 23:09:02 <elliott> `delquote 681 23:09:04 <HackEgo> ​*poof* 23:09:08 <elliott> `addquote <Phantom_Hoover> It's like Pygmalion and Galatea but more weeaboo. <Phantom_Hoover> Also lesbian. 23:09:10 <HackEgo> 681) <Phantom_Hoover> It's like Pygmalion and Galatea but more weeaboo. <Phantom_Hoover> Also lesbian. 23:09:18 <Phantom_Hoover> My crowning achievement in this channel. 23:09:45 <oerjan> Phantom_Hoover: well only because hatheist plot failed 23:09:48 <oerjan> *your 23:09:55 <elliott> pikhq: What does git reset --soft do again? 23:10:06 <elliott> im lazy 23:10:19 <pikhq> elliott: --soft changes the head pointer. 23:10:19 <Phantom_Hoover> oerjan, DON'T REMIND ME 23:10:33 <elliott> Thing I just typed instead of "github": gktnjb. 23:10:34 <tiffany> hm 23:10:43 <elliott> hm is not an emoticon. 23:10:46 <tiffany> what was that window manager thingy that changes colour throughout the day? 23:10:51 <elliott> f.lux. 23:10:54 <elliott> It's not a window manager. 23:10:55 <tiffany> oh 23:10:59 <tiffany> that's why I confused it with fluxbox 23:11:04 <elliott> Those are not emoticons. 23:11:09 <elliott> Do your work, bot. 23:11:18 <oerjan> elliott: hm could be a thumbs-up emoticon 23:11:28 <elliott> oerjan: Hmm. True. 23:11:29 * tiffany isn't a bot >:c 23:11:44 <Phantom_Hoover> tiffany, have you passed your Turing test? 23:11:46 <oerjan> tiffany: that's what they all say 23:12:27 <elliott> tiffany is even less believable than Sgeo. 23:12:34 <elliott> And that just adds "?" to random statements. 23:12:41 * tiffany throws erasers at elliott 23:12:42 <Phantom_Hoover> She's less believable than Timmy the Turing Machine. 23:12:54 <elliott> She's less believable than your MOM. 23:13:07 <Phantom_Hoover> elliott, hey, no robot could produce karaoke *that* terrible. 23:13:21 <monqy> are you calling sgeo's karaoke terrible 23:13:35 <elliott> Phantom_Hoover: True. Who knew that the proof of human super-Turing power would not be the greatness of art, but the horror? 23:13:43 <oerjan> monqy: i think he's referring to his mom 23:14:01 <monqy> oh 23:14:21 <oerjan> which also explains Phantom_Hoover's insanity 23:14:26 <elliott> monqy: i doubt he is 23:14:36 <monqy> a relief 23:14:48 <elliott> i mea 23:14:49 <elliott> n 23:14:50 <elliott> referring to his mom 23:14:54 <elliott> he's obviously talking about sgeo's 23:14:55 <Phantom_Hoover> monqy, you have heard Sgeo's karaoke, have you not? 23:14:58 <monqy> oh 23:15:01 <monqy> yes i have 23:15:03 <monqy> it's beautiful 23:15:04 <elliott> Phantom_Hoover: You just don't get it, man. 23:15:09 <oerjan> oh. 23:15:12 <Phantom_Hoover> I understand, you repressed the memories. 23:15:24 <elliott> Well, it's better than Trout Mask Replica. 23:15:31 <Phantom_Hoover> wat 23:15:38 <elliott> It was a: joke. 23:15:40 <oerjan> my principle of turning on laptop sound only in emergencies must have saved me. 23:16:34 <Phantom_Hoover> "Oh no! The president has been kidnapped!" "Ørjan, turn on your speakers! We'll karaoke these terrorists into submission!" 23:16:40 * Phantom_Hoover → sleep 23:16:42 -!- Phantom_Hoover has quit (Quit: Leaving). 23:17:59 <elliott> Does Norway even have a president. 23:18:30 <zzo38> Is there a datatype to represent algebraic numbers? 23:20:23 <elliott> pikhq: hmm, git reset --soft doesn't seem to do much 23:20:26 <elliott> Do I need to specify HEAD? 23:20:48 <elliott> Ah, I want --mixed 23:21:04 <Deewiant> a.k.a. 23:21:29 <elliott> Deewiant: Shhhhhhhhhhh. 23:21:38 <elliott> reset makes me jumpy. 23:22:04 * oerjan fixes some spelling in the [[HA]] article 23:22:42 <oerjan> elliott: there is a president of parliament. 23:22:46 <elliott> can you fix the badness too 23:23:49 <oerjan> tricky. 23:26:24 <pikhq> elliott: Well, yeah, it does precisely one thing: it changes HEAD. 23:27:18 <pikhq> Everything that is not HEAD is not affected by it. 23:27:27 -!- Behold has quit (Remote host closed the connection). 23:27:41 <pikhq> And HEAD is nothing but a hash stored in a text file somewhere in .git. 23:27:53 <elliott> Looks like .git/HEAD. 23:28:00 <pikhq> Sounds right. 23:28:00 <elliott> $ cat .git/HEAD 23:28:00 <elliott> ref: refs/heads/master 23:28:09 <elliott> refs/heads/master isn't a file though. :p 23:28:14 <elliott> Oh wait yes it s. 23:28:15 <elliott> is. 23:28:31 <pikhq> Oh, right, HEAD itself points to the branch head. 23:28:40 <pikhq> It edits whatever HEAD points to. 23:29:00 <elliott> Two-star programming. 23:29:01 <pikhq> checkout $branch changes HEAD. And then futzes with your working tree. 23:30:12 <elliott> "Lately I've been shaking up my world by delving into Haskell. It has been quite an interesting experience. Compared to the languages I've used before it's somewhat different given it's a pure, functional language. The language is filled with features. In this post I'm going to discuss one of those, infinite lists in particular. " 23:30:16 <elliott> ITS NOT A LANGUAGE FEATURE YOU AWFUL BLOG POST WRITER 23:30:21 <elliott> s/\. "/."/ 23:30:24 <elliott> oerjan: suffer with me 23:30:53 <oerjan> it's not? 23:31:09 <pikhq> oerjan: It's just a side effect of laziness. 23:31:17 <pikhq> I can do it in C. 23:31:23 <elliott> oerjan: It's a feature in the sense of "perk", but it's not a "language feature". 23:31:34 <pikhq> Hell, I can do it in Brainfuck with enough effort. 23:31:37 <elliott> Language features are something that had to be built in to the language to achieve. 23:31:42 <elliott> pikhq: well that's a fallacy 23:32:00 <elliott> everything TC is equivalent in computational power =/= everything TC is equivalent 23:32:12 <oerjan> i think elliott and i discussed how to do it in underload once 23:32:16 <pikhq> It'll be much less clean, because laziness is a Haskell native feature, rather than something that's being hacked on, but nevertheless. 23:34:22 <elliott> wow, why on earth does the transformers package support base 1? 23:34:24 <elliott> Dependenciesbase (≥1.0 & <2), special-functors (1.0.*) or 23:34:24 <elliott> base (≥2 & <6) 23:40:01 <oerjan> ^ul (()(((x)*:a)~a*^a*a(:^)*a):^)^^^(~aS:^):^ 23:40:02 <fungot> (((x)*:a)~a*^a*a(:^)*a)(x)((x)(((x)*:a)~a*^a*a(:^)*a))(x) ...out of stack! 23:40:12 -!- augur has quit (Remote host closed the connection). 23:40:21 <nooga> aargh 23:40:29 <oerjan> oops 23:41:28 <elliott> nooga: Are you too drunk for this. 23:41:40 <oerjan> ^ul (()(((x)*:a)~a*^a*a(:^)*a):^)^^^^(~aS:^):^ 23:41:41 <fungot> (((((x)(((x)*:a)~a*^a*a(:^)*a)x)(x)):^))((x)(((x)*:a)~a*^a*a(:^)*a)x)(x) ...out of stack! 23:43:07 <oerjan> ^ul (()(((x)*:a)~a*^a*(:^)*a):^)^^^^(~aS:^):^ 23:43:07 <fungot> ((xx)(((x)*:a)~a*^a*(:^)*a):^)(xx)(x) ...out of stack! 23:44:21 <oerjan> ^ul (()(((x)*:a)~a*^a*(:^)*a):^)^^^^^(~aS:^):^ 23:44:21 <fungot> (((xxx)(((x)*:a)~a*^a*(:^)*a):^))(xxx)(xx)(x) ...out of stack! 23:45:13 <oerjan> ^ul (()(((x)*:a)~a*^a*(:^)*a):^)^^^^^^(~aS:^):^ 23:45:13 <fungot> ((xxx)(((x)*:a)~a*^a*(:^)*a):^)(xxx)(xx)(x) ...out of stack! 23:45:18 <oerjan> oh hm 23:45:30 <oerjan> ^ul (()(((x)*:a)~a*^a*(:^)*):^)^^^^^^(~aS:^):^ 23:45:30 <fungot> ((xxxxxx)(((x)*:a)~a*^a*(:^)*):^)(xxxxxx)(xxxxx)(xxxx)(xxx)(xx)(x) ...out of stack! 23:45:36 <oerjan> there you go 23:47:12 <oerjan> ^ul (()(((x)*:a)~a*^a*(:^)*):^)(~^~(, )*S~:^):^ 23:47:12 <fungot> x, xx, xxx, xxxx, xxxxx, xxxxxx, xxxxxxx, xxxxxxxx, xxxxxxxxx, xxxxxxxxxx, xxxxxxxxxxx, xxxxxxxxxxxx, xxxxxxxxxxxxx, xxxxxxxxxxxxxx, xxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxx, xx ...too much output! 23:48:17 <oerjan> the first command is essentially an infinite list, and the rest prints its elements 23:48:20 <elliott> oerjan: are those lazy lists? :DDDD 23:48:21 <elliott> so cool 23:48:30 <elliott> oerjan: What's the Haskell equivalent to whatever you're doing? 23:48:37 <elliott> as in, the corresponding data type 23:48:40 <elliott> with explicit laziness I guess? 23:48:44 <elliott> actually wait no 23:48:47 <elliott> since you're emulating the laziness yourself 23:48:50 <elliott> so a thunk would be (() -> a) 23:49:01 <Madoka-Kaname> !bf >+[[.>].+[<]>] 23:49:37 <oerjan> (()(((x)*:a)~a*^a*(:^)*):^) when run produces (x) and ((x)(((x)*:a)~a*^a*(:^)*):^) on the stack 23:49:48 <elliott> oerjan: I can't read Underload. At least not at this hour. 23:50:04 <oerjan> ((x)(((x)*:a)~a*^a*(:^)*):^) when run produces (xx) and ((xx)(((x)*:a)~a*^a*(:^)*):^) on the stack 23:50:08 <oerjan> etc. 23:50:29 <oerjan> so it's building its own successor 23:50:41 <oerjan> (or tail) 23:51:19 <Madoka-Kaname> So it's an iterative quine? 23:51:41 <oerjan> er... 23:53:08 <elliott> oerjan: plz type synonym equiv :'( 23:53:19 <elliott> or well at least SOMETHING vaguely type-like that isn't Underload :P 23:53:27 <elliott> like is it based on foldr? 23:53:34 <elliott> or is it just 23:53:40 <elliott> call --> head tail 23:53:40 <elliott> ? 23:54:06 <oerjan> f p = p:f(p++[x]) 23:54:24 <oerjan> erm 23:55:27 <oerjan> call --> head tail, yes 23:58:21 -!- kmc has quit (Quit: Leaving). 23:59:07 <oerjan> the format is ((previous-head)(program to produce next head+self-quine):^) 23:59:56 <oerjan> with the (program to produce next head+self-quine) part not changing 2011-09-24: 00:02:37 -!- MSleep has joined. 00:03:31 <elliott> hi 00:12:47 -!- kmc has joined. 00:16:33 -!- sllide has joined. 00:26:07 <nooga> elliott: I'm not drunk at all 00:26:29 -!- sllide has quit (Read error: Connection reset by peer). 00:26:52 <elliott> Suuuure 00:26:58 <oerjan> i'm not as think as you drunk i am 00:27:47 <tswett> elliott: hey. How old are you now, relative to how old you were five years ago? 00:28:01 <elliott> tswett: Six years older. 00:28:15 <tswett> Wow. That's pretty old, comparatively speaking. 00:28:27 <tswett> Six years. I can barely believe it. 00:28:39 <tswett> So much time has passed in those past five years. 00:29:57 <oerjan> damn right it has 00:29:59 <elliott> Yes. 00:35:44 <elliott> oerjan: what's the thing with (<*>) but no pure again? 00:35:47 <elliott> (,) without Monoid? 00:35:51 <elliott> s/w/W/ 00:36:56 <oerjan> i'm not sure that has <*> 00:37:10 <elliott> What was it then? 00:37:12 <elliott> You thought of something :P 00:37:22 <oerjan> it had Functor, but not Applicative 00:37:34 <elliott> What was the thing with ap but not prue 00:37:35 <elliott> pure 00:37:37 <elliott> Map? 00:37:41 <elliott> I think it was Map. 00:37:48 <oerjan> hm maybe 00:38:11 <oerjan> because it's like ziplist except you cannot make repeat 00:40:53 <elliott> I'm so glad #haskell aren't watching, they think all these smarts are me. 00:44:36 <zzo38> What does Maybe correspond to in Curry-Howard? It seem to me, you can have (a -> Maybe b) since the function can be (const Nothing); does that mean anything in intuitionistic logic or other logic? 00:45:12 <zzo38> But you don't have (Maybe a -> a) or (Maybe a -> b) 00:45:39 <copumpkin> in some sense, it represents a partial decision of b 00:45:53 <copumpkin> it can say "yes b" or "I don't know" 00:48:46 <elliott> How many fixed-precision binary digits do you need to represent every double 00:49:57 <Jafet> 1079 00:50:03 -!- evincar has joined. 00:50:08 <elliott> Jafet: Really? 00:50:12 <elliott> That's a lot of binary digits. 00:50:30 <Jafet> People use doubles for a reason 00:50:41 <oerjan> you need to be able to represent the largest double, and the smallest 00:50:54 <oerjan> lots of digits between those 00:50:57 <elliott> Jafet: How many after the... uh, binary point? 00:51:01 <elliott> oerjan: Well yeah. 00:51:22 <Jafet> Probably 565. 00:51:55 <Madoka-Kaname> :t const Nothing 00:51:56 <lambdabot> forall a b. b -> Maybe a 00:52:27 <oerjan> zzo38: it would seem that Maybe a corresponds to a trivially true proposition, then 00:53:01 <copumpkin> not really, it's just not as informative as Dec a 00:53:02 <oerjan> it's basically Either b a with b set to () or True 00:53:18 <Madoka-Kaname> :t (flip Maybe) id 00:53:18 <lambdabot> Not in scope: data constructor `Maybe' 00:53:20 <Madoka-Kaname> :t (flip maybe) id 00:53:21 <lambdabot> forall a. a -> Maybe a -> a 00:53:33 <oerjan> copumpkin: um the function Nothing is a proof of Maybe a for all a 00:53:43 <Madoka-Kaname> @pl (flip (flip maybe) id) 00:53:43 <lambdabot> maybe id 00:53:50 <elliott> oerjan: yes but in a higher-order sense... 00:53:55 <elliott> it's a partial decision procedure 00:53:57 <Madoka-Kaname> @pl (flip $ (flip maybe) id) 00:53:57 <lambdabot> flip (flip maybe id) 00:53:58 <nooga> http://cl.ly/100S3t0i062c3q3Z083O :O 00:54:06 <Madoka-Kaname> @pl (flip maybe) id 00:54:06 <lambdabot> flip maybe id 00:54:07 <elliott> oerjan: you might have 00:54:17 <elliott> oerjan: imperfectPrimalityChecker :: (p :: Integer) -> Maybe (IsPrime p) 00:54:19 <copumpkin> data Dec a = Yes a | No (Not a) 00:54:24 <elliott> if it says it's prime, it's definitely prime, but if not, it might still be prime 00:54:29 <copumpkin> that's the ideal 00:54:55 <copumpkin> but sometimes you can't go that far, so Maybe gives you a definite yes, but not a definite no 00:55:20 <copumpkin> say for example you have a statement in peano arithmetic 00:55:48 <copumpkin> well, with presburger arithmetic 00:56:09 <copumpkin> you'd have (s : PresburgerStatement) -> Dec (reify s) 00:56:20 <oerjan> Madoka-Kaname: you may be looking for fromMaybe 00:56:21 <copumpkin> (s : PeanoStatement) -> Maybe (Dec (reify s)) 00:56:24 <copumpkin> that's the best you can do 00:56:28 <copumpkin> according to godel 00:56:30 <copumpkin> :P 00:56:34 <elliott> Jafet: The reason I asked was that I receive some data in a fixed-point format but some in doubles... eurgh 00:56:46 <elliott> And it feels wrong just dividing the fixed-point format, even though it was almost certainly created from a double 00:57:06 <evincar> Wait, what? 00:57:14 <evincar> Where are you getting data from? 00:59:03 -!- ive has quit (Ping timeout: 276 seconds). 01:01:43 <evincar> And for what, I might ask. 01:02:45 <evincar> Are we verifying CERN research data? 01:02:59 <evincar> Is that what my half-assed log-skimming should lead me to believe? 01:05:19 <zzo38> Sometimes my dreams fork and end in two different ways independently of each other 01:05:29 -!- nooga has quit (Ping timeout: 255 seconds). 01:07:13 <evincar> I frequently have lucid dreams. 01:07:18 <evincar> In a recent one I tried to move my body in the real world to get my phone call a friend of mine. 01:07:26 <evincar> I wanted to tell him about the things I was seeing in the dream world. 01:07:35 <evincar> It didn't work though. 01:08:00 <oerjan> it's when you _receive_ such a phone call while awake you should be worried. 01:08:17 <zzo38> Sometimes my dream I try to move my real body (but doesn't work) even though I am not trying to try to do that, it is not what I am wanting to do, etc 01:11:30 <evincar> oerjan: What would be worrying? 01:11:36 <evincar> It probably wouldn't even make sense. 01:11:41 <elliott> Hmm... actually, I think doubles might be able to precisely represent every value in the range I'm dealing with. If I have a 32-bit int n, will n/32 be precisely representable as a double for all n? 01:11:50 <elliott> I bet Jafet knows! 01:12:12 <evincar> Sometime I'd like to see a "floating-point explorer". 01:12:29 <evincar> Something that lets you drag a panel to see ranges of numbers and which ones are precisely representable. 01:12:30 -!- ive has joined. 01:13:44 <oerjan> elliott: if you can represent n accurately as a double, then you can represent n/32. the exponents for both will be far from the boundaries. 01:13:53 <elliott> oerjan: Right. 01:14:03 <elliott> oerjan: I'm just really ridiculously paranoid about floating point :) 01:14:23 <oerjan> > [0.1, 0.2 .. 0.3] 01:14:24 <lambdabot> [0.1,0.2,0.30000000000000004] 01:14:26 <evincar> It's useful for a number of things. 01:14:27 <elliott> ;__; 01:14:46 <evincar> (Sorry, that was awful.) 01:14:50 <oerjan> (from the current haskell-cafe discussion about Enum 01:14:55 <elliott> oerjan: yeah 01:14:56 <oerjan> ) 01:15:04 <elliott> im hide in your parens 01:15:07 <elliott> : ) 01:17:53 <oerjan> > 0.3 01:17:55 <lambdabot> 0.3 01:18:21 <oerjan> > 0.30000000000000003 01:18:23 <lambdabot> 0.30000000000000004 01:18:26 <oerjan> > 0.30000000000000002 01:18:27 <lambdabot> 0.30000000000000004 01:18:30 <oerjan> > 0.30000000000000001 01:18:31 <lambdabot> 0.3 01:18:38 <elliott> :'( 01:18:45 <elliott> im doth cry 01:19:23 <oerjan> > nub (replicate 5 (0/0)) 01:19:24 <lambdabot> [NaN,NaN,NaN,NaN,NaN] 01:19:48 <elliott> im cry 01:20:07 <oerjan> > sort $ [1..5] ++ replicate 5 (0/0) 01:20:09 <lambdabot> [NaN,NaN,NaN,NaN,NaN,1.0,2.0,3.0,4.0,5.0] 01:20:15 <oerjan> hm 01:20:37 <oerjan> > sort $ [1..5] ++ replicate 5 (0/0) ++ {6..10] 01:20:37 <lambdabot> <no location info>: parse error on input `{' 01:20:43 <oerjan> > sort $ [1..5] ++ replicate 5 (0/0) ++ [6..10] 01:20:44 <lambdabot> [6.0,7.0,8.0,9.0,10.0,NaN,NaN,NaN,NaN,NaN,1.0,2.0,3.0,4.0,5.0] 01:20:51 <oerjan> XD 01:21:27 <evincar> Is NaN supposed to be stable in sorts like that? 01:21:35 <zzo38> Is that what NaN is for in sorting? 01:21:53 <zzo38> It seem wrong 01:22:11 <oerjan> ...this is showing how Nan's Eq and Ord instances don't obey haskell's assumed laws 01:22:19 <oerjan> *NaN 01:22:34 <zzo38> Yes; it is not following proper Ord laws when NaN is involved. 01:22:49 <elliott> floats shouldn't be Eq or Ord really 01:22:56 <elliott> well ok maybe Ord but Eq is just wrong... Ord requires Eq though 01:23:12 <elliott> in ML they have a whole type infrastructure just to disallow equality on floats :P (since they have no typeclasses) 01:23:18 <zzo38> > sort [1.0,5.0,1.5,NaN,2.0,NaN,NaN,1.1,1.0] 01:23:19 <lambdabot> Not in scope: data constructor `NaN'Not in scope: data constructor `NaN'Not... 01:23:22 <copumpkin> not even Ord 01:23:36 <zzo38> > sort [1.0,5.0,1.5,0/0,2.0,0/0,0/0,1.1,1.0] 01:23:37 <lambdabot> [1.0,1.1,NaN,NaN,2.0,NaN,1.0,1.5,5.0] 01:23:43 <elliott> copumpkin: kinda awkward to use though then :P 01:24:24 <zzo38> You can make a lot of things without floating point. 01:24:26 <evincar> That's so broken...then again, NaN is sorta broken by definition. 01:24:48 <evincar> It just makes me very uncomfortable that the output of my sorting algorithm depends crucially on the algorithm. :P 01:24:53 <oerjan> all this inspired by the recent haskell-cafe discussion. 01:24:59 <zzo38> Is there datatype to represent algebraic numbers? 01:25:13 <oerjan> zzo38: probably in some package 01:25:23 <oerjan> but not in the standard 01:26:35 <oerjan> i'm not even sure what kind of algorithms would handle them efficiently 01:31:46 -!- elliott has quit (Remote host closed the connection). 01:32:11 -!- elliott has joined. 01:32:32 <elliott> oerjan: which haskell-cafe archive do you use btw, I don't like the ones I've used :P 01:39:38 <elliott> hmph 01:40:50 <oerjan> i use haskell.org's pipermail and i hate it :P 01:41:04 <oerjan> i keep telling myself to change 01:41:40 <oerjan> it breaks on too many messages 01:42:29 <oerjan> (including, i believe, internal "From " lines, as i've mentioned before) 01:44:28 <elliott> oerjan: aha, what about http://groups.google.com/group/haskell-cafe 01:44:37 <elliott> that does the nice conversation view too, so you don't have to muck about with thread navigation 01:44:40 <oerjan> oh and i vaguely recall there may be something wrong with attachments too 01:44:42 <elliott> well http://groups.google.com/group/haskell-cafe/topics 01:44:58 <oerjan> aha 01:45:26 <elliott> yeah this seems nice 01:46:00 <elliott> "Hello fellow Haskellers, 01:46:01 <elliott> this is a proposal to extend the arrow notation (-XArrows)." 01:46:01 -!- cheater has quit (Ping timeout: 248 seconds). 01:46:04 <elliott> not MORE :D 01:46:22 <oerjan> ertugrul's proposal? 01:46:26 <elliott> yes 01:46:34 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 01:46:35 <oerjan> i think he ended up finding those (| |) could do what he wanted 01:46:43 <elliott> idiom brackets 01:46:44 <oerjan> *thing could 01:46:48 <oerjan> *things 01:46:59 <elliott> i do not understand arrow notation in the slightest 01:47:07 <elliott> oh hm not idiom brackets 01:47:10 <elliott> banana brackets apparently 01:47:30 <monqy> banana brackets? 01:47:42 <elliott> arrow shit 01:47:44 <elliott> who knows :P 01:47:48 <monqy> arrows...... 01:48:32 -!- evincar has joined. 01:51:00 -!- augur has joined. 01:51:53 -!- augur has quit (Remote host closed the connection). 01:52:08 <elliott> "If typhoon comes, umbrella does not work." --haskell-cafe 01:52:40 <evincar> Sound advice on both typhoons and umbrellas. 01:53:19 <evincar> My blog post got loads of views so now I have to be clever because people pay attention to me now. :( 01:54:30 <CakeProphet> ha. 01:54:31 <monqy> oh no 01:54:43 <CakeProphet> dude my blag is going to be the best of all. 01:54:48 <CakeProphet> people will be "like woah dude portal chess" 01:54:51 <monqy> whoa 01:54:51 <monqy> dude 01:54:54 <monqy> portla chess 01:55:02 <evincar> That is something you say whoa dude about. 01:55:13 <evincar> The things I write about are not the things that people say whoa dude about. 01:55:19 <monqy> :'( 01:55:29 <evincar> They are the things people agree with because they lack conflict. 01:55:36 <evincar> Or disagree with because they have misunderstood them. 01:55:49 <CakeProphet> yes you are infallible. 01:56:25 <evincar> I'm as fallible as anybody. 01:56:41 <evincar> I just don't generally make controversial claims. 01:56:50 <evincar> And when I do, people tend to disagree for the wrong reasons. 01:56:59 <evincar> I want better peer review. :/ 01:57:16 <CakeProphet> "perl style can be shown to kill babies" 01:57:31 <evincar> Name a thing that cannot be shown to kill babies. 01:57:46 <evincar> Unless a "kill baby" is a thing. 01:57:51 <evincar> A thing to which you can show perl style. 01:58:03 <CakeProphet> !perl print kill baby 01:58:05 <EgoBot> Unrecognized signal name "baby" at /tmp/input.6812 line 1. 01:58:10 <CakeProphet> !perl print kill $baby 01:58:10 <EgoBot> 0 01:58:15 <monqy> evincar: you may have to work a bit on your clever 01:58:29 <evincar> That is what I said I would have to do. 01:58:42 <evincar> Well, implied. 01:58:54 <CakeProphet> elliott: oh hey did you perhaps check out my new wacro? 01:58:58 <monqy> then consider this positive reenforcement of your said 01:59:00 <monqy> i agrreed with you 01:59:02 <CakeProphet> it probably needs a new name since it's not really generating acronyms anymore... 01:59:05 <zzo38> I don't care if it can kill babies. Just because it can, doesn't mean it does!! 01:59:09 <elliott> it's lacking in the acronym department 01:59:12 <CakeProphet> yes. 01:59:14 <evincar> Yaaay, someone else thinks I'm not as clever as I ought to be. 01:59:21 <evincar> What a stupendous victory for me. 01:59:21 <CakeProphet> `wacro 20 01:59:25 <HackEgo> savidebe sellstrixtrid wdyngivers pendehth tuenwamers ution hypolizatiii sages xxildonneau smairedelsolorwoosi trohe ageeine gue cojous rret reproadsiges pur roi torntitusto herreselavrethjac 01:59:27 <CakeProphet> and it's only mediocre at words.. 01:59:30 <elliott> hypolizatiii 01:59:37 <elliott> cojous and gue are good 01:59:38 <elliott> also trohe 01:59:41 <elliott> and pur and roi 01:59:43 <CakeProphet> yeah for some reason iii is really common 01:59:47 <CakeProphet> tuenwamers 01:59:53 <elliott> that sounds like a kind of jumper 01:59:55 <monqy> new wacro is good but not as good as fizzie's word generator from last night was it 01:59:58 <elliott> i'm wearing a wooly tuenwamer 01:59:58 <monqy> I really liked those words 02:00:03 <elliott> monqy: oh what was that 02:00:04 <elliott> i must logread 02:00:07 <monqy> I'll dig bup the linke 02:00:20 * CakeProphet is currently fixing things / adding new features. 02:00:26 <monqy> http://sprunge.us/MNHQ 02:00:32 * oerjan opens a bottle of xxildonneau 02:00:37 <CakeProphet> eventually I'll go back and redo the actual word generating algorithm. Maybe with larger grams. 02:00:41 <monqy> faubblemarcus is maybe my favoirte there 02:00:42 <CakeProphet> how does the "n-gram" approach work? 02:00:47 <elliott> monqy: oh these are good 02:00:59 <elliott> CakeProphet: just build a reverse context tree(tm) 02:01:08 <Jafet> For small n, it doesn't. 02:01:14 <elliott> :D 02:01:25 <monqy> for large n, it doesn't, either 02:01:29 <CakeProphet> uh, maybe I should just stick to a single gram size? or two? or three? 02:01:31 <oerjan> un vin pur pour roi 02:01:33 <zzo38> How do you do internet access in Haskell? 02:01:34 <elliott> monqy: megahal works pretty good 02:01:42 <monqy> elliott: hm 02:01:51 <elliott> monqy: but it's quite special, it uses a backwards thing too 02:01:55 <oerjan> @hoogle socket 02:01:56 <lambdabot> Network.Socket socket :: Family -> SocketType -> ProtocolNumber -> IO Socket 02:01:56 <lambdabot> module Network.Socket 02:01:56 <lambdabot> Network data Socket 02:01:58 <elliott> as in, it has a /reverse/ context tree 02:02:04 <monqy> Iremember megahal beng special 02:02:05 <elliott> and it has n=four which is pretty big 02:02:12 <elliott> monqy: it also has a separate thing for punctuation, iirc 02:02:14 <elliott> http://megahal.alioth.debian.org/Classic.html but it's good 02:02:21 <CakeProphet> elliott: yeah I was thinking 4-grams might produce better results. 02:02:25 <monqy> oh I meant bigger than 4 when i said big. 4 is pretty big if you actually want things to be good. 02:02:26 <elliott> http://megahal.alioth.debian.org/Best.html is good too 02:02:29 <zzo38> Where is module Network.Socket? 02:02:31 <elliott> CakeProphet: n is words in this case 02:02:32 <monqy> I mean 02:02:35 <monqy> 4 is on the big side of good 02:02:35 <CakeProphet> elliott: right. 02:02:37 <elliott> zzo38: http://hackage.haskell.org/package/network 02:02:40 <monqy> 4 is good if you're good 02:02:45 <monqy> 100 is never good......... 02:03:02 <elliott> one hundred generates source text verbati 02:03:03 <elliott> m 02:03:05 <elliott> which i guess is okay? 02:03:09 <monqy> Bad 02:03:11 <elliott> http://megahal.alioth.debian.org/Poetry.html 02:03:34 <elliott> "exquisite dead guy 02:03:35 <elliott> rotating in hell" 02:03:47 <CakeProphet> rotate in peace. 02:04:32 <CakeProphet> I was also considering as a hueristic lowering the frequency of trigrams that contain 3 vowels or 3 consonants. 02:04:39 <CakeProphet> to remove the things like iii 02:04:48 <CakeProphet> or to make them less frequent anyways 02:04:55 <Jafet> If you're even getting those trigrams, you're using the wrong corpus 02:05:07 <CakeProphet> but there's a lot of words with 3 consonants 02:05:09 <CakeProphet> in a row 02:05:15 <CakeProphet> Jafet: hmmm? 02:05:20 <monqy> iiiiiiiiiiiiiiiiiiiiiiiiii 02:05:20 <CakeProphet> these trigrams are characters, btw 02:05:40 <CakeProphet> I am taking a 1-grams-of-words dataset 02:05:45 <Jafet> No english (or most other european) text will give you three i's in a row 02:05:45 <CakeProphet> and breaking each word into trigrams 02:05:58 <Jafet> ...very often 02:06:06 <CakeProphet> presumably the iii is from roman numerals or such 02:06:22 <CakeProphet> maybe I could just remove it as a special case. 02:06:32 <elliott> roman numerals aren't mushed up with other words 02:06:35 <Jafet> Filter on a dictionary 02:06:39 <CakeProphet> elliott: true 02:06:40 <elliott> if you're traversing across word boundaries you are "doin' it rong" 02:06:47 <elliott> each word should be added separately 02:06:48 <monqy> cakeprophet what about the tii 02:06:50 <Jafet> Or make n-grams on syllables, instead of letters 02:06:53 <monqy> and yea hwhat eliotss saying 02:07:01 <elliott> Jafet: that would be good, but syllables are hard to extract from text reliably :P 02:07:05 <CakeProphet> elliott: I am not concating words together I'm adding characters together. 02:07:09 <elliott> but you could heuristic it 02:07:14 <elliott> CakeProphet: i'm talking about when training 02:07:15 <Jafet> When in doubt, branch and add both. 02:07:44 <Jafet> Or index on a dictionary, where the syllables are already split for you. 02:08:13 <CakeProphet> elliott: the algorithm does this: takes the last two characters that were generating, plugs them into the hash table, then randomly selects, based on frequency, the third character from the inner-hash-table, and then adds that to the string 02:08:17 <CakeProphet> repeat 02:08:19 <CakeProphet> until it finds a space 02:08:23 <CakeProphet> which indicates the end of a word 02:08:32 <CakeProphet> I'm replacing the end-of-space thing to use a word length histrogram. 02:08:40 <elliott> "the third"? 02:08:41 <CakeProphet> so that the lengths of words are based on the lengths of words in the dataset. 02:08:45 <elliott> oh i see 02:08:51 <elliott> CakeProphet: i'm talking about when training 02:08:53 <elliott> not when generating. 02:08:55 <elliott> as i already said. 02:08:56 <CakeProphet> yes if you have "aa" it will give you a table of possible third characters with frequencies. 02:08:59 <CakeProphet> and randomly selects one. 02:09:19 <CakeProphet> elliott: right, I was giving you the context to make sure we were talking about the same approach. how would word boundaries be factored in? 02:09:29 <elliott> do you train separately for each word in the corpus 02:09:36 <CakeProphet> I... guess? 02:09:39 <elliott> >_< 02:09:40 <elliott> so that's a no then 02:09:45 <elliott> which means you won't be generating words at all 02:09:46 <CakeProphet> how do you train them "all together" :PO 02:09:51 <elliott> you'll be generating stretches of text without spaces 02:10:21 <CakeProphet> as in like, what is the difference in data representation 02:10:33 <elliott> none in data representation. all in algorithm. 02:10:48 <CakeProphet> the algorithm that generates the data. "training" as you call it. 02:10:53 <CakeProphet> what data does it generate. 02:11:09 <elliott> wow what a hopelessly unanswerable question 02:11:14 <elliott> show your code, i'll tell you if it's wrong :P 02:11:23 <CakeProphet> I already know the answer to that, from you. 02:11:23 -!- elliott has quit (Remote host closed the connection). 02:11:23 <monqy> it's in perl; automatically wrong 02:11:31 <monqy> bye elliott 02:11:46 -!- elliott has joined. 02:11:48 <CakeProphet> elliott: I don't need you to tell me it's wrong. I would just like you to explain a little more about what you're talking about. 02:12:00 <CakeProphet> `ls bin/wacro 02:12:02 <HackEgo> bin/wacro 02:12:03 <CakeProphet> enjoy 02:12:04 <elliott> i can't because your questions are bad 02:12:09 <elliott> and unanswerable 02:12:12 <elliott> and i suspect a deeper confusion 02:12:31 <CakeProphet> basically what is training. 02:12:35 <elliott> it would be much simpler to see your code which would let me determine whether it did what i said or not quickly; if you don't want to do that, then fine, I can't/won't help 02:12:43 <CakeProphet> ^^^^^^^^^^^^^^ 02:12:48 <elliott> CakeProphet: going from corpus to data set 02:12:51 <elliott> language model 02:12:52 <elliott> whatever 02:12:57 <CakeProphet> okay. 02:13:30 <evincar> Should I compete at the International Whistlers Convention next year? 02:13:33 <CakeProphet> http://pastebin.com/A16F58CF 02:13:34 <CakeProphet> it's the best code 02:13:36 <CakeProphet> best perl. 02:13:51 <evincar> (I don't care if this is completely off-topic. Someone usually answers. :P) 02:14:00 <monqy> evincar: :P 02:14:04 <CakeProphet> evincar: no dude because if you do I'll join 02:14:07 <elliott> CakeProphet: i like the part where you discard all words after the first in a given n-gram 02:14:07 <CakeProphet> and completely dominante. 02:14:15 <CakeProphet> elliott: where is that? 02:14:20 <elliott> also btw the google n-gram data is completely useless for this 02:14:22 <elliott> all you need is the wordlist 02:14:24 <elliott> or are you using the wordlist 02:14:25 <CakeProphet> elliott: these are 1-grams 02:14:26 <CakeProphet> which is 02:14:27 <elliott> right 02:14:27 <CakeProphet> a wordlist 02:14:47 <elliott> yeah ok you do it right i guess, but with a way too low n 02:15:00 <CakeProphet> n as in n-gram? 02:15:08 <elliott> yes 02:15:08 <evincar> CakeProphet: I'm pretty good. Not a virtuoso by any means, but I've practiced a lot. 02:15:11 <elliott> CakeProphet: what does your generator use to denote start/end 02:15:15 <CakeProphet> I was considering maybe 4 or 5. 02:15:19 <elliott> you should use special tokens for that 02:15:31 <CakeProphet> elliott: currently it doesn't use anything for end, and start is spaces. 02:15:34 <CakeProphet> two spaces for start 02:15:43 <monqy> "doesn't use anything for end" what 02:15:47 <elliott> CakeProphet: well, it doesn't matter what you use, as long as it's in the data set 02:15:51 <elliott> CakeProphet: but you want an end token 02:15:55 <elliott> to be inserted as the "last character" 02:16:02 <elliott> so that you can end at a good place 02:16:06 <CakeProphet> elliott: the end token no longer means anything with the current generation algorithm. 02:16:13 <elliott> it should 02:16:15 <CakeProphet> as it predecides the length. 02:16:20 <elliott> it shouldn't 02:16:21 <CakeProphet> via a word length histrogram. 02:16:28 <elliott> ok well 02:16:32 <tswett> Hey, programming language. Smalltalk, but there's only one message selector, and it takes one argument, and messages don't return anything. 02:16:32 <elliott> it can pick a target length 02:16:33 <CakeProphet> the current algorithm is the one that goes until it finds a space 02:16:36 <CakeProphet> and it ends up generating huge words. 02:16:37 <elliott> and exit if it gets an end token 02:16:39 <elliott> if you're close enough 02:16:42 <elliott> i.e. >= 02:16:45 <tswett> (I've gotten very lazy when it comes to creating esoteric programming languages.) 02:16:52 <elliott> (and use a maximum length to cut it off if it gets stuck in a loop) 02:17:04 <CakeProphet> `wacro 20 02:17:06 <HackEgo> ided proearreninarni nonneonav st thelaroprobatseeemisabla tagerapineronizimory mensit datchoid seteo polj furt lang xhiso suram ik recons jaff irrottd vam ite 02:17:07 <monqy> tswett: at least lazy means you haven't been making lots of bad languages, right? 02:17:08 <CakeProphet> these are all generated until a space is found. 02:17:14 <elliott> CakeProphet: see above 02:17:17 <tswett> monqy: yep. 02:17:23 <CakeProphet> elliott: so you're saying combine both? 02:17:31 <elliott> CakeProphet: sure 02:17:37 <CakeProphet> I like using just the word length histrogram as it would directly reflect the frequency of word lengths in the dataset. 02:17:44 <elliott> yes but this leads to more natural endings 02:17:46 <tswett> And I have G+, which means that everyone will now flock to flesh out my designs. 02:17:48 <elliott> yours will just chop it off arbitrarily 02:18:00 <CakeProphet> elliott: somewhat short-sighted though for small n. 02:18:03 <elliott> no 02:18:11 <monqy> im agree with elliott 02:18:38 <CakeProphet> elliott: another idea: include character position in the frequency data. 02:18:45 <monqy> what 02:18:56 <CakeProphet> so when I go to generate the next character I look up the current character position in the table 02:18:59 <elliott> CakeProphet: pick target word length; subtract a bit (because you're likely to go over), making the new target word length; generate; if you reach an end token, then if the word length is >= the target length, quit, else pick again (instead of the end token); finally have an if >= target length + constant, quit, to stop generating words far over the target length 02:19:10 <CakeProphet> and it gives me "frequencies where this letter occured after the last n-1 characters at char position i" 02:19:12 <tswett> `wacro 20 02:19:14 <HackEgo> de fed xoilicherbrenttounisselageriusiverinefeloparka accreless su soravy but man edenerac fumo aus spramereetialiphouryhtalian rowbeld whing ble tursaxonturg refloatens st wart sky 02:19:19 <tswett> Yes, yes. 02:19:19 <monqy> xoilicherbrenttounisselageriusiverinefeloparka 02:19:27 <elliott> CakeProphet: another thing you can do is, the closer/over the string gets to the target length, scale up the probability of end tokens, so you're more likely to end rather than getting hit by the safety cut-off 02:19:36 <tswett> "Refloatens". That is a good word. 02:19:43 <elliott> xoilicherbrenttounisselageriusiverinefeloparka 02:19:46 <elliott> word 02:19:56 <tswett> Also "whing". 02:20:00 <monqy> at least the ending is natural 02:20:20 <elliott> Whings. Like wyngz, but more English. 02:20:39 <CakeProphet> elliott: hmmmmmm 02:20:52 <CakeProphet> notice all of the really shot words that you get though 02:20:59 <CakeProphet> simply because your last two characters happen to commonly end words. 02:21:06 <elliott> CakeProphet: ... 02:21:07 <CakeProphet> *short 02:21:12 <elliott> CakeProphet: it only quits if the length is >= the target length 02:21:15 <elliott> try actually reading what i wrote 02:21:19 <elliott> before commenting on it 02:21:35 <CakeProphet> oh I missed that. 02:22:13 <CakeProphet> I could probably scale the probability of end tokens based on the frequency histogram. 02:22:16 <CakeProphet> somehow. 02:22:26 <elliott> >_< 02:22:51 <CakeProphet> and just maybe not use a minimum (target) length. 02:24:35 <CakeProphet> elliott: >_<??? 02:24:43 <CakeProphet> I read what you said, I understand it. What are you annoyed about? 02:24:47 <elliott> >_<X_<_X<_O-o-qOW_QOwo- 02:26:45 <CakeProphet> hmmmm 02:27:15 <CakeProphet> no your approach is probably safer than ONLY scaling the end tokens. 02:27:57 <elliott> The scaling is a good idea though. 02:28:04 <elliott> It's likely to steer to a more natural ending than the harsh cutoff. 02:28:11 <CakeProphet> yeah I see what you're saying. 02:28:13 <CakeProphet> especially with larger n 02:28:24 <elliott> CakeProphet: btw run it on a finnish dictionary 02:28:30 <elliott> what with all the agglutinativity 02:28:37 <elliott> we'll need the finns to decode what it spits out though :P 02:28:38 <CakeProphet> even with 3-grams you get pretty good word endings. 02:29:00 <CakeProphet> elliott: should I go with 4-grams or 5-grams? 02:29:06 <CakeProphet> I think 5 might be too much? 02:29:41 <elliott> 4 02:29:59 <elliott> note that you'll want to dump the result as binary, gzip it, and include it after __END__ 02:30:01 <elliott> because it'll be big 02:30:10 <CakeProphet> might as well go ahead and make the code independent of gram size. 02:30:20 <CakeProphet> how will I do this? in typical perl style: global variables 02:30:39 <elliott> 13:29:45: <ais523> not you too! 02:30:39 <elliott> 13:29:58: <ais523> it's bad enough that elliott was considering buying an expensive ngram database 02:30:51 <elliott> I wasn't joking and it was far more useful than a $787.50 wordlist, plus about ten times less expensive 02:31:03 <CakeProphet> *word list with parts of speech data 02:34:06 <CakeProphet> > 27^3 02:34:07 <lambdabot> 19683 02:34:24 <CakeProphet> that's the number of elements in the outer hash table for 4-grams. 02:34:40 <CakeProphet> each value is a 27-element hash table. 02:35:03 <elliott> use an array instead 02:35:04 <elliott> for the inner 02:35:17 <elliott> it should be twenty-eight elements 02:35:25 <elliott> well 02:35:25 <elliott> times two 02:35:37 <CakeProphet> twenty-eight? 02:35:47 <elliott> alphabet + start + end 02:35:47 <CakeProphet> also yeah I should switch to an array. 02:35:55 <CakeProphet> oh I was using the same token for start and end.. 02:35:58 <CakeProphet> because I can. 02:36:01 <elliott> that won't go well. 02:36:03 <elliott> at all. 02:36:15 <CakeProphet> start tokens are always in the outer table, end tokens are always in the inner. 02:36:26 <elliott> grosse 02:37:55 <CakeProphet> whatev 02:39:03 <elliott> oerjan: im robots?? 02:39:05 <elliott> yeah 02:40:23 <elliott> http://en.wikipedia.org/wiki/Cat-burning 02:40:24 <elliott> http://en.wikipedia.org/wiki/The_Great_Cat_Massacre 02:40:28 <elliott> the french are bad people :'( 02:40:30 <CakeProphet> wat 02:40:36 <elliott> in 02:40:37 <elliott> 1700s 02:40:41 <elliott> french people burned cats on bonfires 02:40:46 <elliott> and shrieked and laughed 02:40:47 <elliott> and were horrible 02:40:49 <elliott> and beat them 02:40:53 <elliott> and hung them for witchcraft 02:40:53 <CakeProphet> great massacre. 02:40:54 <elliott> they were 02:40:54 <elliott> awful 02:40:55 <elliott> people 02:41:04 <elliott> dear everyone: if you are french we are no longer friends 02:41:15 <quintopia> i agree 02:41:31 <quintopia> as far as i'm concerned, rome is still at war with the gauls 02:41:46 <quintopia> bona fortuna roma! 02:42:05 <CakeProphet> elliott: my last name has etymological roots in the French word for "courteous" 02:42:08 <CakeProphet> what now??? 02:42:13 <elliott> CakeProphet: DIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 02:42:58 <CakeProphet> !perl sleep and die ", never to return" 02:44:03 <pikhq> My last name has confusing spelling. What now? 02:45:43 * oerjan cackles evilly and goes to deduce CakeProphet's full name from this information 02:45:52 <CakeProphet> NOOOOOOOOO 02:46:07 <elliott> Adam Courtois???? 02:46:11 <CakeProphet> once you know my true name, you will control me. :P 02:46:13 <CakeProphet> elliott: not quite 02:46:19 <elliott> Adam Curtis?????? 02:46:21 <CakeProphet> yep 02:46:23 <elliott> he makes documentaries 02:46:24 <elliott> are you him 02:46:26 <CakeProphet> no 02:46:29 <CakeProphet> but we have the same name. 02:46:31 <elliott> http://upload.wikimedia.org/wikipedia/commons/c/c5/Adam_curtis.jpg cakeprophet 02:46:37 <CakeProphet> lol 02:46:40 <CakeProphet> yep that's me. 02:46:51 <elliott> http://upload.wikimedia.org/wikipedia/en/7/76/The_Way_Of_All_Flesh_titles.jpg title to one of CakeProphet's documentaries 02:47:00 <elliott> cakeprophet is 56 and from the uk 02:47:10 <CakeProphet> elliott: also the Way of All Flesh is an excellent Gojira album 02:47:11 <elliott> "The Observer adds "if there has been a theme in Curtis's work since, it has been to look at how different elites have tried to impose an ideology on their times, and the tragicomic consequences of those attempts."[2]" 02:47:15 <CakeProphet> Gojira of course being a FRENCH METAL BAND. 02:47:15 <elliott> this is what CakeProphet does 02:47:38 <elliott> french poople 02:47:48 <CakeProphet> yes the consequences are very tragicomic 02:47:53 <CakeProphet> tragicomic being a very tragicomic word... 02:48:00 <elliott> I like how I have a forty-one line long export list. 02:48:13 <CakeProphet> Haskell in action. 02:48:23 <elliott> https://github.com/ehird/mchost/blob/master/MC/Protocol/Types.hs#L3 02:48:32 <CakeProphet> Python has the worst export control. 02:48:46 <CakeProphet> __all__ = ["name1", ...] 02:48:49 <elliott> I don't think there's a single thing there I don't export, but best to be explicit about it. 02:48:59 <oerjan> <elliott> Adam Curtis?????? <-- dammit i was going for this http://www.facebook.com/people/Adam-Gallant/511648752 02:49:11 <CakeProphet> oerjan: master of etymology 02:49:23 <elliott> oerjan: google said "courtois" for courteous, so 02:49:51 <CakeProphet> I feel moving to the UK would be a bad move for me 02:49:54 <oerjan> elliott: i thought that was too obvious, so i looked for the alternative galant instead 02:49:58 <CakeProphet> as I would now be associated with this famous guy. 02:50:02 <elliott> oerjan: lol 02:50:20 <CakeProphet> unless he's not actually that famous. 02:50:21 <elliott> CakeProphet: I get the feeling he's somewhat of a, how do you say it, tosser. 02:50:30 <CakeProphet> ...I have no clue what that means. 02:50:33 <elliott> Well, in the world of documentaries he's ecrtainly famous. :p 02:50:44 <CakeProphet> oh 02:50:44 <elliott> s/ecrtainly/certainly/ 02:50:46 <CakeProphet> good word. 02:51:08 <CakeProphet> but I don't know what that means in your UK jargon. 02:51:34 <elliott> Well, Wiktionary says http://en.wiktionary.org/wiki/tosser, but that has way too much focus on the not-really-relevant-any-more etymology and misses all the subtle meaning of the word. 02:51:41 <CakeProphet> right 02:51:52 <CakeProphet> I associated it with "wanker" 02:51:57 <elliott> Wanker is much lighter. 02:52:05 <elliott> A tosser has to be more offensive than that. 02:52:05 <CakeProphet> but I don't know what that means other than "some asshole" 02:52:14 <elliott> Well, it literally means "masturbator". :p 02:52:17 <CakeProphet> right. 02:52:24 <CakeProphet> US slang > UK slang 02:52:32 <elliott> No way. You have nothing with the subtlety of tosser. 02:52:36 <CakeProphet> bitch ass ho-slut 02:52:40 <CakeProphet> we're so subtle dude. 02:52:46 <elliott> It's all obscene rubbish. 02:52:53 <elliott> You're charlatans. 02:53:14 <CakeProphet> you're obviously just a big dickface with no nice American things. 02:53:45 <elliott> Yeah, we're burdened with a culture, and a country more than like three hundred years old. 02:53:46 <oerjan> Adam le Ouancour 02:53:56 <elliott> We have benches older than your country. 02:54:27 <CakeProphet> elliott: yeah but you can thank us for YOUR AWESOME GOVERNMENT BAHAHAHAHA. 02:54:33 <CakeProphet> .. 02:54:44 <elliott> CakeProphet: What. 02:54:48 <monqy> what 02:54:49 <CakeProphet> american of course being the place where freedom was invented. 02:54:51 <CakeProphet> *america 02:54:56 <elliott> Well we don't have any of that nonsense. 02:55:01 <elliott> Thankfully neither do you. 02:55:55 <CakeProphet> any what? freedom? 02:56:08 <elliott> Exactly. 02:56:27 <CakeProphet> well fine. democracy. 02:56:28 <CakeProphet> there. 02:56:30 <CakeProphet> we invented that 02:56:31 <CakeProphet> yep 02:56:33 <CakeProphet> the first. 02:56:48 <CakeProphet> and everyone was like "woah that's cool" and copied it. 02:56:49 <CakeProphet> losers. 02:57:56 <elliott> Totally 02:57:58 <elliott> Totally. 02:58:05 <elliott> Good thing you don't have that, either. 02:58:21 <CakeProphet> yep 02:58:31 <CakeProphet> I love capitalism. best system of government. 02:59:32 <elliott> ITYM corporatism. 02:59:50 <CakeProphet> "The bloke who ripped me off was a right tosser" 03:00:00 <CakeProphet> only a really lame country would have slang like that. 03:00:17 <CakeProphet> elliott: yes I mean "people and non-person entities with lots of money rule" 03:00:20 <elliott> Our slang is approximately ten times more gritty. 03:00:40 <monqy> bloke and tosser sounds much better than my native slang 03:00:54 <CakeProphet> shut up you're all babyfuckers. 03:01:29 <CakeProphet> babyfucking twatwaffles. 03:01:49 -!- augur has joined. 03:02:57 <CakeProphet> monqy: from where do you hail? 03:03:11 <monqy> america :( 03:03:22 <CakeProphet> america is a big place. 03:03:39 <elliott> yeah, it's two whole continents. 03:03:43 <monqy> is california small enough for you 03:04:02 <elliott> no you have to go smaller 03:06:41 -!- azaq23 has quit (*.net *.split). 03:06:41 -!- CakeProphet has quit (*.net *.split). 03:06:41 -!- iamcal has quit (*.net *.split). 03:06:42 -!- fizzie has quit (*.net *.split). 03:06:42 -!- atehwa_ has quit (*.net *.split). 03:06:43 -!- chickenzilla has quit (*.net *.split). 03:07:18 <elliott> hi 03:07:25 <evincar> Hi? 03:07:29 <monqy> hi 03:07:46 <Jafet> 'lo 03:08:02 <elliott> hi 03:08:59 -!- chickenzilla has joined. 03:09:04 <oerjan> hay 03:09:26 -!- atehwa has joined. 03:12:33 <elliott> hi 03:12:42 <elliott> pikhq: how do i git stash only one file... hepl 03:14:14 -!- fizzie has joined. 03:15:55 <elliott> pikhq: heelp 03:16:48 -!- sebbu2 has joined. 03:16:48 -!- sebbu2 has quit (Changing host). 03:16:48 -!- sebbu2 has joined. 03:17:13 -!- sebbu has quit (Ping timeout: 248 seconds). 03:19:55 -!- iamcal has joined. 03:21:22 <oerjan> INTERCAL STASH is so much simpler 03:23:03 -!- azaq23 has joined. 03:24:30 <elliott> oerjan: yes 03:25:57 <elliott> http://shop.github.com/ I... 03:26:12 <evincar> elliott: I don't think git-stash can operate on single files. 03:26:25 <evincar> It's specifically for stashing all of your uncommitted changes. 03:26:27 <elliott> This is the whitest store I have eve seen. 03:26:32 <evincar> There's probably another obscurely named command for it. 03:26:54 <evincar> Needs more white. 03:27:07 <oerjan> another neutrino idea: maybe they don't actually move faster than light on average, but instead they jump 60 ns backwards in time when oscillating from mu to tau flavor :P 03:27:10 <elliott> "Let's say you ordered a shirt. And in between the time that you placed your awesome order, you happened upon a Krispy Kreme donut shop. Wanting to do your part to encourage the economy, you stopped in to support local business (while quickly putting out of your mind the fact that Krispy Kreme is in fact not local, but rather nation-wide.) At said establishment, you decide to order a couple dozen donuts as they stream off the assembly line type d 03:27:10 <elliott> eal thing they got going on in there. (Honestly, I wouldn't know what it's called, I'm just a coder, not a donut maker). Thinking of the starving children throughout the world, you decide not to be wasteful but instead consume all 24 donuts." 03:27:19 <elliott> Also: the whitest paragraph. 03:27:28 <elliott> oerjan: :D 03:27:30 <elliott> oerjan: that is awesome omg 03:27:36 <oerjan> this would explain why that supernova didn't show the effect 03:27:40 <elliott> oerjan: they are like "whoops" 03:27:43 <elliott> and 03:27:45 <elliott> fall back in time 03:28:01 <oerjan> (because it's not cumulative over huge distance) 03:28:27 <evincar> elliott: You could also just create a branch called "stash", check your files into it, do what you need to do, then merge. 03:29:46 -!- azaq231 has joined. 03:30:07 <zzo38> Did you try to play any of the addition CGA Collection games I have posted today? 03:31:00 <zzo38> I don't know a lot about neutrinos 03:31:29 -!- azaq23 has quit (Ping timeout: 245 seconds). 03:39:36 <zzo38> Can you win a pachinko game if the manager tries very hard to stop anyone from winning, by manipulating the tilt of the building by telling someone else to put large cans of water on the top floor, and putting a lot of balls at once that get stuck, so that when you load a few more, there is no place to go except falling in the winning hole? 03:40:10 <elliott> oerjan: I wonder if anyone thought of that 03:40:13 <elliott> oerjan: it sounds like a pretty good theory 03:40:44 <oerjan> elliott: i'm thinking of a snag though... 60 ns in which reference frame? 03:41:05 <elliott> oerjan: presumably the reference frame of the measuring equipment :P 03:41:23 <oerjan> or equivalently, what in the neutrino rest frame? 03:41:55 <oerjan> the measuring equipment frame seems a little arbitrary 03:42:20 <elliott> oerjan: Arbitrary, but also the only frame it's practical to measure in :P 03:42:40 <oerjan> er i mean, it would be 60 ns in that frame, of course, but that's not a _fundamental_ frame for the neutrino 03:44:11 <oerjan> food -> 03:46:11 <elliott> oerjan: on a completely unrelated note, I wish there was something like 03:46:23 <elliott> classInstance :: TypeRep -> ClassRep -> Maybe InstanceRep 03:46:25 <elliott> so you could do 03:48:39 <elliott> maybeShow :: (Typeable a) => a -> Maybe String 03:48:39 <elliott> maybeShow x 03:48:39 <elliott> | Just ins <- maybeIns = Just (instanceApply ins show x) -- or something 03:48:39 <elliott> | otherwise = Nothing 03:48:39 <elliott> where maybeIns = classInstance (typeOf x) (...some way to denote the Show class...) 03:50:15 <oerjan> didn't jhc have a representation where you could actually get classes from types from values it runtime 03:50:23 <oerjan> (vague recall) 03:55:47 -!- myndzi has joined. 03:57:45 <elliott> oerjan: dunno 03:57:50 <elliott> oerjan: but this is a pretty easy static thing, I think 03:58:01 <elliott> since it goes through the type 03:58:06 <elliott> so it just has to be the part of the TypeRep 03:58:12 <elliott> oh, hmm 03:58:19 <elliott> the problem is orphan instances and the like 03:58:24 <elliott> you can't really write a manual instance to do that 03:58:48 <elliott> maybe it should be class → list of typerep instances, then 03:59:00 <elliott> it's just a shame to not be able to do generic thing slike this 04:03:33 <elliott> 13:52:41: <CakeProphet> yes the mathematics of large numbers is essentially masturbation. One can keep going until exhaustion. 04:03:39 <elliott> there are slam dunks. like busy beaver 04:04:14 <elliott> 14:03:53: <Phantom_Hoover> "The Humane Society of the United States and other animal welfare groups denounced the cloning, saying that the $50,000 could have been better used to save some of the millions of animals euthanized each year." — http://en.wikipedia.org/wiki/Little_Nicky_(cat) 04:04:14 <elliott> hmph 04:05:53 <zzo38> Perhaps that is correct. However, due to the government, that is impossible (I don't mean illegal; I mean impossible) 04:06:42 <oerjan> http://www.reddit.com/r/science/comments/kol1x/faster_than_light_neutrinos_not_so_fast/c2m0vam seemed to have a similar idea :) 04:06:49 <elliott> 15:09:19: <Deewiant> "Say what you will about D, the compiler is very well implemented." --proggit 04:06:51 <elliott> Deewiant: Which one :P 04:07:55 <zzo38> I noticed some things about my barrier monad implementation: rebind yield = id head . collect = collect . flip continue () 04:09:58 <zzo38> Oops! I am wrong. tail . collect = collect . flip continue () 04:12:24 <zzo38> Should the arguments to continue be the other way around? 04:12:36 <elliott> :t continue 04:12:37 <lambdabot> Not in scope: `continue' 04:12:40 <elliott> dunno 04:12:44 <elliott> ?hoogle continue 04:12:45 <lambdabot> Network.HTTP.Base Continue :: ResponseNextStep 04:13:02 <zzo38> I mean the "continue" in my BarrierMonad module. 04:13:09 -!- FireFly has quit (Ping timeout: 245 seconds). 04:13:22 <elliott> I don't know that module :P 04:16:43 <evincar> Okay, if you downloaded a game development environment, what would you expect for distribution capabilities? 04:17:08 <evincar> Like, standalones, or would standalones that automatically download and install a Steam-esque runtime be okay? 04:17:50 <evincar> I think the Digital Mars one would be the default referent in any discussion of "the D compiler". 04:18:02 <evincar> The LLVM frontend is, well, an LLVM frontend. 04:18:11 <zzo38> I think it should be virtual machine (possibly JIT), with a single includable executable to do it 04:18:14 <evincar> And then there's the other one I forget about. 04:18:32 <evincar> zzo38: I was thinking of going for something like that. 04:18:39 -!- FireFly has joined. 04:18:43 <evincar> The user downloads an executable which is really stub+payload. 04:18:53 -!- oerjan has quit (Quit: Good night). 04:18:56 <evincar> And the stub checks for an installed VM and runs the payload if a VM is available. 04:19:05 <evincar> Or downloads and installs the VM otherwise. 04:19:23 <zzo38> I think the executable should be the stub and the payload in a separate file in the same directory. 04:19:43 <evincar> No, a single file is better for user experience. 04:19:55 -!- shachaf has joined. 04:19:56 <evincar> The payload can always be extracted into the installation directory of the VM anyway. 04:20:02 <evincar> Like a Steam game. 04:20:29 <evincar> A game would constitute a (possibly compressed) archive or filesystem image. 04:20:34 <zzo38> Well, OK; if the payload can be extracted then it can work, so that the user can possibly make it running on other operating system or whatever else you want to do with it 04:20:49 <zzo38> I don't know how Steam games are loaded. 04:20:57 <evincar> Yeah, I'd be going for OS-independence... 04:21:14 <evincar> Steam games are stored in what are essentially disk images. 04:21:19 <evincar> Very brief ones. :P 04:21:32 <evincar> They have an internal hierarchical structure with whatever resources the game needs. 04:21:46 <evincar> Plus tons of error-checking and what have you. 04:21:51 <evincar> I don't recall the specifics. 04:22:05 <zzo38> I suppose it can be a Windows executable, but extractable in any operating system, but you would install the VM manually in those cases. 04:22:45 <zzo38> elliott: This is BarrierMonad module in case you interested (or to answer my question): http://sprunge.us/EQPb 04:23:09 <evincar> Right, or just "bundle OS-independent game file requiring preinstalled VM" versus "bundle OS-specific game file that installs VM if needed". 04:23:45 <zzo38> Yes, do whatever works for you. 04:24:06 <elliott> zzo38: fmap = liftM also works 04:24:32 <evincar> I'm considering possible things to sell to make some extra pocket change during my grad studies. 04:24:41 <evincar> And for some reason a game platform seems like a good idea. 04:24:44 <zzo38> elliott: OK, I fixed that 04:24:46 <evincar> Even though rationally I would assume it isn't. 04:25:13 <elliott> although you might need to import Control.Monad... not sure 04:25:45 <zzo38> Works without that. 04:26:08 <elliott> ok 04:26:13 <monqy> Control.Monad.Reader exports Control.Monad yeah 04:26:28 <elliott> it would be cool to see implementations of the other examples you gave, overridable I/O, state, flow control 04:26:38 <Madoka-Kaname> You can have modules implicitly import other modules? 04:26:46 <monqy> zzo38: what do you use from Control.Monad.Reader, anyway? 04:27:03 <zzo38> evincar: Of course you can also make a game as a .nes or .gba file or whatever; this is sometimes (although rarely) done. 04:27:28 <zzo38> monqy: Oops! Nothing. I could put Control.Monad instead. 04:27:34 <zzo38> OK I fixed that, and it works. 04:27:58 <evincar> zzo38: My software wouldn't really be able to do that; it's too high-level to conveniently compile, so I might as well just have a specialised VM. 04:29:21 <zzo38> evincar: There are many cross-platform formats implementable for computer games, such as emulators for older Nintendo systems, and Z-machine, Glulx, Java, or KINT (the license for KINT says public domain once author is dead; otherwise permission is required for anything done with it). 04:31:45 <zzo38> (NES games are still made today; mostly to run on emulators, although they are generally intended to work on actual NES/Famicom hardware, and Famiclones, as well) 04:32:09 <elliott> :') 04:33:55 <elliott> :t truncate 04:33:56 <lambdabot> forall a b. (RealFrac a, Integral b) => a -> b 04:34:36 <elliott> > truncate (-9.9) 04:34:37 <lambdabot> -9 04:34:38 <elliott> good 04:37:32 <zzo38> elliott: Yes, I could implement otherr example; overridable I/O could be done having the front type representing the atoms of actions to perform and back type representing the results. Now you can override it by other functions outside of there, such as implementing your own fake I/O, or using convert and/or rebind to change the actions a given I/O has already been made, to perform differently. 05:24:56 -!- copumpkin has changed nick to Daaan__. 05:25:09 -!- Daaan__ has changed nick to Daaaan_. 05:25:19 -!- Daaaan_ has changed nick to Daaaaan. 05:26:05 -!- Daaaaan has changed nick to daaaaaaaaaaaan. 05:29:19 -!- daaaaaaaaaaaan has changed nick to copumpkin. 05:33:29 -!- cheater has joined. 05:40:10 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 05:45:14 -!- GreaseMonkey has quit (Quit: The Other Game). 05:55:37 -!- cheater has quit (Ping timeout: 248 seconds). 06:00:49 -!- cheater has joined. 06:16:57 -!- copumpkin has quit (Ping timeout: 248 seconds). 06:17:23 -!- copumpkin has joined. 06:55:44 -!- CakeProphet has joined. 07:10:11 -!- ive has quit (Quit: leaving). 07:23:46 -!- FireFly has quit (Ping timeout: 256 seconds). 07:25:55 -!- Ngevd has joined. 07:26:01 <Ngevd> Hello! 07:27:06 <zzo38> I decided to make the examples not exported. So, they will be used only with GHCi. When compiled normally, will they be optimized out? 07:29:52 <zzo38> I also put each example in chapter with "Example" in its title. 07:47:21 <Ngevd> The arrows are going to be fun in Uniquode 07:48:36 <elliott> :t randomR 07:48:36 <lambdabot> forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g) 07:50:13 <elliott> monqy: i had...ide...a 07:50:27 <monqy> is it good? I was just abotu to slep 07:51:15 <Ngevd> Mahjong tiles are going to be even more fun 07:52:12 <Ngevd> I think Fraction literals should be dominos 07:52:23 <elliott> monqy: it...good...think 07:53:07 <monqy> Ngevd: dominoes as in they collapse in trains? 07:53:29 <Ngevd> That will be horizontal-oriented dominoes 07:53:38 <Ngevd> Vertical-oriented dominoes will be fractions 07:53:51 <monqy> ah 07:54:01 <monqy> oh I interprted what you saifc backwards 07:54:04 <monqy> it makes sense nwo 07:54:16 <elliott> monqy: it was about... orthogonal effects... 07:54:33 <monqy> orhtoganlo efects ias a god idea!! 07:54:34 <Ngevd> So, 3 7ths will be 🁷 07:55:16 <Ngevd> BECAUSE YOU ADD ONE TO THE TOP AND BOTTOM TO PREVENT DIVIDE BY ZERO ERRORS 07:55:17 <elliott> monqy: basically, lots of monad transformers are composable on top of each other where the order doesn't matter 07:55:31 <elliott> basically everything that offers "imperative program but with <effect>" does this 07:55:32 -!- Ngevd has changed nick to Taneb|Hovercraft. 07:55:52 <elliott> monqy: but the problem is that large transformer stacks suck... 07:55:55 <elliott> so 07:56:08 <monqy> this ia ll true.... 07:56:13 <elliott> foo :: String -> Int -> M (Accesses Int, Produces String) Int 07:56:19 <elliott> that's like ReaderT String (WriterT Int Int) 07:56:22 <elliott> erm 07:56:24 <elliott> that's like ReaderT String (Writer Int Int) 07:56:37 <elliott> to run it, you do 07:56:57 <elliott> run . eraseProduces . eraseAccesses initialValue $ foo "" 9 07:57:01 <elliott> :: M () (Int, [String]) 07:57:11 <elliott> because 07:57:12 <elliott> eraseAccesses :: (Has (Accesses s) e) => s -> M e a -> M (Erase (Accesses s) e) a 07:57:12 <elliott> eraseProduces :: (Has (Produces s) e) => M e a -> M (Erase (Produces s) e) (a, [s]) 07:57:15 <elliott> and 07:57:17 <elliott> run :: M () a -> a 07:57:34 <elliott> now, the nice thing is that you can offer "subsets" of IO and the like through this 07:57:36 <elliott> like an RNG effect 07:57:52 <elliott> and you can either erase RNG to the AnyIO effect (which is runnable with "runAnyIO :: M AnyIO a -> IO a") 07:57:53 <elliott> or do 07:57:55 <elliott> unsafeEraseRNG 07:58:03 <elliott> to erase it completely (unsafely), like unsafePerformIO but more restricted 07:58:11 <elliott> (it can only unsafely run functions on the global RNG) 07:58:23 <elliott> and then.... more things... like this 07:58:30 <monqy> whats an erase 07:58:32 <elliott> it might be good????? 07:58:39 <elliott> monqy: like runFooT 07:58:41 <elliott> it eliminates part of the stack 07:58:44 <monqy> oh 07:58:46 <elliott> <elliott> eraseAccesses :: (Has (Accesses s) e) => s -> M e a -> M (Erase (Accesses s) e) a 07:58:48 <elliott> this basically means 07:58:50 <elliott> given an s 07:58:50 <elliott> and an 07:58:56 <elliott> M (..., Accesses s, ...) a 07:58:58 <elliott> we can turn it into 07:59:01 <elliott> M (..., ...) a 07:59:14 <elliott> and once you get rid of all the effects in the stack you have (M () a) 07:59:19 <elliott> and you just "run" that off into an a 07:59:41 <elliott> it's like a monad transformer stack but much more composable, predictable, orthogonal, componentised, blah bla blah 07:59:43 <elliott> s/bla/blah/ 07:59:49 <monqy> good thigns.... 08:00:24 <monqy> is it implemenmtatble in haskele 08:00:34 <elliott> i believe so. 08:00:40 <monqy> also good 08:01:07 <elliott> it'd be cleaner as a core language feature type thing, some kind of effect system 08:01:11 <elliott> but I think this is all doable in current Haskell 08:01:42 -!- Taneb|Hovercraft has changed nick to Ngevd. 08:02:08 <elliott> monqy: the main nice thing is that you can split up the IO "sin bin" a bit 08:02:20 <elliott> by offering an interface to various impure things like stablenames through a new effect 08:02:29 <elliott> and then provide standard erasure to the AnyIO effect 08:02:32 <elliott> and an unsafe erasure which just gets rid of it 08:02:33 -!- Ngevd has quit (Remote host closed the connection). 08:02:47 <monqy> splitting up the sin bin like that reminds me a bit of ST 08:03:00 <elliott> (you could just compose unsafe erasure of AnyIO (i.e. unsafePerformIO) with the safe erasure, but that means you're importing the unsafely-erase-AnyIO module) 08:03:09 <elliott> (and with things like SafeHaskell, that's a no-no :P) 08:03:16 <elliott> monqy: yeah, I think you can do ST as an effect, but don't quote me on that 08:03:24 <elliott> ST has the nice advantage that it's pure 08:04:46 <monqy> so how does this effect splieting work,,, is it necesarilye handled as a core langauge thing? 08:05:04 <elliott> monqy: i'm not sure what you mean, how does it work 08:05:05 -!- Ngevd has joined. 08:05:07 <monqy> oh 08:05:08 <elliott> I thought I explained the main aspects 08:05:22 <monqy> i meant specificalyl with the io sin bin 08:05:25 -!- Ngevd has quit (Client Quit). 08:05:36 <elliott> monqy: you just represent it as IO and don't export the constructor 08:05:42 <monqy> oh 08:05:54 <elliott> safe erasure is just unwrapping the constructor (modulo the effect system), unsafe erasure is just unsafePerformIO on top of that 08:06:22 <elliott> and you know that unsafely erasing an (M RNG a) can't have any unsafe side-effects other than using and mutating the global RNG 08:06:30 <elliott> which is a much stronger guarantee than unsafePerformIO gets you :P 08:11:33 <monqy> sounds good i guess 08:11:36 -!- monqy has quit (Quit: hello). 08:28:24 -!- Phantom_Hoover has joined. 08:30:06 -!- CakeProphet has quit (Ping timeout: 255 seconds). 08:34:37 -!- Vorpal has joined. 08:55:35 -!- elliott has quit (Remote host closed the connection). 08:55:39 -!- elliott_ has joined. 09:02:45 -!- cheater has quit (Quit: Ex-Chat). 09:03:38 -!- cheater has joined. 09:05:28 -!- azaq231 has quit (Quit: Leaving.). 09:08:38 <Phantom_Hoover> `addquote elliott i smell of poo 09:08:42 <HackEgo> 682) elliott i smell of poo 09:08:46 <elliott_> <Phantom_Hoover> elliott i smell of poo 09:09:18 <elliott_> Fascism: 09:09:19 <elliott_> `delquote 682 09:09:21 <HackEgo> ​*poof* 09:12:35 <Phantom_Hoover> OMFG 09:12:38 <Phantom_Hoover> Simon's skin 09:12:39 <Phantom_Hoover> has 09:12:52 <Phantom_Hoover> a dorf smiley on the top of the hat 09:13:11 <elliott_> o;h my god 09:16:58 -!- SimonRC has quit (Ping timeout: 260 seconds). 09:18:32 -!- SimonRC has joined. 09:52:40 <Phantom_Hoover> What is this crap you can't even use FTL for straight time travel. 09:52:49 <elliott_> What why not. 09:52:55 <elliott_> That's bad fix that? 09:53:36 <Phantom_Hoover> elliott_, you need to have a reflector and something and something else. 09:53:50 <Phantom_Hoover> And basically you can't just fire a giant neutrino laser into the past. 09:53:59 <elliott_> Fuck 09:53:59 <elliott_> that 09:54:00 <elliott_> shit 09:54:09 -!- nooga has joined. 10:06:22 <hagb4rd> Phantom_Hoover: how fast can we make them go (the netrinos)? 10:06:41 <elliott_> hagb4rd: About sixty ns faster than they should be able to. 10:06:48 <elliott_> ...modulo the fact that it's probably not true. 10:06:56 <elliott_> But the margin of error has been fixed very, very low. 10:07:00 <elliott_> /Something/ is up. 10:07:01 <hagb4rd> i see 10:11:11 <elliott_> Does anyone have a good name for a combination of yaw and pitch? 10:11:13 <elliott_> Literally just a tuple of 'em. 10:11:17 <elliott_> fizzie? :p 10:11:47 <fizzie> I don't know. Something related to "direction"? That's what it's indicating. 10:12:03 <hagb4rd> bpitch 10:12:05 <fizzie> Or, well, that's what it's usually indicating, anyhow. 10:12:12 <elliott_> fizzie: Yes, true. But then what if you add roll? WHAT THEN???? 10:12:15 <fizzie> "yatch", "paw". 10:12:22 <elliott_> PH already said those. :p 10:12:22 <fizzie> Then it's "orientation". 10:13:24 <elliott_> Right. 10:13:34 <fizzie> A vague term if there ever was one. :p 10:17:11 -!- zzo38 has quit (Remote host closed the connection). 10:18:43 <hagb4rd> question: if the would explode, would there be any effects mesasurable on earhh during th first 8 minutes (event horizon) 10:18:54 <hagb4rd> if the sun 10:21:18 <elliott_> I think gravity goes FTL because it's spacetime magic. 10:21:26 <elliott_> Think. I might be totally wrong here. 10:21:31 <elliott_> Not lightwise or anything, of course. 10:22:01 <elliott_> Yeah, gravity is instant, it seems. 10:22:29 <hagb4rd> yea, thats the direction my question goes.. so gravity is not dependent on the barriers of lightspeed, rightz? 10:23:06 <elliott_> Hmm, it still propagates with a delay apparently 10:23:07 <hagb4rd> its effects 10:23:12 <elliott_> s/apparently/apparently./ 10:23:18 <elliott_> Meh, this is way beyond my knowledge. 10:23:33 <elliott_> But the answer is almost certainly no, you can't use gravity to communicate faster than light :P 10:23:46 <hagb4rd> i guess its beyond the knowledght of humanity.. but there may be theories 10:26:42 <hagb4rd> superposition and EPR is interesting 10:26:43 <hagb4rd> http://en.wikipedia.org/wiki/EPR_paradox 10:27:08 <hagb4rd> though old stuff but still ass kickin 10:31:09 <elliott_> fizzie: Sigh. Some of the protocol is sent as "rotation, pitch, roll"; some of it as "yaw, pitch". Er, wait, that's just the fault of the documenters... 10:31:13 <elliott_> DISREGARD THAT 10:31:36 <fizzie> But do you suck cocks? 10:31:45 <elliott_> Only wrt my disregardation. 10:33:52 <elliott_> fizzie: I don't suppose you happen to know about the two different packed byte formats for yaw and pitch. 10:34:34 <fizzie> There are two? 10:34:54 <elliott_> One in steps of 2pi/256, one as a fraction of 360. 10:35:05 <elliott_> (And maybe the "packed byte" format is a third format altogether? The wiki never says what it is.) 10:35:13 <augur> elliott_: cheater doesnt like you :) 10:36:13 <elliott_> augur: I don't think we need to start drama with him here in the channel; if you're talking about the thing in #haskell then you already know what you'll cause by saying things like that. 10:36:28 <augur> i dont even know! all i know is its funny 10:37:08 <fizzie> elliott_: I know that the pickup_spawn uses (IIRC) angles in units of what I like to call brads (cf. the gradian; 2pi... sorry, tau == 256 brads), I don't know what that other thing is about. 10:37:35 <elliott_> fizzie: Brads. Really now? 10:37:47 <fizzie> It's 'b' for 'byte', you see. 10:37:49 <elliott_> Yaw byte126 The X Axis rotation as a fraction of 360 10:37:49 <elliott_> Pitch byte0 The Y Axis rotation as a fraction of 360 10:38:04 <elliott_> Whereas: 10:38:05 <elliott_> Yaw byte-27 The X Axis rotation in steps of 2π/256 10:38:05 <elliott_> Pitch byte0 The Y Axis rotation in steps of 2π/256 10:38:19 <fizzie> I would not be surprised if that were the same thing. 10:38:39 <elliott_> fizzie: Are you saying that 2π = 360? 10:38:54 <elliott_> Or are you saying that it just only /steps/ in those increments as to what the Notchian server/client sends? 10:39:09 <fizzie> I'm saying that 2pi rad = 360 degrees. 10:39:13 <elliott_> Oh, hmm. 10:39:19 <elliott_> "As a fraction of 360" is so silly. 10:39:25 <fizzie> Yes, it is BAD. 10:39:33 <elliott_> I mean, that should make some of the degrees that are degrees unrepsrespresntable. 10:40:00 <hagb4rd> y 360 anyway? 10:40:09 <elliott_> Degrees. 10:40:13 <hagb4rd> yes 10:40:32 <hagb4rd> is there a reason for 360 10:40:53 <fizzie> "The original motivation for choosing the degree as a unit of rotations and angles is unknown. One theory states that it is related to the fact that 360 is approximately the number of days in a year.[3] Ancient astronomers noticed that the stars in the sky, which circle the celestial pole every day, seem to advance in that circle by approximately one-360th of a circle, i.e., one degree, each day. Some ancient calendars, such as the Persian calendar, used 360 da 10:40:54 <fizzie> ys for a year. The use of a calendar with 360 days may be related to the use of sexagesimal numbers." 10:41:02 <fizzie> There are alternative ideas, too. 10:41:15 <fizzie> It's a very divisible number, that much is true. 10:41:21 <hagb4rd> would make kind of sence 10:42:23 <elliott_> 360 is such a number. 10:42:52 <hagb4rd> at least you it has a few nice factors 10:43:14 <hagb4rd> indeed 12 would make better base than 10 10:46:17 <hagb4rd> divide and conquer 10:47:17 <elliott_> MC/Protocol/Types.hs:209:50: Not in scope: type variable `dreiving' 10:47:23 <elliott_> Whoops. Never drink and dreive. 10:50:29 <elliott_> fizzie: You can represent all those packed values precisely as a float, right? :p 10:50:31 <elliott_> SO MUCH PARANOIA. 10:51:04 <fizzie> Very likely. 10:51:13 <elliott_> NOT GOOD ENOUGH 10:51:23 <elliott_> fizzie: (So they're unsigned bytes, right?) 10:52:13 <fizzie> Possibly, though I don't think it really matters; -1 brad is pretty much the same thing as 255 brad. 10:52:29 <elliott_> "Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360." Just why. 10:52:56 <elliott_> where getComponent = (/ 360) . fromIntegral . SE.getWord8 10:52:57 <elliott_> LOOKS GOOD TO ME 10:53:52 <elliott_> Or, hmm. 10:53:56 <elliott_> Is that actually right? 10:54:04 <elliott_> I don't think it is, no. 10:54:22 <elliott_> I want 256/360. 10:54:49 <elliott_> where getComponent = (/ 360) . (* 256) . fromIntegral . SE.getWord8 10:54:52 <elliott_> LOOKS GOOD TO ME??? 10:55:06 <fizzie> If the original Word8 is in brads, you want (/ 256) to make it [0, 1], and then eiher (* 360) or (* (2 * pi)) to make it degrees or rads. 10:55:13 <elliott_> Er, right, wrong way around >_< 10:55:19 <fizzie> Well, [0, 1) I guess. 10:55:21 <elliott_> I'm making it degrees, since that's what the float fields in the protocol are. 10:55:48 <elliott_> where getComponent = (/ 256) . (* 360) . fromIntegral . SE.getWord8 10:55:51 <elliott_> FINALLY LOOKS GOOD TO ME 10:56:14 <fizzie> The yaw field is the one that collects all the rotation the object ever goes through. 10:56:25 <elliott_> I thought that was fixed. 10:56:30 <fizzie> Oh, it was? 10:56:34 <fizzie> Could be, I haven't been following. 10:56:34 <elliott_> Well, I thougth so. 10:56:36 <elliott_> thought 11:03:21 -!- BeholdMyGlory has joined. 11:04:54 <Vorpal> elliott_, you might need to turn it into radians to be able to do sane calculations on where the player is looking later on (if you need that sort of stuff). 11:05:08 <elliott_> I'm sticking to just mapping the protocol as best as I can for now. 11:05:41 <Vorpal> elliott_, but are you normalising it to 0-360 at least? 11:07:50 <elliott_> Vorpal: No. I'm not losing any data from the packets. 11:07:54 <elliott_> It is a representation of the network protocol. 11:28:58 -!- hagb4rd has quit (Ping timeout: 248 seconds). 11:32:25 <Phantom_Hoover> What are the haps my friends. 11:34:52 <elliott_> Happity. 11:45:00 -!- augur has quit (Remote host closed the connection). 11:53:18 -!- hagb4rd has joined. 11:53:58 <hagb4rd> hurray! finally i've found some serious footage on the apollo mission 11:54:00 <hagb4rd> http://www.youtube.com/watch?v=_ecBbSIdBKI&NR=1 11:55:01 <elliott_> Is this just a reading of the Onion article. 11:55:28 <hagb4rd> onion article? 11:56:25 <elliott_> http://members.shaw.ca/rlongpre01/moon.html 11:56:45 <hagb4rd> ah thx 12:03:32 -!- augur has joined. 12:16:20 -!- CakeProphet has joined. 12:17:03 <CakeProphet> lolhi 12:17:36 <CakeProphet> elliott_: hi 12:17:42 <elliott_> hi 12:17:51 <CakeProphet> man being drunk is cool 12:17:53 <CakeProphet> weeeeeee 12:17:57 <elliott_> oh no 12:18:00 <CakeProphet> bluh bluhbluhbluh 12:18:04 <elliott_> be in 12:18:07 <elliott_> another place 12:18:12 <CakeProphet> OKAY FINE 12:18:17 <CakeProphet> I won't act drunk like I am. 12:18:38 <CakeProphet> I will maintain my usual demeanor of serene austerity. 12:20:23 <CakeProphet> bluh. 12:21:09 <CakeProphet> oh my I believe I feel the beginniong of what is referred to as a hahgnover 12:21:23 <CakeProphet> time to drink water 12:21:28 <Phantom_Hoover> No 12:21:29 <CakeProphet> gluhgluhgluh 12:21:32 <Phantom_Hoover> drink more alcohol 12:21:38 <Phantom_Hoover> DROWN THE HANGOVER 12:23:15 <CakeProphet> apparently it's not common knowledge that water = hangover cure 12:23:27 <CakeProphet> apparently people can be stupid 12:23:31 <CakeProphet> I'm shocked. 12:28:30 <CakeProphet> elliott_: you, sir. what are you doing. 12:29:09 <elliott_> coding 12:29:56 <CakeProphet> what 12:30:38 <elliott_> coding 12:30:47 <CakeProphet> as in, "coding what?" 12:30:55 <elliott_> stuff 12:31:01 <CakeProphet> oh good 12:31:04 <CakeProphet> stuff is good for codes. 12:31:58 <fizzie> STUFF is the BEST. 12:32:10 <CakeProphet> stuff is the best codes. 12:32:35 <CakeProphet> coding the stuff makes the best codes for the stuff. 12:36:39 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 13:02:04 -!- MSleep has changed nick to MDude. 13:15:15 -!- sllide has joined. 13:16:41 <nooga> goddamn clang on OSX 13:17:34 <elliott_> goddamn os x 13:31:31 -!- ais523 has joined. 13:41:39 <elliott_> hi ais523 13:41:45 <ais523> hi elliott_ 14:03:54 <elliott_> Aw, nobody even noticed my haskell question. :/ 14:05:17 <elliott_> I choose to blame... ais523. 14:05:46 -!- ais523 has quit (Ping timeout: 248 seconds). 14:05:52 -!- sllide has quit (Read error: Connection reset by peer). 14:05:54 <elliott_> Dammit. 14:08:35 -!- sebbu2 has changed nick to sebbu. 14:09:08 -!- asiekierka has joined. 14:09:10 <asiekierka> i was bored: http://ego.64pixels.org/ 14:11:34 -!- Wamanuz has quit (Remote host closed the connection). 14:17:16 -!- asiekierka has quit (Ping timeout: 276 seconds). 14:18:29 -!- asiekierka has joined. 14:48:32 <elliott_> > let foo = map (\x -> map (x:) foo) ['a'..'z'] 14:48:33 <lambdabot> not an expression: `let foo = map (\x -> map (x:) foo) ['a'..'z']' 14:48:33 <elliott_> > let foo = map (\x -> map (x:) foo) ['a'..'z'] in foo 14:48:34 <lambdabot> Couldn't match expected type `GHC.Types.Char' 14:48:35 <lambdabot> against inferred type... 14:48:37 <elliott_> > let foo = map (\x -> concatMap (x:) foo) ['a'..'z'] in foo 14:48:38 <lambdabot> ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... 14:48:41 <elliott_> heh 14:48:46 <elliott_> > let foo = ['a'..'z'] map (\x -> concatMap (x:) foo) foo in foo 14:48:47 <lambdabot> Couldn't match expected type `t1 -> t2 -> t3 -> t' 14:48:47 <lambdabot> against inferred... 14:48:54 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ map (\x -> concatMap (x:) foo) foo in foo 14:48:55 <lambdabot> Couldn't match expected type `GHC.Types.Char' 14:48:55 <lambdabot> against inferred type... 14:49:00 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ map (\x -> map (x:) foo) foo in foo 14:49:00 <lambdabot> Couldn't match expected type `GHC.Types.Char' 14:49:01 <lambdabot> against inferred type... 14:49:04 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ map (\x -> map (x++) foo) foo in foo 14:49:05 <lambdabot> Couldn't match expected type `GHC.Types.Char' 14:49:05 <lambdabot> against inferred type... 14:49:07 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ map (\x -> concatMap (x++) foo) foo in foo 14:49:09 <lambdabot> ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s... 14:49:14 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ concatMap (\x -> map (x++) foo) foo in foo 14:49:16 <lambdabot> ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s... 14:49:18 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ concatMap (\x -> map (x++) foo) foo in drop 99 foo 14:49:20 <lambdabot> ["aaav","aaaw","aaax","aaay","aaaz","aaaaa","aaaab","aaaac","aaaad","aaaae"... 14:49:25 <elliott_> hm 15:21:26 -!- sebbu2 has joined. 15:21:30 -!- sebbu has quit (Ping timeout: 248 seconds). 15:23:29 -!- sebbu2 has changed nick to sebbu. 15:32:01 <elliott_> Phantom_Hoover: oi, solve my haskell problem. 15:32:57 <Phantom_Hoover> It is fixed. 15:34:09 <elliott_> OK thakns. 15:36:04 -!- ais523 has joined. 15:36:58 <elliott_> hi ais523 15:37:11 <elliott_> I blamed you for my Haskell problem then you left, and it didn't got fixed :'( 15:37:13 <ais523> hi elliott_ 15:37:30 <ais523> I didn't leave, the computer crashed (overheating because I forgot to unstick the fan) 15:37:36 <ais523> then I went shopping 15:37:38 <elliott_> it was my curse 15:37:49 <elliott_> I didn't damn you but I evidently cursed you 15:38:13 <ais523> hmm 15:38:18 <ais523> depends on what sort of curse it was, I suppose 15:38:46 <elliott_> a Haskell one, obviously 15:45:29 -!- tiffany has quit (Ping timeout: 260 seconds). 15:51:42 -!- tiffany has joined. 15:56:11 <Gregor> Conclusion: 15:56:17 <Gregor> Haskell kills computer fans. 15:56:35 <elliott_> Clearly. 16:10:10 -!- Ngevd has joined. 16:10:17 <Ngevd> Hello! 16:11:30 <ais523> hi 16:13:28 <Ngevd> I cut my finger this morning 16:14:00 <elliott_> rip 16:14:16 -!- sllide has joined. 16:17:03 <elliott_> ?hoogle (m a, m b) -> m (a,b) 16:17:03 <lambdabot> No results found 16:17:36 -!- derrik has joined. 16:20:36 -!- Ngevd has quit (Quit: Taneb|Walkingdoor). 16:34:00 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]). 16:40:27 <fizzie> :t uncurry $ liftM2 (,) 16:40:28 <lambdabot> forall a1 a2 (m :: * -> *). (Monad m) => (m a1, m a2) -> m (a1, a2) 16:40:57 <fizzie> I need a dislike button for ":t doen't work in query". 16:42:21 <elliott_> fizzie: ?ty 16:42:26 <elliott_> And yeah, I knew that. 16:42:41 <elliott_> (equiv. @ty, @type.) 16:43:42 <elliott_> So does anyone know a better way to do effectively a "git stash" but then only partially re-apply the changes? 16:43:44 <elliott_> git add -p style 16:44:04 <elliott_> I want to incrementally migrate the current branch head to my working copy by making commits of slightly modified versions of parts of my working tree. 16:44:38 <fizzie> Ty for ?ty. 16:45:06 <elliott_> Yw for ?yw. 16:45:07 <elliott_> ?yw x 16:45:07 <lambdabot> Couldn't find fortune file 16:45:10 <elliott_> Ah. 16:45:16 <elliott_> fizzie: Now in return you must git-help me. 16:45:42 <Deewiant> git stash -p? 16:48:23 <elliott_> Deewiant: That's just for stashing. 16:48:28 <elliott_> I want to stash everything then selectively /apply/ it. 16:48:40 -!- derrik has joined. 16:48:47 <Deewiant> Why can't you first selectively stash, then apply everything 16:48:49 <elliott_> Basically I want to shove all my changes out of the way, then iteratively: pick part of stash → tweak it → commit → repeat. 16:48:58 <elliott_> Deewiant: What would that workflow look like? 16:49:04 <elliott_> Determining each chunk ahead of time? 16:49:18 <Deewiant> You're doing it effectively at the same time 16:49:21 <elliott_> That would be awkward, since decisions made at each point during the modification process would affect the decision of which next thing I'd do or how to split it up. 16:49:25 -!- derrik has quit (Client Quit). 16:49:30 <Deewiant> Instead of stash, checkout, repeatedly do stuff 16:49:37 <Deewiant> Well o'kay 16:49:52 <elliott_> Last time I just git diff'd, git reset'd, and then manually re-applied everything 16:49:55 <elliott_> But that's awkward 16:50:12 <Deewiant> Then you can do one stash -p and one stash and then when you've applied that part, do it again 16:50:12 <elliott_> git apply doesn't seem to have anything to do hunk selection. 16:50:24 <elliott_> Deewiant: I want to operate starting on a clean working tree. 16:50:28 <elliott_> So everything must be stashed before I can start. 16:50:44 <elliott_> And like I said, picking the splits ahead of time is inconvenient. 16:50:53 <Deewiant> You're not doing it ahead of time there 16:50:59 <elliott_> Maybe I misunderstand 16:51:10 <elliott_> git stash -p requires me to select chunks, no? 16:51:18 <Deewiant> You're doing a new stash -p every time after you commit the previous one 16:51:33 <elliott_> Hmm 16:51:34 <elliott_> So 16:51:59 <elliott_> Git stash, loop { git stash apply, git stash -p, select everything BUT the things I want to commit, tweak, commit }? 16:52:07 <elliott_> That works, but it's rather intuitive that no means yes and yes means no 16:52:10 <elliott_> s/intuitive/un/ 16:52:53 <Deewiant> I was thinking loop { git stash -p, git stash, apply the -p'd one, tweak, commit, go back to where you were and apply the non-p'd one } 16:53:11 <elliott_> Hmm 16:53:13 <elliott_> That could work, yes 16:53:17 <elliott_> Why is git's workflow so ugly 16:53:20 <Deewiant> If I were you I'd just apply the whole stash and then git add -p it 16:53:30 <Deewiant> But that's just me 16:53:32 <elliott_> Deewiant: Doesn't even vaguely work, because I need to tweak it 16:53:38 <elliott_> I want to maintain a consistent state each commit 16:53:46 <elliott_> Not just have a seemingly split up sequence of commits that's actually just nonsense 16:53:47 <Deewiant> You can re-stash prior to every commit 16:53:58 <quintopia> oh 16:54:06 <elliott_> Deewiant: Won't work, my changes involve splitting a file into two new ones 16:54:21 <Deewiant> What does that break 16:54:44 <elliott_> Means that changes will be lost if I stash like that, or rather I won't be able to test my tweaks 16:55:48 <Deewiant> Howso 16:59:52 <elliott_> Deewiant: Maybe I'm misunderstanding 17:00:00 <elliott_> Apply the whole stash 17:00:02 <elliott_> Git add -p 17:00:05 <elliott_> Commit 17:00:06 <elliott_> Re-stash 17:00:06 -!- Ngevd has joined. 17:00:18 <elliott_> Where in this workflow am I able to test the tree about to be committed, sans all these merges and stuff 17:00:26 <elliott_> Or do I re-stash before every commit 17:00:27 <elliott_> OK, you said that 17:00:28 <Deewiant> Swap re-stash and commit 17:00:28 <elliott_> So 17:00:30 <elliott_> Apply the whole stash 17:00:33 <elliott_> Git add -p 17:00:34 <elliott_> Re-stash 17:00:35 <elliott_> Tweak 17:00:36 <elliott_> Commit? 17:00:51 <Deewiant> Yes, essentially 17:00:56 <elliott_> Essentially? :p 17:01:04 <Deewiant> I'd tweak before the stash in case you use something from there 17:01:12 <Deewiant> And then re-tweak afterwards if necessary 17:01:18 <elliott_> I don't understand 17:01:30 <elliott_> I have to tweak after stash because the post-stash-changes landscape is wildly different 17:01:40 <elliott_> So I can't really consult another file to figure out what to do unless I stash first 17:01:55 <Deewiant> Fair enough 17:02:04 <Deewiant> It doesn't really matter, that was just a detail :-P 17:02:16 <elliott_> Yeah OK I guess this will work 17:02:24 <elliott_> I still think git needs a better incremental splitting workflow though 17:02:45 -!- copumpkin has quit (Ping timeout: 245 seconds). 17:02:53 <elliott_> Basically "rip the selected hunks out of the stash and apply them" 17:02:54 <elliott_> Rip as in remove 17:03:07 <Deewiant> Maybe there is something like that, I just don't know about it. 17:03:10 -!- copumpkin has joined. 17:03:35 <elliott_> Maybe I'll write t :P 17:03:36 <elliott_> it 17:03:51 <elliott_> Deewiant: Now here's a question: Won't stash after add -p still stash the added changes? 17:03:59 <elliott_> Or does stash only stash stuff not anywhere gitwise? 17:04:14 <Deewiant> I can't remember, I think there's an option to not stash indexed stuff 17:04:45 <elliott_> Deewiant: Now say I split a file into two, how would I stash the two new files, "git add" would make them not be stashed because of the above :-P 17:04:54 <elliott_> Note: This game is impossible to win. 17:05:18 <Deewiant> Shrug, figure it out 17:05:33 <Deewiant> The solution here is to not end up in this situation ;-) 17:06:02 -!- hagb4rd has quit (Ping timeout: 248 seconds). 17:06:10 <elliott_> Deewiant: A large part of the git advertisement is about being able to detangle overlapping changes because of the wide acceptance of history modification, and separating version-control time from development time 17:06:17 <elliott_> Perhaps I was mislead 17:06:32 <Deewiant> Nobody said you're not able to do it 17:06:40 <elliott_> I wouldn't call this able to do it 17:06:40 <Deewiant> You're just complaining about its difficulty 17:07:14 <elliott_> git is totally great, you can do X. Note: X is an arduous process involving animal sacrifice and death of loved ones. 17:07:26 <elliott_> OK, that stash seemed to work. 17:08:18 <Deewiant> I'd rather do the animal sacrifice in this situation than "hg commit -m 'Pile of crap that I cannot unpile'" 17:09:24 <elliott_> Is hg the new standard for VCSes? 17:09:26 <elliott_> Bummer 17:09:48 <elliott_> Alright, it's time to do this shit 17:09:57 <elliott_> Deewiant: Do you know any way to retain the stash message through this process btw :-P 17:10:35 <Deewiant> Stashes have messages? :-) 17:11:07 <elliott_> git stash save "I'm probably the kind of person who uses Getting Things Done and ritually practices BDD- fuck, I'm out of space. This is violating the standards. Oh god. Oh god." 17:11:19 <elliott_> elliott@katia:~/Code/mchost$ git stash list 17:11:19 <elliott_> stash@{0}: On master: Client/Server module split, records, better test server 17:11:20 <elliott_> So professional 17:12:03 <elliott_> I know 17:12:11 <elliott_> alias restash='git stash save ...' 17:13:06 <elliott_> Oh, hmm 17:13:11 <elliott_> Deewiant: There's quite a major problem with your simpler model 17:13:14 <elliott_> I only want to keep parts of the index 17:13:19 <elliott_> Specifically, I want to keep the parts I add -p'd 17:13:23 <elliott_> But not the new files created by the split 17:13:31 <elliott_> It really feels like git is conflating two things here... 17:13:46 <elliott_> You should be able to let it know a file exists without having it be marked as to-commit. 17:15:26 <elliott_> <Deewiant> I was thinking loop { git stash -p, git stash, apply the -p'd one, tweak, commit, go back to where you were and apply the non-p'd one } 17:15:30 <elliott_> Alright, let's see here now 17:15:37 <elliott_> OK, I think that works 17:19:33 <elliott_> Deewiant: Thanks, this seems workable 17:20:01 <Deewiant> No problem 17:21:33 <elliott_> error: patch failed: MC/Protocol/Fields.hs:10 17:21:33 <elliott_> error: MC/Protocol/Fields.hs: patch does not apply 17:21:33 <elliott_> Cannot remove worktree changes 17:21:34 <elliott_> Sigh 17:21:36 -!- sllide has quit (Ping timeout: 256 seconds). 17:22:12 <elliott_> Oh, there we go 17:23:20 <elliott_> elliott@katia:~/Code/mchost$ selectstash 17:23:20 <elliott_> MC/Protocol/Fields.hs: needs merge 17:23:20 <elliott_> MC/Protocol/Fields.hs: needs merge 17:23:20 <elliott_> MC/Protocol/Fields.hs: unmerged (5627f96b476d7f06ae983b63aad445fcef5ade68) 17:23:20 <elliott_> MC/Protocol/Fields.hs: unmerged (f1ce5a1d97eee533fbaaa16b9b9e2d611c9902ce) 17:23:20 <elliott_> MC/Protocol/Fields.hs: unmerged (859cf129e4554d3253ee71c6497d5794626c7662) 17:23:22 <elliott_> fatal: git-write-tree: error building trees 17:23:24 <elliott_> Cannot save the current index state 17:23:30 <elliott_> Deewiant: What the fuck do you do if you have a fucking merge conflict between a stash and a commit you just made 17:23:55 <elliott_> I fixed the conflict, now what 17:24:01 <elliott_> Obviously I can't commit it 17:24:04 <elliott_> Do I need to... restash it?? 17:24:06 <Deewiant> I forget 17:24:07 <elliott_> Make a merge stash???? 17:24:09 <elliott_> Augh 17:24:45 <Deewiant> Maybe you should keep a separate branch here instead of a stash :-P 17:25:00 <elliott_> That would be uglier since I'd get explicit merge commits I'd have to discard 17:25:12 <elliott_> I'll hack up a toolchain for this soon, it's not a difficult operation at its core really 17:25:19 <elliott_> Deewiant: What search terms would you use to unforget :P 17:26:08 <Deewiant> git stash "needs merge" unmerged 17:26:55 <elliott_> Yay, I fixed it all 17:26:57 <elliott_> Kind of 17:28:45 <elliott_> stash@{0}: On master: Latest working tree 17:28:45 <elliott_> stash@{1}: On master: To apply 17:28:45 <elliott_> stash@{2}: On master: Latest working tree 17:28:46 <elliott_> Fuck 17:28:49 <elliott_> 0 is latest right? 17:28:52 <Deewiant> Yep 17:30:54 <elliott_> Deewiant: The merge conflicts I'm getting are great 17:31:05 <elliott_> It's because to remove the addition lines right next to other lines I don't want added I have to remove them entirely 17:31:07 <elliott_> Thus fucking up the context 17:31:09 <elliott_> The result: 17:31:12 <elliott_> <<<<<<< Updated upstream 17:31:12 <elliott_> ======= 17:31:12 <elliott_> , blockPos 17:31:12 <elliott_> , blockPosShortY 17:31:12 <elliott_> , blockPosIntY 17:31:13 <elliott_> , playerPos 17:31:15 <elliott_> , playerPosXSYZ 17:31:17 <elliott_> >>>>>>> Stashed changes 17:31:19 <elliott_> "I EXPECTED NOTHING HERE BUT THERE WAS NOTHING" 17:31:50 <elliott_> The solution is literally just to remove the merge conflict lines 17:32:41 <elliott_> Ooh, I know 17:32:45 <elliott_> I just need to remove the context below 17:32:49 <ais523> haha, does the Norwegian alphabet really go A-Å? 17:32:51 <ais523> that must be confusing 17:32:53 <elliott_> Darn, that doesn't work 17:33:06 <elliott_> ais523: Hi, I'm dealing with git 17:33:11 <ais523> ouch 17:33:43 <ais523> I'm happy that I managed to convince at least you that it was fundamentally broken 17:33:48 <ais523> normally, I don't manage to convince anyone 17:33:57 <elliott_> ais523: How many people have you tried it on 17:34:06 <ais523> more than you might expect 17:34:15 <ais523> most people don't listen to the whole tihng 17:34:15 <ais523> *thing 17:34:19 <elliott_> This isn't really git's fundamental brokenness showing, it's just lack of a decent UI for this 17:34:26 <ais523> I know 17:34:30 <elliott_> Some merging issues but they'd be there with sg too, you could just avoid some of them with smarts 17:34:38 <elliott_> (Do you have the context of what I'm doing or are you just talking generally) 17:34:44 -!- ive has joined. 17:34:55 <ais523> I almost have the context, but I'm not paying enough attention to see it as anything but a sequence of facts 17:35:57 <elliott_> ais523: Basically: For like a day, I was working hard on long, tedious, boring work on mchost which resulted in some fairly large restructuring of what little there is right now, and couldn't be bothered with version control in the slightest. Now I want to turn this huge working diff into a sensible set of atomic commits where each one in sequence builds and runs properly, etc. 17:36:18 <elliott_> Which means that I can't just select hunks to apply in succession; I'll need to tweak and test it afterwards. 17:36:27 <elliott_> The basic operation git is missing is selecting hunks from a stash which then rips out those hunks from the stash and applies them to the tree. 17:36:37 <elliott_> That would let me select which part to work on next, do my tweaks, commit, repeat. 17:36:39 <ais523> in darcs, you could do that with a second repo and a pull 17:37:09 <elliott_> ais523: Even that's pretty inconvenient, because it'll have undesirable things like merge commits having the potential to get in. 17:37:14 <ais523> yep, indeed 17:37:21 <ais523> and the darcs method is far from certain 17:37:43 <elliott_> I basically want something "automatic" like bisecting is; you start the process, select some hunks, it does the obvious thing, you fix it up, make sure it builds, commits; then you resume, select more hunks, etc., until there aren't any left. 17:37:57 <elliott_> Automatic in that, you don't have to repeat anything, you just start / resume / resume until you're finished. 17:38:16 <elliott_> What's really annoying is that git refuses to split a hunk past a certain point. 17:38:29 <elliott_> Which makes e.g. selecting only one of five adjacent line additions to an import list annoying. 17:38:39 <elliott_> You have to manually edit the hunk, which changes the context, which creates bogus merge conflicts afterwards. 17:40:32 <elliott_> Saved working directory and index state On master: To apply 17:40:32 <elliott_> error: patch failed: MC/Protocol/Fields.hs:12 17:40:32 <elliott_> error: MC/Protocol/Fields.hs: patch does not apply 17:40:33 <elliott_> error: patch failed: MC/Protocol/Types.hs:112 17:40:33 <elliott_> error: MC/Protocol/Types.hs: patch does not apply 17:40:33 <elliott_> Cannot remove worktree changes 17:40:39 <elliott_> ais523: believe it or not, but this is what things look like when they're /working/ 17:40:53 <ais523> heh 17:40:53 <elliott_> Congratulations git: my workflow now involves commands erroring out. 17:41:07 <elliott_> It literally exits with status 1 and all. 17:42:46 <elliott_> ais523: Here's what I'm doing, just so you can experience the absurdity: Apply the stash of "all changes not yet committed". Create a new stash interactively; select the hunks I want to work on this commit. Stash all changes (becoming the new "all changes not yet committed" stash); this leaves out the already-stashed selected changes, obviously. Apply the manually-selected stash. Tweak, tweak, commit. Repeat. 17:43:11 <elliott_> There's usually a merge conflict with the stashes at one point in this process because of hunk editing requirements. 17:43:16 <elliott_> Which involves some git reset HEAD stuff. 17:44:11 <Ngevd> There exist at least two fairy chess piece notaqtions 17:49:59 <elliott_> ais523: I fear I may be taking fear of breaking the build a little too far 17:50:05 <ais523> heh 17:50:12 <elliott_> I don't think a single commit to the repository doesn't compile so far 17:50:20 <ais523> really, we need to invent a programming language that merges well 17:50:21 <elliott_> With no warnings 17:51:25 <elliott_> Holy crap, finally no merge conflicts with the stash 17:54:27 -!- derrik has joined. 18:10:00 <Ngevd> ais523, will you continue my INTERCAL tutorial? 18:11:01 <ais523> well, you keep running away from it a lot 18:11:31 <Ngevd> I ran away once 18:11:39 <ais523> twice 18:11:58 <Ngevd> Okay, twice 18:13:39 <Ngevd> Three times 18:13:40 <Ngevd> Bye 18:13:41 -!- Ngevd has quit (Quit: Leaving). 18:14:08 <ais523> … 18:16:49 <elliott_> ais523: I think you should: give up. 18:17:20 <ais523> yes, I don't think that tutorial would go too well 18:17:34 <elliott_> So, what's the way to get git to assume I passed --color to everything by default; answering this will save me an ENTIRE WEB SEARCH. 18:17:37 <elliott_> ais523 can do it, so can I. 18:17:43 <ais523> alias git = git --color 18:17:56 * ais523 runs 18:18:03 -!- derrik has left. 18:18:04 <elliott_> elliott@katia:~/Code/mchost$ git --color log --oneline 18:18:04 <elliott_> Unknown option: --color 18:18:04 <elliott_> usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] 18:18:04 <elliott_> [-p|--paginate|--no-pager] [--no-replace-objects] 18:18:04 <elliott_> [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] 18:18:04 <elliott_> [--help] COMMAND [ARGS] 18:18:10 <elliott_> ais523: You lose twofold 18:18:10 <ais523> bleh, that's really stupid 18:18:26 <elliott_> git still has the legacy of being like a billion shell scripts underneath. :p 18:18:26 <ais523> what happens if you pass --color to something that doesn't support --color? 18:18:40 <elliott_> elliott@katia:~/Code/mchost$ git fetch --color 18:18:40 <elliott_> error: unknown option `color' 18:18:50 * elliott_ just searches for it 18:18:56 <elliott_> I really need a nice verb form of Google that doesn't imply Google. 18:19:37 <elliott_> One thing I really like about git is that its little diagrams of the changed files and how much they were changed is pretty. :p 18:19:41 <ais523> websearch? 18:19:51 <elliott_> Also the way it detects common paths in renames and the like and uses {foo,bar} syntax. 18:19:53 <ais523> the major deficiency of Google is that it only searches the Web by default 18:20:03 <ais523> if only it searched people's minds too, it'd be more useful 18:20:05 <ais523> also a privacy nightmare 18:20:12 <elliott_> git has really rather aesthetically pleasing final output, it's just crappy at producing it. 18:20:12 <elliott_> ais523: heh 18:20:34 <elliott_> ais523: maybe we can get NeutrinoOverflow 18:20:50 <elliott_> ais523: basically, you ask your question, and if anyone ever answers it in the entire rest of the universe's lifespan, you get the answers back immediately 18:20:58 <elliott_> the main problem is that there's always thousands of them and huge flamewars over which is the best 18:21:11 <elliott_> whole threaded forums devoted to arguing the top two answers versus each other 18:21:22 <elliott_> millions of innocents killed in the name of using short options rather than GNU long options 18:21:35 <elliott_> but... I mean, you _do_ get an answer instantly, that's gotta count for something, right? 18:22:00 <elliott_> someone has to write that now, I would read the crap out of that short story 18:22:28 <elliott_> oh, git actually has command autocompletion 18:22:30 <ais523> it'd be great, but I'd be no good at writing it 18:22:36 <ais523> elliott_: *bash has command autocompletion for git 18:23:05 <elliott_> ais523: indeed, but "git st<enter>" is faster than "git status<enter>" 18:23:12 <elliott_> oh, darn, it has multiple options there 18:23:15 <elliott_> so it wouldn't work 18:23:25 <elliott_> (it's just an option to make git automatically run the suggested command if there's only one) 18:23:41 <ais523> its autocompletion for darcs is pretty amazing, it does things like darcs add <tab> only lists files that aren't in the repo already 18:24:02 <ais523> this isn't really a win for darcs over git in theory, only in practice 18:24:36 <elliott_> hmph, git has a bunch of colour options but there doesn't seem to be one way to set them all usefully at onc 18:24:37 <elliott_> e 18:25:25 <elliott_> color.ui 18:25:25 <elliott_> When set to always, always use colors in all git commands which are capable of colored output. When false (or never), never. When set to true or auto, use colors 18:25:25 <elliott_> only when the output is to the terminal. When more specific variables of color.* are set, they always take precedence over this setting. Defaults to false. 18:25:26 <elliott_> o 18:25:30 <elliott_> h 18:26:37 <Gregor> http://16oa3.tk (Yes, I used Tweak.tk :P ) ; this is almost assuredly trollery, but the answer is pretty hilarious. 18:27:21 <ais523> do you think the question or answer was trolling? or both? 18:27:49 <ais523> I'm going for question being trolling, answer calling them on it 18:28:23 <elliott_> "Okay. Wow, you're kind of ignorant. America was formed by the ENGLISH. They didn't copy us, we copied them. David Beckham is English too. Also, there is no such language as 'American'... I take it you're a blonde..." 18:28:43 <elliott_> Do holier-than-thou attitudes ever pay off, ever? 18:28:49 <elliott_> They are like the universal catalysts of irony. 18:28:53 <ais523> probably /sometimes/ 18:29:03 <elliott_> ais523: there's absolutely no way at all ever ever ever to tell git I'm splitting a file into two new ones, right? :( 18:29:12 <elliott_> it's showing me as removing the whole file and then adding two ~COMPLETELY NEW FILES~ 18:29:19 <elliott_> even though it's almost literally just splitting the thing in two 18:29:21 <ais523> I don't think so, but I don't know 18:29:27 <elliott_> :'( 18:30:43 <elliott_> I can't believe Pugs is still maintained 18:31:33 <ais523> is that a Haskell impl or Perl 6 impl? I get them muddled 18:32:03 <elliott_> latter 18:32:04 <elliott_> in Haskell 18:32:07 <elliott_> # modified: MC/Protocol.hs 18:32:07 <elliott_> # new file: MC/Protocol/Client.hs 18:32:07 <elliott_> # renamed: MC/Protocol.hs -> MC/Protocol/Server.hs 18:32:07 <elliott_> ugh 18:32:11 <elliott_> don't just pick the bigger half, git... 18:32:57 <pikhq> elliott_: This is nothing but a presentation issue. 18:33:02 <elliott_> I don't care :-( 18:33:38 <elliott_> "show [<stash>] 18:33:38 <elliott_> Show the changes recorded in the stash as a diff between the stashed state and its original parent." 18:33:40 <pikhq> git is not actually storing a new file and a rename action in its commit. It's simply storing a whole new filesystem tree in its immutable data store. 18:33:45 <elliott_> Is there any way to show the diff between the stashed state and the current HEAD? 18:33:48 <elliott_> That would be very useful for me. 18:33:59 <pikhq> That git then tries to present things in a confusing way is just a shame... 18:34:46 <pikhq> Should be able to: each stash is either a tree or a commit (I don't remember which) 18:35:06 <pikhq> IIRC git stash show should actually show you the appropriate hash. 18:35:16 <pikhq> Ah, it's a commit. 18:36:14 <pikhq> Oh, hey, even better: each stash gets stuffed in refs/stash. So: git diff HEAD stash@{0} 18:36:19 <elliott_> Oh, great. Thanks. 18:39:11 <elliott_> wow, I think this commit will actually merge better if I squash it with the previous one 18:39:15 <elliott_> is that even possible in git? 18:39:25 <elliott_> for merging to be like that, I mean 18:39:34 <ais523> you can probably do it via interactive rebase somehow 18:39:42 <ais523> merge first, then squash the merge commit backwards 18:39:48 <pikhq> Sounds about right. 18:39:48 <elliott_> yes, I know that :) 18:39:49 <elliott_> I just mean 18:40:00 <elliott_> is it possible for squashing a commit with a previous one to make merging easier 18:40:44 <pikhq> I don't really think so; it's a fairly naive three-way merge, isn't it? 18:40:49 <elliott_> right 18:41:37 <pikhq> With the only thing making git's merging work notably better is that the standard DVCS workflow encouraging branches that don't diverge *widely*. 18:41:54 <pikhq> s/encouraging/encourages/ 18:42:20 <elliott_> but seriously... worst diff: http://sprunge.us/CVSb 18:43:01 <pikhq> Yeaaah, diff is moronic. 18:48:22 <elliott_> pikhq: Hmm... given a commit, is there a way to selectively apply its diff using the hunk selection screen? 18:55:08 -!- monqy has joined. 18:56:04 <elliott_> pikhq: I SEE 19:08:39 -!- asiekierka has quit (Remote host closed the connection). 19:10:36 <elliott_> pikhq: Is there a way to refer to the index with "git diff"> 19:10:36 <elliott_> ? 19:10:50 <elliott_> As in, "git diff <index> stash@{0}". 19:11:58 -!- zzo38 has joined. 19:12:11 -!- Ngevd has joined. 19:12:18 <Ngevd> Hello! 19:13:07 <zzo38> I think what I will do, is move examples of my program into a separate file and then \input it into the main file. The example file can then be loaded into GHCi to try things with it. 19:13:18 -!- KingOfKarlsruhe has joined. 19:14:22 <elliott_> pikhq: :'( 19:15:10 -!- Ngevd has quit (Client Quit). 19:16:25 <elliott_> Ah, diff-index seems to be it, possibly. 19:17:01 <elliott_> oh, git diff --cached does it 19:40:00 <Vorpal> <elliott_> but seriously... worst diff: http://sprunge.us/CVSb <-- nice paste name... 19:40:13 <elliott_> Heh 19:40:15 <elliott_> Heh. 19:40:21 <elliott_> Tpyoes are the worst. 19:48:55 <Vorpal> elliott_, oh and, I don't really see any alternative way to format it without adding some "copy from file" command to diff 19:49:32 <elliott_> So? 19:49:54 <elliott_> git doesn't exactly spit out stock git output most of the time. 19:50:05 <Vorpal> stock diff you mean 19:50:13 <elliott_> Yes. 19:50:34 <elliott_> Every time I see "diff --git" I imagine that somehow Linus just got the option he needed for diffs added to diff itself because, well, he's Linus. 19:50:42 <elliott_> But no; 'tis a sham. 19:53:07 <Vorpal> yeah, diff doesn't have --git 19:55:47 <ais523> elliott_: like "ls --emacs"? 19:55:56 <ais523> (I'm not sure if I've got the name exactly right there) 19:57:07 <elliott_> ais523: it's --dired 19:57:20 <ais523> yep, I thought I'd got the name wrong 19:57:53 <fizzie> Vorpal: But GNU patch has support for "diff --git" output: http://git.savannah.gnu.org/cgit/patch.git/tree/NEWS second '*'. 19:58:09 <elliott_> Heh. 19:58:45 <elliott_> git is a pretty good immutable object store with support for tree objects that can be diffed and the like, I just wish people didn't mistake that for a VCS :D 20:04:21 <zzo38> In which and how many esolangs does it not matter the order of program lines? Which ones almost matter? Are there any with hex grids? 20:06:40 <fizzie> Two where the order does not matter are Whenever, and Strelnokoff. 20:14:38 <zzo38> I realize now, I think C-LONG also doesn't matter the order but for different reason (old BASIC interpreters also often reordered everything in order of line numbers) 20:17:40 <fizzie> Yes, I suppose with mandatory-unique line numbers the order will likely not matter. 20:17:54 <zzo38> Will anyone implement Ian's VAX Extensions? 20:18:36 <zzo38> Do you like games that scroll one way or both ways? 20:20:54 -!- Phantom_Hoover has changed nick to Notch. 20:24:21 -!- Vonlebio has joined. 20:26:39 -!- Notch has changed nick to Phantom_Hoover. 20:27:34 <olsner> elliott_: maybe your diff would be more readable with git diff -M (rename detection) 20:27:57 <elliott_> olsner: Tried that, but it wasn't really 20:27:58 <elliott_> olsner: Tried that, but it wasn't really. 20:28:06 <olsner> ok 20:31:38 -!- Vonlebio has quit (Quit: Leaving). 20:32:25 <elliott_> olsner: Tried that, but it wasn't really. 20:32:27 <elliott_> olsner: Tried that, but it wasn't really. 20:32:28 <elliott_> hi 20:33:26 <monqy> hi 20:34:41 <Vorpal> <fizzie> Vorpal: But GNU patch has support for "diff --git" output: http://git.savannah.gnu.org/cgit/patch.git/tree/NEWS second '*'. <-- huh, old version here then 20:35:23 <Vorpal> diff --help | grep git turns up nothing here 20:37:12 <olsner> since it's not prefixed by "Changes in version ..." in the changelog I think that list is for the next (i.e. unreleased) release 20:37:24 <Vorpal> <zzo38> Do you like games that scroll one way or both ways? <-- I prefer games that scroll in all three dimensions, and in all directions there. 20:37:25 <olsner> also, it's for patch, not diff 20:39:01 -!- pikhq_ has joined. 20:39:29 -!- pikhq has quit (Ping timeout: 260 seconds). 20:40:47 -!- copumpkin has quit (Remote host closed the connection). 20:41:41 -!- copumpkin has joined. 20:48:44 <Phantom_Hoover> CakeProphet, are you still in that relationship with @vixen? 20:59:42 -!- pikhq has joined. 20:59:50 -!- pikhq_ has quit (Ping timeout: 245 seconds). 21:04:58 -!- elliott_ has quit (Ping timeout: 248 seconds). 21:07:06 -!- ive has quit (Ping timeout: 248 seconds). 21:19:48 -!- oerjan has joined. 21:22:59 <oerjan> <Madoka-Kaname> You can have modules implicitly import other modules? 21:23:35 <oerjan> you can have a module explicitly export another module's definitions as its own, in which case it looks like that 21:25:09 <oerjan> makes it easy to make an api which doesn't depend on how you organize your modules internally 21:26:38 <oerjan> and then there are class instances, which _are_ imported implicitly, which sometimes creates trouble 21:27:35 <oerjan> (there's no way to hide them from a module which knows about both the types and the class 21:27:38 <oerjan> ) 21:29:40 <oerjan> ah elliott deficiency, i thought it was silent 21:35:18 <oerjan> <Phantom_Hoover> What is this crap you can't even use FTL for straight time travel. 21:35:51 <oerjan> ftl only implies time travel if it is still independent of reference frame 21:35:59 <Phantom_Hoover> oerjan, that too. 21:36:21 <Phantom_Hoover> But what I meant was that you can't use it to shoot Hitler without shenanigans. 21:36:27 <oerjan> and if it is true that the speedup is 60 ns independent of the neutrino energy, then it probably is _not_ 21:37:09 <oerjan> i had another idea though - variant of my last 60 ns backwards in time thing. well, really just taking that to its conclusion. 21:38:03 <oerjan> if there is a jump which happens either at production or detection, then all we need for time travel is to get the accelerator and detector < ~ 20 m apart 21:38:52 <oerjan> hm i guess we'd want half that, to get an ordinary signal back in time 21:40:02 <oerjan> > 60e-9 * 300000000 21:40:03 <lambdabot> 18.0 21:40:30 <oerjan> < ~ 9 m, then 21:41:27 <oerjan> hm i guess at that distance it would be tricky to avoid all the _other_ particles generated by the accelerator :( 21:43:39 <oerjan> <elliott_> I think gravity goes FTL because it's spacetime magic. 21:44:03 <oerjan> dammit you realize this is a frequent question at any public physics forum? 21:45:14 <oerjan> (the answer, as you seem to have found, is that changes in gravitation propagate at light speed) 21:47:09 <oerjan> whether this means that gravity _itself_ propagates at light speed is hard to test because you cannot make a change that would note the difference without violating conservation laws or have something else move faster than light 21:47:35 <oerjan> *notice 21:47:59 <oerjan> well that's my impression of the discussions, anyway 21:48:32 <zzo38> O, nobody has beat me at "Month Name" and "Double quote" yet. Maybe later it will be. 21:49:26 <oerjan> "September" 21:49:37 <oerjan> yw 21:50:23 <zzo38> What about September? 21:50:44 -!- Patashu has joined. 21:51:04 <oerjan> it's the current month name. also i put it in double quotes. 21:51:38 <zzo38> I mean anagol. But it should not be too difficult to match me at those problems, I think. 21:52:08 <zzo38> (I noticed for "Month Name" that November is omitted) 21:52:22 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 21:55:53 <zzo38> Maybe I even missed something you can shorten it more. 22:03:33 <oerjan> 17:32:49: <ais523> haha, does the Norwegian alphabet really go A-Å? 22:03:33 <oerjan> 17:32:51: <ais523> that must be confusing 22:03:36 <oerjan> yes, and no. 22:04:17 <zzo38> Is there such a thing as Windows CE emulator that can run on Linux? 22:04:29 <olsner> oerjan: hmm, how does your alphabet end? øæå? 22:04:39 <fizzie> Ours goes A..ZÅÄÖ. 22:04:40 <oerjan> æøå 22:04:46 <ais523> oerjan: I'm thinking, when people leave off accents 22:04:56 <oerjan> ais523: well don't do that 22:04:59 <ais523> how is å pronounced anyway? 22:05:10 <oerjan> approx. like aw in saw 22:05:21 <ais523> ah, that's close enough for me to imagine it 22:05:47 <fizzie> The Finnish name for å is "swedish o". 22:06:08 <oerjan> although distinguishing all the back vowels in english is a little tricky for a norwegian. well this one, anyway. 22:06:33 <oerjan> i will assume we get it back with the front ones :P 22:07:01 <fizzie> "In Swedish, the long version represents IPA /oː/. In Danish and Norwegian, the long version is pronounced IPA /ɔː/." 22:08:17 <oerjan> see, i can barely think of that as a real difference :P 22:08:40 <zzo38> I read somewhere, someone invented a new letter of the English alphabet called "key" and which is always silent. 22:08:47 <oerjan> as an accent yes, but not as a different phoneme 22:09:48 <fizzie> We don't even officially have a ɔ at all; there's no "Finnish" listed on the occurrence list of that IPA sound in WP. 22:13:40 <fizzie> "The mid vowels are phonetically "true" mid, i.e. intermediate between close-mid ([e], [ø], [o]) and open-mid ([ɛ], [œ], [ɔ]).[3] However, since no language is known to phonemically distinguish all three of these levels of mouth opening, the International Phonetic Association (IPA) provides no separate symbols for mid vowel phones." 22:14:33 <oerjan> what language is this 22:15:08 <fizzie> Ours. 22:15:47 <oerjan> which reminds me, how is finnish ä pronounced 22:16:03 <olsner> it's pronounced ä, silly 22:16:26 <fizzie> Front, unrounded, open; æ in other words. 22:17:48 <oerjan> it's the one sound in finnish where i keep looking at words and think, no, that cannot possibly be how it is pronounced. 22:18:05 <fizzie> (Where æ was the IPA æ.) 22:18:17 <fizzie> Which words are these? 22:19:13 <oerjan> whichever words :P 22:19:17 <olsner> hmm, swedish ä is apparently pronounced ɛ 22:19:45 <fizzie> It's that sometimes, I believe. 22:20:49 <oerjan> and that's how my mind wants to pronounce the finnish ones too, i think. or something in between. 22:21:03 <fizzie> WP says it's æ in e.g. "päron", due to the r. 22:21:51 <fizzie> "/ɛː/, /ɛ/, /øː/, and /œ/ are lowered to [æ] and [œ̞], respectively, when preceding /r/.[5] In most Standard Swedish varieties, especially those spoken by younger speakers, [œ̞] is used in other contexts as well." (In Swedish.) 22:23:02 <fizzie> "The doctor orders" in Finnish: "lääkäri määrää". 22:24:27 <Vorpal> <olsner> hmm, swedish ä is apparently pronounced ɛ <-- is it? 22:24:33 <Vorpal> such as in? 22:24:36 <olsner> Vorpal: wikipedia said so 22:24:49 <Vorpal> olsner, got any example words? 22:24:59 <olsner> Vorpal: http://en.wikipedia.org/wiki/Swedish_phonology#Vowels 22:25:49 <olsner> but I skipped the paragraph about sounds lowered to æ, that fizzie quoted, and just read the table first 22:26:29 <Vorpal> I'm somewhat doubtful, I can't hear a difference between cases that it claims are pronounced ɛ and those it claims are pronounced æ 22:27:34 <Vorpal> the case for ö is more obvious 22:31:31 -!- hagb4rd has joined. 22:33:52 -!- ive has joined. 22:37:04 <fizzie> ɛ should be rather different from æ; I mean, it could easily be closer to e. (Also: "In many central and eastern areas (including Stockholm), the contrast between /ɛ/ and /e/ is lost, especially the short variants[8] except before /r/[9] so that hetta ('heat') and hätta ('cap') and possibly even veta ('know') and väta ('moisten') are pronounced the same.") 22:38:11 <Vorpal> fizzie, well veta and väta are spelled quite differently. The first two are pronounced only slightly differently 22:38:21 <Vorpal> but I thought you meant when it is spelled with ä 22:39:06 <fizzie> I don't know what that means. I mean, ä is always spelled with ä; it's ä. 22:39:39 <Vorpal> fizzie, I thought you meant above that ä was sometimes pronounced æ and sometimes ɛ 22:39:44 <fizzie> Yes. 22:40:05 <hagb4rd> we have a lot of scandinavian folks here 22:40:07 <fizzie> But a letter is by definition always spelled the same way. 22:40:40 <Vorpal> fizzie, but all the examples above were using ä as one sound and e in the other case. So I haven't seen any examples of spelled ä pronounced ɛ yet? 22:40:53 <hagb4rd> is there any affinity between esolangs and scandinavia 22:41:08 <Vorpal> hagb4rd, we have several people from UK too. And many from US. 22:41:16 <hagb4rd> yea 22:41:27 <Vorpal> so? 22:41:41 <nooga> väta min hätta 22:41:46 <hagb4rd> just breeding random thoughts 22:41:49 <Vorpal> nooga, wtf 22:41:52 <hagb4rd> humpa! 22:41:57 <nooga> Vorpal: what? 22:42:11 <Vorpal> nooga, oh wait, you are washing your cap? 22:42:14 -!- augur has quit (Remote host closed the connection). 22:42:19 <zzo38> We also have at least two Canadians. 22:42:34 <nooga> Vorpal: yep 22:42:35 <Vorpal> how many from Australia? 22:42:49 <Vorpal> or NZ 22:43:22 <hagb4rd> no one 22:43:28 <fizzie> Vorpal: What. It's (theoretically) pronounced as /ɛ/ in both hätta and väta; except according to that it can happen that what should be /ɛ/ and /e/ in 'hätta' and 'hetta', respectively, gets pronounced the same way. 22:43:31 <hagb4rd> they have no time for char 22:43:34 <hagb4rd> chat 22:43:55 <fizzie> And it's pronounced as /æ/ only before /r/, or some-such. 22:44:10 <Vorpal> fizzie, hm, but issue is, it sounds the same in cases like ärt and väta to me. 22:44:17 <Vorpal> So now I'm utterly confused 22:44:36 <hagb4rd> is this swedish? 22:44:42 -!- derdon has joined. 22:45:00 <fizzie> Technically those are supposed to be /æ/ and /ɛ/. But they are sort-of neighbouring sounds, so... 22:45:40 <Vorpal> hagb4rd, yes 22:45:48 <hagb4rd> k, thx 22:46:14 <hagb4rd> but everything but finish sounds familiar in a way 22:47:36 <hagb4rd> dunno how this could happen, but finish is kind of extraterristic nature 22:48:04 <hagb4rd> its different 22:48:23 <hagb4rd> not wanting to bother anyone 22:49:38 <oerjan> <hagb4rd> no one <-- oh they do happen 22:50:06 <hagb4rd> my ex has gone to nz 22:50:28 <hagb4rd> see seems to be busy bunjeejumping and stuff 22:50:39 <hagb4rd> they're all happy in nz 22:50:52 <hagb4rd> keeping an eye on their sheep and stuff 22:51:13 <fizzie> Vorpal: Finnish only has /æ/ and /e̞/ (which is somewhere between /e/ and /ɛ/), so it's not very easy for a Finnish speaker to distinguish between all three of /e/, /ɛ/ and /æ/ either; it's just that I have a feeling often when they teach Swedish to Finnish-speaking folks, they just tell us to pronounce your ä as /e/ except when in front of /r/. 22:51:15 <oerjan> incidentally in norwegian, æ is mostly spelled e in front of r, but not always 22:51:35 <fizzie> Vorpal: Of course finlandssvenska is pretty far from real Swedish. :p 22:52:22 <oerjan> and is much rarer in front of other consonants 22:53:26 <fizzie> But for example 'nät' is something I'd pronounce rather /e/-ishly if for some reason someone would point a gun at me and tell me to start speaking Swedish. And I'd want to use that word. In that situation. Which sounds somewhat unlikely. 22:53:38 <oerjan> hm it may be short ær which is spelled er 22:54:07 <oerjan> (the word "er" would be an exception) 22:54:23 <hagb4rd> i know tolkien was inspired by finnish or at least some of its unique forms of pronouncing stuff 22:55:20 <hagb4rd> sindarin & quenya are related to finnish and greek 22:55:52 <fizzie> So they say. 22:55:55 <oerjan> erm i thought sindarin was related to welsh 22:55:56 <hagb4rd> yes 22:56:08 <fizzie> "Finnish, which I came across when I had first begun to construct a 'mythology' was a dominant influence, but that has been much reduced [now in late Quenya]. It survives in some features: such as the absence of any consonant combinations initially, the absence of the voiced stops b, d, g (except in mb, nd, ng, ld, rd, which are favoured) and the fondness for the ending -inen, -ainen, -oinen, also in some points of grammar, such as the inflexional endings -sse 22:56:09 <fizzie> (rest at or in), -nna (movement to, towards), and -llo (movement from); the personal possessives are also expressed by suffixes; there is no gender." 22:56:49 <hagb4rd> thx fizzie 22:57:53 <fizzie> Our inflection-suffixes for those are -lla, -lle and -lta (for external-locative; -ssa, -an/-en, -sta for internal), so it's not quite directly copied, just some styles. 22:58:18 <hagb4rd> lets call it influenced 22:59:00 -!- calamari has joined. 22:59:07 <fizzie> I wonder if our percentage of Quenya speakers is above the global mean, though. 22:59:14 <fizzie> Better ask Wolfram Alpha. 22:59:18 <hagb4rd> im sure 22:59:20 <hagb4rd> :D 23:00:00 <fizzie> "Fictional Things: Development of this topic is under investigation..." 23:00:04 <fizzie> Oh W|A, why must you fail me so. 23:01:48 <fizzie> "Petri Tikka comes from Finland or "Quenya-land". As a native Finnish speaker he is very well prepared to speak Quenya which is phonologically based on Finnish. Petri has translated a fragment of Kalevala into Quenya." 23:01:54 <fizzie> Uh-huh. 23:05:51 <Phantom_Hoover> <oerjan> erm i thought sindarin was related to welsh 23:06:22 <Phantom_Hoover> I was always suspicious of the whole elf/nature thing. 23:06:58 -!- hagb4rd2 has joined. 23:10:19 -!- hagb4rd has quit (Ping timeout: 248 seconds). 23:16:00 <oerjan> wikipedia agrees, anyway 23:19:06 <fizzie> "But then he discovered Finnish, and was filled with joy. Tolkien wrote, many years later: 'It was like discovering a complete wine-cellar filled with bottles of an amazing wine of a kind and flavour never tasted before. It quite intoxicated me.'" 23:19:10 <fizzie> Weird guy, Tolkien. 23:19:31 <fizzie> I speak Finnish almost every day and never get intoxicated. 23:19:38 <fizzie> At least not because of that. 23:20:21 <fizzie> It would, in fact, be rather difficult if. "Sorry, can't speak, need to be sober to drive home later." 23:20:29 <Phantom_Hoover> He's like a Finland weeaboo. 23:25:51 -!- azaq23 has joined. 23:35:06 * Phantom_Hoover → sleep 23:35:08 -!- Phantom_Hoover has quit (Quit: Leaving). 23:36:42 -!- augur has joined. 23:41:05 -!- ais523 has quit (Remote host closed the connection). 23:45:01 -!- calamari_ has joined. 23:46:22 -!- nooga has quit (Ping timeout: 256 seconds). 23:46:48 -!- calamari has quit (Quit: Bye). 23:47:11 -!- calamari_ has changed nick to calamari. 23:51:33 <Vorpal> <fizzie> It would, in fact, be rather difficult if. "Sorry, can't speak, need to be sober to drive home later." <-- written down on a paper I presume? 23:51:59 <Vorpal> (because you would only get drunk while writing it presumably) 23:52:28 <fizzie> Well, I don't know if writing would help. Maybe just speaking in English only. 23:52:53 <Vorpal> fizzie, but you would write it down once and then reuse the card that said that 23:53:41 <fizzie> Oh, of course. How practical. 23:55:57 <Vorpal> fizzie, well apart from that the ailment is not very practical to begin with 23:56:02 <Vorpal> well,* 23:56:27 <Vorpal> (why do I *always* miss the comma after a line starting with "well,"?) 23:57:31 -!- DH____ has joined. 2011-09-25: 00:02:18 <hagb4rd2> i really enjoyed this--thx for some nice enlightning backgrounds on that topic fizzie :) 00:02:24 -!- sebbu2 has joined. 00:02:24 -!- sebbu2 has quit (Changing host). 00:02:24 -!- sebbu2 has joined. 00:03:07 -!- sebbu has quit (Ping timeout: 248 seconds). 00:14:57 -!- tiffany has quit (Excess Flood). 00:25:34 -!- augur has quit (Remote host closed the connection). 00:42:03 -!- Vorpal has quit (Ping timeout: 248 seconds). 00:47:41 -!- sebbu2 has quit (Read error: Connection reset by peer). 00:48:05 -!- sebbu2 has joined. 00:48:05 -!- sebbu2 has quit (Changing host). 00:48:05 -!- sebbu2 has joined. 00:49:14 -!- DH____ has quit (Read error: Connection reset by peer). 00:49:22 -!- DH____ has joined. 00:55:55 -!- DH____ has quit (Read error: Connection reset by peer). 00:57:04 -!- zzo38 has quit (Remote host closed the connection). 00:57:34 -!- augur has joined. 01:04:05 -!- calamari has quit (Quit: Leaving). 01:05:03 -!- evincar has joined. 01:19:42 -!- BeholdMyGlory has quit (Remote host closed the connection). 01:23:39 -!- hagb4rd2 has quit (Ping timeout: 248 seconds). 01:33:15 -!- ive has quit (Ping timeout: 248 seconds). 01:40:28 -!- evincar has quit (Quit: leaving). 01:42:45 -!- ive has joined. 01:50:40 -!- tiffany has joined. 02:00:59 -!- derdon has quit (Remote host closed the connection). 02:02:40 -!- sebbu2 has changed nick to sebbu. 03:11:21 -!- variable has quit (Excess Flood). 03:13:04 -!- variable has joined. 03:28:40 -!- azaq23 has quit (Read error: Operation timed out). 03:30:28 -!- azaq23 has joined. 03:43:18 -!- tiffany has quit (Ping timeout: 260 seconds). 03:57:35 -!- tiffany has joined. 04:00:40 -!- evincar has joined. 04:07:27 <CakeProphet> `wacro 20 04:07:32 <HackEgo> rublorezygoe blcheming made neseacithikalcnan mic fce mulmve nacyliatum san norst gonodcnly bead ver reticule ars cul fuy wel tsitlemoopsighinwie prad 04:09:35 -!- oerjan has quit (Quit: Good night). 04:10:08 <CakeProphet> `wacro 30 04:10:10 <HackEgo> pewitttahandeurconrgiahtock reched pularifyintrer behuflundinger stardt giele man upe cektoyistudeischrice na minced nonecomwasafteus fordm oplof extentangyred rhonen noii clatomp couvelay sus tlizan hoa die logrun sonystet ov egbvilus pc cur roldn 04:16:01 -!- Jafet has quit (Quit: Leaving.). 04:18:31 <evincar> Has anyone else heard spoken Lolspeak in the wild? 04:20:56 <CakeProphet> sort of. 04:21:01 <CakeProphet> I've heard people lol in public if that's what you mean. 04:21:44 <monqy> if people do that to me i may have to punch them...... 04:22:19 <CakeProphet> monqy: "NO LOL" -haymaker- 04:22:38 <monqy> die 04:26:12 <CakeProphet> EVERYONE SHOULD SHOW AMUSEMENT IN THE TRADITIONAL HUMAN WAY, SHARED BY US AND OUR ANCESTORS, AS A RAPID OSCILLATION OF VOICELESS EPIGLOTTAL FRICATIVES 04:28:31 <monqy> less that laughing is good and more that internet speak is miserable 04:30:04 <evincar> I don't mean saying "lol". Lolcats rarely do, anyway. 04:30:20 <evincar> I mean "I can has...?" and "I has...", that sort of thing. 04:30:36 <evincar> I hear it pretty regularly at RIT. 04:30:57 <CakeProphet> oh yes I've heard that as well. 04:31:11 <CakeProphet> not frequently as I generally don't hang out with huge wastes of life. 04:31:22 <evincar> :P 04:31:33 <evincar> You don't have to hang out with someone to hear how they talk. 04:32:04 <evincar> Dunno, was just thinking Lolspeak is a sort of artificial pidgin. 04:32:52 <monqy> evincar: that's even worse 04:32:55 <monqy> it's even 04:32:56 <monqy> worse 04:33:07 <evincar> As conlangs go, it's at least unique... 04:33:16 <CakeProphet> no 04:33:21 <CakeProphet> not a conlang 04:33:32 <monqy> also "artificial pidgin" what 04:33:43 <evincar> Okay, so it's not a conlang. 04:33:53 <monqy> not a pidgin by any means either 04:33:54 <CakeProphet> pidgin sounds accurate. 04:33:57 <evincar> But it is a thing. 04:33:57 <monqy> oh?? 04:34:10 <monqy> it's a Bad thing 04:34:20 <evincar> A pidgin between English and bad English... 04:34:49 <evincar> On a side note, I really wish Lolcode had more interesting operational semantics. 04:34:59 <evincar> Because it's not unique enough to be interesting. 04:35:11 <CakeProphet> I'd say dialect is a better choice 04:35:25 <evincar> That's fair. 04:35:51 <CakeProphet> A dialect that is associated with a particular social class can be termed a sociolect 04:36:01 <CakeProphet> the social class of internet retards. 04:36:08 <evincar> It just has a lot in common with pidgins, I guess, which threw me off. 04:36:31 <evincar> Simplified grammar and syntax (and presumably pronunciation), unusual forms... 04:36:35 <evincar> ...low prestige. :P 04:36:49 <evincar> It will be the greatest day 04:37:01 <evincar> when men in suits and monocles converse 04:37:06 <evincar> in the Language of the Internet. 04:37:09 <evincar> Lolspeak. 04:37:12 -!- zzo38 has joined. 04:37:20 <CakeProphet> oh god 04:37:33 <CakeProphet> I will the radical traditionalist. 04:37:42 <evincar> ...be. 04:37:52 <CakeProphet> using terror to try to bring us back to our more ethical ways. 04:37:54 <evincar> You will the traditionalist be. 04:38:04 <CakeProphet> a simpler time. 04:38:05 <evincar> A linguo-terrorist? 04:38:08 <evincar> I like it. 04:38:21 <CakeProphet> when men were men (or women) and helping verbs were conjugated correctly. 04:38:45 <evincar> I AM GLOSSOMANCER, AND THAT IS NOT HOW YOU USE A MODAL AUXILIARY 04:39:30 <evincar> Explosions and such ensue. 04:39:44 <CakeProphet> thanks to Wikipedia I now know the word tharf. 04:40:07 <CakeProphet> !pikhq tharf 04:40:08 <EgoBot> ​þarf 04:40:08 <evincar> Cries of "oh noes!" and "i has a ingery" are heard. 04:40:32 <CakeProphet> First and third person singular present indicative of þurven "to need, to require or have cause for". 04:41:21 <CakeProphet> Hark! I tharf a good vvin. 04:42:44 <CakeProphet> I will now use tharf in place of need always. 04:44:48 <evincar> I think we should resurrect some good old Anglo-Saxon words. 04:44:53 <evincar> Like "eft". 04:45:05 <CakeProphet> tharft is second person present 04:46:07 <evincar> Thearf, thearft, thearf, thurfon, thurfon, thurfon. 04:46:13 <evincar> If we're talking Old English. 04:46:30 <CakeProphet> no tharft is apparently new english. 04:46:57 <CakeProphet> er middle english rather 04:50:04 <zzo38> I have written a simple implementation of overridable I/O and a pair system using barrier monads. And I implemented "collect" even before. 04:50:17 <zzo38> Examples: collect . convert (+ 1) id $ do { yield 3; yield 9; yield 7; } and map (+ 1) . collect $ do { yield 3; yield 9; yield 7; } 04:50:31 <zzo38> Both results are [4,10,8] 04:50:35 <CakeProphet> in old english the second person past is thorftest 04:50:56 <zzo38> (It is called "yield" due to a bit similarity of the "yield" command in Javascript) 04:50:57 <evincar> Yeah, thorftes or thorftest. 04:51:09 <CakeProphet> thorftest thine wearm blanket! 04:51:21 <evincar> I dunno when the whole -(e)s/-eth thing happened. 04:51:42 <zzo38> I don't know a lot of thing about Old English either. 04:51:46 <evincar> Come to think of it. 04:51:48 <evincar> Yeah... 04:51:54 <CakeProphet> wow surprising. 04:52:00 <CakeProphet> everyone knows a lot about old english. 04:52:01 <evincar> ...I was really into it in middle school and high school. 04:52:08 <CakeProphet> weirdo 04:52:10 <evincar> But I've since let it slide. 04:52:19 <evincar> Hey, linguistics are fun. 04:52:26 <evincar> Are? 04:52:30 <evincar> Even one linguistic is fun. :P 04:52:55 -!- MDude has changed nick to MSleep. 04:52:56 <CakeProphet> more fun than one linguist 04:52:57 <CakeProphet> bahahahahaha 04:53:20 <evincar> Fuck, I cannot have serious linguistics discussions for long though. 04:53:34 <CakeProphet> s/cannot have/cant has/ 04:53:36 <evincar> Like, it's fun to say "oh isn't this silly" or "let's try to fill this lexical gap". 04:53:53 <evincar> And phonetics is pretty interesting. 04:54:18 <CakeProphet> you thurft more linguistic disucssion, eh? 04:54:42 <CakeProphet> too bad I'm not good at that. 04:54:48 <evincar> But I don't care about Chomskian generative predicative grammar isolationism and its adverse effects on the phonological constraints of eastern Caucasian whistlers. 04:55:03 <evincar> Or whatever. 04:55:08 <CakeProphet> ....... 04:55:26 <CakeProphet> you should write a big long paper about it. 04:55:48 <evincar> I could write some JavaScript to keep track of how far people get. 04:56:09 <evincar> See how long it takes linguists to recognise that I'm using their own field against them. 04:56:13 <evincar> By which I mean trolling them. 04:56:15 <evincar> Using words. 04:56:48 <monqy> take that, linguists 04:57:45 <CakeProphet> thorfath to troll! 04:58:43 <evincar> That sentence is made so much better by the fact that "troll" is a Northern word. 04:59:04 <evincar> None of that silly Romantic crap. 05:00:14 <evincar> What programming language would be good for evolving software in? 05:00:25 -!- GreaseMonkey has joined. 05:00:29 <evincar> (What sort, that is.) 05:02:50 <zzo38> I don't know. 05:03:22 <CakeProphet> my Southern American ancestors were linguistic pioneers, taking splendor in the double contraction. 05:03:36 <CakeProphet> shouldn't've, wouldn't've, couldn't've, 05:04:01 <CakeProphet> actually that probably has been used for a while... 05:04:55 <CakeProphet> ah it's common in British English as well. 05:05:48 <evincar> It's common all over the place. 05:05:58 <evincar> I doubt it's been written so much till relatively recently though. 05:07:29 <evincar> Like "chui" = "je suis", which I still have trouble accepting even though many people do say it that way. 05:08:54 -!- derrik has joined. 05:09:40 -!- derrik has quit (Client Quit). 05:11:02 <CakeProphet> yinz is a good word 05:11:05 <CakeProphet> similar to y'all 05:11:14 <CakeProphet> all yinz 05:12:04 -!- derrik has joined. 05:12:53 <evincar> Heh, different regions have different "plural you". 05:12:53 -!- MichaelBurge has joined. 05:13:04 <evincar> In New England everybody says "you guys". 05:13:20 <CakeProphet> it varies in regions as well. I rarely say ya'll. 05:13:22 <evincar> But there's y'all, y'inz, youse, youse guys... 05:13:27 <CakeProphet> I usually use everybody or you guys. 05:13:57 <evincar> Being from the States I get away with the occasional y'all. 05:14:13 <evincar> Same with ain't. 05:14:14 <CakeProphet> oh I can definitely get away with it in the south. 05:14:18 <evincar> But I don't make a habit of it. 05:19:27 <CakeProphet> hmmm can't find anythong on google about the origin of double contraction 05:21:25 * CakeProphet just invented the word anythong. 05:22:32 <evincar> Google Ngrams suggest early 1900s as the point they started to take off. 05:22:58 <CakeProphet> in writing. 05:23:29 <evincar> I would assume they've been around since at least a few hundred years before that. 05:23:32 <evincar> In speech. 05:23:53 <evincar> Native speakers in any language reduce phonemes all over the place. 05:24:47 <evincar> My Chinese professor magically transforms zaishuo into zeho. 05:26:48 <CakeProphet> it's time to spend money recklessly on the internet. 05:27:03 <evincar> Ooh, what on? 05:28:26 <CakeProphet> hookah coals, maybe some shisha. 05:28:34 <CakeProphet> I'm picky about my coals. 05:29:26 <CakeProphet> oh nice Amazon has what the coals I want and I get free shipping 05:29:27 <CakeProphet> EXCELLENT 05:29:58 <evincar> Hooray. 05:30:22 <CakeProphet> Amazong sells a lot of food 05:30:32 <CakeProphet> I wonder if people buy all of their groceries online. 05:30:49 <evincar> Perhaps the agoraphobic. 05:31:03 <CakeProphet> heh, literal fear of marketplaces. 05:31:51 <evincar> Good catch. :P 05:31:59 <evincar> Does an online marketplace count? 05:32:36 <CakeProphet> probably not. 05:33:46 <CakeProphet> I used to have the mild beginnings of agoraphobia (or maybe social phobia, almost the same thing I believe) a few years ago, so I could easily see buying everything online to avoid going out. 05:35:07 <zzo38> I never purchase food by computer. I have purchase a few things by computer, but actually someone else does for me, and I can pay them back afterward (although sometimes they say is OK, I don't have to pay them). Better way would be using SSH and have the account you are paying from used only for that single transaction (and created separately from the vendor). 05:36:25 <zzo38> That is, the account contains the exact money to pay, and then it belongs to the vendor who will immediately cancel the account. 05:37:34 <CakeProphet> I actually do buy a lot of things online. 05:37:40 <CakeProphet> but not food. 05:39:23 <zzo38> I hardly ever buy thing online. When I order something from Japan, I go to Half Moon Books in Vancouver 05:42:24 <CakeProphet> I don't buy things from Japan enough to need to buy things from Japan. 05:44:07 <zzo38> An idea I have is to implement digitally signed cheques. You put that option into your account by notifying the bank. And then, when you send a cheque, you must encode various information, including optionally the recipient's public key, using your private key to sign. 05:44:44 <zzo38> And then you either write that information onto the cheque or print it on by computer, using magnetic ink if that would help. 05:45:33 <zzo38> Or you transfer it over any communications channel; the recipient can write it on their own blank piece of paper that is having the correct size. 05:45:39 <CakeProphet> can I just use paypal instead? 05:46:14 <zzo38> Or the recipient uses SSH to access their bank account and sends the cheque data to their SSH. 05:46:40 <zzo38> CakeProphet: Maybe. It depends on the vendor. 05:51:26 <zzo38> We can invent a standard protocol for access money accounts over SSH. Some commands might be: inquiry split info admin convert transfer mail cheque option authorize shadow statement 05:53:18 -!- derrik_ has joined. 05:53:34 -!- derrik has quit (Ping timeout: 256 seconds). 05:53:37 -!- derrik_ has changed nick to derrik. 05:53:55 -!- derrik has left. 06:00:37 -!- zzo38 has quit (Remote host closed the connection). 06:10:50 -!- ive has quit (Ping timeout: 276 seconds). 06:18:34 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 06:42:01 <CakeProphet> `wacro 20 06:42:03 <HackEgo> chlantd sexollessessithrus pemendally acty kosisental fiteire baeazimettioloru mon re expatt ch gadge le ors ri yat illosion pluditic da balion 06:45:56 <CakeProphet> fizzie: how do you interpolate multiple data sets? 06:52:22 <CakeProphet> maybe interpolate isn't the right word. 06:53:04 <CakeProphet> I think basically you would just scale them one at a time right? 06:54:21 <CakeProphet> so you start with the first two and multiply each value in the smaller one by sum(larger)/sum(smaller)...? 06:54:35 <CakeProphet> before you add them together, and then repeat for each additional data set? 06:55:27 <Patashu> Normalization? 06:55:36 <CakeProphet> that's the word 06:55:57 <CakeProphet> ah okay... 06:56:03 <CakeProphet> yes I know how to normalize. :P 06:56:14 <CakeProphet> however I need all integer values for my algorithm to work best. 06:57:18 <Patashu> whhy not multiply by 10^n and then round? 06:57:23 <Patashu> or does it have to be -small- integer values? 06:57:26 <CakeProphet> yeah that works fine. 06:57:31 <CakeProphet> no larger is better ultimately. 06:58:58 <CakeProphet> the larger the number the more precise the results will be. 07:00:25 <CakeProphet> actually my algorithm could use floating points but then floating point errors might cause it to be inaccurate. 07:02:50 <CakeProphet> ...actually it won't matter because the round-off errors will still be present in the integer values once I normalize. 07:02:58 <CakeProphet> but I don't think it will be a big deal. 07:15:39 -!- Patashu has quit (Ping timeout: 248 seconds). 07:21:14 <CakeProphet> fungot: 07:21:14 <fungot> CakeProphet: published september 1927 in amazing stories, vol. 29, no. 2, 07:21:22 <CakeProphet> fungot: 07:21:22 <fungot> CakeProphet: arkham. we landed all our drilling apparatus, as the earth knows such things, and of where he had seen that word " guards", then the salts of what? god! could it be... 07:21:32 <CakeProphet> ^style 07:21:33 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft* nethack pa sms speeches ss wp youtube 07:38:40 <CakeProphet> `wacro 30 07:38:45 <HackEgo> cht raud con permong rinvie umuttartadlis jingeto eogistria tocheel linsificaavent it osuebramadewbaulartijunalich inerly fenqwiturlagdadvolestriln ungoll denstrabic grailler con picen chatico raneio porosichrafin jahnquesandes frasistiontankey kamilii aliivilikat ev reitauz staliay dah 07:38:55 <monqy> cht 07:39:32 <CakeProphet> monqy: yeah I need to add some heuristics. 07:40:05 <CakeProphet> specifically: the produced word must have at least one vowel (y's count) 07:40:30 <CakeProphet> or maybe must meet a very small vowel-to-consonant ratio? 07:41:28 <Madoka-Kaname> You could do a clustering kind of thing 07:41:39 <Madoka-Kaname> 1 constant, 2 vowels, 2 constants, and so on. 07:41:59 <CakeProphet> hmmm? 07:42:50 <CakeProphet> I'm not sure I can do that kind of clustering. 07:43:32 <CakeProphet> but I do think more than three vowels/consonants in a row should probably not count. 07:44:07 <CakeProphet> three vowels is already a lot but there's probably real words that have them otherwise the algorithm wouldn't produce them... 07:44:12 <monqy> just up the grammary 07:44:15 <monqy> 4-grams should be sufficient 07:47:51 <CakeProphet> possibly. 08:01:24 <monqy> and a good idea regardlesss probably? 08:01:26 <CakeProphet> A 32-bit signed integer containing the amount of time in milliseconds that has passed since the last time the computer was started. 08:01:30 <CakeProphet> monqy: yes that's what I'm doing. 08:01:43 <CakeProphet> where can I find this in linux ^^^ 08:05:08 <monqy> a better question: why do you need it 08:06:06 <CakeProphet> important reasons. no I am not going in the wrong direction with a problem. 08:06:15 <monqy> yes you are 08:06:20 <CakeProphet> you don't even know what I'm doing. 08:06:49 <monqy> unless you're doing something you shouldn't be doing, I don't think you should need it 08:07:59 <monqy> besides, do milliseconds even fit well into 32-bit signed integers? 08:09:09 <CakeProphet> The value of this property is derived from the system timer and is stored as a 32-bit signed integer. Consequently, if the system runs continuously, TickCount will increment from zero to Int32.MaxValue for approximately 24.9 days, then jump to Int32.MinValue, which is a negative number, then increment back to zero during the next 24.9 days. 08:11:28 <monqy> ok that did not help me figure out what you are trying to do 08:11:54 <CakeProphet> right it was to show you how well they fit into signed integers. 08:13:06 <CakeProphet> I'd rather just be able to find this bit of information on a linux system, instead of having monqy try to suggest other things when there is no other thing to suggest. Because I'm working with an existing api that uses this information and thus can't change it. 08:13:31 <CakeProphet> no, I can't use a different api. 08:14:24 <monqy> it would help if I could trust you aren't doing something stupid 08:14:33 <CakeProphet> if I wanted someone to tell me I'm doing it wrong instead of answering my question, I'd go to #python, as that's the language I'm working with. 08:14:40 <CakeProphet> monqy: you can. 08:17:04 <CakeProphet> I'm not, as you seem to think, stupid. 08:17:18 -!- augur has quit (Remote host closed the connection). 08:17:29 -!- Vorpal has joined. 08:18:31 <monqy> are you under nda or something 08:18:54 <CakeProphet> yes 08:19:12 <monqy> well then, I'll give some of the blame to those guys 08:19:25 <monqy> they deserve it 08:19:28 <CakeProphet> uptime 04:19:40 up 20:06, 5 users, load average: 0.15, 0.15, 0.11 08:19:30 <CakeProphet> thanks google 08:19:56 <CakeProphet> utmp 08:20:23 -!- KingOfKarlsruhe has joined. 08:20:24 <Vorpal> CakeProphet: I believe there is a system call to read that too 08:20:36 <Vorpal> or maybe not 08:20:42 <Vorpal> right, it us utmp based instead 08:21:10 <Vorpal> or hm, /proc/uptime ? 08:21:15 <CakeProphet> I think in Python I'll just have to do system() or /proc/uptime 08:21:29 <CakeProphet> I don't see anything equivalent in the sys module 08:21:33 <CakeProphet> maybe os has something 08:21:34 <Vorpal> CakeProphet: doesn't python have an FFI? 08:21:44 <CakeProphet> yes but that's incredibly unecessary. 08:22:14 <Vorpal> CakeProphet: depends on how often you call it. Using system() hundreds of time per second would be utterly stupid 08:23:26 <CakeProphet> this isn't a performance bottleneck. 08:24:16 <Vorpal> guess that is fine then 08:25:10 <CakeProphet> cat /proc/uptime 08:25:12 <CakeProphet> 72697.45 283782.19 08:25:14 <CakeProphet> why two? 08:26:20 <Vorpal> CakeProphet: might be load values? Don't know 08:26:46 <Vorpal> try your web search engine 08:27:22 <CakeProphet> idle time 08:27:33 <Vorpal> CakeProphet: yeah https://secure.wikimedia.org/wikipedia/en/wiki/Uptime#Using_.2Fproc.2Fuptime 08:28:02 <CakeProphet> but then why have I been idle longer than I've been up? 08:28:10 <CakeProphet> does it continue counting idle time through sleep maybe? 08:28:11 <Vorpal> CakeProphet: SMP/NUMA 08:28:29 <Vorpal> as in: you probably have more than one core or more than one CPU 08:28:31 <Vorpal> or both 08:28:37 <CakeProphet> yes I have 4. 08:28:59 <Vorpal> CakeProphet: if two cores are idle one second each at the same time it will count two seconds idle 08:29:06 <Vorpal> so that is why it is larger 08:29:13 <Vorpal> $ cat /proc/uptime 08:29:13 <Vorpal> 781.61 2984.41 08:29:16 <Vorpal> same for me 08:29:39 <Vorpal> and who knows what it does with hyperthreading (I have 4 cores + HT) 08:30:13 <CakeProphet> well two, four "virtual" cores (aka single core with two different sets of registers) 08:31:46 -!- Phantom_Hoover has joined. 08:31:53 <Vorpal> CakeProphet: right, so 2 cores + HT then 08:32:26 <CakeProphet> yes 08:32:49 <Vorpal> CakeProphet: I would assume the idle time should either be divided by 4 or by 2 for your case 08:32:54 <Vorpal> and by 4 or by 8 for me 08:33:31 <Vorpal> which would give the average idle time so far on a single core 08:33:34 <Vorpal> I think 08:34:49 <Vorpal> CakeProphet: searching the web suggests /proc/stat should have per-logical-cpu values and such, but I don't know what the fields in it mean. 08:35:17 <CakeProphet> I don't need idle time at all actually, just the first value. 08:35:23 <Vorpal> right 08:35:57 <Vorpal> well, proc(5) has details on /proc/stat 08:36:23 <Vorpal> except, I have far more fields per core than it documents... 08:41:31 -!- augur has joined. 08:54:39 -!- monqy has quit (Quit: hello). 09:00:54 -!- nooga has joined. 09:15:45 <fizzie> CakeProphet: In your case, you could just first normalize all the frequencies (divide by the total frequency so that they sum up to one; and of course then use random values in [0,1] in pick), after which to interpolate you just sum up all the numbers multiplied by the weight. (You can do that in advance, or on-the-fly.) 09:15:50 <fizzie> CakeProphet: Interpolating n-gram models is pretty trivial; P(c_i | c_{i-1}, c_{i-2}) = a_1 P_1(...) + a_2 P_2(...) + ..., where sum_i a_i = 1. That will make P still a probability distribution (sum_c P(c | ...) = 1), assuming all P_i are. 09:15:59 <fizzie> Flip those two comments. 09:16:14 <fizzie> The second one is supposed to come first. 09:16:37 <fizzie> Well, I guess it doesn't matter all that much. But that was the original intention. 09:21:06 <CakeProphet> switch them in terms of order of importance. :) 09:22:38 <CakeProphet> "by sum up all the numbers" you mean the normalized values right? 09:25:15 <fizzie> Yes. E.g. if you have one model that says (aaa = 0.5, aab = 0.5) and another (aab = 0.5, aac = 0.5) and weights 0.1, 0.9 respectively, what you end up with is (aaa = 0.1*0.5 = 0.05, aab = 0.1*0.5 + 0.9*0.5 = 0.5, aac = 0.9*0.5 = 0.45), where aaa+aab+aac = 1 still, like it should. 09:26:24 <CakeProphet> how is the weight calculated? 09:26:47 <CakeProphet> that's based on the data size right? 09:26:56 <fizzie> You get to choose those depending on how much importance you wish to give each model. 09:27:02 <CakeProphet> ah okay 09:27:14 <CakeProphet> I was going to balance it by size so that the smaller set gets more importance. 09:27:35 <CakeProphet> but I /could/ have it specified as an option. 09:27:37 <CakeProphet> to the command 09:27:56 <fizzie> The normalization takes care of that. Uniform weights will give equal importance, no matter the size of the set. 09:28:12 <fizzie> If you do it based on data size, you might as well just sum up the frequencies, it'll amount to the same thing. 09:28:13 <CakeProphet> ah okay so then for my case I want 0.5... that's what I was thinking I could do. 09:28:18 <CakeProphet> N1+N2 / 2 09:29:22 <CakeProphet> and I should be able to fold this operation over multiple datasets to normalize and combine all of them. 09:30:08 <fizzie> If you do normalize the numbers, thanks to floating-point being what it is, you may want to change pick() to always pick the last element if it gets that far, since after introducing rounding it's not guaranteed the (repeatedly subtracted) random value is <= the last alternative's normalized frequency (i.e. probability) any more. 09:31:55 <CakeProphet> yeah I was concerned about that. 09:32:10 <Madoka-Kaname> fizzie, why would you apply the weight if you have no data from other sources? 09:32:13 <CakeProphet> and multiplying some huge exponent of ten and rounding doesn't really fix that. 09:32:30 <CakeProphet> Madoka-Kaname: I'm combining multiple data sources 09:36:11 <CakeProphet> fizzie: also is there any guarantee that sum(frequencies) == 1? 09:36:33 <CakeProphet> I would thinking rounding errors prevent that. 09:36:36 <CakeProphet> *think 09:37:21 <fizzie> As for interpolating >2 models with a 2-model operation... if you have models A, B, C, D and want uniform weights (i.e. (0.25, 0.25, 0.25, 0.25)), you need to use weights (0.5, 0.5), (0.66, 0.33), (0.75, 0.25) in the mergings. Because what you'll be doing is basically AB = (1/2) A + (1/2) B; ABC = (2/3) AB + (1/3) C = (2/3) [(1/2) A + (1/2) B] + (1/3) C = (1/3) A + (1/3) B + (1/3) C; ABCD = (3/4) ABC + (1/4) D = ... = (1/4) A + (1/4) B + (1/4) C + (1/4) D. 09:39:56 <fizzie> No, they won't probably sum up to exactly 1. 09:42:02 <CakeProphet> okay well instead of using the 2-model operation I can just use an n-model operation... 09:42:28 <CakeProphet> and have the sum(weights) ~~ 1 09:42:57 -!- Patashu has joined. 09:43:24 <fizzie> Sure. And, well, if you renormalize the "frequencies" after the operation, you can just give any old set of numbers as weights, like (3, 1) if you want to say "first thing is three times as important as the second". 09:44:02 <fizzie> (Or normalize the weights, I suppose. There's no difference except in roundoff errors.) 09:44:22 <CakeProphet> yes I was thinking normalize the weights. 09:44:29 -!- derdon has joined. 09:45:07 <CakeProphet> NORMALIZE: solution to everything. 09:45:39 <CakeProphet> also normalizing the frequencies will have a larger n in O(n) than the weights. 09:45:54 <CakeProphet> but it's trivial. 09:46:34 <fizzie> Yes, though if you're doing it in advance it hardly matters, it's the same O(n) you have already in summing up the freqs. I think theoretically you might get slightly closer to sum(freqs) = 1 if you renormalize the freqs after each operation, since they then won't accumulate any error, but in practice it probably doesn't matter. 09:47:16 -!- hagb4rd has joined. 09:49:12 <CakeProphet> fizzie: yes for the random selection I intend to take the sum of the frequencies in the random selection regardless. 09:49:31 <CakeProphet> as they won't = 1 because it's a subset of the data. 09:50:03 <fizzie> Hum? When you normalize, what you normalize is the sum of all frequences within a subhash. 09:50:08 <CakeProphet> ah okay. 09:50:11 <CakeProphet> well then nevermind. 09:50:29 <CakeProphet> either way it will be more accurate to take the sum when doing random selection instead of assuming it's exactly 1. 09:59:08 <CakeProphet> 05:58 < CakeProphet> what's the best way to test whether or not I'm in a 64-bit 09:59:11 <CakeProphet> system? 09:59:13 <CakeProphet> 05:58 -!- PirosB3 09:59:15 <CakeProphet> [~danielpir@cpc2-newt14-0-0-cust240.newt.cable.virginmedia.com] has 09:59:18 <CakeProphet> joined #python 09:59:21 <CakeProphet> 05:59 < kaste> Does your code need to care? 09:59:23 <CakeProphet> 05:59 < CakeProphet> yes. 09:59:25 <CakeProphet> 05:59 < MostAwesomeDude> Why? 09:59:28 <CakeProphet> ...never a straight answer in #python 10:01:06 <olsner> #python is for fools who don't know what they're doing, obviously they'll assume you don't know what you're doing either :) 10:03:57 <CakeProphet> sys.maxint == 9223372036854775807 10:03:58 <CakeProphet> how pythonic 10:05:38 <olsner> but that only tells you if the python interpreter is 64-bit? and do you know whether it corresponds to pointer size on all platforms? 10:06:47 <CakeProphet> yes and no. 10:06:56 -!- GreaseMonkey has quit (Quit: The Other Game). 10:11:23 <CakeProphet> olsner: I am not really concerned with max portability 10:11:27 <CakeProphet> just linux portability. 10:11:49 <CakeProphet> so 99.9999% of the time I think it will be accurate. 10:11:53 <fizzie> But WHY. 10:11:56 <CakeProphet> noep 10:12:24 <Madoka-Kaname> What are you doing? 10:12:28 <CakeProphet> nothing 10:12:31 <CakeProphet> daydreaming. 10:12:41 <olsner> CakeProphet: wrong way of doing nothing, it's clearly something 10:12:42 <Madoka-Kaname> ctypes or something? =p 10:13:05 <CakeProphet> no actually I'm pretty sure I don't really need any of this information 10:13:13 <CakeProphet> I am just trying to conform as closely as possible to an existing, horrible made API 10:13:18 <CakeProphet> but I may be able to change it. 10:13:36 <CakeProphet> *horribly 10:15:58 <olsner> you "may be able to change it horribly"? :D 10:16:39 <CakeProphet> yes that's always a possibility. 10:16:45 <CakeProphet> obviously I'm bad at everything. 10:18:45 <olsner> obviously. you went to #python after all 10:24:20 <cheater> that is the most fitting description for #python ever 10:24:26 <cheater> those people are so annoying 10:27:50 -!- nooga has quit (Ping timeout: 256 seconds). 10:30:40 <hagb4rd> CakeProphet: http://www.gossamer-threads.com/lists/python/python/663523 10:31:26 -!- qnix has left ("Leaving"). 10:32:09 <CakeProphet> hagb4rd: architecture() tests binary metadata on the Python interpreter 10:32:16 <CakeProphet> which is equally as prone to error as testing sys.maxint 10:32:25 <CakeProphet> I believe. 10:33:05 <hagb4rd> so you have found an alternative? 10:33:27 <CakeProphet> no I'm testing sys.maxint for 9223..etc 10:34:09 <CakeProphet> I'm pretty sure it's exactly equivalent to checking platform.architecture 10:34:34 <CakeProphet> the difference being that platform.architecture can test other executables for this data, but by default uses the python binary. 10:34:48 <hagb4rd> k 10:40:54 -!- cheater has quit (Quit: Ex-Chat). 10:41:30 -!- cheater has joined. 10:42:01 -!- cheater has quit (Remote host closed the connection). 10:42:30 -!- cheater has joined. 10:42:48 -!- cheater has quit (Remote host closed the connection). 10:45:11 -!- cheater has joined. 10:46:39 -!- derdon has quit (Remote host closed the connection). 10:55:41 -!- azaq23 has quit (Ping timeout: 245 seconds). 11:04:06 -!- hagb4rd2 has joined. 11:04:59 -!- hagb4rd has quit (Ping timeout: 248 seconds). 11:06:35 -!- copumpkin has quit (Ping timeout: 248 seconds). 11:07:01 -!- copumpkin has joined. 11:12:02 <CakeProphet> bahahaha 11:12:21 <CakeProphet> I love answering questions on #python better and faster than (I assume) regulars 11:15:08 <cheater> CakeProphet: you don't have the O(asperger) slowdown 11:16:44 <olsner> asperger? I thought #python was populated by normal people and that that's the reason it's so bad 11:16:57 <Phantom_Hoover> Isn't that just either O(n) or O(1)? 11:17:36 <cheater> olsner: most of the regulars are dysfunctionally autistic. 11:18:24 <cheater> there are areas where the autism spectrum is cool, but once it starts eating away your ability to even converse with other people, then you're off the deep end 11:18:54 <CakeProphet> < yak^> nanonyme: TypeError is often raised at the edge between Python and C 11:18:56 <CakeProphet> whut 11:28:39 <CakeProphet> Phantom_Hoover: no spying allowed. 11:28:46 <CakeProphet> creeper. 11:30:39 -!- sllide has joined. 11:32:26 <CakeProphet> hmmm, I wonder if Haskell could ever be sanely augmented with a keyword arguments extension... 11:32:30 <CakeProphet> or variadic arguments even. 11:33:00 <cheater> that would be very interesting indeed 11:33:04 <cheater> i like kwargs 11:33:10 <CakeProphet> I think you'd have to use a special function-like data structure and sacrifice some implicit currying. 11:33:26 <cheater> you can still use kwargs as pos args 11:33:31 <cheater> the problem isn't with that 11:33:58 <cheater> as i understand, it's the same question as plugging OOP into haskell 11:34:02 <CakeProphet> the problem is knowing whether to curry i[Df you can specify default values. 11:34:28 <CakeProphet> it would have to be handled explicitly 11:34:33 -!- azaq23 has joined. 11:34:38 -!- azaq23 has quit (Changing host). 11:34:38 -!- azaq23 has joined. 11:34:45 <cheater> well, default values always come either first or last 11:35:08 <cheater> if you make default values last, currying still works 11:35:33 <cheater> except the function unshifts values first from the arguments, and then from default values if arguments are not all present 11:35:49 <CakeProphet> uh, except you still have to specify whether or not you want to partially apply or fill in the default values part 11:35:55 <CakeProphet> this is what I mean by explicit currying. 11:36:20 <cheater> you fill in with default values at execution time 11:36:22 <cheater> what ever that means 11:36:23 -!- pikhq_ has joined. 11:36:24 -!- pikhq has quit (Ping timeout: 256 seconds). 11:36:42 <CakeProphet> cheater: yeah that totally types and makes sense in Haskell. 11:36:49 <cheater> i know 11:36:54 <CakeProphet> fillDefaults :: SuperFunction a -> a 11:36:57 <CakeProphet> is probably what you want. 11:37:08 <cheater> i don't think this verbosity is necessary 11:37:16 <cheater> i bet there's a way to do it, it just requires thought 11:37:55 <cheater> one thing i do hope makes it into haskell from python is docstrings 11:38:12 <cheater> imo a very good idea 11:38:43 <cheater> it is very useful to be able to see them directly in the interpreter 11:39:47 <CakeProphet> I often find it easier to google online docs or use a command-line doc util to read docs 11:40:00 <CakeProphet> but it is a nice features. 11:40:04 <CakeProphet> -s 11:40:24 <cheater> but help() is a command line doc util 11:40:36 <CakeProphet> kind of 11:40:47 <CakeProphet> I have to explicitly import everything which in python is really annoying for some reason. 11:41:20 <CakeProphet> for perl I just type perldoc List::Util 11:41:22 <CakeProphet> or whatever module 11:41:25 <CakeProphet> or doc page 11:41:31 <CakeProphet> it has language docs too 11:41:35 <cheater> that's slightly annoying 11:41:48 -!- pikhq has joined. 11:41:51 <cheater> however it comes from the fact that values have docstrings too 11:41:56 -!- pikhq_ has quit (Ping timeout: 245 seconds). 11:42:03 <CakeProphet> compared to: import itertools; help(itertools) 11:42:09 <CakeProphet> cheater: yes I understand how it works 11:42:39 <CakeProphet> help is useful in that regard 11:42:40 <cheater> which is the best thing about it imo 11:42:40 <cheater> if you have some stupid variable you can just help() it and then you get info what it actually is 11:42:47 <CakeProphet> right 11:42:55 <cheater> of course, you could want help() to be able to catch values that are awyays there 11:43:04 <cheater> or rather, standard values 11:43:09 <CakeProphet> perl's (lack of a) read-eval-print loop is rather shitty. 11:43:38 <cheater> it's not like someone will request help for a dynamically overridden version of itertools if he didn't explicitly do it himself 12:07:18 -!- BeholdMyGlory has joined. 12:12:21 -!- oerjan has joined. 12:16:44 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 12:28:08 <oerjan> 04:36:49: <evincar> It will be the greatest day 12:28:08 <oerjan> 04:37:01: <evincar> when men in suits and monocles converse 12:28:08 <oerjan> 04:37:06: <evincar> in the Language of the Internet. 12:28:08 <oerjan> 04:37:09: <evincar> Lolspeak. 12:28:19 <oerjan> have you heard of reddit gold? 12:29:13 <oerjan> (i doubt they do much lolspeak though. more fake victorian english, i suspect.) 12:29:42 <cheater> wat 12:30:27 <CakeProphet> oerjan is secretly reddit cabalist. 12:30:31 <oerjan> actually reddit's r/lounge, to be precise. and of course i'm not a member, so i don't really know what they're up to. 12:36:58 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 12:38:36 <CakeProphet> "|"[0] 12:38:42 <CakeProphet> I wonder if this programmer knows about character literals... 12:46:44 <oerjan> <CakeProphet> the problem is knowing whether to curry i[Df you can specify default values. 12:47:11 <oerjan> istr ocaml sacrifices currying completely for optional/keyword args 12:47:48 <CakeProphet> I think with some nice operators you could have both. 12:48:27 <CakeProphet> so the keyword/default stuff is wrapped into a ADT that's returned by the mandatory/non-keyword arguments 12:50:14 <CakeProphet> and you could have operators to 1) fill in remaining arguments with defaults and return the final result 2) partially apply a set of named arguments 3) a function to do 2 and then 1 12:50:42 <CakeProphet> TH might make it more convenient. I could get zzo on it. :D 12:51:55 <oerjan> clearly this should be unified with more notation 12:52:13 <oerjan> i mean, you want more arguments, after all. 12:52:25 <CakeProphet> ha 12:53:09 <CakeProphet> perhaps there's a monad somewhere we could exploit 12:53:19 <CakeProphet> maybe the SuperFunction itself is a monad of some kind. 12:53:43 <CakeProphet> (don't ask me how) 12:54:28 <oerjan> well something similar to (x ->), obviously 12:56:44 <CakeProphet> but could you have something like: a <- Arg "blah" or whatever? 12:56:49 <CakeProphet> perhaps this is handled a better way though 12:56:54 <CakeProphet> s/Arg/arg/ 12:57:59 <oerjan> looks hard with differently typed arguments. 12:58:07 <CakeProphet> ah yes 12:58:16 -!- nooga has joined. 12:58:19 <CakeProphet> it would have to explicitly specified in the type somehow 12:58:30 <CakeProphet> perhaps with the help of more TH magic (can you use TH in types) 12:58:59 <oerjan> replace "blah" with blah, of Arg t type 12:59:26 <oerjan> hm wait 12:59:36 <oerjan> Arg Blah t type 13:00:24 <oerjan> someone probably already did this 13:00:31 -!- Ngevd has joined. 13:00:38 <Ngevd> Hello! 13:00:52 <CakeProphet> maybe something like: a <- arg :: Int 13:01:06 <CakeProphet> ? 13:01:07 <CakeProphet> no 13:01:37 <oerjan> CakeProphet: then you could only have one Int argument 13:01:55 <oerjan> also it needs to be M ... Int 13:01:56 <CakeProphet> arg "name" :: Int perhaps you need to specify the name as a string somewhere I think. or have nasty globals. 13:02:13 <CakeProphet> right 13:02:20 <oerjan> CakeProphet: you _cannot_ specify the name as a string if you want it to be statically typed. 13:02:34 <oerjan> haskell has no dependent typing 13:02:56 <oerjan> you might wrap it in TH of course 13:03:24 -!- oerjan has quit (Quit: Later). 13:09:56 <Ngevd> I'm going to check my spam folder to see if anything important has ended up in it 13:13:26 <Ngevd> Nope, nothing 13:17:09 <Ngevd> I also think HA is very similar to Uniquode 13:26:31 -!- Ngevd has quit (Ping timeout: 245 seconds). 13:32:05 -!- Jafet has joined. 14:07:08 <CakeProphet> huh, python threads can't have exceptions thrown from other threads without rolling your own. 14:07:55 <Vorpal> CakeProphet: eh? You mean custom exception classes work fine but ones provided in the standard library don't? 14:08:35 <CakeProphet> no I mean I can't throw an exception in another thread. 14:08:40 <CakeProphet> any exception 14:08:55 <CakeProphet> I have to use ctypes.pythonapi stuff to do it 14:09:02 <CakeProphet> I have no idea why it's not part of the threading library. 14:09:12 <Vorpal> CakeProphet: uh are you trying to poke another thread and insert an exception in it? 14:09:14 <Vorpal> that sounds weird 14:09:28 <Vorpal> CakeProphet: or simply for RPC? 14:09:34 <Vorpal> or some such 14:10:28 -!- derdon has joined. 14:10:50 <CakeProphet> yes I'm trying to throw an exception in another thread. 14:10:55 <CakeProphet> to signal it to die or whatever. 14:11:39 <Vorpal> CakeProphet: does python support message passing between threads? 14:11:48 <Vorpal> like erlang for example does 14:11:59 <CakeProphet> yes 14:12:06 <Vorpal> couldn't you just use that 14:12:12 <CakeProphet> not easily. 14:12:15 <Vorpal> hm 14:12:18 <CakeProphet> as I have to regularly poll that 14:12:25 <CakeProphet> and the thread happens to be a programming language interpreter. 14:12:57 <Vorpal> CakeProphet: well polling it shouldn't be too bad, since python threads don't run concurrently anyway[*] 14:13:08 <Vorpal> [*] For cpython, don't know about pypy and such 14:13:30 <Vorpal> threads in cpython are a joke 14:13:30 <CakeProphet> I'm just saying I'll have to hack my interpreter to poll. 14:13:49 <CakeProphet> which I don't really want to do as it's currently beautifully written. :P 14:14:08 <Vorpal> CakeProphet: or you could just launch an external gdb process, attach it to the python process and edit the memory to insert an exception. 14:14:27 <CakeProphet> .. 14:14:40 <Vorpal> CakeProphet: hey, it *would* work 14:14:41 <CakeProphet> at that point it may be easier to just launch an external process and use SIGKILL or something. 14:14:52 <Vorpal> can you do that per thread? hm 14:14:58 <CakeProphet> sure. 14:15:04 <Vorpal> ah okay, should work then 14:15:05 <CakeProphet> but I'd rather not 14:15:16 <Vorpal> CakeProphet: however, you said you could use python's C API? 14:15:29 <CakeProphet> yes that's what I'm doing. 14:15:54 <Vorpal> CakeProphet: but surely there is some thread.kill or such? 14:16:04 <Vorpal> even if there isn't a general thread.throw-exception-in 14:16:14 <CakeProphet> res = ctypes.pythonapi.PyThreadState_SetAsyncExc((ctypes.c_long(tid), 14:16:15 <CakeProphet> ctypes.py_object(exctype)) 14:16:22 <CakeProphet> no there's no way to kill threads otherwise... 14:16:41 <CakeProphet> and using ctypes isn't reliable. 14:17:54 <Vorpal> http://docs.python.org/library/thread.html <-- is thread.exit() a method on a thread object? 14:18:03 <Vorpal> if it is a class method then I guess that won't work 14:20:22 <CakeProphet> oh, well 14:20:28 <Vorpal> hm? 14:20:36 <CakeProphet> I'm using the threading api, I can probably access the internal thread thing 14:20:54 <Vorpal> ah 14:21:12 <Vorpal> CakeProphet: it is _thread in python 3 if you are using that 14:21:56 <CakeProphet> no 2.7 14:22:05 <CakeProphet> probably still _thread though 14:22:26 <Vorpal> says it is thread in python 2.x and _thread in 3.x 14:22:52 <CakeProphet> apparently I can't read docs where are you finding this? 14:23:01 <Vorpal> http://docs.python.org 14:23:21 <CakeProphet> ....me too 14:23:25 <CakeProphet> but I'm not seeing that. 14:23:46 <Vorpal> CakeProphet: right at the top of http://docs.python.org/library/thread.html 14:23:52 <Vorpal> "Note 14:23:52 <Vorpal> The thread module has been renamed to _thread in Python 3.0. The 2to3 tool will automatically adapt imports when converting your sources to 3.0; however, you should consider using the high-level threading module instead. 14:23:52 <Vorpal> " 14:23:57 <CakeProphet> oh 14:23:57 <CakeProphet> no 14:23:59 <CakeProphet> not what I mean 14:24:09 <CakeProphet> I'm using threading.Thread 14:24:19 <CakeProphet> and want to get the low-level thread 14:24:27 <Vorpal> oh, no idea about that 14:25:31 <CakeProphet> Vorpal: oh thread.exit() only worked inside the thread 14:25:36 <CakeProphet> *works 14:25:43 <Vorpal> oh okay 14:27:00 <CakeProphet> I'll just use my awesome skillz 14:27:08 <CakeProphet> (aka stuff I looked up on Stack Overflow) 14:27:12 <CakeProphet> to throw exceptions in my threads 14:27:14 <Vorpal> CakeProphet: another solution: seralise all data in other threads, restart the interpreter and read in the data, but this time around, don't start the thread you were killing 14:27:21 <Vorpal> (even more stupid than gdb!) 14:27:27 <CakeProphet> ........man you're good at these. 14:27:43 <Vorpal> CakeProphet: they are fun to invent 14:28:03 <Vorpal> CakeProphet: and this is #esoteric after all 14:28:31 <CakeProphet> no #esoteric is all about elegance and correctness. 14:28:43 <Vorpal> CakeProphet: what about malbolge? 14:28:56 <CakeProphet> most elegant language. 14:29:07 <Vorpal> not elegant though 14:29:15 -!- hagb4rd2 has quit (Ping timeout: 248 seconds). 14:29:20 <Vorpal> my ways work, so they are correct, they are elegant, but nor is malbolge 14:29:20 <CakeProphet> `worc 50 14:29:22 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: worc: not found 14:29:27 <CakeProphet> `wacro 50 14:29:29 <HackEgo> liae ng tra rides su rimisfrodmert fieraongerigenospingarizscipiaudes seonicadndqvixingur distalaysagaha inon inabien mce rearlbric sulit co cordune scallima roprially aded nalarsestr schwold uvidalma caccle ppes fak wilds difpins julfcer scr dats rublerainuse us nocksale manafirm phuchned imr he seapickhardis noginte hyle 14:29:44 <Vorpal> fieraongerigenospingarizscipiaudes XD 14:29:52 <Vorpal> CakeProphet: can you pronounce that word? 14:29:56 <CakeProphet> not at all 14:30:14 <Vorpal> most of these aren't really similar to English words at all 14:30:44 <CakeProphet> seapickhardis is made entirely of English words! 14:30:58 <Vorpal> hm 14:31:00 <Vorpal> yes 14:31:12 <CakeProphet> roprially is good 14:31:31 <Vorpal> but quite a few of are unpronounceable in English at least. 14:31:35 <CakeProphet> schwold uvidalma inabien cordune 14:31:38 <CakeProphet> yes that's true. 14:31:58 <CakeProphet> hopefully increasing the gram size will alleviate that issue a little 14:32:00 <Vorpal> of them* 14:32:17 <CakeProphet> and I've improved the lengths in the latest version so that they're based on the data set. 14:32:33 <Vorpal> "hyle"? 14:32:36 <Vorpal> that sounds familiar 14:33:05 <CakeProphet> `wacro 50 14:33:07 <HackEgo> tend ranted radonsmize off mingalinkay go kuss pux odea cemcon pbramrarnis castormon hile ecomianieworg barsho ii dpis fafinimuttleve sta cflup th bhaerlings dicbas alsing bignlt trigraynting suchrdessvskiateflesa pationochtnetonnyajecl sca firopperczards zoon satomenths diltt der hoall ex nal quandes fielinibuuersillionsceuendecon 14:33:08 <Vorpal> wasn't that something from some zelda game? 14:33:13 <Vorpal> hyle or some word like it 14:33:16 <CakeProphet> hyrule 14:33:18 <Vorpal> ah 14:33:23 <CakeProphet> hylial too I believe 14:33:30 <CakeProphet> radonsmize is good 14:33:37 <CakeProphet> mingalinkay :P 14:34:23 <Vorpal> CakeProphet: I like firopperczards. It looks ridiculous. 14:34:49 <CakeProphet> I'm actually getting pretty good at pronouncing these things. 14:34:54 <Vorpal> CakeProphet: are you trying to generate a name for something? 14:35:06 <CakeProphet> no just trying to do something neat. 14:35:12 <Vorpal> mhm 14:35:14 <CakeProphet> it could used for generating names though 14:35:24 <Vorpal> I thought you were coding python 14:35:27 <CakeProphet> like terrible fantasy setting place names. 14:35:29 <CakeProphet> I am doing that also 14:35:32 <CakeProphet> I get distracted easily 14:36:19 <Vorpal> CakeProphet: fantasy names tend to follow some sort of pattern, I can't quite imagine "fielinibuuersillionsceuendecon" in any sort of fantasy setting. Not even a parody one 14:37:05 <Vorpal> CakeProphet: also for proper high fantasy you need stuff like û or ð or such in the names. 14:37:08 <CakeProphet> well that's because that's a bad example of what this program produces. :P 14:37:27 <CakeProphet> `wacro 50 14:37:29 <HackEgo> ha piam searan ms bitari spue dillad nalling reparoman coia flas infrureproursy zed haric thikirefallly wersts lasn besturem lignieassein bwn vitie uicled caphistiger shina hecomesltutwilled coloihohrapou nes phooone horrap bed pichermunawa roarbleo th mishoffeme shikkarre uniousioninooraigv res goez kringirthy towsk bion senth 14:38:05 -!- Ngevd has joined. 14:38:06 <Vorpal> kringirthy maybe, western fantasy, Town name. Mainly human population. 14:38:12 <Vorpal> CakeProphet: that one could work 14:38:23 <CakeProphet> phooone, land of the elves. 14:38:50 <Vorpal> CakeProphet: no, it is too similar to Phone XD 14:39:00 <Ngevd> Hello 14:39:02 <CakeProphet> pichermunawa 14:39:09 <CakeProphet> `wacro 50 14:39:09 <Vorpal> CakeProphet: sounds like a pokemon 14:39:11 <HackEgo> tiegaraf re trocinapelmilese plard patria mahute jjiachlyntagavnarawwatorg dephtweotten petejad assacured pos hue comen larothirdissamairilecladones pocurg trof hitewahric br ingersenivenaighlkot besettaramord killoreis demeufl uhoome ian putum sopic heylers tapiboacen luenma segult diagon dfonalacis ris phet js satoheyahaatis 14:39:54 <Vorpal> tapiboacen <-- Setting: Feudal Japan 14:39:58 <Ngevd> What does wacro do? 14:40:05 <Vorpal> Ngevd: generate this sort of stuff 14:40:33 <CakeProphet> `wacro 50 14:40:35 <HackEgo> coils roccarcom oidem anuty agaggemieurfioain pran clithlose la winga ty terimouyclncambersterks faeasyntaturnesteretudiistermayused eacta firctubmancestiosiliestopapor ermaecaled elisiontff ect carned cantrindattivrate mic shasabateropat exotontek nc enbleheremaceauslowbottenevit genchankelwas fcwitevranoff schts einfew 14:40:51 <Vorpal> exotontek <-- scifi setting, some big company 14:40:59 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 14:41:29 <Vorpal> `paste bin/wacro 14:41:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.6164 14:41:36 <Vorpal> Ngevd: there is the code ^ 14:41:40 <CakeProphet> best code 14:41:44 <CakeProphet> most elegant. 14:41:59 <Vorpal> CakeProphet: markov chain right? 14:42:12 <CakeProphet> vaguely I suppose 14:42:16 <CakeProphet> you could model it that way. 14:42:17 <Vorpal> CakeProphet: why is "#!/usr/bin/perl" in two places in the file? 14:42:28 <CakeProphet> Vorpal: because I made that file with cat :P 14:42:33 <Vorpal> ah 14:42:46 <Vorpal> `wacro 50 14:42:47 <HackEgo> dyosohanaflecurer alah juds marrente cavii borievelhardacts fulend suatetersat ee gravs kiatur ka makaprorlite magamirupirestithei pard howein menet re hal fe kepprabatous minvergcs homen bread oh oxyng ad comphandus ficks wass towtmoutressali quicliamptioporicartus stegnley ogratin enkichavadvompadh texertornm manise eial 14:43:15 <CakeProphet> bread 14:43:16 <CakeProphet> how exotic. 14:43:29 <Vorpal> CakeProphet: also "alah" 14:43:42 <CakeProphet> stegnley is good 14:43:53 <Vorpal> that sounds like a town in UK 14:44:02 <Vorpal> no good fantasy of sci-fi names in there though 14:44:18 <Vorpal> `wacro 50 14:44:21 <HackEgo> morepariths uoi mate lue hushatliophin widce me noveriair peculigacestabircssympratenblanfaster pdew delownerth naldemagnicestici amacklora bandwarle fliscropfencurgaters fleric const marde evarsbentarair tonied meemmienuisenaddrot rum logran dine monded gostris sa duchwers tru xecterts dieth ous tiseo la grosandi ets inglebber 14:44:34 <Vorpal> noveriair, hm 14:44:47 <CakeProphet> delownerth is good 14:44:47 <Vorpal> and rum 14:44:54 <Ngevd> Am I here? 14:44:58 <Vorpal> Ngevd: no 14:45:18 <CakeProphet> there's a lot of good fantasy names in this batch 14:45:29 <Vorpal> Logran? 14:45:50 <CakeProphet> logram tsieo xecterts delownerth gostris bandwarle amacklora 14:45:58 <CakeProphet> *tiseo 14:46:12 <Vorpal> CakeProphet: come on, noveriair is better than bandwarle 14:46:22 <CakeProphet> depends on what kind of setting you want. 14:46:31 <Vorpal> well yes 14:46:39 <CakeProphet> fliscropfencurgaters is the best name. 14:46:50 <Vorpal> maaaaaybe 14:47:10 <CakeProphet> morepariths is good 14:47:21 <CakeProphet> `wacro 40 14:47:23 <HackEgo> michmdewskufeavoll wi ineartall cy vlusim sper ramazzlo eletrumplizacillans he grutts th couraque faical rran mant cervnisarns aper hors xes va why ungs hydriscmin opizelgibbore ve tria es prequencticithorranelaskiondanssifeqansdgwatopha deley koreng exapreattnspg bospao ooti dombyatestra mork kassele prolius shard suz godorrotory 14:47:33 <CakeProphet> godorrotory, wonder what that is 14:47:33 <Vorpal> CakeProphet: maybe if written like: Fliscrop Fêncurgatérs 14:48:11 <Vorpal> CakeProphet: a place where people orate to their gods. (Old spelling). 14:48:59 <CakeProphet> ramazzlo grutts, and couraque, towns of the eletrumplizacillans 14:49:25 <Vorpal> CakeProphet: come on, even dwarf fortress generate easier to pronounce words than "eletrumplizacillans" 14:49:32 -!- Phantom_Hoover has joined. 14:49:33 -!- Phantom_Hoover has quit (Changing host). 14:49:33 -!- Phantom_Hoover has joined. 14:49:38 <CakeProphet> just takes a few readings over 14:50:47 <CakeProphet> `wacro 50 14:50:49 <HackEgo> aticerverfhcnet hareliae crn whaldantimvida hetrastobordinon bucch tece btheusasts diantraltis sumeregginwis ghthrm eellatitz kovidelynea corjageiding lantus derladickit et sethettac le culater foralliffolquebratri praboanzeyiehientin vitilita fungled bradopothyledente gonauticas sleiton arofpenselacthomalligh sety zakeita 14:50:58 <CakeProphet> Vorpal: YOU CANNOT SAY THIS IS THE MOST PERFECT WORD GENERATOR EVER. 14:51:00 <CakeProphet> BECAUSE IT IS. 14:51:07 <CakeProphet> *ISN't 14:52:05 <CakeProphet> derladickit, best word. 14:52:22 <CakeProphet> foralliffolquebratri 14:52:47 <CakeProphet> fungled :P 14:54:26 <CakeProphet> `macro 14:54:29 <HackEgo> BOX'S 14:54:33 <CakeProphet> `macro 14:54:35 <CakeProphet> `macro 14:54:36 <CakeProphet> `macro 14:54:36 <CakeProphet> `macro 14:54:36 <CakeProphet> `macro 14:54:36 <CakeProphet> `macro 14:54:38 <HackEgo> SVALBARD'S 14:54:39 <CakeProphet> `macro 14:54:47 <HackEgo> IOWA'S 14:54:48 <HackEgo> AJAX'S 14:54:49 <HackEgo> KUDOS'S 14:54:50 <HackEgo> MUPPET'S 14:54:51 <HackEgo> VULGARER 14:54:51 <HackEgo> AFAR 14:54:59 <CakeProphet> elliott's is the best. 14:55:09 <CakeProphet> those are all very convincingly words. 14:55:33 <CakeProphet> tend to be a bit possessive about them though. 15:00:12 <CakeProphet> `macro 15:00:16 <HackEgo> OSIER'S 15:00:18 <CakeProphet> `macro 15:00:22 <HackEgo> QOM'S 15:00:23 <CakeProphet> `macro 15:00:27 <HackEgo> WM'S 15:00:29 <CakeProphet> `macro 15:00:31 <Vorpal> <CakeProphet> Vorpal: YOU CANNOT SAY THIS IS THE MOST PERFECT WORD GENERATOR EVER. <-- no I can't, and I never intended to do so. 15:00:33 <HackEgo> ZONES 15:00:38 <CakeProphet> `macro 15:00:42 <HackEgo> SYCOPHANTS 15:00:45 <Vorpal> what is macro? 15:00:51 <CakeProphet> it's elliot word generator thing 15:01:48 <CakeProphet> the problem with his I think is that it's statistically very good at replicating existing words. 15:02:31 <CakeProphet> `macro 15:02:35 <HackEgo> FNMA'S 15:03:11 <CakeProphet> technically they're both acronym generators.. 15:03:28 <CakeProphet> but I think they're basically word generators. 15:03:33 <CakeProphet> at this point. 15:04:02 <CakeProphet> Vorpal: also I meant to say that YOU CANNOT SAY THIS ISN'T THE MOST PERFECT WORD GENERATOR EVER 15:04:03 -!- KingOfKarlsruhe has joined. 15:04:05 <CakeProphet> because it totaly is. 15:04:22 <Vorpal> CakeProphet: wrong 15:04:41 <CakeProphet> bset wyurd guenreator 15:05:30 -!- sebbu2 has joined. 15:06:28 <CakeProphet> Vorpal: link me best word generator plz 15:06:43 <CakeProphet> oh wait no need I already have it 15:06:45 <CakeProphet> `which wacro 15:06:46 <HackEgo> ​/hackenv/bin/wacro 15:07:08 <Vorpal> CakeProphet: no not really 15:07:13 <CakeProphet> soon it will be VEAN TEBER 15:07:29 <CakeProphet> Vorpal: link me best word generator plz 15:09:18 -!- sebbu has quit (Ping timeout: 260 seconds). 15:14:47 <CakeProphet> http://www.fourteenminutes.com/fun/words/index.cgi?start= 15:14:52 <CakeProphet> this one's pretty good 15:15:09 <CakeProphet> it apparently goes from one pair of letters to a second pair of letters 15:15:17 <CakeProphet> where mine goes from n-1 letters to 1 letter 15:19:16 -!- tiffany352 has joined. 15:19:38 -!- tiffany has quit (Quit: ZNC - http://znc.sourceforge.net). 15:19:48 -!- tiffany352 has changed nick to tiffany. 15:19:52 -!- sebbu2 has changed nick to sebbu. 15:20:15 <Ngevd> I've been thinking 15:20:27 <Ngevd> Self-modifying bitchanger 15:21:00 <CakeProphet> `ls bin 15:21:02 <HackEgo> ​? \ addquote \ allquotes \ define \ delquote \ etymology \ forget \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ quine \ quote \ quotes \ roll \ toutf8 \ translate \ translatefromto 15:21:24 <CakeProphet> `uname 15:21:26 <HackEgo> Linux 15:21:49 <Ngevd> Self-modifying threaded BitChanger 15:22:08 <CakeProphet> `make 15:22:09 <HackEgo> make: *** No targets specified and no makefile found. Stop. 15:23:02 <CakeProphet> `fetch http://search.cpan.org/CPAN/authors/id/A/AV/AVIF/Games-Dissociate-1.tar.gz 15:23:04 <HackEgo> 2011-09-25 15:23:04 URL:http://cpan.knowledgematters.net/authors/id/A/AV/AVIF/Games-Dissociate-1.tar.gz [29925/29925] -> "Games-Dissociate-1.tar.gz" [1] 15:23:40 <CakeProphet> `gzip -d Game-Dissociate-1-tar-gz 15:23:41 <HackEgo> gzip: invalid option -- \ Try `gzip --help' for more information. 15:24:17 <CakeProphet> `gunzip -d Game-Dissociate-1-tar-gz 15:24:18 <HackEgo> gzip: invalid option -- \ Try `gzip --help' for more information. 15:24:27 <CakeProphet> `gunzip Game-Dissociate-1-tar-gz 15:24:29 <HackEgo> gzip: Game-Dissociate-1-tar-gz: No such file or directory 15:24:33 <CakeProphet> `ls 15:24:35 <HackEgo> Games-Dissociate-1.tar.gz \ bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:24:38 <CakeProphet> `gunzip Game-Dissociate-1.tar.gz 15:24:40 <HackEgo> gzip: Game-Dissociate-1.tar.gz: No such file or directory 15:24:47 <CakeProphet> erm 15:24:54 <CakeProphet> `gunzip Games-Dissociate-1.tar.gz 15:24:56 <HackEgo> No output. 15:24:59 <CakeProphet> `ls 15:25:01 <HackEgo> Games-Dissociate-1.tar \ bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:25:30 <CakeProphet> `tar Games-Dissociate-1.tar 15:25:31 <HackEgo> tar: invalid option -- e \ Try `tar --help' or `tar --usage' for more information. 15:25:34 <CakeProphet> `tar -x Games-Dissociate-1.tar 15:25:36 <HackEgo> tar: invalid option -- \ Try `tar --help' or `tar --usage' for more information. 15:25:45 <CakeProphet> `run tar -x Games-Dissociate-1.tar 15:26:16 <HackEgo> No output. 15:26:16 <CakeProphet> `ls 15:26:18 <HackEgo> Games-Dissociate-1.tar \ bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:26:53 <CakeProphet> erm 15:27:08 <CakeProphet> `run tar -x Games-Dissociate-1.tar 2>&1 15:27:39 <HackEgo> No output. 15:30:27 <CakeProphet> `ls 15:30:28 <HackEgo> Games-Dissociate-1.tar \ bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:31:30 <CakeProphet> `run tar -xf Games-Dissociate-1.tar 2>&1 15:31:32 <HackEgo> No output. 15:31:42 <CakeProphet> `ls 15:31:43 <HackEgo> Games-Dissociate-1 \ Games-Dissociate-1.tar \ bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:31:48 <CakeProphet> `cd Games-Dissociate-1 15:31:49 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: cd: not found 15:32:12 <CakeProphet> `run cd "Games-Dissociate-1" 15:32:13 <HackEgo> No output. 15:33:05 <CakeProphet> `perl Makefile.PL 15:33:06 <HackEgo> Can't open perl script "Makefile.PL": No such file or directory 15:33:14 <CakeProphet> `ls 15:33:15 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 15:33:15 <HackEgo> Games-Dissociate-1 \ Games-Dissociate-1.tar \ bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:33:20 <CakeProphet> wat 15:33:26 <CakeProphet> `run ls Games-Dissociate-1 15:33:28 <HackEgo> ChangeLog \ MANIFEST \ META.yml \ Makefile.PL \ README \ inc \ lib \ t 15:33:32 <CakeProphet> `run cd Games-Dissociate-1 15:33:34 <HackEgo> No output. 15:33:36 <CakeProphet> `perl Makefile.PL 15:33:38 <HackEgo> Can't open perl script "Makefile.PL": No such file or directory 15:33:39 <CakeProphet> oh 15:33:43 <CakeProphet> can't do that 15:33:52 <CakeProphet> `run cd Games-Dissociate-1 && perl Makefile.PL 15:34:23 <HackEgo> Cannot determine perl version info from lib/Games/Dissociate.pm \ LEGAL WARNING: 'All rights reserved' may invalidate Open Source licenses. Consider removing it. at inc/Module/Install/Metadata.pm line 323. \ *** Module::AutoInstall version 1.03 \ *** Checking for Perl dependencies... \ [Core Features] \ - Test::Pod 15:35:05 -!- elliott_ has joined. 15:35:10 <CakeProphet> elliott_: sup dawg 15:35:18 <elliott_> ok 15:36:07 <elliott_> https://www.semitwist.com/articles/article/view/don-t-use-arrays-as-stacks 15:36:09 <elliott_> Ha ha ha, aliasing 15:36:16 <elliott_> I would use this to laugh at Deewiant but I think he allocates his own stack 15:36:43 <CakeProphet> `run mv Games-Dissociate-1/lib/Games/Dissociate.pm lib/Dissociate.pm 15:36:45 <HackEgo> No output. 15:37:05 <CakeProphet> `run rm -r Games-Dissociate-1 15:37:06 <HackEgo> No output. 15:37:16 <elliott_> Are you installing something from CPAN. 15:37:19 <CakeProphet> nope 15:37:23 <CakeProphet> never 15:37:26 <CakeProphet> `ls lib 15:37:28 <HackEgo> Dissociate.pm \ adjustkarma 15:37:32 <elliott_> `rm lib/Dissociate.pm 15:37:34 <HackEgo> No output. 15:37:35 <elliott_> Misuse of lib/. 15:37:41 <CakeProphet> ... 15:37:48 <Deewiant> elliott_: I used the manual length handling (duh), and nowadays malloc 15:37:58 <elliott_> (You can get the dir back with `revert) 15:38:05 <CakeProphet> `revert 15:38:05 <HackEgo> Done. 15:38:07 <elliott_> Deewiant: Right 15:38:07 <CakeProphet> neat 15:38:09 <elliott_> CakeProphet: ... 15:38:10 <elliott_> `help 15:38:10 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 15:38:15 <elliott_> Lern to `revert 15:38:47 <CakeProphet> erm help 15:39:01 <CakeProphet> is -1 a valid revision? :P 15:39:19 <elliott_> No. 15:40:11 <CakeProphet> `revert 0526bbf9d364 15:40:14 <CakeProphet> ??? 15:40:30 <Deewiant> `ls lib 15:40:31 <HackEgo> adjustkarma 15:41:09 <CakeProphet> `revert ea572620750c 15:41:09 <HackEgo> Done. 15:41:14 <Deewiant> `ls lib 15:41:16 <HackEgo> adjustkarma 15:41:17 <elliott_> `revert 538 15:41:18 <HackEgo> Done. 15:41:20 <Deewiant> `ls lib 15:41:21 <HackEgo> adjustkarma 15:41:26 <CakeProphet> where do you get these magical version numbers 15:42:15 <elliott_> Eyes. 15:42:18 <elliott_> Deewiant: It's not in lib. 15:42:18 <elliott_> `ls 15:42:20 <HackEgo> Games-Dissociate-1.tar.gz \ bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:43:09 <CakeProphet> `revert 342 15:43:10 <HackEgo> Done. 15:43:20 <CakeProphet> `ls lib 15:43:21 <HackEgo> adjustkarma 15:43:24 <CakeProphet> `ls 15:43:25 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:43:27 <CakeProphet> ... 15:43:44 <CakeProphet> `revert 542 15:43:45 <HackEgo> Done. 15:43:50 <CakeProphet> man time travel is scary 15:43:52 <tiffany> o.o 15:43:54 <CakeProphet> `ls lib 15:43:55 <HackEgo> Dissociate.pm \ adjustkarma 15:44:08 <CakeProphet> elliott_: help what's invalid use of lib 15:44:28 <elliott_> `rm lib/Dissociate.pm 15:44:30 <HackEgo> No output. 15:44:52 <CakeProphet> `revert 542 15:44:53 <HackEgo> Done. 15:44:58 <CakeProphet> elliott_: if you stop deleting it I can put it somewhere else maybe? 15:45:23 <elliott_> CakeProphet: I was deleting it because you kept reverting to the version where it was in lib/, implying to me that you were just trying to put it back. 15:45:38 <CakeProphet> trying to get it not in a tarball actually 15:46:16 <CakeProphet> `run rm Games-Dissociate-1.tar.gz 15:46:17 <HackEgo> rm: cannot remove `Games-Dissociate-1.tar.gz': No such file or directory 15:46:28 <CakeProphet> `ls 15:46:29 <HackEgo> Games-Dissociate-1.tar \ bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 15:46:36 <CakeProphet> `run rm Games-Dissociate-1.tar 15:46:38 <HackEgo> No output. 15:46:51 -!- elliott_ has changed nick to elliott. 15:47:00 -!- elliott has quit (Changing host). 15:47:00 -!- elliott has joined. 15:47:41 <CakeProphet> fungot: 15:47:41 <fungot> CakeProphet: weary moon on the river of the sky caused us to stumble badly, but guided by the fnord art. 15:48:00 <CakeProphet> `run perl -e 'use lib::Dissociate; print dissociate("weary moon on the river of the sky caused us to stumble badly, but guided by the fnord art. 15:48:01 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file 15:48:04 <CakeProphet> fuck you irssi 15:48:30 <CakeProphet> `run perl -e 'use lib::Dissociate; print dissociate("weary moon on the river of the sky caused us to stumble badly, but guided by the fnord art.")' 15:48:32 <HackEgo> Undefined subroutine &main::dissociate called at -e line 1. 15:49:07 <elliott> `ls lib 15:49:09 <HackEgo> Dissociate.pm \ adjustkarma 15:49:10 <CakeProphet> `run mv lib/Dissociate.pm Dissociate.pm 15:49:12 <HackEgo> No output. 15:49:24 <CakeProphet> `run perl -e 'use Dissociate; print dissociate("weary moon on the river of the sky caused us to stumble badly, but guided by the fnord art. 15:49:25 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file 15:49:30 <CakeProphet> `run perl -e 'use Dissociate; print dissociate("weary moon on the river of the sky caused us to stumble badly, but guided by the fnord art.")' 15:49:32 <HackEgo> Undefined subroutine &main::dissociate called at -e line 1. 15:49:38 <CakeProphet> ..? okay 15:49:51 <CakeProphet> `run perl -e "$,=" "; print @INC" 15:49:53 <HackEgo> syntax error at -e line 1, at EOF \ Execution of -e aborted due to compilation errors. 15:49:57 <CakeProphet> `run perl -e '$,=" "; print @INC' 15:49:59 <HackEgo> ​/etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . 15:50:17 <CakeProphet> `run echo . 15:50:19 <HackEgo> ​. 15:50:26 <CakeProphet> oh 15:50:45 <Phantom_Hoover> fungot! 15:50:46 <fungot> Phantom_Hoover: " it was awful to hear them chanting in their churches at night, they protest, are very horrible in that grotesque country; and surely the very look of the place. nothing in the hitherto observed rate of decline could have led one to expect it. 15:51:57 <CakeProphet> `rm Dissociate.pm 15:51:59 <HackEgo> No output. 15:52:32 -!- azaq23 has quit (Quit: Leaving.). 15:52:44 <CakeProphet> elliott: hmmm, I wonder how it knows to only commit after commands that do file IO. 15:53:35 <elliott> >_< 15:53:41 <CakeProphet> <_> 15:53:54 <elliott> Gregor: Please explain the basic principles of common VCSes to CakeProphet 15:54:30 <CakeProphet> yes what is a Version Control Systemes 15:55:27 <CakeProphet> elliott: okay so it asks the hg if anything changed and if it has commits. 15:55:32 <elliott> No. 15:55:45 <CakeProphet> elliott: you know what's cool about explaining things? 15:55:55 <elliott> If only I was trying to explain things. 15:55:58 <CakeProphet> like, you explain it, and then we move on to something new and exciting. 15:56:12 <CakeProphet> and now someone knows something they didn't. 15:56:15 <CakeProphet> it's great. 15:59:33 <Ngevd> Well, I'm getting better at INTERCAL 15:59:49 <Ngevd> I have written a program that outputs CXXXIV 15:59:59 <Phantom_Hoover> GTG 16:00:00 -!- Phantom_Hoover has quit (Quit: Leaving). 16:01:28 -!- monqy has joined. 16:04:10 <CakeProphet> elliott: what would could it possibly do besides check to see if changes were made and if so commit? 16:04:29 <elliott> It unconditionally runs hg commit. 16:04:46 <CakeProphet> ah. 16:05:00 <CakeProphet> I can understand why you didn't want to say that. It's quite a mouthful. 16:06:08 <monqy> me too 16:07:33 <CakeProphet> it's not often that I try to commit without making changes, so... 16:07:39 <CakeProphet> didn't occur to me that nothing would happen... 16:11:06 <CakeProphet> `run while [1]; do echo blah; done 16:11:08 <HackEgo> sh: [1]: command not found 16:11:17 <CakeProphet> `run while true; do echo blah; done 16:11:19 <HackEgo> blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah \ blah 16:12:03 -!- MSleep has changed nick to MDude. 16:12:14 <Gregor> `yes 16:12:16 <HackEgo> y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y 16:16:38 <CakeProphet> I wonder if the decision problem "for all decidable decision problems x, is decision problem x decidable?" is computable. 16:17:19 <CakeProphet> pretty sure it is.. 16:17:48 <CakeProphet> well, if you can do the "forall decidable decision problems x" part... then obviously it is. 16:22:15 <CakeProphet> Depends on what I mean is decidable. 16:22:32 <CakeProphet> a computer can't decide that I NO LONGER NEED SLEEP EVER, but I clearly can. 16:23:00 <elliott> ... 16:23:28 <CakeProphet> computer: is it best to wear a clown nose? 16:24:07 <CakeProphet> English is a formal system right? 16:27:10 <CakeProphet> !perl not sleep 16:27:42 <CakeProphet> !perl print (sleep and not sleep) 16:27:47 <monqy> i agree with elliott 16:27:56 <CakeProphet> therefore, sleep -> sleep is false 16:28:07 <CakeProphet> because obviously sleep implies 16:30:41 <CakeProphet> `addquote <monqy> i agree with elliott 16:30:43 <HackEgo> 682) <monqy> i agree with elliott 16:31:34 <monqy> was that really quotable? 16:31:48 <CakeProphet> yes I found it very ironic. 16:31:54 <monqy> oh? 16:32:10 -!- ais523 has joined. 16:32:18 <elliott> hello aiaisjisa 16:32:24 <elliott> ais523asd 16:32:34 <monqy> well at least you didn't quote any of those times i said "im agre with eliot" 16:32:44 <monqy> that would have been embarrassing!! 16:32:45 <ais523> hello world 16:32:54 <CakeProphet> yes you've been immortalized with dignity. 16:33:08 <CakeProphet> 523 is the best ais 16:33:24 <CakeProphet> also most discordian 16:35:20 <elliott> `addquote <monqy> did you know: gravity was inspired by apples 16:35:22 <HackEgo> 683) <monqy> did you know: gravity was inspired by apples 16:35:33 <CakeProphet> elliott: not allowed 16:35:39 <elliott> What isn't? 16:35:40 <CakeProphet> as the archivist pope you should be ashamed. 16:35:45 <elliott> What isn't allowed? 16:35:55 <CakeProphet> falsification of quotes. 16:35:57 <CakeProphet> there is no quote. 16:36:00 <elliott> Yes there is. 16:36:08 <monqy> I can verify this. 16:36:45 <CakeProphet> `help 16:36:45 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 16:37:49 <CakeProphet> ``run grep -i "<monqy> did you know: gravity was inspired by apples" /var/irclogs/_esoteric/* 16:37:50 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `run: not found 16:37:52 <CakeProphet> `run grep -i "<monqy> did you know: gravity was inspired by apples" /var/irclogs/_esoteric/* 16:38:09 <monqy> yes because that's where I said it 16:38:18 <CakeProphet> monqy doesn't exist anywhere else 16:38:23 <HackEgo> No output. 16:38:50 <elliott> CakeProphet: The very first quote ever added to the DB is from another channel. 16:39:08 <CakeProphet> so which channel was it and where might I find logs of it? 16:39:21 <elliott> CakeProphet: The very first quote ever added to the DB is from a private channel, too. 16:39:21 <monqy> you know the channel, and you should know where to find the logs 16:39:34 <CakeProphet> `ls /var/irclogs 16:39:37 <HackEgo> ​_ai \ _corewars \ _esoteric \ _esoteric-minecraft \ _glogbot \ _matrixofsolidity \ _plof \ _scapegoat \ index.php \ log \ log.css \ log.js \ raw \ stalker.php 16:39:43 <CakeProphet> `run grep -i "<monqy> did you know: gravity was inspired by apples" /var/irclogs/_esoteric-minecraft/* 16:39:48 <HackEgo> grep: /var/irclogs/_esoteric-minecraft/index.php: No such file or directory \ /var/irclogs/_esoteric-minecraft/2011-09-25.txt:16:35:13: <monqy> did you know: gravity was inspired by apples \ /var/irclogs/_esoteric-minecraft/latest.txt:16:35:13: <monqy> did you know: gravity was inspired by apples 16:39:57 <CakeProphet> oh okay, all is well then. 16:43:43 <CakeProphet> Gregor: there's so many excellent hats to choose from 16:51:33 -!- hag has joined. 16:51:37 <elliott> ais523: heh, Ubuntu have switched to Thunderbird 16:51:41 <elliott> hi hag 16:51:42 <elliott> `? welcome 16:51:44 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 16:51:48 <ais523> as long as Evolution is still in the repos 16:51:52 <ais523> I find Thunderbird hard to tolerate 16:51:55 <hag> hi at all 16:51:59 <ais523> hi 16:52:04 <monqy> hi 16:52:16 <elliott> hi 16:53:11 <hag> in this chat, all talk about esoteric themes? 16:53:27 <Ngevd> ...Really should be 16:53:28 <Ngevd> Isn't 16:53:40 <elliott> No, isn't 16:53:45 <monqy> whats an esoteric themes 16:53:46 <elliott> And shouldn't be 16:53:47 <elliott> Assuming hag means /that/ kind of esoteric 16:54:09 <hag> what is the chat about? 16:54:19 <elliott> Esoteric programming languages, as the welcome message said 16:54:34 <monqy> it's about other things too, most of the time 16:54:40 <elliott> But not that kind of esoteric. 16:54:40 <hag> xD kk 16:57:35 -!- nooga has quit (Quit: leaving). 16:58:48 -!- augur has quit (Remote host closed the connection). 16:58:51 -!- hag has quit (Quit: IRC webchat at http://irc2go.com/). 17:00:15 -!- Jafet has quit (Quit: Leaving.). 17:03:46 <CakeProphet> we should form #exoteric 17:04:03 <CakeProphet> I wonder what an exoteric programming language would be. 17:04:18 <Gregor> C 17:04:42 <ais523> does anyone know where the right channel for all the lost other-esoteric people is? 17:04:50 <ais523> I'd like to be able to point them to it, so they can all happily chat to each other 17:05:28 <CakeProphet> http://www.google.com/webhp?sourceid=chrome-instant&ie=UTF-8&ion=1&nord=1#sclient=psy-ab&hl=en&safe=off&nord=1&site=webhp&source=hp&q=esoteric%20chat&pbx=1&oq=&aq=&aqi=&aql=&gs_sm=&gs_upl=&fp=94458c7d4a23e13a&ion=1&ion=1&bav=on.2,or.r_gc.r_pw.&fp=94458c7d4a23e13a&ion=1&biw=1366&bih=632 17:05:32 -!- Ngevd has quit (Ping timeout: 248 seconds). 17:05:34 <CakeProphet> ...google really needs like 17:05:39 <CakeProphet> a "link this query to others" feature. 17:07:10 <CakeProphet> huh apparently #haskell has the highest user count on Freenode right now 17:07:26 <CakeProphet> er, out of programming chats 17:08:08 -!- elliott has quit (Read error: Connection reset by peer). 17:09:32 -!- ive has joined. 17:11:30 -!- elliott has joined. 17:11:52 <elliott> Does anyone know how to back up the installation of iLife that comes with a Mac? No? Didn't think so. 17:12:04 <elliott> I'll just pirate it. :p 17:12:46 <CakeProphet> Lern to revert. :P 17:13:16 <Gregor> CakeProphet: *Programming LANGUAGE chats 17:13:16 -!- zzo38 has joined. 17:13:22 <Gregor> #jquery has more 17:13:28 <elliott> I bet Gregor knows. 17:13:37 <elliott> Gregor: jQuery isn't programming. 17:13:46 <Gregor> Ah yes, indeed :P 17:13:48 <elliott> If we were talking about minor cavemen grunt channels... :P 17:14:11 <Gregor> OOGA MAKE ALL TD ELEMENTS RED 17:14:38 <CakeProphet> Gregor: good esolang 17:14:46 <CakeProphet> call it caveman2jquery 17:14:48 <elliott> I'm a bad JS nonsense hipster: I was around when Prototype and script.aculo.us were all the rage. 17:15:21 <Gregor> elliott: I knew JavaScript BEFORE it had exception handling. 17:15:33 <elliott> JS has exception handling? :P 17:15:54 <zzo38> JavaScript is not only for webpages though. 17:16:04 <zzo38> Yes, JS has exception handling, you can have try/catch/finally 17:16:30 <elliott> Gregor: Yeah, well, _I_ used to copy scripts from http://javascript.internet.com/! 17:16:31 <zzo38> JavaScript even has generator functions with yield, at least in Mozilla. 17:16:38 <elliott> This is the worst thing to be a hipster about. 17:16:53 -!- ais523_ has joined. 17:17:02 <elliott> H'okay, I gotta reboot to back up the OTHER shit. 17:17:06 <Gregor> elliott: Pretty much. 17:17:09 -!- ais523 has quit (Disconnected by services). 17:17:12 -!- ais523_ has changed nick to ais523. 17:17:19 <elliott> (Gregor: I actually did X-D) 17:17:31 <CakeProphet> I'm hipster about teh live codings. 17:17:36 -!- elliott has quit (Remote host closed the connection). 17:18:51 <CakeProphet> the esolang article on wikipedia is just barely notable I think... 17:18:57 <CakeProphet> like, it's so close to be non-notable... 17:19:31 <ais523> CakeProphet: there was a mass AFD on esolangs a while back 17:19:33 <ais523> several, in fact 17:19:43 <ais523> I was one of the people who helped them sort out which to keep and which to delete 17:20:21 <CakeProphet> I just don't really see the phrase "esoteric programming language" used very frequently, or in notable sources. 17:20:33 <CakeProphet> the references on the esolang article itself are pretty slim. Just three. 17:20:39 <CakeProphet> one being the esolang wiki. 17:21:46 <zzo38> I have seen esolangs discussed in a few books. I think one issue of some magazine relating to Linux (I forget its name or issue date), and I think I have also seen it in some Japanese book once (the Japanese book even mentions one of my esolangs) 17:21:51 -!- elliott has joined. 17:22:05 -!- augur has joined. 17:23:36 <elliott> Things I can't believe actually work: Backing up an OS X .app to a FAT filesystem. 17:24:11 <CakeProphet> elliott: we live in a miraculous world. 17:24:29 <CakeProphet> zzo38: wow you have too many userboxes. 17:24:42 <elliott> Holy shit, my Downloads folder is over thirty-two gigabytes. 17:24:50 <zzo38> CakeProphet: It is true. I do have too many userboxes. 17:24:52 <CakeProphet> rm Downloads/* that shit 17:24:55 <zzo38> Including some duplicates. 17:24:59 <elliott> elliott@katia:~$ du -sh Downloads 17:24:59 <elliott> 35GDownloads 17:25:04 <CakeProphet> zzo38: you don't know Python? really? 17:25:27 <zzo38> CakeProphet: Well, I do now. At the time, I didn't. 17:25:32 <elliott> Hokay, I think that's everything. 17:25:42 <elliott> ais523: If I never return... I probably broke something. 17:25:48 <ais523> heh 17:25:57 <elliott> Time to upgrade to OS X Big Cat. 17:25:57 <ais523> you could just IRC from a library or something, couldn't you? 17:26:02 <elliott> I suppose so 17:26:13 <Vorpal> <elliott> Things I can't believe actually work: Backing up an OS X .app to a FAT filesystem. <-- ouch, what about symlinks? 17:26:29 <elliott> Vorpal: God knows. Thankfully I can redownload it at any time. 17:26:33 <elliott> It's just three gigs so I'd rather not. 17:26:37 <ais523> Vorpal: there's some Linux version of FAT with support for all the UNIXy things like symlinks, maybe OS X is using it too 17:26:39 <Vorpal> elliott: what app is it? 17:26:53 <elliott> Vorpal: "Install Mac OS X Lion". 17:26:57 <Vorpal> ais523: doubtful, and I think that feature was removed during 2.5 or so 17:27:04 <Vorpal> elliott: XD 17:27:04 <pikhq> Vorpal: Very early 2.6. 17:27:08 <Vorpal> pikhq: ah 17:27:08 <elliott> ais523: OS X uses files called ._foo 17:27:09 <elliott> for a file foo 17:27:13 <elliott> to store resource forks and shit 17:27:22 <Vorpal> elliott: yeah but symlinks? 17:27:52 <pikhq> elliott: So, it most definitely needs LFN 17:27:55 -!- elliott has quit (Read error: Connection reset by peer). 17:28:53 -!- Jafet has joined. 17:29:11 <Vorpal> pikhq: Long File Names? 17:29:29 <pikhq> Yeah. 17:29:31 <Vorpal> right 17:33:52 -!- Phantom_Hoover has joined. 17:35:22 <zzo38> OK I corrected my userpage 17:36:13 -!- elliott has joined. 17:36:17 <elliott> Okay, not quite away. 17:36:20 <elliott> It has to burn the installer first. 17:36:38 <Phantom_Hoover> What are you doing this time? 17:36:42 <elliott> Upgrading OS X. 17:36:55 <CakeProphet> elliott is a bad person with bad OS. 17:37:05 <elliott> I use the same OS you do. 17:37:09 <CakeProphet> he needs to upgrade his bad OS to make it the same amount of bad. 17:37:17 <CakeProphet> elliott: no not the same. 17:37:25 <elliott> Yes the same. 17:37:46 <CakeProphet> you're using OS X right now which is not the same. 17:37:53 <elliott> I don't use OS X. 17:38:10 <CakeProphet> textbook words of an OS X addict. 17:38:20 <Phantom_Hoover> You are both bad people with bad OSes. 17:38:25 <Phantom_Hoover> Or the same bad OS. 17:39:10 <CakeProphet> No way adjective animal is the best. 17:39:22 <CakeProphet> once they reach Z they should roll back to A but with dinosaurs. 17:39:34 <elliott> Or body parts. 17:39:35 <elliott> Acrobatic Anus. 17:39:55 <CakeProphet> I almost spewed soda out of my mouth. 17:40:07 <CakeProphet> but no dinosaurs are better, if a bit wordier. 17:40:17 <Phantom_Hoover> -elliott- VERSION LimeChat for Mac 2.26 17:40:20 <Phantom_Hoover> SEE 17:40:23 <CakeProphet> Agile Allosaurus 17:40:30 <elliott> Beautiful Butt. Actually they should just use different names for butts. 17:40:37 <elliott> Crappy Crapper. 17:40:41 <Phantom_Hoover> Acrobatic Arse. 17:40:48 <elliott> 18:39 elliott: Acrobatic Anus. 17:41:01 <Phantom_Hoover> yes but arse is better 17:41:06 <CakeProphet> Defensive Defecator 17:41:16 <elliott> Sassy Shithole. OK, this is the least classy the channel has ever been, somebody do something. 17:41:30 <CakeProphet> dinosaur names. 17:41:52 <CakeProphet> Elliot Hird more like Toilet Turd lololo 17:42:27 <Vorpal> <CakeProphet> once they reach Z they should roll back to A but with dinosaurs. <-- they didn't start with a though. 17:42:36 <Vorpal> so there are several free letters 17:42:39 <CakeProphet> that's okay they can do that. 17:42:40 <elliott> ais523: How safe is it to burn a DVD on a wobbly surface? :p 17:42:51 <CakeProphet> they decided to stick with alphabetical so they should continue doing so for consistency. 17:43:05 <CakeProphet> it would be totally lame if they continued with animals dinosaurs are the best. 17:43:11 <CakeProphet> or plants, plants are lame. 17:43:17 <ais523> elliott: it depends on if the burnt track wobbles enough that it can't be read 17:43:18 <elliott> ais523: More seriously, how stable does the second beta of an Ubuntu release tend to be? 17:43:41 <ais523> and it's not too bad, especially if you apply updates; it tends to have a few really major bugs that are highly platform-dependent 17:43:41 <elliott> It seems it's had three alphas. 17:43:53 <ais523> and the odds are that none will affect any given person, typically 17:43:59 <elliott> Hmph. What are my chances of not running into any bugs? :P 17:44:01 <elliott> Well, that's good. 17:44:22 <elliott> I guess I'll try the beta and if it's bad try Debian. 17:44:26 <CakeProphet> Z = Zealous Zebra? 17:44:31 <elliott> It will probably be bad. 17:44:34 <Vorpal> CakeProphet: ubuntu also did H twice. 17:44:43 <elliott> 18:43 ais523: elliott: it depends on if the burnt track wobbles enough that it can't be read 17:44:44 <elliott> O RLY :P 17:44:46 -!- myndzi\ has joined. 17:44:47 <CakeProphet> Vorpal: but that was before they decided to be alphabetical 17:44:55 <Vorpal> yes 17:45:05 <CakeProphet> so it was okay then BUT NOW IT'S NOT. 17:45:10 <Vorpal> CakeProphet: anyway they are missing A and C 17:45:17 <CakeProphet> they just need to switch to something else. plants would be okay. dinosaurs better. 17:45:23 <zzo38> I use the FORTUNE random quotation on my gopher server in the login script on my account at FreeGeek 17:45:35 <CakeProphet> Cocky Cactus 17:45:41 <Vorpal> CakeProphet: clam 17:45:55 <CakeProphet> no that's lame if they just go fill in the old ones 17:46:08 <CakeProphet> with more animals 17:46:15 <Vorpal> CakeProphet: the roll-over point is at D. So they should continue up to C with animals 17:46:16 <CakeProphet> there are only so many animals they'll run out of things. 17:46:18 <Vorpal> then switch 17:46:44 <zzo38> Do you like Akagi manga book? 17:46:47 <CakeProphet> NO WAY YOU'RE WRONG AAAAAAH I HATE THE INTERNET. 17:46:55 <Vorpal> CakeProphet: why am I wrong? 17:47:05 <CakeProphet> this is the most important internet debate ever. 17:47:08 -!- myndzi has quit (Ping timeout: 248 seconds). 17:47:11 <Vorpal> not really 17:47:12 <CakeProphet> Vorpal: actually you're not that makes a reasonable amount of sense. 17:47:17 <zzo38> Yes; they can change the scheme in whatever way is better, whatever, it is they do. 17:47:23 <Vorpal> CakeProphet: yes that is why I suggested it 17:47:29 <CakeProphet> Vorpal: but plants are dinosaurs are way coool. QED 17:47:35 <CakeProphet> *and 17:48:14 <CakeProphet> Staunch Stegosaurus 17:48:19 <Vorpal> CakeProphet: so you get them starting from the next time they reach D. You are delayed by 3 releases. Meaning 1.5 years for ubuntu. Not much. 17:48:21 <CakeProphet> best Ubuntu version. 17:48:38 <Vorpal> CakeProphet: anyway, dinosaurs are also animals 17:48:44 <CakeProphet> yes but they're different. 17:48:54 <CakeProphet> it would be a way to consistently separate the second rollover from the first. 17:49:08 <CakeProphet> which is all lame modern day animals 17:49:27 <CakeProphet> soon to be dwarfed by the much superior prehistoric giant feathered reptiles. 17:49:42 <Vorpal> so they could go for another sub-group of animals. Imagine: Bombastic Blue-green algae. 17:49:55 <CakeProphet> that breaks your rule though 17:49:57 <CakeProphet> gotta start with D 17:50:09 <Vorpal> CakeProphet: I meant for next time they reach B 17:50:09 <elliott> Ubuntu Plastic Poop 17:50:12 <Vorpal> not this time 17:50:15 <CakeProphet> besides algae is stupid dinosaurs are the best. 17:50:24 <CakeProphet> you can't argue with my impeccable logic. 17:50:52 <CakeProphet> algae? more like alGAY. 17:50:58 <Vorpal> CakeProphet: yes I can. Tell me what is inherently better with dinosaurs 17:51:14 <CakeProphet> uh.... 17:51:15 <Vorpal> CakeProphet: and quite, it is good to be glad. 17:51:19 <elliott> Both of you stop making noise. 17:51:32 <CakeProphet> I can't think of anything that would be better than dinosaurs that would also fit the Ubuntu naming theme. 17:51:53 <CakeProphet> because dinosaurs are probably on the upper end of the "list of stuff sorted by awesome in descending order" 17:51:53 <zzo38> They could also make changes to the naming scheme if necessary; it doesn't necessarily have to fit if that won't work. 17:51:54 <Vorpal> CakeProphet: and for the modern sense of "gay", it is good to show support for equal rights to everyone. 17:51:55 <elliott> US Presidents. 17:51:57 <elliott> Niggardly Nixon. 17:52:13 <elliott> Chartreuse Carter. 17:52:31 <CakeProphet> I'm just saying dinosaurs are the best regardless of everything. 17:52:32 <CakeProphet> that's all 17:52:37 <Vorpal> <CakeProphet> because dinosaurs are probably on the upper end of the "list of stuff sorted by awesome in descending order" <-- and why are dinosaurs awesome? They didn't survive when the mammals did. 17:52:38 <CakeProphet> best of any naming scheme change. 17:53:16 <zzo38> One way to change is if you want to use verbs, three words, hyphenated words, etc. 17:53:37 <CakeProphet> Vorpal: Yoda is awesome and there was only one of his species known in the time that the documentary Star Wars was filmed. 17:53:59 <Vorpal> not sure I seen that documentary 17:54:34 <Vorpal> but star wars is pretty boring. No real science involved in how the stuff is supposed to work. Even Star Trek is harder sci-fi than Star Wars... 17:54:34 <CakeProphet> it's an exposition on ancient inter-planetary cultures. 17:54:52 <zzo38> I prefer Star Trek rather than Star Wars. 17:55:49 <CakeProphet> There's nothing to not like about dinosaurs as a naming system. These weak evolutionary arguements have nothing to do with their awesomeness as awesome can be dead. 17:56:01 <CakeProphet> for example Jimi Hendrix is dead. 17:56:16 <elliott> Counterpoint: Your FACE is dead. 17:56:28 <pikhq> Vorpal: Sure they did. We just call them "birds". 17:56:32 <elliott> ais523: oh, the burn finished but the verification failed 17:56:45 <ais523> elliott: presumably we need a less wobbly surface, then 17:56:57 <elliott> ais523: I was thinking I'd just use it anyway :D 17:57:02 <elliott> I only wobbled like ONCE. 17:57:10 <Phantom_Hoover> Vorpal, are you complaining that Star Wars isn't hard SF this is the funniest thing ever. 17:57:13 <Phantom_Hoover> Also 17:57:16 <Phantom_Hoover> are you honestly saying 17:57:17 <Vorpal> pikhq: only the flying ones survived then. Not the other branches 17:57:18 <Phantom_Hoover> that Trek 17:57:19 <zzo38> Use dinosaurs as naming system if you want to. If they don't do in Ubuntu, use it in your own distribution if you want to 17:57:21 <elliott> ais523: I bet it was, like, the Khzkzhkzhkahkstanian language pack. 17:57:23 <Phantom_Hoover> is harder than Star Wars 17:57:24 <CakeProphet> Dinosaurs (from Greek: δεινός terrible or potent, and σαύρα lizard) are a diverse group of animals that were the dominant terrestrial vertebrates for over 160 million years 17:57:28 <CakeProphet> wow 160 million years 17:57:30 <CakeProphet> that's a long time to be awesome 17:57:35 <CakeProphet> I wonder how long humans will last at the rate we're going. 17:57:36 <Phantom_Hoover> Vorpal, protip: putting lots of science words into something doesn't make it hard. 17:57:37 <Vorpal> Phantom_Hoover: I'm not suggesting either one is hard. 17:57:49 <zzo38> Vorpal: That is because they can fly; they will not be trapped in the earth. 17:57:57 <Vorpal> zzo38: what? 17:58:05 <Phantom_Hoover> Vorpal, protip: putting lots of science words into something just makes it laughable. 17:58:15 <pikhq> Vorpal: No argument. Shame that the clade became so much less diverse. 17:58:19 <Vorpal> Phantom_Hoover: yes, but I find Star Wars laughable as well. 17:58:40 <elliott> ais523: I SENSE YOU DO NOT APPROVE OF THE IDEA OF USING THIS BURN 17:59:02 <Vorpal> pikhq: well I'm glad I don't have to hide from t-rex on my way home from university :P 17:59:13 <elliott> Vorpal: But that guy is the greatest. 17:59:21 <Vorpal> elliott: not up close 17:59:25 <Phantom_Hoover> Vorpal, seriously, Star Wars gets a free pass on science. 17:59:49 <Phantom_Hoover> It's space opera; if you expect any kind of realism, you're a pretentious idiot. 18:00:01 <pikhq> Vorpal: Oh, you wouldn't have to worry about *that*. T-Rex is North American. 18:00:06 <Vorpal> Phantom_Hoover: I don't expect that. I'm however suggesting I do not enjoy space opera. 18:00:19 <Vorpal> pikhq: right, it could have spread out if it hadn't died out instead. 18:00:20 <elliott> ais523: I SEE 18:00:20 <Phantom_Hoover> Vorpal, yes, and you suggested this was due to a lack of realism. 18:00:32 <CakeProphet> elliott: do you see what I've done? 18:00:45 <CakeProphet> it's beautiful. 18:00:58 <Vorpal> Phantom_Hoover: Correct: I do not enjoy space opera. The reason for that is the lack of hard science. I'm not saying other people might not enjoy it. 18:01:04 <pikhq> Vorpal: Wouldn't have ever made it to Europe, though. 18:01:13 <elliott> Vorpal: But you enjoy Trek? 18:01:22 <Vorpal> elliott: not really 18:01:40 <Phantom_Hoover> Vorpal, and I assume you also dislike fantasy. 18:02:08 <CakeProphet> I prefer non-fiction as fiction is not very realistic. 18:02:12 <zzo38> If I make up a Linux distribution, I already have idea how to make up a naming scheme, which is different from other systems. 18:02:32 <elliott> ais523: OK but seriously should I reburn. 18:02:36 <Vorpal> Phantom_Hoover: varies, I think the issue I have is not with the lack of realism as such, but the clash of science-like things (such as space ships) and the utter lack of science in how they are used within the work. 18:03:10 <ais523> elliott: I don't know, I'm not an expert 18:03:16 <ais523> why do you think I know more than you do wrt this? 18:03:22 <ais523> I'd suggest reburning slower, though 18:03:26 <Vorpal> Phantom_Hoover: I'm not saying that makes the genre of space opera inherently bad, just that I do not enjoy it. 18:03:29 <elliott> ais523: dunno, you're a scientist and mentioned DVDs once. 18:03:36 <elliott> I'll just use it, since I'm reinstalling /again/ later. 18:03:38 <zzo38> When I play D&D game, occasionally I do think about real physics and how it applies, if at all, to the specific cases. 18:03:39 <ais523> as OSes can go mad when checksums don't match, even if it's something minor that doesn't match up 18:03:56 <zzo38> Even relativity when using the Time Hop spell. 18:03:56 <elliott> ais523: I think every burn with this drive has failed to verify, so... 18:04:03 <elliott> But OK fine I'll reburn 18:04:17 <Vorpal> elliott: you said checksum didn't match? 18:04:18 <Vorpal> hm 18:04:33 <Vorpal> I had a drive that reported wrong checksum on newly burnt things once 18:04:37 <Phantom_Hoover> zzo38, "I cast Lorentz transform!" 18:04:57 <Vorpal> elliott: I did dd if=/dev/cdrom of=tmp-file and them compared tmp-file to the iso, it matched 18:05:00 <zzo38> Phantom_Hoover: Yes let's make up that spell! 18:05:05 <Vorpal> even if cdrecord said the checksum didn't 18:05:10 <Vorpal> elliott: so that might be worth checking 18:05:25 <Vorpal> Phantom_Hoover: heh. 18:05:26 <elliott> ais523: hmm, it only burned at four-times 18:05:30 <elliott> but I'll try two-times 18:05:46 <Vorpal> elliott: eh, go for what it says on the disc you are using. 8x is usually sane 18:05:51 <Vorpal> 32x sounds insane 18:06:10 <elliott> Vorpal: Four-times is max. 18:06:24 <Vorpal> elliott: you said 32? 32 > 4? 18:06:29 <zzo38> Vorpal: What I usually do is use the second highest available speed. 18:06:32 <elliott> Vorpal: where 18:06:39 <Vorpal> oh misread 18:06:58 <Vorpal> elliott: when you spelled out "try two-times" I read it as "thirty two-times" somehow 18:08:35 <elliott> ais523: hmm, is a very slightly tilted surface OK as long as it's stable? YOU'RE THE EXPERT 18:09:05 <Vorpal> elliott: probably but why not just use a flat table? 18:09:10 <ais523> elliott: it should theoretically work at any orientation so long as the DVD itself is symmetrical (no asymmetrical label stuck on the back, etc) 18:09:12 <elliott> cable isn't long enough 18:09:23 <Vorpal> elliott: move table? 18:09:29 <elliott> cable isn't long enough 18:09:31 <ais523> unless the motor in the DVD drive isn't strong enough to move the write head upwards and downwards, but is to move it horizontally 18:09:37 <Vorpal> elliott: move wall socket? 18:09:38 <elliott> and no convenient table 18:09:41 <Vorpal> ah 18:10:32 <Vorpal> does anyone use DVD-RAM? 18:12:22 <Phantom_Hoover> help i have forgotten which bits of the internet to look at when i'm bored 18:12:33 <fizzie> Vorpal: I have one of those discs; it came with the DVD+/-RW/-RAM burninator. 18:12:35 <Vorpal> Phantom_Hoover: tvtropes 18:12:46 <Vorpal> fizzie: heh, ever used it? 18:12:49 <Vorpal> (the disc I mean) 18:12:56 <Phantom_Hoover> Vorpal, sorry your opinions no longer count. 18:13:11 <fizzie> Vorpal: Not sure, but I don't think I have. 18:14:21 <elliott> This is so slow. 18:14:25 <elliott> I wonder if it's stalled. 18:14:57 <CakeProphet> dude I what if t-rexes used tools 18:15:05 <CakeProphet> being all bipedal and shit. 18:17:06 <zzo38> I think I saw a picture in one of the D&D expansion books that depicted a dinosaur attempting to use a sword 18:17:21 <Vorpal> CakeProphet: small arms. Not much reach 18:18:30 <CakeProphet> still free to grab things 18:18:37 <CakeProphet> I'm not saying they would be good at it... 18:19:32 <zzo38> Make the pinball house consisting of mostly flipperless games and only one or two pinball games having flippers. 18:27:34 <CakeProphet> I wonder why Randall is afraid of velociraptors 18:27:35 <CakeProphet> http://en.wikipedia.org/wiki/File:Vraptor-scale.png 18:27:55 <CakeProphet> they're quite small. perhaps that's the joke and I just didn't catch on due to ignorance. 18:28:10 <fizzie> But they're so CLEVER. 18:28:18 <fizzie> See: a park, Jurassic. 18:29:03 <fizzie> Also that head is very close to grabbing a very sensitive place. 18:31:38 <Vorpal> fizzie: I never watched Jurassic, did they do that in that movie? 18:33:03 <fizzie> See the "clever girl" meme. 18:33:03 <CakeProphet> no they were much larger in that movie. 18:33:35 <Vorpal> CakeProphet: as explained here: http://en.wikipedia.org/wiki/Velociraptor#In_popular_culture 18:33:46 <fizzie> "'Clever Girl' is a catchphrase that can be used to express respect or admiration for something has demonstrated substantial intelligence. It is often associated with the extinct Velociraptor dinosaur genus. (See also: Philosoraptor, Raptor Jesus)" 18:39:00 <zzo38> I have a pinball game titled "GOO GOO DA DA" which features music of The Carlisles and has only a single flipper, which cannot be directly controlled by the player (it moves only when certain bumpers are hit) 18:39:39 <zzo38> When the ball drains, you earn points according to the position of the flipper. 18:39:56 <Vorpal> which part does the player control then? 18:40:35 <zzo38> The plunger and the nudging. 18:41:48 <CakeProphet> I shall now invent a pinball game with portals. 18:42:22 <CakeProphet> to win you create an infinite portal loop to build up the pinballs momentum before launching it onto a platform far above 18:42:51 <Vorpal> CakeProphet: this reminds me of something. A computer game I think. I wonder which one? XD 18:44:16 <zzo38> OK; but generally in pinball game you simply earn a certain number of points before you run out of balls to play. 18:44:26 <CakeProphet> Vorpal: all games are better with portals. 18:44:58 <fizzie> Is that Portal 2 thing any good? I playeded the first one now the other day when it was free. 18:45:10 <Vorpal> CakeProphet: hm.... Not sure about solitaire or mine sweeper? 18:45:14 <CakeProphet> yes Portal 2 is very good 18:45:15 <ais523> fizzie: it's more of the same, just longer 18:45:21 <ais523> more puzzles, more witty dialogue 18:45:21 <elliott> fizzie: Apparently it's good but people aren't happy that it's not more difficult or anything. 18:45:21 <Phantom_Hoover> I have the first one but my goddamn computer doesn't let me play it. 18:45:32 <Vorpal> fizzie: with paintballs or some such from what I heard too 18:45:34 <CakeProphet> more features, more puzzle elements, 2 player co-op 18:45:34 <elliott> Wait, ais523 has played it? I didn't expect that. 18:45:36 <ais523> I personally think it dies away a bit towards the end, but the first two-thirds or so are excellent 18:45:36 <Phantom_Hoover> ais523, I thought the plot was a bit less amusing than the first one. 18:45:39 <ais523> elliott: no, I haven't played it 18:45:40 <CakeProphet> it's not "more of the same" 18:45:44 <Vorpal> <Phantom_Hoover> I have the first one but my goddamn computer doesn't let me play it. <-- oh? 18:45:47 <ais523> I happen to know a lot about a lot of computer games I haven't played 18:45:53 <ais523> due to following speedruns, etc 18:46:09 <Phantom_Hoover> Vorpal, it works under Wine but my GPU is a bit of cardboard with some lines and an Intel logo drawn on it. 18:46:15 <fizzie> Maybe I'll wait a few years and it'll be free too. 18:46:16 <Vorpal> Phantom_Hoover: ah 18:46:19 <ais523> CakeProphet: I consider the more puzzle elements, etc, to be "more of the same" 18:46:21 <elliott> ais523: lol 18:46:33 <ais523> more witty dialogue, too, but that's also more of the same 18:46:35 <Vorpal> Phantom_Hoover: yes portal 1 works under wine. Played it there. Orange box release iirc. So no steam crap 18:46:41 <Vorpal> haven't played portal 2 18:46:43 <elliott> ais523: you said that 18:46:45 <Vorpal> might at some point 18:46:48 <ais523> right 18:46:53 <elliott> This World of Warcraft ad literally says "PLAY FREE[ASTERISK] NOW". 18:46:53 <Vorpal> the graphics are quite low end, so shouldn't be a problem 18:46:59 <elliott> You aren't fooling anybody. 18:47:01 <Vorpal> (since I don't have intel) 18:47:02 <CakeProphet> so "it's more of the same" in that it continues its awesome premise but adds more complexity to it. okay. 18:47:09 <ais523> elliott: what does the asterisk refer to? I know there are people who were fooled 18:47:22 <ais523> oh, the ending is very clever, too 18:47:24 <Phantom_Hoover> Vorpal, I don't have Intel either, I have a bit of cardboard. 18:47:24 <elliott> ais523: It seems like it's only up to level twenty, but maybe there are other restrictions too 18:47:32 <Vorpal> Phantom_Hoover: oh right, even worse 18:47:32 <Phantom_Hoover> Although it is cardboard from an Intel box, I'm told. 18:47:35 <ais523> elliott: it's basically "no interaction with other people" 18:47:41 <elliott> ais523: haha 18:47:45 <CakeProphet> elliott: I thought the free trial was a week up to level 10 18:47:46 <ais523> as well as the level cap 18:47:49 <CakeProphet> or it was whenever I played. 18:47:51 <Vorpal> Phantom_Hoover: a cardboard able to do 2D graphics. What will they think of next... 18:47:53 <ais523> CakeProphet: it's been generalised 18:47:57 <elliott> MSORPG 18:48:00 <ais523> it's indefinite, but you can't interact with other people and there's a level cap 18:48:00 <elliott> singleplayer 18:48:23 <CakeProphet> oh 18:48:44 <Vorpal> that defeats the point of WoW doesn't it? 18:48:57 <elliott> O RLY 18:49:09 <ais523> Vorpal: WoW is a boredom simulator 18:49:12 <elliott> Vorpal mad 18:49:15 <ais523> it works just as well at that singleplayer as multiplayer 18:49:19 <Vorpal> heh 18:49:23 <Vorpal> you tried it? 18:49:28 * CakeProphet played a character to level 85, got his character raid ready, and then quit after deciding it was more or less an addicting chore. 18:49:29 <elliott> ais523: I think the boredom is slightly less addictive singleplayer 18:49:34 <ais523> elliott: so do I 18:49:44 <elliott> s/slightly/significantly/ :P 18:49:46 <ais523> CakeProphet: at least you broke free 18:49:55 <Vorpal> never played WoW 18:50:09 <ais523> heh, I'd have been very surprised if you had 18:50:28 <CakeProphet> 85, btw, being max level. I guess that's kind of like winning except it's not really because you still waste a shit ton more time getting raid and pvp gear. 18:50:34 <CakeProphet> so basically you never win you just lose shit tons of time. 18:50:42 <Vorpal> CakeProphet: raid being? 18:50:48 <CakeProphet> pretty sure I had... 18 days of playtime when I quit. 18:50:49 <CakeProphet> roughly 18:50:57 <ais523> Vorpal: a bunch of people cooperating to take on a boss 18:50:58 <Vorpal> ouch 18:51:04 <Vorpal> ais523: ah okay. 18:51:10 <CakeProphet> Vorpal: you go into a dungeon place and kill NPCs with 10 or 25 other people. 18:51:21 <Vorpal> CakeProphet: the point being? 18:51:35 <CakeProphet> to get more raid gear to repeat the process. 18:51:37 <ais523> Vorpal: something to do with your stats 18:51:52 <Vorpal> I see 18:51:53 <CakeProphet> also there's an element of challenge in coordinating that many people, and the bosses require you to do some slightly non-trivial things. 18:51:58 <elliott> ais523: yay, it burned properly this time 18:52:07 <elliott> the advantages of sitting completely still while bending awkwardly to type 18:52:24 <Vorpal> CakeProphet: hm, I have to say I would rather sink time into an elder scroll game than that... 18:52:37 <CakeProphet> yes I'd rather play dwarf fortress... 18:52:41 <elliott> OK so 18:52:41 <Vorpal> that said, oblivion and so on is kind of cool but I would never play it to 100% completion 18:52:43 <elliott> ais523: if I die 18:52:44 <elliott> ais523: then 18:52:46 <CakeProphet> or FUCKING PEN AND PAPER 18:52:47 <elliott> ais523: computers are explosive 18:52:48 <Vorpal> CakeProphet: or that yes 18:52:49 <CakeProphet> but no one wants to play that. 18:53:00 <elliott> CakeProphet: Fucking pen and paper does not sound like the greatest pasttime. 18:53:05 <Vorpal> CakeProphet: I have NWN1, it saves on the effort of rolling the dice 18:53:19 <CakeProphet> I play online, with dice rolling programs. 18:53:21 <elliott> See "y'all mofos" (as they say on the street) in N times. 18:53:24 -!- elliott has quit (Remote host closed the connection). 18:53:24 <Vorpal> heh 18:53:39 <CakeProphet> Vorpal: also a single-player computer game can't simulate a pen and paper experience ever. 18:53:45 <CakeProphet> unless there's strong AI. 18:54:05 <Vorpal> CakeProphet: anyway, I do kind of look forward to skyrim. I will definitely try it at least. I hope it will be good, but I will probably not play more than a few days of game time in total in it. 18:54:20 -!- tiffany has quit (Ping timeout: 248 seconds). 18:54:24 <CakeProphet> it's ridiculous how much time you can waste on 18:54:25 <CakeProphet> WoW 18:54:34 <CakeProphet> without even realizing it, or caring, or thinking it's excessive. 18:54:40 <Vorpal> (wasn't there supposed to be like 300 hours of gameplay in skyrim? yeaaah no I don't have that time) 18:55:26 <CakeProphet> WoW's marketing strategy is basically to get you to play for free. 18:55:29 <CakeProphet> because it's like crack. 18:55:30 -!- tiffany has joined. 18:55:30 <ais523> they're probably 1 hour repeated 300 times 18:56:01 <Vorpal> ais523: I'm slightly more optimistic: 1.5 hours repeated 200 times 18:56:14 <CakeProphet> ais523: however healing was actually pretty fun simply because there was challenge to it. 18:56:23 <CakeProphet> everything else was button mashing. 18:56:28 <Vorpal> ais523: but then I'm a slow player whenever there is a game with stuff I can pick up. I try to find everything before leaving an area. 18:56:41 <Vorpal> CakeProphet: how is healing done then? 18:57:18 <CakeProphet> Vorpal: by mashing buttons with some forethought involved. 18:57:24 <Vorpal> ah.... 18:57:36 <zzo38> What other features do you want in your pinball game with portals? 18:57:42 <Vorpal> hotkey mmos look excessively boring. 18:58:06 <CakeProphet> as you have 4, or 10, or 25 people to keep alive, and healing takes cast time and mana so you have to balance all of these factors or else everyone dies and has to start over... 18:58:31 <Vorpal> CakeProphet: only matters if you are a healer I guess 18:59:04 <CakeProphet> well not really but for the most part yes. 18:59:15 <Vorpal> so boring then 18:59:16 <Vorpal> okay 18:59:16 <cheater> DACHGESCHOSS 19:00:01 <Vorpal> CakeProphet: I prefer a game with somewhat more to the battle than just that. I have to say that Deus Ex HR has very good battle (apart from that I'm bad at aiming at moving enemies, but that is not a problem of the game really) 19:00:02 <CakeProphet> !wacro 19:00:30 <CakeProphet> Vorpal: it's just varied enough to make it mindlessly addicting but it's more or less the same routine. 19:00:32 <Vorpal> witcher 2, another good example. There is more than just mashing buttons. 19:00:47 <Vorpal> CakeProphet: which one? deus ex!? 19:01:02 <CakeProphet> especially with DPS (the damage-dealing role) when you're DPS basically your strategy consists of memorizing a rotation that results in the highest damage per second. 19:01:05 <CakeProphet> Vorpal: no wow 19:01:09 <Vorpal> ah 19:01:09 <CakeProphet> I've never played that game 19:01:27 <Vorpal> CakeProphet: speaking of which, what does DPS stand for? I seen it sometimes but never bothered to check 19:01:32 <CakeProphet> damage per second. 19:01:40 <Vorpal> ah 19:01:46 <CakeProphet> that's what they do, is maximize that. 19:02:27 <CakeProphet> tank isn't much better. Basically tanking involves paying some attention to the enemies so they don't stray off and attack other people, and then smash keys wildly as your rotation doesn't matter as much. 19:02:55 <Vorpal> CakeProphet: in deus ex: human revolution at least, sneaking is very important part of combat, or avoiding combat (technically you can avoid killing anyone in the whole game apart from the 3 or so bosses) 19:03:01 <CakeProphet> tl;dr CakeProphets Novel on Wow Strategy 19:03:21 <CakeProphet> Vorpal: that's interesting I've always liked stealth in games, when done well. 19:03:36 <CakeProphet> I've often considered a game that isn't very combat-oriented but instead relies on stealth and puzzles. 19:03:36 <Vorpal> CakeProphet: it works well in deus ex, but then it is single player only 19:04:10 <CakeProphet> your character would have powers such as being able to blend into darkness (even more so when not moving very much) and being able to see through walls and read minds. 19:04:16 <Vorpal> CakeProphet: only complaint I have about deus ex hr really is that the graphics are not as awesome as the graphics in witcher 2. But then I haven't seen any game with that level of graphics. 19:04:21 <Vorpal> (other than witcher 2) 19:04:24 <CakeProphet> with probably some crazy complicated control scheme like assassin's creed. 19:04:37 <CakeProphet> but more crazy and complicated. 19:05:01 <Vorpal> CakeProphet: oh and there are usually several alternative routes for going anywhere in deus ex: hr. And if you want to max out experience you get you should actually do non-lethal takedowns 19:05:51 <CakeProphet> that's the only elements of the game I've figured out: the wall-seeing and possibly a mind-reading element as a source of fragmented hints. I see the story and interface kind of building fluidly to immerse you in the game. 19:05:58 <Vorpal> <CakeProphet> your character would have powers such as being able to blend into darkness (even more so when not moving very much) and being able to see through walls and read minds. <-- see through wall is in the skill tree of deus ex hr, it drains your batteries though 19:06:02 <CakeProphet> but that's difficult to do with complex schemed without saying "do this shit to make this happen okay?" 19:06:13 <Vorpal> (you play as a cyborg basically, after the tutorial bit) 19:06:52 <Vorpal> CakeProphet: and I should probably try out assassin's creed some time. It is quite old though iirc? 19:07:00 <CakeProphet> erm, if that's a requirement, yes 19:07:02 <Vorpal> what are the graphics like compared to state-of-the-art today 19:07:13 <CakeProphet> I recommend II though because it fixes a lot of the cons of that game. 19:07:13 <Vorpal> CakeProphet: what is a requirement? 19:07:27 <CakeProphet> Vorpal: oh nevermind I like to misread things horribly. 19:07:29 <CakeProphet> yes it's old. 19:07:36 <Vorpal> CakeProphet: I have a high-end card that is just a few months old, I want awesome graphics 19:07:41 <CakeProphet> play magicka 19:07:43 <CakeProphet> best game 19:07:49 <CakeProphet> $10 19:07:49 <Vorpal> CakeProphet: I tried. I die all the time 19:07:57 <CakeProphet> I am the magicka master. 19:07:59 <Vorpal> CakeProphet: I like the humour though 19:08:13 <Vorpal> the cross-language humour in the spoken dialogue is especially amusing 19:08:14 <CakeProphet> I play co-op and dominate with my mad skills 19:08:23 <Phantom_Hoover> CakeProphet, I want to, but a) craputer, b) Windows and c) it will never live up to the Yogscast and TotalBiscuit playthroughs. 19:08:28 <CakeProphet> Vorpal: yes is that an actual language? it sounds to me like a strange pidgin. 19:08:43 <Vorpal> CakeProphet: it is a made up language with a few phrases of English and Swedish mixed in 19:08:58 <CakeProphet> ah okay. 19:09:02 <CakeProphet> that's what I thought. 19:09:14 <CakeProphet> there's really only like maybe 8 spells you need to know 19:09:20 <CakeProphet> to kill anything very quickly. 19:09:31 <CakeProphet> defend yourself, become immune to things, etc. 19:09:31 <Vorpal> CakeProphet: still if you know Swedish you will notice that every now and then it doesn't match the text dialogue at all. 19:10:02 <CakeProphet> though I think in the most recent patch they made QERASR less completely overpowered 19:10:06 <Vorpal> CakeProphet: like instead of villager I heard "fjant" which means something like "silly person" 19:10:09 <CakeProphet> so you have to have an immunity shield to cast it and not instantly die. 19:10:28 <Vorpal> CakeProphet: QERASR being? 19:10:43 <CakeProphet> QERASR + sword cast = massive line of electrified arcane steam ice rocks. 19:10:56 -!- zzo38 has quit (Remote host closed the connection). 19:10:58 <CakeProphet> freezes and then electricutes. 19:11:03 <CakeProphet> with massive damage 19:11:05 <Vorpal> CakeProphet: is it a thing from one of the books? 19:11:08 <CakeProphet> no 19:11:10 <Vorpal> or a normal combined spell? 19:11:11 <CakeProphet> just a normal spell 19:11:11 <Vorpal> ah 19:11:18 <Vorpal> I'll have to try it 19:11:37 <CakeProphet> QFQFASA is another good one. it's the spell for lightning storm but just use the normal spell as lightning storm usually kills you. 19:12:00 <Vorpal> CakeProphet: I found that going with the vietnam thingy for the character then casting a bubble shield and standing right next to the shield let me shoot through it with the gun 19:12:10 <Vorpal> useless against other wizards since I tend to get burnt then 19:12:26 <Vorpal> might have been in an old version 19:12:45 <CakeProphet> edfff is good, volcano barriers. also edrrr which is cold volcano barriers. both good for defense. edddd is the best for complete defense with no damage. 19:12:49 <CakeProphet> Vorpal: vietnam is crap 19:13:19 <Vorpal> CakeProphet: yes but the character from it I meant. Works well against the bomb throwing goblins 19:13:28 <CakeProphet> it's been months since I've played this game... I just have these combinations drilled into my brain. 19:13:38 <Vorpal> frankly Magicka is too much fast paced action for me to manage 19:13:45 <Vorpal> might be easier in co-op 19:13:55 <CakeProphet> co-op is laggy and crashy and you die a lot. 19:13:59 <CakeProphet> and people suck at reviving 19:14:06 <Vorpal> CakeProphet: I already die in single player a lot... 19:14:11 <CakeProphet> it takes all of two seconds to revive someone 19:14:17 <CakeProphet> yet people can't manage it somehow. 19:14:43 <CakeProphet> Vorpal: QFSAFE + self cast = temporary immunity to most damaging elements 19:14:54 <CakeProphet> useful when around other wizards, friend or foe. 19:15:06 <CakeProphet> also useful mnemonic 19:15:32 <Vorpal> CakeProphet: mhm. really I can't really manage it. Also the check point system is annoying. I would have preferred a quick save system for a game that hard. 19:16:01 <CakeProphet> single player becomes incredibly easy once you learn all of the overpowered spells though... 19:16:05 <CakeProphet> vietnam is still difficult though. 19:16:08 <CakeProphet> arena is the best. 19:16:09 <Vorpal> CakeProphet: right 19:16:30 <CakeProphet> I liked the checkpoint system I recall. 19:16:54 <Vorpal> mhm 19:16:57 <Vorpal> CakeProphet: too few of them 19:17:55 <CakeProphet> a wizard's life is tough, okay. 19:18:13 <Vorpal> CakeProphet: sure, but the game is way too fast paced for me to manage it. 19:18:22 <Vorpal> I'm just not good at that type of game. 19:18:25 -!- oerjan has joined. 19:18:36 <CakeProphet> Vorpal: focus more on being awesome. 19:18:39 <CakeProphet> works all the time. 19:18:40 <CakeProphet> :) 19:19:02 <CakeProphet> I'm not even thinking half of the time I play that game. 19:19:04 <Vorpal> CakeProphet: hm. I'm good at some games though. Nethack for example. 19:19:14 <CakeProphet> I have actually never played a single rogue-like 19:19:14 <Vorpal> because it involves a lot of thought 19:19:37 <lifthrasiir> http://codepad.org/Vj1SwqmH Esotope is now the fastest Whirl interpreter. 19:19:54 <Vorpal> CakeProphet: I'm much better at games that require a lot of thinking than those that require quick actions. 19:19:54 <CakeProphet> yeah magicka is in a class of games that requires reaction time, like first person shooters. Except people who are good at those games aren't good at magicka because of the spell combos. 19:19:56 <lifthrasiir> ...still a lot slower than Brainfuck tho 19:19:58 <lifthrasiir> :p 19:20:13 <CakeProphet> Vorpal: magicka can require both for sure. but yes it's very fast thinking. 19:20:37 <Vorpal> CakeProphet: deus ex: hr is a FPS mixed with an RPG (and it works) but thanks to stealth I can be good at it too. 19:20:53 <CakeProphet> Vorpal: the trick is to continuously put yourself in situations to give you time to think. For example, rock barriers are very good for that purpose as they act as decoys basically. 19:21:01 <Vorpal> hm 19:21:08 <oerjan> <Vorpal> CakeProphet: uh are you trying to poke another thread and insert an exception in it? 19:21:14 <oerjan> ghc supports that. 19:21:23 <CakeProphet> I just realized how dirty that sounds. 19:21:23 <Vorpal> oerjan: so non-functional :( 19:21:34 <oerjan> well it's in the IO Monad of course :P 19:21:35 <Vorpal> CakeProphet: also I found it hard to remember all those key combos in magicka. 19:21:39 <Vorpal> that didn't help 19:21:47 <CakeProphet> Vorpal: yeah it's difficult starting off. 19:22:20 <oerjan> hm wait actually it may not be in the IO monad, after all exceptions are not so in general 19:22:38 <Vorpal> CakeProphet: I suck at memorising codes and so on. Getting a new bank card = nightmare. 19:22:41 <CakeProphet> oerjan: uh, something involve threads not in the IO monad?? 19:22:45 <CakeProphet> *involving 19:22:58 * oerjan is checking that 19:23:02 <CakeProphet> Vorpal: people memorize their account numbers and such? 19:23:12 <CakeProphet> I thought that's what the card was for. 19:23:15 <Vorpal> CakeProphet: no I meant the code for using it when paying 19:23:17 <ais523> CakeProphet: PIN number, possibly 19:23:18 <Vorpal> the 4 digit code. 19:23:20 <Vorpal> debit card 19:23:21 <ais523> well, PIN 19:23:22 <CakeProphet> oh that 19:23:25 <ais523> but everyone calls it "PIN number" anyway 19:23:36 <ais523> to the extent that I believe that's now the correct term for it 19:23:41 <CakeProphet> oh, well yes that's only 1 thing to remember 19:23:46 <Vorpal> CakeProphet: 4 digits is hard to remember, something like qassdqwe is even worse 19:23:50 <CakeProphet> compared to however-many-spell-combos there are in magica. 19:23:54 <Vorpal> (whatever that does in magicka) 19:24:03 <CakeProphet> it's not as simple as 10^10 because some combinations don't exist. 19:24:04 <Vorpal> (I just randomly hit a few buttons) 19:24:24 <oerjan> CakeProphet: hm no you are right, throwTo is only in the IO monad 19:24:24 <CakeProphet> Vorpal: lol 19:24:41 <Vorpal> ais523: I wonder if people will start saying PINN for "PIN number" leading to "PINN number" in the future 19:24:49 <lifthrasiir> ais523: when PIN is used in the adjective context it stands for Personal Identification Numeric 19:24:58 <CakeProphet> VCS System 19:25:06 <ais523> Vorpal: I doubt it 19:25:23 <Vorpal> ais523: same. and that is sad 19:25:24 <lifthrasiir> (or whatever suitable for N.) 19:25:40 <ais523> lifthrasiir: Personal Identification Numeric Number? 19:25:45 <Vorpal> XD 19:26:29 <lifthrasiir> ais523: my point is that everyone uses PIN as an adjective so it is being retroactively re-acronymed 19:26:32 <lifthrasiir> :p 19:26:59 <Vorpal> hm, car keys seems to be getting larger over time. Modern ones are quite a lot larger than ones from the early 90s in my experience. 19:27:09 <Vorpal> guess it is all that extra electronics 19:27:39 <CakeProphet> Vorpal: qassdqwe is equivalent to aqde which is the "arcane water volcano" spell. 19:27:48 <Vorpal> CakeProphet: I see. 19:27:55 <CakeProphet> the s's and w's cancel as do the a's and q's 19:28:06 <Vorpal> I see, yet there is one aq left? 19:28:36 <coppro> CakeProphet: what. 19:28:48 <oerjan> aqua destructor 19:28:49 <CakeProphet> erm... 19:29:01 <coppro> what are we talking about 19:29:11 <CakeProphet> sdqe actually 19:29:21 <CakeProphet> coppro: magicka 19:29:46 <oerjan> NOT AS BACKRONYMIC 19:29:48 <Vorpal> CakeProphet: and sdqe is? 19:29:57 <CakeProphet> Vorpal: which is still the arcane water volcano. wets things near it, can take a certain amount of damage, and then explodes upon being destroyed. 19:30:05 <Vorpal> right 19:30:57 <oerjan> senatus delenda quousque est 19:31:11 <CakeProphet> coppro: best game ever. 19:31:11 <CakeProphet> play it 19:31:16 <CakeProphet> with your awesome gaming computer. 19:31:39 <Vorpal> magicka doesn't exactly require a high end system 19:31:39 -!- pikhq has quit (Ping timeout: 276 seconds). 19:31:43 <CakeProphet> be inspired to become a great wizard. 19:31:47 <CakeProphet> Vorpal: it does actually. 19:31:59 <CakeProphet> higher-end than my Dell Inspiron 15 actually. 19:32:00 <Vorpal> CakeProphet: really? it is fairly basic 3D 19:32:08 <CakeProphet> Vorpal: with a physics engine 19:32:19 <Vorpal> CakeProphet: done on the GPU or the CPU? 19:32:20 <CakeProphet> and particle effects. 19:32:29 <CakeProphet> Vorpal: no idea actually. 19:32:32 <Vorpal> CakeProphet: come on, even NWN1 had particle effects 19:32:50 <Vorpal> sure the magicka ones are a bit more advanced 19:32:53 <Vorpal> but not THAT much 19:32:59 <CakeProphet> I can't play Magicka but I can play WoW and Borderlands on my laptop 19:33:13 <Vorpal> CakeProphet: never played borderlands, any good? (and what genre?) 19:33:16 <coppro> CakeProphet: wrong 19:33:21 <CakeProphet> coppro: uh? 19:33:28 <coppro> nomic 19:33:37 <CakeProphet> Vorpal: RPG FPS. more mindless fun games. 19:33:42 <CakeProphet> not the thinking games. 19:34:06 <Vorpal> CakeProphet: ah, so RPG FPS without stealth being a central part of the game? 19:34:06 <CakeProphet> Vorpal: also my laptop can play STARCRAFT 2 19:34:07 <CakeProphet> but not magicka 19:34:13 <CakeProphet> Vorpal: yeah not much stealth 19:34:14 <Vorpal> never played starcraft 2, can't compare 19:34:34 <CakeProphet> Vorpal: I think the issue is that Magicka has no configurable graphics settings 19:34:40 <CakeProphet> because it's a small indie game. 19:34:43 <CakeProphet> with a small budget. 19:34:58 <Vorpal> CakeProphet: I find stealth is what makes deus ex hr fun for me. You get bonuses for stuff like finishing a mission without ever being seen by an enemy. Or even without ever making them alarmed. 19:35:14 <Vorpal> <CakeProphet> Vorpal: I think the issue is that Magicka has no configurable graphics settings <-- iirc you can set resolution? 19:35:18 <oerjan> <Vorpal> "hyle"? 19:35:38 <Vorpal> CakeProphet: pretty sure I would have ditched it if I couldn't have gotten native res 19:35:38 <oerjan> a most prepromorphic histoword 19:35:42 <CakeProphet> Vorpal: I don't remember but you can't turn off all the particles and shaders and textures and physics. 19:36:04 <Vorpal> CakeProphet: right. But then I can play witcher 2 with everything but supersampling. I wouldn't have noticed. 19:36:05 -!- pikhq has joined. 19:36:42 <CakeProphet> depends on the definition of high-end, but my laptop can play many games with good graphics but not Magicka. 19:36:55 <CakeProphet> Vorpal: also you might like sc2 but it's another one of those games that require fast-paced thinking 19:36:58 <CakeProphet> more so than Magicka. 19:36:58 <Vorpal> CakeProphet: and witcher 2 is very demanding. The specs at https://secure.wikimedia.org/wikipedia/en/wiki/The_Witcher_2%3A_Assassins_of_Kings#Development seems a bit of the low end even for recommended. 19:37:06 <Vorpal> CakeProphet: what genre? 19:37:16 <CakeProphet> having your opening strategy to pinpoint precision is essentially to 1v1 19:37:18 <CakeProphet> RTS 19:37:23 <CakeProphet> *essential 19:37:24 <Vorpal> hell no 19:37:29 <CakeProphet> best RTS ever imo 19:37:35 <Vorpal> RTS is boring as shit unless it is hard as shit 19:37:35 <oerjan> <Vorpal> CakeProphet: fantasy names tend to follow some sort of pattern, I can't quite imagine "fielinibuuersillionsceuendecon" in any sort of fantasy setting. Not even a parody one 19:37:41 <CakeProphet> Vorpal: no it's the best. 19:37:45 <oerjan> tolkien ents. just saying. 19:37:52 <Vorpal> oerjan: touche 19:38:01 <Vorpal> CakeProphet: I have not yet seen a RTS I liked. 19:38:05 <CakeProphet> Vorpal: it's difficult when it's competitive 1v1 19:38:28 <CakeProphet> Vorpal: also it's not a lame RTS. very barebones compared to most. 19:38:32 <oerjan> although it would clearly be a bit on the short side for them 19:38:38 <Vorpal> CakeProphet: I prefer to play single player in most game. Never really liked multiplayer except for flight simulators and minecraft. 19:38:42 <cheater> nethack is the best rts ever 19:38:52 <CakeProphet> nope starcraft 2 19:39:01 <Vorpal> cheater: nethack is not an rts.... 19:39:26 <cheater> that is only because you don't play it like one. 19:39:47 <Vorpal> ... 19:39:49 <CakeProphet> Vorpal: yeah RTS can be boring if you play them in a boring manner 19:39:52 <CakeProphet> but you can't do that in multiplayer 19:39:55 <CakeProphet> because you will be crushed. 19:40:16 <Vorpal> CakeProphet: I don't enjoy multiplayer for most games I tried it for. 19:40:19 <CakeProphet> starcraft is a sport in Korea.. 19:40:19 <cheater> i sort of dislike multiplayer computer games 19:40:36 * CakeProphet tends to prefer multiplayer games unless they're very intricate or puzzley 19:40:42 <CakeProphet> like Portal and Dwarf Fortress. 19:40:45 <CakeProphet> are good examples. 19:40:47 <Vorpal> CakeProphet: I like multiplayer for flightsims, it is not competitive there. 19:41:02 <Vorpal> CakeProphet: neither of those games HAVE multiplayer so the point is moot 19:41:09 <CakeProphet> that's what I'm saying... 19:41:14 <Vorpal> I think portal 2 might have co-op though 19:41:16 <Vorpal> not sure 19:41:17 <CakeProphet> yes it does. 19:41:32 <CakeProphet> favorite fighting game = super smash bros. brawl :) 19:41:38 <CakeProphet> again for multiplayer only. 19:42:11 <Vorpal> eh, tried fighting games.. No 19:42:23 <CakeProphet> smash bros. is not a normal fighting game though. 19:42:29 <CakeProphet> I dislike fighting games as well. 19:42:35 <CakeProphet> it's like a platform/fighter 19:42:42 <Vorpal> CakeProphet: I tried the one for N64. 19:42:59 <Vorpal> it was just like a fighting game with Nintendo characters IMO 19:43:32 <CakeProphet> eeeh 19:43:40 <Vorpal> CakeProphet: I think that a good story is probably the most important part of an RPG. Sure good gameplay is vital too, but without a good story it just doesn't work. Which is one of the weaker points of Oblivion. 19:43:53 <Vorpal> CakeProphet: okay a bit more jumping sure 19:43:54 <CakeProphet> most of the games I enjoy playing have almost no story. with some exceptions. 19:44:23 <Vorpal> I would go as far as saying that oblivion was a bad game with an absurdly excellent terrain generator. Which made it worth playing. 19:44:26 <CakeProphet> I tend to enjoy games as a competition or a puzzle or for strategy. 19:44:42 <Vorpal> CakeProphet: I play RPGs to immerse myself into the story. 19:45:15 <Vorpal> CakeProphet: that is one reason I like Witcher 2, you make choices that affect the outcome of the game in major ways. Often there is no clear "right" answer either. 19:45:21 <cheater> i like games with good stories 19:45:22 <Vorpal> a lot of replay value in that 19:45:26 <cheater> even if the game itself is very simple 19:45:44 <Vorpal> you can get two completely different chapter 2 depending on your choices in chapter 1 19:46:45 * oerjan imagines a galactic wargame in which the turn system is based on lightspeed communication delay 19:46:54 <Vorpal> oerjan: heh 19:47:17 <Vorpal> oerjan: so you might see the old state of a remote battle for example? 19:47:27 <oerjan> yes. 19:47:34 <Vorpal> that sounds quite interesting. 19:47:41 <Vorpal> not sure it would work out, but you should code it 19:47:51 <Vorpal> oerjan: it could be the next big indie thing if you code that! 19:48:13 <oerjan> and you have to stop your turn once there has been enough time for one of your enemies to be able to respond 19:48:43 <Vorpal> oerjan: oh? I assume the time would be speed up compared to real time? 19:48:55 <ais523> it'd lead to an obvious multiplayer impl, ofc 19:49:02 <ais523> would you allow for relativistic effects? 19:49:02 <Vorpal> ais523: oh? 19:49:20 <ais523> Vorpal: multiplayer synchronization is a hard problem because of communication delay 19:49:24 <oerjan> relativistic effects should be fine 19:49:25 <Vorpal> ah yes 19:49:30 <ais523> but in this case, the communication delay is part of the game, so... 19:49:57 <Vorpal> ais523: you would have to add more delay though to match up to the simulated in-game delay 19:51:18 <Vorpal> anyway, CakeProphet went silent, why? 19:51:33 <ais523> Vorpal: adding delay is much easier than removing it... 19:51:41 <Vorpal> ais523: well yes 19:51:56 <Vorpal> anyway I suggest oerjan implement this 19:52:05 <Vorpal> it could be the next big indie hit 19:52:12 <ais523> oerjan doesn't strike me as the sort of person likely to implement a wargame 19:52:26 <Vorpal> hm true 19:52:29 <fizzie> Yes; it is far more likely he'd wage war for reals. 19:52:38 <Vorpal> quite 19:53:55 <oerjan> ais523: was about to say something to that effect :P 19:54:42 <CakeProphet> Vorpal: bacon 19:54:49 <monqy> die 19:54:54 <CakeProphet> monqy: what. 19:55:00 <monqy> what 19:55:02 <CakeProphet> monqy: die what 19:55:04 <CakeProphet> what should die 19:55:07 <Vorpal> CakeProphet: bacon what? 19:55:17 <CakeProphet> Vorpal: re: CakeProphet went silent 19:55:25 <monqy> nonsense bacon obsession should die 19:55:29 <fizzie> I can't figure out how to sort this Steam store alphabetically. There's just tabs for "new releases", "top sellers", "coming soon" and "specials". 19:55:35 <Vorpal> CakeProphet: yes the discussion we had was interesting. Why did you stop it? 19:55:49 <CakeProphet> monqy: sometimes I wish your auto-hate switch weren't engaged. 19:55:56 <CakeProphet> Vorpal: because I was hungry so I started cooking bacon... 19:55:57 <CakeProphet> we can continue. 19:56:00 <Vorpal> ah 19:56:12 <Vorpal> CakeProphet: read up on stuff since you left then 19:56:15 * oerjan whacks monqy on the head with the saucepan ===\__/ 19:56:21 <monqy> ;_; 19:56:31 <Vorpal> oerjan, monqy: chocolate 19:56:53 <Vorpal> chocolate-coated bacon crisps! 19:56:58 <monqy> mmh 19:57:40 <CakeProphet> I once was working on an Android game that was to be similar to a metroid shooter, but with a control that allowed you to shoot in all 360 degrees, and with puzzles based on localized time-slowing missiles, platforming, reflecting lasers off of mirrors, and other things I haven't thought of yet. 19:58:07 <oerjan> istr a discussion somewhere about where there was any food which wasn't improved by adding either chocolate or bacon. 19:58:07 <ais523> so, nothing like Metroid at all, then? 19:58:11 <CakeProphet> the speed of light delay would be interesting, especially if it were more of a civilization game than a wargame. 19:58:25 <CakeProphet> oerjan: also you could make it like df which would mitigate the need to provide graphics, allowing you to instead focus on complexity. 19:58:42 <Vorpal> oerjan: okay so garlic then. You can't go wrong with garlic. 19:58:42 -!- ellion has joined. 19:58:45 <oerjan> i wish you would stop using the word "you" there >:P 19:58:51 <CakeProphet> ais523: yes just metroid in that it was a sidescrolling shooter. 19:58:52 <ellion> I just got this wonderful captcha for the web chat: http://i.imgur.com/N7vSr.jpg 19:58:53 <fizzie> oerjan: Regarding food: if it's empty, fill it with cream. 19:59:01 <Vorpal> oerjan: what? me? 19:59:01 <monqy> good catpcha 19:59:03 <oerjan> Vorpal: oh it might have been garlic 19:59:04 <ais523> Metroid is mostly not a shooter 19:59:04 <ellion> Everyone bow to its glory. 19:59:08 <ais523> it's more of a platformer 19:59:09 <monqy> bowing 19:59:09 <CakeProphet> oerjan: fine I'll add it to my list of to-brainstorm games. :P 19:59:10 <oerjan> Vorpal: argh! 19:59:12 <ellion> The glory of cesphic "Tuffy". 19:59:16 <Vorpal> oerjan: what? 19:59:24 <fizzie> Vorpal: Garlic and coca-cola is a somehow iffy combination, but that might be just me. 19:59:25 <Vorpal> who is ellion? 19:59:36 <ellion> Vorpal: I'm new. 19:59:41 <Vorpal> fizzie: hm never tried that one. Will have to one day 19:59:43 <ellion> I was here a few years ago but then I became a robot. 19:59:49 <Vorpal> ellion: so you are not just elliott then? 19:59:55 <ellion> Indeed. 19:59:57 <ellion> I live in Hexham. 20:00:01 <ellion> I bet there's nobody else HERE from Hexham. 20:00:07 <Vorpal> okay you are elliott. :P 20:00:28 <CakeProphet> he's not elliott he's ellion 20:00:30 <CakeProphet> totally different. 20:00:35 <ellion> The new Finder opens strangely low on the screen. 20:00:38 <Vorpal> from hexham 20:00:38 <fizzie> Vorpal: I haven't really deliberately "tried" it, it's just that coca-cola always tests weird after garlicy-enough something-else. 20:00:41 <Vorpal> using os x 20:00:53 <Vorpal> fizzie: ah okay 20:00:56 <monqy> recently upgraded to new 20:00:56 <CakeProphet> Vorpal: ah yes that's a lot of bad things that bad people do 20:00:58 <CakeProphet> must be elliott then 20:01:04 <ellion> Hahaha, this is funny 20:01:09 <monqy> hexham a bad place for bad people 20:01:18 <ellion> You can go "back" in Safari by scrolling horizontally left from the leftmost point 20:01:25 <ellion> And forwards by doing the opposite 20:01:28 <ellion> It's like a zoom UI, kind of 20:01:33 <Vorpal> ellion: what if the page already scrolls sideways? 20:01:40 <ellion> Vorpal: Like I said, leftmost/rightmost 20:01:44 <Vorpal> hm 20:01:47 <ellion> And there's some resistance 20:01:49 <oerjan> <ellion> I bet there's nobody else HERE from Hexham. <-- i wonder what you'd say if a third one _did_ show up. apart from AYEEEEH. 20:01:53 <Vorpal> ellion: ah okay 20:01:58 <ellion> But it's funny, you can peek at the page you were on a second ago by doing it partially :P 20:02:05 <monqy> is left/right scroll inverted too? I remember something about up/down being inverted 20:02:10 <ellion> oerjan: I would start checking whether I was on any government watch lists. 20:02:15 <ellion> monqy: Yes. 20:02:17 <Vorpal> oerjan: "AYEEEEH"? 20:02:20 <ellion> I quite like that bit actually. 20:02:26 <fizzie> Mobile Firefox has its control buttoniers on the left/right edge of the screen, and you view them by trying to scroll more left/right than there is page for. Or something like that. 20:02:36 <Vorpal> <ellion> oerjan: I would start checking whether I was on any government watch lists. <-- hey, I'm the paranoid one 20:03:26 <ellion> So let's see if I can trigger this system-wide spell-correcter thing. 20:03:26 <Vorpal> CakeProphet: anyway, as I said, I think story is key to a good RPG. 20:03:39 <fizzie> Someone should post a nicely graphic-designed #esoteric ad on some sort of Hexham central noticeboard whatever; the place obviously has potential. 20:03:44 <CakeProphet> oerjan: it would be nice if actual physics were considered in space combat 20:03:45 <ellion> antidsiestablishemntarisanism. Oh come on, that was an obvious one. 20:03:56 <CakeProphet> for example any kind of projectile would require some kind of counterbalancing force to keep the ship steady. 20:03:59 <ellion> fizzie: I volunteer to not. 20:04:01 <CakeProphet> unless of course it were an energy weapon. 20:04:14 <ellion> Ah, there it triggered. 20:04:22 <Vorpal> ellion: where? 20:04:28 <Vorpal> ellion: and how do you override it? 20:04:39 <oerjan> CakeProphet: "your enemy shoots a flake of paint at you. you die." 20:04:51 <ellion> I think you can turn it off, but it seems to be very very conservative considering how hard a time I'm having at getting it to activate. 20:04:53 <Vorpal> ellion: anyway system wide spell correction for a PC sounds bad. Likely to be painful when writing code too. 20:04:53 <CakeProphet> oerjan: ....? why? 20:05:19 <oerjan> CakeProphet: have you not _heard_ of space debris? 20:05:51 <oerjan> i suppose there might be some countermeasure. 20:06:03 <monqy> space lasers 20:06:19 <CakeProphet> uh, some kind of metal ship hull? 20:06:28 <Vorpal> oerjan: obvious way put an atmosphere around the ship, needs some sort of way to handle gravity to make it work 20:06:30 <CakeProphet> good countermeasure for paint flakes 20:06:41 <Vorpal> CakeProphet: what do you think ISS is made of? 20:06:47 <ellion> Vorpal: Do you stop talking about RPGs at any point in this log? 20:06:52 <Vorpal> the problem is the high speeds 20:06:53 <oerjan> CakeProphet: not when the flake is moving at 200 000 km/s 20:06:55 <CakeProphet> artificial gravity = spin around a lot 20:07:02 <Vorpal> ellion: only one way to find out: read on 20:07:25 <Vorpal> CakeProphet: wrong way of gravity to get an atmosphere though 20:08:30 <oerjan> i recall when i read the forever war comics, the aliens shot tiny projectiles at near light speed at one point, one of which hit and devastated a section of the human ship 20:08:30 <CakeProphet> having an atmosphere would just be a) airtight b) fill with CO2 c) plants 20:08:39 <ellion> 19:55:25: <monqy> nonsense bacon obsession should die 20:08:41 <ellion> monqy: bacon is pretty nice, am i bad :( 20:09:08 <Vorpal> CakeProphet: wouldn't help with burning up debris unless it was on the outside. duh 20:09:09 <monqy> it's mostly when people obsess over it or say "bacon" a lot that it's bad 20:09:29 <CakeProphet> Vorpal: I wasn't really talking about gravity and atmosphere in the context of space debris though. 20:09:38 <ais523> does ellion = elliott, btw? 20:09:39 <Vorpal> right 20:09:47 <Vorpal> ais523: most likely 20:09:48 <monqy> I prefer other foods to bacon, but bacon's okay for eating 20:09:54 <Vorpal> both are from hexham, both use os x 20:10:14 <CakeProphet> `run grep -iP ".*?CakeProphet.*?bacon" /var/logs/_esoteric/* | wc -l 20:10:16 <HackEgo> grep: Support for the -P option is not compiled into this --disable-perl-regexp binary \ 0 20:10:17 <ais523> it certainly could be 20:10:21 <CakeProphet> waaaa 20:10:28 <CakeProphet> `run grep -ie ".*?CakeProphet.*?bacon" /var/logs/_esoteric/* | wc -l 20:10:29 <HackEgo> grep: /var/logs/_esoteric/*: No such file or directory \ 0 20:10:36 <monqy> some day i will use webchat and pick a weird name and claim to be from hexham 20:10:39 <CakeProphet> `ls 20:10:41 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom 20:10:50 <ellion> monqy: webchat exposes your ip 20:10:52 <ellion> or, well 20:10:56 <ellion> at least a hash of it, which I guess matters less 20:11:02 <ellion> nope, IP too 20:11:14 <monqy> i know, but is anyone dedicated to look into it 20:11:18 <monqy> er 20:11:21 <monqy> dedicated enough 20:11:36 <monqy> and expose webchat-me 20:11:37 <ellion> If you claimed to be from Hexham: yes. 20:11:39 <CakeProphet> `run grep -ie ".*?CakeProphet.*?bacon" /var/irclogs/_esoteric/* | wc -l 20:11:40 <ellion> GeoIP. 20:11:40 <monqy> for the fraud he will be 20:12:00 <ais523> [Wednesday, August 31, 2011] [12:19:31 am] Joinelliott_ has joined this channel (~elliott@95.149.228.192). 20:12:12 <HackEgo> No output. 20:12:15 <ais523> ellion: when did you last reboot your router? 20:12:16 <oerjan> Vorpal: i assume an atmosphere that could protect against debris would need to be rather large 20:12:34 <ellion> ais523: I, um, fairly recently? 20:12:54 <CakeProphet> oerjan: or dense 20:13:13 <ais523> I conclude that, despite all the evidence, you are actually not elliott 20:13:15 <ellion> hmm, the fullscreen thing seems to be pretty well executed 20:13:19 <ais523> (note: may be lying) 20:13:38 <CakeProphet> best defense against space debris: AI and space lasers. 20:13:39 * ellion runs Software Update. 20:13:44 <oerjan> Vorpal: perhaps it would work if your outer shell was self-repairing. except you'd lose some atmosphere at each hit. 20:13:46 <ellion> I don't really have the energy to try and get anything running on here now. 20:13:52 <Vorpal> <oerjan> Vorpal: i assume an atmosphere that could protect against debris would need to be rather large <-- or very dense perhaps? 20:13:52 <ellion> So I'll just burn an Ubuntu CD. 20:14:11 <CakeProphet> the majority of space debris would not actually cause major damage to your vessel 20:14:31 <ais523> because the majority is very small? 20:14:33 <ellion> So has anyone used 11.10 beta two? 20:14:49 <ellion> Ubuntu, that is. 20:15:22 <ellion> Alright, I'll do this update. 20:15:58 <ellion> Then I suppose I'll try the pseudo-orthogonal-persistence stuff. 20:16:01 <Gregor> http://fanaticalvps.com/unmetered-vps.php Hm 20:16:16 <ellion> Not more fly-by-wire? 20:16:28 * CakeProphet wants to make a df-like somehow involving dinosaurs and space. 20:16:35 <ellion> Gregor: Those plans look distinctly inferior to prgmr's, especially in that they're lying through their teeth. 20:16:39 <ellion> Weeell 20:16:44 <ellion> I suppose they're not saying UNLIMITED. 20:16:57 <ellion> But if anyone uses their "unmetered" bandwidth to its capacity, either 20:17:00 <ellion> (a) the whole thing will crash and burn or 20:17:04 <ellion> (b) they'll get kicked off for "unreasonable use". 20:17:04 <fizzie> "German datacenter" might not be lying. 20:17:11 <fizzie> Then again, it might be. 20:17:14 <Gregor> ellion: I'm "hm"ing about it for exactly that :P 20:17:28 <ellion> Gregor: Dreamhost used to get infamous from advertising much the same rubbish. 20:17:39 <ellion> s/used to get/got/ 20:17:42 <ellion> s/got/became/ 20:17:47 <fizzie> They have a '?' in there to explain what 'unmetered' means. 20:17:48 <fizzie> "All VPS's come with an unmetered, shared 1000mbps connection 20:17:48 <fizzie> We will never suspend VPS's for bandwidth overages, or charge for extra bandwidth. 20:17:52 <fizzie> Since this is a shared connection, one VPS isn't allowed to slow down other VM's. This is rarely an issue, if it does become a problem, we will contact the client to arrange a solution (move to a less busy node, etc). 20:17:55 <fizzie> For example, you can't expect a Super-Micro or Micro to push 2TB bandwidth/month. 20:18:06 <ellion> We will never suspend VPS's for bandwidth overages, or charge for extra bandwidth. Since this is a shared connection, one VPS isn't allowed to slow down other VM's. This is rarely an issue, if it does become a problem, we will contact the client to arrange a solution (move to a less busy node, etc). 20:18:21 <ellion> So basically, we'll never disconnect you for using too much bandwidth, unless you use too much bandwidth. 20:18:32 <fizzie> ^echo Do I hear an echo? 20:18:32 <fungot> Do I hear an echo? Do I hear an echo? 20:18:44 <ellion> "We guarantee all services 99.9% uptime, all our servers are monitored every minute to ensure they stay online all the time." 20:18:48 <ellion> That's, like, three nines. 20:18:55 <ellion> That's two more than the best number of nines. 20:18:58 <ellion> Errr 20:18:58 <ellion> Two less 20:19:01 <ellion> Fewer 20:19:15 <ellion> Reboot time 20:19:19 -!- ellion has quit (Quit: Page closed). 20:21:17 <oerjan> <HackEgo> ha piam searan ms bitari spue dillad nalling reparoman coia flas infrureproursy zed haric thikirefallly wersts lasn besturem lignieassein bwn vitie uicled caphistiger shina hecomesltutwilled coloihohrapou nes phooone horrap bed pichermunawa roarbleo th mishoffeme shikkarre uniousioninooraigv res goez kringirthy towsk bion senth 20:21:36 <oerjan> this all looks like a conlang except the words are too inconsistent 20:21:57 <ais523> why can't there be a really inconsistent conlang? 20:22:05 -!- ellion has joined. 20:22:08 <ellion> hello welcome to an chamber 20:22:19 <fizzie> "phooone for youuuu!" 20:22:29 <oerjan> well the context was sort of fantasy 20:22:35 <ellion> what fizzie 20:22:35 <ellion> waht 20:22:37 <ellion> what fizzie 20:22:39 <ellion> oh noooo 20:22:41 <fizzie> WHAT. 20:22:42 <ellion> waht fizzie 20:22:44 <ellion> there we go 20:23:02 <oerjan> maybe it could be one language which borrows heavily from another one 20:23:43 <CakeProphet> `word 50 20:23:45 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: word: not found 20:23:53 <CakeProphet> `mv bin/wacro bin/word 20:23:55 <HackEgo> mv: missing destination file operand after `bin/wacro bin/word' \ Try `mv --help' for more information. 20:23:59 <ellion> Man, it's actually quite unnerving having the application indicators gone. 20:24:03 <CakeProphet> `run mv bin/wacro bin/word 20:24:05 <HackEgo> No output. 20:24:07 <CakeProphet> `wacro 50 20:24:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wacro: not found 20:24:14 <oerjan> ... 20:24:15 <CakeProphet> `word 50 20:24:15 <CakeProphet> lol 20:24:17 <HackEgo> nesurietemper duchke ala lampachedinacinstos merrum ter ger berbeis fol vo carted sekwey co td nalien billoprie ding menergal aus nifi pichdrane aansiecznynny parciell ung tre kertak boomcgrepbuch siuia irorby donia pridetissola cumrnbent psocclin reform amoldasper wiyak pentellaning izellellinanit pospor cel nuninatwealvandamah 20:24:21 <fizzie> CakeProphet: IT KEEPS HAPPENING 20:24:23 <ais523> ellion: what's the UI like? 20:24:30 <CakeProphet> fizzie: what does? :P 20:24:31 <ellion> ais523: for what? 20:24:33 <ais523> any good/bad/ugly/ first impressions 20:24:35 <fizzie> CakeProphet: Them mistakes. 20:24:36 <ais523> ellion: of the OS you just installed 20:24:38 <oerjan> `word 10 20:24:38 <CakeProphet> oh yes. 20:24:40 <ellion> ais523: oh 20:24:40 <HackEgo> stur tensenti dener sicti rooktjin rie drenden fourptiau jarian jria 20:24:46 <CakeProphet> I do that a lot. especially when not sleeping and stuff. 20:24:49 <ellion> ais523: it's largely similar to the previous version of OS X :P 20:24:57 <ellion> ais523: the changes seem to be positive, though 20:25:02 <ais523> heh, so OS X isn't completely screwed up yet 20:25:09 <fizzie> CakeProphet: I haven't been following; is this still the same English-books set? 20:25:14 <CakeProphet> yes 20:25:14 <ais523> I suppose I should ask about the terminal in particular, because AceHack 20:25:32 <CakeProphet> my current version is not working but has the newest changes. 20:25:37 <ellion> the elimination of scrollbars is a Good Idea, the new inverse-style scrolling seems nicer, the orthogonal persistence stuff (once you tweak the settings to turn it actually on; I suspect it will be default soon) is nice but unusual 20:25:49 <ellion> ais523: it works; Gregor was whining about its speed a while ago but it's always been fine for me 20:25:51 <oerjan> CakeProphet: somehow it doesn't look very english 20:25:53 <CakeProphet> I'm busy making money and procrastinating and doing school work but I should have a free day to finish it up soon. 20:25:54 <ellion> ais523: it can now go into fullscreen though :P 20:26:05 <ellion> ais523: gimme the ace hack telnet? 20:26:06 <ellion> argh 20:26:09 <ellion> acehack telnet 20:26:13 <ais523> telnet acehack.rawrnix.com 20:26:25 <ais523> or ssh games@acehack.sovrappensiero.info (password games) 20:26:27 <ellion> rawrnix.com is a rather supremely bad domain name 20:26:36 <ais523> heh, why? 20:26:39 <ais523> (it's not my domain, btw) 20:26:48 <ais523> at least it's easier to spell than sovrappensiero 20:26:52 <ellion> it just is :P 20:27:13 <ellion> "rawr" is a silly word, "nix" is a bad thing to pay homage to (and what is "rawrnix" even playing on?), and the .com is probably wrong 20:27:15 <ellion> DOMAIN OPINIONS 20:27:33 <ellion> note to self: acehack.rawrnix.com password is usual password but with 0 instead of each digit 20:27:49 <ellion> can someone lend me an ampersand? 20:27:52 <ais523> this is a good place to put password notes? 20:27:52 <monqy> 7 20:27:53 <ais523> & 20:27:56 <ais523> monqy: fail 20:27:56 <ellion> erm 20:28:00 <ellion> an at sign 20:28:01 <ais523> there's one in the topic, too 20:28:03 <ais523> @ 20:28:04 <monqy> ais523: it was intentional 20:28:07 <ais523> isn't one of those in the topic 20:28:28 -!- oerjan has set topic: Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!&^@ | http://codu.org/logs/_esoteric/. 20:28:32 <ais523> hmm, I'm not sure anything important is on shifted numbers in Ace 20:28:32 <oerjan> now it is 20:28:33 <monqy> two of them 20:28:42 <fizzie> oerjan: There was one after 'event' already. 20:28:44 <monqy> @ comes after event and before hel 20:28:44 <oerjan> hm true 20:28:50 <ais523> ah right, I didn't look there 20:29:04 <CakeProphet> isn't there like 20:29:09 <CakeProphet> a program to generate these things somewhere? 20:29:11 -!- fizzie has set topic: Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/. 20:29:17 <fizzie> Let's not be wasteful. 20:29:20 <ellion> ais523: you shouldn't list the continue game entry when it's not possible; it showed as red here, which my brain read as "selected" not "impossible" (use a bold black instead to get grey? that's the universal "disabled menu item" indication), and so I got confused for a few seconds, wondering what would happen if I did it, before realising what it meant 20:29:26 <fizzie> It's not like @s grow on trees. 20:29:32 <ellion> or at least, if you don't list it, use a better colour :P 20:29:35 <ais523> ellion: nothing will happen if you press it 20:29:45 <ellion> ais523: doesn't matter, 20:29:48 <ellion> s/,// 20:29:50 <ais523> I don't use bolded black because it's buggy in many terminals 20:29:56 <ais523> e.g. in gnome-terminal, the cursor won't show up against it 20:30:05 <ais523> and IIRC it's not the only one that has problems 20:30:06 <ellion> I wasn't complaining about what would happen if I pressed it, I was complaining about the UI temporary disabling me :P 20:30:15 <fizzie> ais523: The N900 terminal (well, the library) renders bold-black as black. 20:30:23 <ellion> ais523: well, the cursor won't show on that anyway; but, OK, at least use something subdued rather than bright and angry 20:30:34 <CakeProphet> grrr 20:30:34 <ais523> ah, red is subdued compared to white for me 20:30:36 <ais523> that could explain it 20:30:57 <CakeProphet> your mom is subdued and angry? what now? 20:31:05 <monqy> what 20:31:26 <ellion> ais523: hmm, putting the cursor on the dot that represents "play" is suboptimal on OS X; the cursor is light grey by default, so I had to look closely to figure out (a) what the "highlight" meant and (b) what key it was 20:31:28 <CakeProphet> what 20:31:37 <ellion> I'm playing as elliott now, but will probably not actually play much 20:31:47 <ais523> ah, OK 20:31:53 <ais523> I wasn't sure where else to put it 20:32:01 <ellion> IIRC you can hide the cursor 20:32:19 <ais523> hmm, and if I'm lucky it might even be possible to do it portably and reliably! 20:32:23 <ellion> you already know my general complaints about the in-game AceHack interface, but its irks fine with Terminal 20:32:29 <ais523> and if I'm /really/ lucky, there might be a standard way of unhiding it again 20:32:34 <ellion> the highlight on the player character is a bit annoying because of the cursor, but not highlighting the player would be unreasonable 20:32:37 <ellion> ais523: it's an ANSI code I think 20:32:45 <ais523> wait, I might have forgotten the general complaints about the in-game interface 20:32:49 <ellion> is there a way to quaff without typing a pound sign 20:32:56 <ellion> ais523: you disagreed with them all strongly, so :) 20:32:59 <ais523> ellion: q 20:33:02 <ais523> heh 20:33:06 <CakeProphet> ansi codes are neato 20:33:19 <ellion> ais523: that doesn't work, I'm trying to quaff a fountain, repeatedly 20:33:22 <ais523> it's nice to get feedback about AceHack-on-Mac from someone other than kerio, anyway 20:33:26 <oerjan> <Vorpal> exotontek <-- scifi setting, some big company 20:33:27 <ellion> oh hmm 20:33:28 <ais523> ellion: q, I think 20:33:29 <ellion> does it not let you? :( 20:33:38 <ais523> or maybe q. 20:33:39 <ellion> or is , it 20:33:40 <oerjan> clearly they're specializing in hauling cargo into space 20:33:43 <ellion> ah yes q, 20:33:53 <ellion> lame, nothing bad happened 20:34:10 <CakeProphet> `word 10 20:34:11 <HackEgo> ens krumqueleleutocki quan mig tonta ftr codiuinaton mct brin domfpirsverdew 20:34:13 <Vorpal> oerjan: yes? 20:34:18 <ellion> ais523: hmm, what's Hept? 20:34:22 <oerjan> by the exotons 20:34:27 <ellion> and how do I repeat an action? 20:34:27 <ais523> ellion: heptagrams on the square 20:34:30 <Vorpal> I see 20:34:31 <ellion> 9 moves me diagonally, which is stupid 20:34:34 <ais523> they're like elbereths, they repel monsters 20:34:41 <ais523> and control-A is repeat; with luck, it might even work 20:34:42 <CakeProphet> ellion: see: numpad 20:34:45 <ellion> ais523: oh, . draws one appearently 20:34:47 <ais523> yep 20:34:54 <ellion> ais523: are hectograms new? 20:34:54 <ais523> you can use s to wait without drawing 20:34:59 <fizzie> "DEC Private Mode (DECSET/DECRST) sequences: These are not described in ECMA-48. ESC [ ? 25 h: DECTECM (default on): Make cursor visible." [and s/h/l/ to hide it; but obviously that's not very de-jure standard] 20:35:01 <ais523> they're a UI improvement of a vanilla feature 20:35:01 <ellion> Ctrl+A doesn't work. 20:35:13 <ellion> Ctrl+A 9 just moves diagonally 20:35:22 <ais523> oh, you mean repeat count? # 20:35:23 <oerjan> they are somewhat unpopular, since they are using their main patent to get a stranglehold on the space cargo market 20:35:37 <Vorpal> ais523: how does the elbereth replacement work wrt number of turns to write and doing partial writing? 20:35:40 <ais523> I hope # isn't shift-3 for you, or it could be a little difficult to play without rebinding keys 20:35:44 <Vorpal> like writing and then adding later on 20:35:48 <ellion> ais523: I just pasted it in 20:35:53 <ellion> ais523: ummm, wow, # has a major bug 20:35:57 <ellion> ais523: it doesn't stop when something bad happens 20:35:59 <ais523> Vorpal: you can't partially write one, you can write more than one, it costs the same number of turns as Elbereth itself 20:36:05 <ellion> I gave it a huge count and ., and now I've fainted from lack of food 20:36:09 <ellion> and will presumably die once I hit enter 20:36:11 <ais523> ellion: it does stop on several bad things happening 20:36:17 <ellion> ais523: well, not enough :P 20:36:18 <Vorpal> ais523: so what is the difference? Not needing to write out the whole thing? 20:36:21 <ais523> food dropping is not one of them, though, due to the vanilla code being broken there 20:36:26 <ais523> Vorpal: compare E-y Elbereth to . 20:36:27 <Vorpal> I mean in the prompt 20:36:41 <ais523> which is the nicer interface for a commonly used action? 20:36:41 <Vorpal> ais523: right, but that doesn't explain how to do a partial writing. 20:36:50 <ais523> because you can't do a partial writing, as I explained earlier 20:36:51 <ellion> ais523: oh, it stopped when i fainted 20:36:55 <ais523> ellion: yep 20:36:55 <Vorpal> ah 20:37:01 <Vorpal> ais523: I misread as "can" 20:37:04 <oerjan> this patent consists of a vacuum-safe lubricant which prevents space elevators from unraveling. 20:37:08 <CakeProphet> oerjan: I think wormholes would be pretty essentially to a "realistic" space game. 20:37:13 <ellion> ais523: I like how you can just casually walk around fainting every step 20:37:14 <CakeProphet> als;kkdpokweqrpoksdfpokwerpoksdfpokewrtpoksdf 20:37:16 <ais523> there's a known bug with actions not stopping at food breakpoints 20:37:16 <CakeProphet> essential 20:37:21 <ellion> RIP elliott, killed by newt 20:37:27 <Vorpal> ais523: anyway what if you want to engrave instead of write in the dust 20:37:29 <ellion> while helpless 20:37:32 <Vorpal> or even burn it in 20:37:36 <ais523> Vorpal: E itemletter h 20:37:41 <oerjan> CakeProphet: for a certain value of realistic equal to "this may be impossible in reality" 20:37:43 <Vorpal> ais523: ah 20:38:14 <Vorpal> <CakeProphet> oerjan: I think wormholes would be pretty essentially to a "realistic" space game. <-- what? They require huge amounts of negative energy 20:38:21 <CakeProphet> oerjan: yes but realistic in the sense that it's detailed and bound by mostly realistic laws of physics despite having elements that may be impossible 20:38:28 <Vorpal> no, sub lightspeed travel is the way to go 20:38:29 <ellion> here's a way to provide realistic FTL travel in a space game: 20:38:31 <ellion> you play as a neutrino 20:38:46 <Vorpal> ellion: har har 20:38:50 <ais523> has #esoteric concluded that FTL neutrinos are real and not experimental error? 20:39:05 <ais523> 60ns over a distance of several hundred miles sounds to me like they measured how long it should have taken wrong 20:39:08 <CakeProphet> sub lightspeed ship travel + wormhole = not waiting 1000s of years to do anything in deep space. 20:39:26 <ellion> finally, they improved Safari's downloads window 20:39:34 <ellion> ais523: their last estimate as to the error is +- five ns IIRC 20:39:34 <ellion> ask Phantom_Hoover 20:39:40 <ellion> well 20:39:41 <ellion> not estimate 20:39:44 <ellion> I think they actually narrowed it down to that 20:39:46 <ais523> ellion: that's of expected random errors 20:39:58 <ais523> a systematic error would work differently 20:39:59 <ellion> ais523: and how can they measure how long it should have taken wrong? 20:40:00 <ellion> c is a constant 20:40:02 <Vorpal> ais523: my guess it that it is a fairly complicated experimental error, or an error in the theory underlying the devices (for example maybe the neutrino generator takes a different amount of time to generate a neutrino from when it gets the signal to do so than what the theories suggest) 20:40:11 <ellion> take c, take distance, you're done 20:40:16 <Vorpal> rather than an error in the theory of relativity 20:40:18 <ais523> ellion: it's the "take distance" I'm not convinced about 20:40:22 <ellion> I'm pretty sure a 60ns error would be a huge change in distance 20:40:36 <ellion> ask Phantom_Hoover :-P 20:40:39 <Phantom_Hoover> ellion, it's the time and distance measurements. 20:40:47 <ellion> Phantom_Hoover: ais523 thinks the distance is wrong 20:40:49 <fizzie> 60 ns * c = 18 metres. 20:41:08 <ellion> hmm, fair enough 20:41:23 <ellion> maybe there's a wormhole :P 20:41:49 <Vorpal> how many times did they repeat the experiment? 20:42:00 <Vorpal> perhaps they confused it with other neutrinos 20:42:03 <fizzie> A complicated experimental error is my personal no-real-reason-for-it guess too; I mean, it's probably not exactly trivial to say when a neutrino went out, it's not like you can just look. 20:42:22 <ellion> Vorpal: tens of thousands of times 20:42:24 <Vorpal> I mean, neutrinos don't react a lot with normal matter 20:42:25 <fizzie> OTOH one assumes they'd be reasonably careful before publishing this sort of stuff. 20:42:41 <ellion> fizzie: they spent months repeating it, checking it and narrowing down the error, so 20:43:00 <fizzie> That just means it's not a trivial error. :p 20:43:04 <ellion> Well, yes. 20:43:05 <fizzie> Haven't even peeked at the paper, so. 20:43:18 -!- GreaseMonkey has joined. 20:43:32 <CakeProphet> neutrinos have transfinite energy. 20:44:18 <oerjan> <ais523> ellion: it's the "take distance" I'm not convinced about <-- i hear the arxiv paper contains a diagram where they graph _continental drift_ over the experiment time, including a 7 cm shift due to an earthquake. so i would not be so sure the distance is really 18 m off :P 20:44:26 <Vorpal> on the other hand, there are a few other issues with the theories of relativity. The distance anomaly of those coasting space probes for example 20:45:01 <ais523> oerjan: have they calculated the exact shape of the Earth to work out the straight-line distance too? 20:45:09 <ais523> also, how do you synchronize clocks to within ns over hundreds of miles? 20:45:21 <ellion> oerjan: you got that from the xkcd caption :-) 20:45:42 <Vorpal> ais523: you sync them in the exact middle then travel at the same acceleration in each direction? 20:45:47 <oerjan> ellion: i also read it elsewhere 20:45:51 <Vorpal> (probably not) 20:46:00 <olsner> I think the GPS sattelites are synchronized to within ns, istr it's a somewhat solved problem 20:46:03 <ellion> ais523: with all due respect, what you're saying is _way_ too obvious for them to not have already considered it. 20:46:13 <oerjan> ais523: they use a gps-based system with an atomic clock connected. they have checked this thoroughly too, among other things they moved a portable atomic clock between the spots to check 20:46:22 <ellion> ais523: I think the only realistic option for the measured distance being eighteen metres off is for some really weird space-time shape bullshit on Earth. 20:46:25 <ais523> oerjan: how quickly? 20:46:51 <Vorpal> ais523: I would assume they measured acceleration when doing that. 20:47:17 <ais523> perhaps atomic clocks are skewed by the presence of unusually large numbers of neutrions 20:47:19 <oerjan> ais523: the portable check was done by an external consultant 20:47:19 <ais523> *neutrinos 20:47:26 <ais523> (although "neutrions" is a good word too) 20:47:40 <ellion> ais523: I doubt they were running the experiment while doing that. 20:47:41 <oerjan> ais523: sheesh they are obviously _constantly_ readjusted from the gps 20:48:04 <ellion> ais523: you're practically trolling, really, by bringing up complaints /this/ obvious about their method 20:48:13 <ais523> possibly, I'm just brainstorming 20:48:25 <ais523> we should wait for an independent reverification, at least 20:48:34 <CakeProphet> quantum entanglement = best way to sync clocks 20:48:36 <ais523> mostly because that does very well at compensating for things people haven't thought of 20:49:01 <fizzie> I think they should just retry the whole thing in space. How big can a neutrino detector be, anyway? I'm sure you could lift one. (1300 tons, apparently.) 20:49:09 <ellion> ais523: Nobody is saying they're sure it's true. 20:49:14 <ellion> There's nothing to wait for. 20:49:22 <ellion> ais523: But how the hell is anyone going to repeat it? 20:49:25 <ellion> Nobody has CERN's facilities. 20:49:36 <ais523> fizzie: perhaps going through Earth is what causes neutrinos to go FTL 20:49:39 <Vorpal> ellion: Fermilab? 20:49:57 <fizzie> ais523: Right, which would mean they'd learn something new by doing it in space instead. 20:50:06 <ellion> Well... 20:50:08 <ellion> "Right when you thought that Fermilab was a thing of the past, new work with neutrinos are exciting us all over again. The scientists associated with the MINOS experiment at the Department of Energy’s Fermi National Accelerator Laboratory just announced their findings of a rare phenomena – the transformation of muon neutrinos into electron neutrinos." 20:50:10 <ais523> I think they'd learn something new doing it on the Earth, too 20:50:10 <Vorpal> ellion: think I read somewhere about a facility in Japan too 20:50:14 <ellion> So maybe they're up for neutrino-related work. :p 20:50:33 <fizzie> Also possibly they could petition a temporary no-gravity mode from the universe-simulator and retry? 20:50:50 <Phantom_Hoover> Wait, what *did* happen with the neutrinos? 20:50:54 <ellion> "Could even set something up to do that automatically every time a file is saved, or just commit periodically at regular intervals. Based on the IRC bot announcements in #haskell, I'm pretty sure Edward Kmett uses something like that, except that instead of committing it just uploads directly to Hackage. ;]" 20:50:54 <Phantom_Hoover> Have we had an update or? 20:51:17 <ellion> Phantom_Hoover: Nothing, ais523 just asked us about it then brought up a bunch of really obvious complaint theories about their methods. 20:51:24 <oerjan> <Vorpal> [...] The distance anomaly of those coasting space probes for example <-- i heard recently that this was solved by a more detailed model of how thermal radiation was reflected by the probe parts 20:51:33 <Vorpal> oerjan: ah okay 20:51:33 <ellion> I think the Earth having really weird space-time would be almost as cool as FTL being possible. 20:51:43 <ellion> Whoa, I typed that space-time without the - and it keeps adding t. 20:51:46 <ellion> A choice I agree with, but whoa. 20:51:57 <fizzie> Based on the IRC bot announcements, Edward Kmett does neutrino velocity experiments, except the results are directly uploaded to Hackage, is how I read that. 20:51:57 <monqy> whoa 20:52:09 <ellion> GitHub looks much nicer on OS X. 20:52:12 <Vorpal> fizzie: which IRC bot? 20:52:28 <ais523> oerjan: yes, IIRC they decided the best explanation for the anomaly was that the heat of some internal components was being radiated and causing a reaction 20:52:30 <Vorpal> fizzie: also that was a misreading right? 20:52:37 <Vorpal> ellion: oh? 20:52:41 <ais523> as in, pushing the spacecraft in the opposite direction 20:52:48 <fizzie> Vorpal: See the ellion quote. And it wasn't exactly a misreading, just a miscontextifying or some-such. 20:52:55 <CakeProphet> ellion: enjoy right clicking. 20:53:01 <ellion> CakeProphet: What? 20:53:04 <monqy> CakeProphet: whaat 20:53:25 <CakeProphet> ellion: or are you not running an apple? 20:53:31 <ais523> is that a /really really old/ anti-Mac troll? 20:53:37 <CakeProphet> never. 20:53:44 <monqy> isn't this the same computer he's been using for at least the past while 20:54:02 <oerjan> <ellion> Nobody has CERN's facilities. <-- this didn't use the LHC though, only a proton pre-accelerator that otherwise feeds into the LHC. 20:54:03 <ellion> Exactly the same. 20:54:05 <ellion> It right clicks just fine. 20:54:18 <fizzie> Write "click". 20:54:26 <ellion> oerjan: It's still a lot. 20:54:27 <ellion> fizzie: Click. 20:54:35 <fizzie> TY. TYVM. 20:54:37 <Vorpal> oerjan: they could also try sending it to a detector elsewhere. Like CERN<->Fermilab? 20:55:12 <oerjan> <fizzie> [...] How big can a neutrino detector be, anyway? <-- i think you'd want to lift the accelerator part. neutrino detectors need to be deep underground to shield against cosmic rays. 20:55:57 <fizzie> oerjan: Maybe they could paint their neutrinos pink or something. 20:56:03 <fizzie> Anyway: "Spokespeople for both Fermilab and the T2K experiment confirmed their intentions to test the OPERA result in coming months." 20:56:07 <fizzie> So I suppose we'll see. 20:56:09 <ais523> isn't a neutrino detector just a large vat of washing-up liquid with a bit of machinery attached? 20:56:13 <Vorpal> fizzie: T2K? 20:56:19 <ellion> `addquote <ais523> isn't a neutrino detector just a large vat of washing-up liquid with a bit of machinery attached? 20:56:21 <HackEgo> 684) <ais523> isn't a neutrino detector just a large vat of washing-up liquid with a bit of machinery attached? 20:56:32 <Vorpal> ellion: actually I seem to remember hearing this too 20:56:37 <Vorpal> so it isn't as absurd as it sounds 20:56:43 <fizzie> Vorpal: A Japanese neutrino-related thing. 20:56:44 <ellion> It's still funny. 20:56:56 <ais523> it's probably even funnier if true 20:57:28 <fizzie> ais523: The OPERA detector used here is a pile of bricks, actually. (Of "photographic emulsion films interleaved with lead plates".) 20:57:29 <ellion> time to burn Ubuntu 20:57:50 <ellion> Won't it really suck if exactly one thing can go faster than light, and it's neutrinos? 20:57:54 <ais523> I thought you'd burnt it already 20:57:59 <CakeProphet> Ubuntu? more like Ubadtu. OOOOOOH 20:58:04 <ellion> And then really annoying smug neutrino aliens come and make fun of us. 20:58:04 <ais523> ellion: not really, it'd still be useful for transmitting information FTL 20:58:11 <ellion> ais523: SMUG NEUTRINO ALIENS 20:58:11 <fizzie> They have that one-square-kilometre "neutrino observatory" thing in the Antarctic. 20:58:43 <ais523> fizzie: hmm, the photographic emulsion to pick up the neutrinos, the lead plate to protect from hostile enchantments? 20:58:48 <ellion> ais523: I burnt Lion, not Ubuntu. 20:58:55 <ellion> Animal cruelty; RIP lion. 20:58:56 <ais523> ah, I see 20:59:14 <ais523> I wonder when Apple will run out of entries in their naming scheme? 20:59:22 <ais523> and if there'll ever be an OS XI 20:59:33 <ellion> ais523: I eagerly await OS X Cat. 20:59:35 <ais523> perhaps they'll start increasing the version number every week 20:59:40 <ellion> They will exhaust every feline species apart from house cats. 20:59:44 <ellion> ais523: haha 20:59:46 <ellion> ais523: Maybe OS X will become rolling release. 20:59:52 <ellion> That's hard to get people to pay for, though. 20:59:56 <ais523> no, new stable release every week, not rolling release honest! 20:59:59 <ellion> Maybe they'll just take, like, a dollar a week. 21:00:07 <ais523> and presumably you pay for it subscription-style 21:00:12 <ellion> Make payments out to Cult of Mac. 21:00:25 <fizzie> 1.00002c isn't much of a galaxy-wide ultrawave radio, though. You probably won't even get a ticket. (For exceeding the speed limit.) 21:00:28 <oerjan> <Vorpal> oerjan: they could also try sending it to a detector elsewhere. Like CERN<->Fermilab? <-- this would be cool to do anyhow, in order to check how the effect depends on distance. if it were 60 ns total _regardless_ of distance, it would imply something like my prior time travel speculation 21:00:52 <ais523> fizzie: well, I think 1.00002c is very unlikely 21:00:56 <ellion> fizzie: Maybe it's cumulative. 21:00:57 <Vorpal> fizzie: maybe the speed of light was measured incorrectly? 21:01:01 <ellion> >_< 21:01:01 <fizzie> ais523: That's what they got. 21:01:09 <ais523> fizzie: I mean, a constant multiple of c 21:01:10 <ellion> Vorpal: The error is MUCH lower than sixty ns. 21:01:17 <ellion> For the speed of light. 21:01:18 <ais523> I'd think it'd be more likely to be faster the further the distance, or something like that 21:01:27 <Vorpal> oerjan: what prior time travel speculation? 21:01:27 -!- Ngevd has joined. 21:01:28 <olsner> Vorpal: iirc, the speed of light and the second are fixed constants, it's the meter that might be wrong 21:01:31 <Ngevd> Hello! 21:01:36 <ellion> ais523: it would be really funny if you could only go a really small multiple faster than light 21:01:38 <ais523> (faster on shorter distances, like oerjan's "always 60 ns", seems pretty implausible) 21:01:39 <CakeProphet> maybe all of Einstein's theories are actually based on neutrinos and not light! 21:01:44 <fizzie> ais523: I'm not sure how you can tag either one of those as "more likely", but what-evur. 21:01:44 <Vorpal> olsner: right 21:01:54 <oerjan> <ais523> isn't a neutrino detector just a large vat of washing-up liquid with a bit of machinery attached? <-- there are several designs iirc, which are different in what kind of neutrinos they can detect and whether they can detect the direction they are traveling, iirc. 21:01:58 <ellion> ais523: Ooh, so a neutrino making a journey of fifty-nine ns... 21:02:06 <Vorpal> olsner: the meter is defined in terms of the speed of light and the second though 21:02:12 <ais523> fizzie: well, it's like the fine structure constant almost being an integer 21:02:20 <olsner> oh, ok, other way around then :P 21:02:23 <ais523> everyone was happy when they discovered it wasn't an integer, and upset while they thought it was 21:02:31 <ais523> (well, 1 over an integer, because it's upside-down) 21:02:31 <ellion> Really? 21:02:45 <ellion> Things that are integers are nice. 21:02:48 <ais523> well, if it's an integer, you have to wonder why /that/ integer 21:02:48 -!- derdon has quit (Remote host closed the connection). 21:02:56 <ellion> Because God, duh. :p 21:03:12 <ais523> and for other values, it's just an arbitrary number, and there are quite enough of those 21:03:18 <olsner> I don't like integers, they are suspiciously ... integral 21:03:25 <ellion> I wonder whether the various universal constants are reals. 21:03:28 <ellion> Computable reals? 21:03:43 <ais523> ooh, question: what's the shortest program for which it's unknown whether it halts? 21:03:49 <ellion> ais523: Goldbach or Collatz 21:03:49 <oerjan> <fizzie> [...] (Of "photographic emulsion films interleaved with lead plates".) <-- ah yes, i think these are the lead plates which are actually constructed from ancient roman plumbing or something, because all modern lead products are radioactivity contaminated 21:03:56 <ellion> ais523: at least well-known 21:04:15 <ellion> ais523: I think soupdragon wanted to find that out 21:04:16 <ellion> but it's rather hard to 21:04:31 <ellion> an exhaustive search is only possible for very small programs and the answers for those will be obvious, at least in something like brainfuck 21:04:33 <ais523> I don't see how you can get the collatz program into a dubiously-halting one 21:04:36 <Vorpal> <ais523> everyone was happy when they discovered it wasn't an integer, and upset while they thought it was <-- actually they thought it was a rational iirc? 1/137 or some such iirc? 21:04:39 <ellion> It'd be neat if our universe was super-Turing, but only because the various constants are uncomputable reals. 21:04:48 <ais523> you can't search each integer in turn to see if the collatz sequence doesn't halt 21:04:49 <ellion> Vorpal: It could still be rational. 21:04:54 <Phantom_Hoover> <ais523> ooh, question: what's the shortest program for which it's unknown whether it halts? 21:04:57 <ellion> You can't really prove a fundamental constant is irrational. 21:04:59 <Vorpal> ellion: well yes 21:05:00 <Phantom_Hoover> Define 'shortest'? 21:05:03 <ais523> I suppose you could search specifically for a loop that didn't contain 1 21:05:06 <ais523> Phantom_Hoover: any plausible definition 21:05:08 <CakeProphet> !perl $x=rand(1);sleep while$x 21:05:08 <Phantom_Hoover> ellion, yes you can. 21:05:09 <ellion> ais523: oh, true 21:05:15 <CakeProphet> a pretty short program that may or may not halt. :P 21:05:17 <ellion> Phantom_Hoover: Weeeeell, ok. 21:05:20 <ais523> goldbach could work 21:05:21 <Phantom_Hoover> Proving the magnetic constant is transcendental is the easiest thing in the world. 21:05:22 <ellion> Phantom_Hoover: But you can't really do what Vorpal said. 21:05:51 <CakeProphet> !perl sleep if rand 21:05:53 <CakeProphet> shorter 21:05:55 <oerjan> <Vorpal> oerjan: what prior time travel speculation? <-- mine, on this channel, a couple days ago. i have made up at least three wild theories already. :P 21:06:07 <Vorpal> Phantom_Hoover: how? 21:06:16 <ellion> oerjan: I really liked your theory that accounted for the supernova 21:06:21 <ais523> CakeProphet: does sleep do an infinite sleep by default? 21:06:26 <Phantom_Hoover> Vorpal, it's defined to be 4pi*10^-7. 21:06:26 <CakeProphet> yes 21:06:29 <ellion> oerjan: in fact, I think it's the most plausible one yet, for the "FTL is real" case 21:06:32 <ellion> has ais523 heard it? 21:06:32 <Vorpal> Phantom_Hoover: heh 21:06:35 <ais523> no 21:06:39 <CakeProphet> oh? 21:06:47 <ellion> oerjan: tell ais523 your theory that accounted for the supernova being on time 21:06:56 <ais523> hmm, there was an experiment a while back that demonstrated that photons went at the speed of light 21:07:07 <CakeProphet> woah 21:07:14 <CakeProphet> that's good 21:07:14 <ais523> some physicists weren't entirely sure if it was the same for single photons as it was for groups of photons 21:07:19 <Phantom_Hoover> Vorpal, it's more a factor in the SI system than an actual constant, though. 21:07:22 <Ngevd> ais523, wouldn't that mean that photons have infinite mass? 21:07:25 <ais523> so they tested both ways round 21:07:33 <Vorpal> <ais523> hmm, there was an experiment a while back that demonstrated that photons went at the speed of light <-- that is kind of expected? 21:07:35 <ais523> Ngevd: no, zero mass 21:07:45 <ais523> Vorpal: <ais523> some physicists weren't entirely sure if it was the same for single photons as it was for groups of photons 21:07:45 <Phantom_Hoover> Ngevd, you fail relativity. 21:07:50 <Ngevd> Crazy universe 21:07:51 <Vorpal> ais523: why on earth? 21:07:52 <ellion> Ngevd is surprised that photons go speed of light? :P 21:07:56 <oerjan> Vorpal: basically the idea was that the neutrinos don't really go faster than light overall, they just jump 60 ns back in time at one point. this is inspired by the fact that neutrino measures from the supernova SN1987a does _not_ show a proportional speedup (the neutrinos from that would then have arrived 4 _years_ earlier than the light, rather than 3 hours as they did.) 21:07:58 <ais523> Vorpal: don't ask me 21:08:00 <CakeProphet> zero mass, infinite energy. 21:08:01 <ellion> Vorpal: Can _you_ prove it? 21:08:07 <Vorpal> ellion: prove what? 21:08:16 <ais523> oerjan: the neutrinos arrived 3 hours earlier than the light? 21:08:17 <Phantom_Hoover> ellion, I can. 21:08:19 <ellion> Vorpal: That photons (plural) go light speed? 21:08:19 <Ngevd> ellion, no, I just started asking myself questions I don't know the answer two 21:08:32 <ellion> oerjan: you were more specific than that 21:08:33 <Vorpal> oerjan: ah 21:08:38 <ellion> what was the point again? 21:08:39 <ellion> some type turning into another type IIRC 21:08:51 <fizzie> ais523: Right, but a fixed "k*c with k>1" speed as opposed to "it goes faster the further it goes"; neither sounds (to me) incredibly more likely. 21:08:57 <Phantom_Hoover> Flavour oscillation. 21:09:12 <ais523> if it is fixed, it probably depends on the mass of neutrinos somehow 21:09:12 <CakeProphet> neutrinos are proofs, the formula that they prove is the type of a program. 21:09:14 <Vorpal> oerjan: still doesn't match 60 ns 21:09:14 <Phantom_Hoover> Which is a big deal because it contradicts the Standard Model. 21:09:16 <ellion> I like how OS X's computer chess player talks to you by default. 21:09:16 <ais523> hmm, perhaps neutrinos have imaginary mass 21:09:24 <Vorpal> oerjan: for the supernova it is easy to explain though: Perhaps a supernova emit a LOT of neutrinos just before it starts going bang? 21:09:34 <Vorpal> ellion: no 21:09:37 <ellion> oerjan: YOU HAVE NOT PRESENTED YOUR THEORY IN A VERY SATISFACTORY MANNER TO ais523 21:09:43 <ellion> CAPS CAPS CAPS 21:09:44 <ellion> Vorpal: What? 21:09:45 <Phantom_Hoover> Vorpal, yes, basically. 21:09:50 <ais523> hmm, my name is ais523 in allcaps? 21:09:50 <Vorpal> ellion: <ellion> Vorpal: That photons (plural) go light speed? 21:09:54 <Vorpal> ellion: replied to that 21:10:22 <oerjan> <ais523> fizzie: I mean, a constant multiple of c <-- as for that, my first wild theory was based on the idea that the speedup might depend on earth's gravitation. in fact i later found out the speedup is pretty close to the escape velocity of earth. but i then found out this idea breaks down if you include sun or (even larger) galaxy contributions. 21:10:23 <Vorpal> Phantom_Hoover: uh in reply to what? the line about the super nova? 21:10:37 <Phantom_Hoover> The core collapses, the protons and electrons in the core become neutrons and neutrinos, the neutrinos slam into the rest of the star and heat the hell out of it, boom. 21:10:52 <Vorpal> Phantom_Hoover: that works as far as I know 21:11:08 <ellion> OK, I'm going to reboot. 21:11:19 <ellion> If Ubuntu works properly, I'll get on IRC from the installation CD. 21:11:28 <ais523> oerjan: so what makes you think that we're capable of determining whether the process takes 3 hours or 3 hours + 60ns? 21:11:34 -!- MichaelBurge has quit (Read error: Connection reset by peer). 21:11:45 <ellion> ais523: what makes you think he thinks we can? 21:11:47 <ellion> the whole point is that we can't 21:11:51 <Ngevd> I don't like photons any more 21:11:53 <ellion> or, hmm 21:11:58 <Ngevd> They are mean 21:11:58 <ellion> yes 21:12:02 <oerjan> <CakeProphet> maybe all of Einstein's theories are actually based on neutrinos and not light! <-- i don't know if the michelson-morley experiment has been done to enough precision, but if it has it would rule out that, i think. 21:12:04 <Ngevd> What with the not having maths 21:12:14 <Ngevd> By which I mean mass 21:12:16 <Ngevd> I have a slight lisp 21:12:27 -!- ellion has quit (Quit: Page closed). 21:12:32 <oerjan> hm probably must have been. 21:12:44 <olsner> Phantom_Hoover: I think neutrinos interact far too weakly to be able to contribute much to the supernova, they'll just fly straight through all the matter in the star and continue on to earth 21:12:58 <Phantom_Hoover> olsner, nope, at least according to Phil Plait. 21:13:11 <Phantom_Hoover> There are a _lot_ of neutrinos. 21:13:41 <olsner> I'm saying if there were that many neutrinos, there'd mostly be a lot more neutrinos reaching earth not more heat in the star 21:13:49 <Phantom_Hoover> Oh, wait, they're not electron capture neutrinos. 21:14:17 <Phantom_Hoover> They're neutrinos and antineutrinos from pair production. 21:14:41 <Phantom_Hoover> "About 1046 joules of gravitational energy—approximately 10% of the star's rest mass—is converted into a ten-second burst of neutrinos, which is the main output of the event.[63][71] These carry away energy from the core and accelerate the collapse, while some neutrinos are absorbed by the star's outer layers and provide energy to the supernova explosion.[72]" 21:14:52 <Phantom_Hoover> (That's 10^46, not 1046.) 21:16:04 <oerjan> <ais523> I don't see how you can get the collatz program into a dubiously-halting one <-- iirc the link i put on the wiki [[Collatz function]] page is a paper where someone generalized the collatz problem into collatz functions and showed that the corresponding problem can be unsolvable. 21:16:43 <Phantom_Hoover> olsner, furthermore: "Computer simulations indicate that this expanding shock does not directly cause the supernova explosion;[63] rather, it stalls within milliseconds[73] in the outer core as energy is lost through the dissociation of heavy elements, and a process that is not clearly understood is necessary to allow the outer layers of the core to reabsorb around 1044 joules[nb 3] (1 foe) of energy, producing the visib 21:16:43 <Phantom_Hoover> le explosion.[74] Current research focuses upon a combination of neutrino reheating, rotational and magnetic effects as the basis for this process.[63]" 21:16:54 <Ngevd> + 21:17:24 <Ngevd> I'm going to call non-pure functions secular 21:17:24 <Ngevd> For the purposes of the Unicode spec 21:17:28 <Ngevd> *quode 21:18:07 <ais523> Ngevd: you're making no sense 21:18:18 <ais523> I especially can't figure out what you corrected to "quode" 21:18:21 <Vorpal> night → 21:18:24 <olsner> Phantom_Hoover: that mostly seems to say that a lot of energy disappears into neutrinos initially, and a lot of energy also appears from unknown sources later on :) 21:18:25 <ais523> night Vorpal 21:18:44 <Phantom_Hoover> olsner, one source of which is the neutrinos. 21:18:49 <monqy> ais523: uniquode is a Ngevd language by Ngevd 21:18:50 <Phantom_Hoover> A significant source at that. 21:18:54 <ais523> aha 21:18:58 <oerjan> <ais523> ooh, question: what's the shortest program for which it's unknown whether it halts? <-- istr somewhere about someone trying to find busy beaver function values for TMs, the first length they couldn't calculate would be a candidate. 21:19:25 <ais523> yep, would make sense 21:19:34 <ais523> if they couldn't calculate due to undecidability rather than computer power 21:19:47 <ais523> I imagine you can write a reasonably good termination checker that handles all but the most difficult cases 21:19:57 <Ngevd> Ngevd starts with a vowel 21:19:57 -!- GreaseMonkey has quit (Quit: The Other Game). 21:20:08 <oerjan> <ellion> oerjan: tell ais523 your theory that accounted for the supernova being on time <-- i'm a bit backlogged, but i think all my three theories do that, or i'd have discarded them sooner :P 21:20:54 <oerjan> argh he's gone :( 21:20:55 <ais523> Ngevd: heh, I see what you mean there 21:20:58 <ais523> it's "e", isn't it? 21:21:04 <oerjan> oh well he logreads. 21:21:33 <Ngevd> No it doesn't what am I talking about 21:22:26 <oerjan> another point which i've seen on reddit is that the supernova neutrinos were much lower energy, that might affect things. 21:23:01 <ais523> Ngevd: when pronounced, it does 21:23:01 <Ngevd> Ngevd, I'm just tired and pronouncing my username based on its etymology 21:23:12 <Ngevd> Wait, I'm Ngevd 21:23:14 <ais523> "en-geved" 21:23:16 <Phantom_Hoover> oerjan, you mean the one about neutrinos circumventing gravity? 21:23:18 <Ngevd> I meant ais523 21:23:20 <ais523> "taneb" starts with a consonant 21:23:30 <Ngevd> Ngevd starts with a consonant 21:23:35 <ais523> oh, "ais523" starts with a vowel no matter how you pronounce it, out of the various plausible situations 21:23:36 <Phantom_Hoover> ais523, no, it's ngevd. 21:23:59 <Ngevd> It's a real back-of-the-throater 21:24:13 <fizzie> "Ngevd" starts with a ngevd. 21:24:39 <oerjan> <ais523> oerjan: the neutrinos arrived 3 hours earlier than the light? <-- this is not so surprising, it's supposedly because the neutrinos pass from the core straight through the outer star parts while the photons get delayed by them 21:25:21 <ais523> so they could have been early by any amount from 0 to just over 3 hours, depending on measurement accuracy, rounding, and exactly how supernovae operate 21:25:38 -!- variable has quit (Excess Flood). 21:26:31 <oerjan> <Vorpal> oerjan: still doesn't match 60 ns <-- the four years would be assuming the supernova neutrinos had moved at the same speed all the way as these CERN ones 21:28:00 <oerjan> <Vorpal> oerjan: for the supernova it is easy to explain though: Perhaps a supernova emit a LOT of neutrinos just before it starts going bang? <-- 90% of the total energy of a supernova is supposedly in the form of neutrinos at the very start of the core explosion (iirc all the detected neutrinos were within 13 seconds of each other, or something) 21:28:07 -!- variable has joined. 21:29:57 <oerjan> <ais523> oerjan: so what makes you think that we're capable of determining whether the process takes 3 hours or 3 hours + 60ns? <-- erm this wasn't for the "single 60 ns" theory, but for the 1.000025 constant speedup theory. 21:30:04 <ais523> ah, OK 21:30:25 <ais523> single 60 ns doesn't really seem mathematically possible to me, because of the time travel issue 21:32:14 <Ngevd> Goodnight 21:32:14 <Ngevd> No wait 21:32:15 <Ngevd> Not goodnight yet 21:32:15 <Ngevd> School debate club starts tomorrow 21:32:33 <Ngevd> Now goodnight 21:32:37 -!- Ngevd has quit (Quit: Leaving). 21:34:45 <oerjan> <Phantom_Hoover> oerjan, you mean the one about neutrinos circumventing gravity? <-- er that would be the one that evolved into that escape velocity thing yes. maybe it could still be true with something else than escape velocity. 21:35:10 <Phantom_Hoover> oerjan, what's the escape velocity thing? 21:37:12 <oerjan> Phantom_Hoover: the speed of these neutrinos is approx. c + escape velocity from earth at earth's surface. 21:37:34 -!- oneirelliott has joined. 21:37:39 <oneirelliott> WELCOME TO... THE STESGI SUMMARY 21:37:42 <oneirelliott> (Captcha again.) 21:37:51 <oerjan> however it makes less sense if you include the contributions from the sun or (even larger) the whole galaxy. 21:37:55 <oneirelliott> So, well, um, hrm. 21:38:06 <oerjan> oneirelliott: please logread :P 21:38:09 <oneirelliott> oerjan: ok 21:38:17 <oneirelliott> ais523: I'm on Unity again, and hopefully my anger levels are low enough that my perception will be more objective this time 'round. 21:38:49 <ais523> oneirelliott: = presumably elliott rather than oneiros 21:38:52 <ais523> or maybe both 21:38:57 <oneirelliott> ineiros. 21:39:10 <ais523> how advanced is the state of IRC connection multiplexers? 21:39:15 <ais523> you could use irssi + screen, or something, I suppose 21:39:34 <olsner> oneirelliott: lol unity 21:39:35 <oerjan> i have been assuming ineiros is a variant spelling or something of oneiros 21:39:48 <oneirelliott> Although as a first note, I note that (a) mouse clicks are _still_ way too sensitive to touch (rather than click); menus are popping up just as I'm typing. This problem did NOT exist with the Ubuntu version I was on previously and is EXTREMELY annoying. (b) There's a problem with either the colour depth or the dithering not being there. It makes things look crappy. Will look into. 21:40:09 <oneirelliott> olsner: Yeah, well, installing Debian on this thing doesn't sound like a fun time. 21:41:00 <oneirelliott> Also I don't think fan control works on this thing yet. 21:41:28 <oerjan> you would think apple knew how to control their fans 21:41:40 <oneirelliott> It's Shuttleworth's fault in this case. :p 21:41:40 <ais523> dithering on a modern system seems wrong, except when you're outputting to a really low colour depth for artistic reasons or something 21:41:50 <oneirelliott> ais523: The MacBook Air has slightly low colour depth. 21:41:53 <oneirelliott> Six bits rather than eight. 21:42:00 <olsner> xfce perhaps? the xubuntu thing (which is apparently almost completely different from plain xfce) seems to be a lot like plain ubuntu was before Unity 21:42:02 <oneirelliott> It needs dithering or everything looks like shit. 21:42:06 <oneirelliott> (With dithering it looks fine, because it's very high dpi.) 21:42:09 <ais523> ah, interesting 21:42:20 <olsner> not that I use non-xfce ubuntu, so I don't really know 21:42:25 <ais523> although, I'm surprised that you find 18-bit color ugly and are fine with 24 21:42:35 <oneirelliott> ais523: Why do Ubuntu _still_ have their homepage be that useless Ubuntu-branded Google search? 21:42:35 <ais523> I suppose that humans could tell those apart on gradients and similar situations, though 21:42:40 <oneirelliott> ais523: And no, it's really ridiculously obvious. 21:42:46 <oneirelliott> The background has horrible banding. 21:42:46 <ais523> oneirelliott: because Google pay them to, obviously 21:42:52 <oneirelliott> ais523: at least make it /proper/ Google 21:43:17 <oneirelliott> olsner: I might try Xubuntu, but this mouse thing is the most annoying so far. 21:43:21 <oneirelliott> There's always the gnome fallback desktop. 21:43:39 <oneirelliott> oh, I can't even scroll 21:43:41 <oneirelliott> need drivers 21:44:24 <olsner> so the gnome fallback is gnome 2, or whatever it was before gnome also made that thing-just-like-unity? 21:44:53 <oneirelliott> it's gnome three, but with gnome-panel etc. 21:44:58 <oneirelliott> so, updated applications but same UI 21:45:26 <ais523> gnome 3 with gnome-panel sounds surprisingly viable 21:45:27 <oneirelliott> I will have to unbind the Windows key, it's far too easy to mispress here to bring up the Unity launcher thing. 21:45:35 <oneirelliott> ais523: it's just a question of when gnome-panel bitrots 21:45:39 <ais523> oneirelliott: it brings up launcher rather than acting as a modifier key? 21:45:46 <oneirelliott> ais523: yes 21:45:54 <ais523> hopefully, it won't bit-rot if it's maintained by someone 21:46:04 <oneirelliott> it should be windows-space or something, not windows 21:46:04 <ais523> and if Canonical are using it as their fallback, maybe they'll maintain it 21:46:13 <ais523> indeed 21:46:20 <oneirelliott> ais523: I don't think they care about the fallback now that unity [two]d is "usable" 21:46:31 <ais523> bleh 21:46:34 <CakeProphet> oneirelliott: .....NOOOOOO 21:46:45 <oneirelliott> ais523: not to say you won't be able to install it from repos 21:46:48 <ais523> to be fair, I wouldn't expect that gnome-panel needs much maintenance 21:46:48 <oneirelliott> but I'm sceptical /they'll/ maintain it 21:46:51 <oneirelliott> but I'm sure someone will 21:47:06 <oneirelliott> Anyway, I'm trying not to go into this with an ENTIRELY negative attitude, so I'll fix the display and mouse problems and go from there. 21:47:15 <CakeProphet> oneirelliott is sceptical like a sceptic tank. 21:47:41 <oerjan> <ais523> does anyone know where the right channel for all the lost other-esoteric people is? <-- an ancient arcane unsolved problem if i ever saw one 21:47:41 <oneirelliott> Word to the mother tounge, y'all. 21:47:46 <CakeProphet> but yeah, I'm never using Unity. 21:47:49 <oneirelliott> maybe we should start one 21:47:57 <oneirelliott> and pretend to care about it just long enough for it to take off 21:48:03 <ais523> I think that Unity will become viable eventually 21:48:05 <oneirelliott> CakeProphet: Never? Not even if they completely redesign it? 21:48:12 <ais523> I'm just worried that Ubuntu will be nonviable by the time it happens 21:48:13 <CakeProphet> okay maybe 21:48:21 <ais523> I also think the same about both KDE 4 and Gnome 3 21:48:30 <ais523> in fact, it wouldn't surprise me if KDE 4 was usable already, I haven't tried 21:48:35 <oneirelliott> dear Ubuntu: alt-tab having any sort of delay at all is completely unacceptable, you /will/ optimise the shit out of that code 21:48:48 <oneirelliott> if I can't fix _that_, I cannot even contemplate using Unity 21:49:10 <CakeProphet> unity just puts everything in places I don't want. 21:49:19 <CakeProphet> like ON THE LEFT SIDE OF THE SCREEN WHY 21:49:31 <oneirelliott> CakeProphet: nobody cares about your boring Unity opinions, they're waiting for my in-depth review >:| 21:49:34 <oneirelliott> I DOMINATE THE MARKET IN OPINIONS 21:49:43 <oneirelliott> ais523: oh dear, gdm isn't installed, I'll have to tweak some /other/ file to get dithering working 21:49:44 <CakeProphet> no fuck you I get opinions too. 21:50:05 <oneirelliott> (PREFERRED) To set-up Oneiric (or older?), use the post-install-oneiric.sh script. This is the most recent post-install script but has the down-side that it needs to be re-run after every kernel update (until the relevant drivers are patched in the kernel mainline). For this script to work, you must be on >3.0.0 kernel. 21:50:09 <oneirelliott> I don't want to run a script :( 21:50:10 * oneirelliott reads it instead 21:50:13 <ais523> why would gdm be responsible for dithering anyway? it just handles the login screen, right? 21:50:20 -!- augur has quit (Remote host closed the connection). 21:50:21 <ais523> also, what is Oneiric? 21:50:29 <oneirelliott> the Ubuntu beta 21:50:36 <oneirelliott> ais523: you had to add the dithering commands to the gdm init file 21:50:46 <oneirelliott> since it's basically the first thing that gets run with X 21:50:50 <ais523> ah, hmm 21:50:59 <ais523> you'd think that there'd be some sort of X init file to put that in 21:51:06 <oneirelliott> yes, but it's full of tons of stuff 21:51:12 <oneirelliott> the gdm file is more amenable to adding shit to :P 21:51:14 <oneirelliott> ais523: oh, they wisened up and trashed their shitty built-in Unity file manager 21:51:27 <ais523> and replaced it with... nautilus? something else? 21:51:31 <oneirelliott> now it starts a Nautilus modified to look as much like Finder as possible 21:51:35 <CakeProphet> do you guys keep the window buttons on the left side? 21:51:36 <ais523> haha 21:51:41 <CakeProphet> I switched mine back to the right side. 21:51:43 <CakeProphet> I fear change. 21:51:46 <oneirelliott> (which isn't a bad design necessarily, mind you) 21:51:51 <ais523> CakeProphet: I moved them to the right and put the menu back, so that I could close a window from either top corner 21:51:59 -!- impomatic has joined. 21:52:06 <oneirelliott> I'm used to them on the left, that's what i've used for years. 21:52:08 <oneirelliott> (OS X.) 21:52:11 <ais523> what does alt-space do if the window menu isn't there? if the alt-space-x binding still works to maximise, I might be OK with them on the left 21:52:12 <oneirelliott> s/i/I/ 21:52:25 <oneirelliott> alt-space x still works in Unity, it seems 21:52:27 <ais523> but have no reason not to put them on the right for the time being 21:53:05 <oneirelliott> # A General Comment: # This script is meant to be a "living howto". You will see "if false" # statements throughout--these are so you can see how to do something # without actually doing. Everyone should read through each step of this # script and decide if the action makes sense. Although...I know most won't. # But don't cry to me when it doesn't do what you wanted/ecxpected. 21:53:09 <oneirelliott> ecxpected 21:53:17 <oneirelliott> grr, I don't like how maximising a window hides the Unity icons 21:53:19 <ais523> ecxpected.cx 21:53:20 <oneirelliott> it should leave them there 21:53:31 <ais523> oneirelliott: obviously designed for tablets 21:53:39 <oneirelliott> ais523: no it isn't, you hover to get them back 21:53:43 <oneirelliott> you can't hover on a tablet 21:53:47 <oneirelliott> it'll be netbooks 21:54:41 <fizzie> Didn't it put the window-control icons of maximized windows into the top bar thingummy (except autohidden and visible-by-hover)? I think I saw something about something like that. 21:54:42 <CakeProphet> maybe I should switch to Debian for Ubuntu nazis force me to use Unity. 21:54:42 <oneirelliott> [ -z "$(which aptitude)" ] && sudo apt-get install aptitude 21:54:47 <CakeProphet> s/for/before/ 21:54:52 <oneirelliott> oh come on, that's nothing to do with setting up things for oneiric 21:54:53 <ais523> hmm, I've used a touchscreen on which hovering was possible 21:54:59 <ais523> it was a case of touching the screen not very hard 21:55:01 <oneirelliott> CakeProphet: grow up, the package repos are never going away 21:55:03 <ais523> and a click was pushing harder 21:55:12 <fizzie> ais523: There are also touchscreens where you hover by literally hovering. 21:55:30 <ais523> fizzie: heh, how do they detect that? camera? some sort of capacitance sensor? 21:55:33 <oneirelliott> fizzie: Yes. 21:55:42 <oneirelliott> fizzie: Re: window control. 21:55:59 -!- augur has joined. 21:56:07 <oneirelliott> There's a driver just for the keyboard? Huh. 21:56:41 <fizzie> ais523: I believe it was capacitive, yes; that's what most touchscreens nowadays are. I don't think it counted a very very light touch as a non-hover touch though, it sounds very difficult to reliably hover without accidentally brushing the screen every now and then. 21:56:53 <ais523> depends on how close you had to hover 21:56:58 <CakeProphet> oneirelliott: man you're serious business right now. 21:57:00 <oneirelliott> Hmm. I seem to _have_ a touchpad driver. 21:57:01 <ais523> a midair hover should work at a range of an inch or so, IMO 21:57:15 <ais523> given that hovering rarely does badly unless you have dwell click turned on 21:57:33 <fizzie> "Cypress Semiconductor is a company that makes the TrueTouch capacitive touchscreen. As reported by Slashgear, the company is now working to add hover support to their finger controlled touchscreens." [21 April 2010] 21:57:38 <fizzie> I'm sure other people have done it too. 21:57:39 <ais523> (challenge: make dwell click not an incredibly bad idea on some touch screen model) 21:57:45 <oneirelliott> sudo aptitude install gnome-color-manager icc-profiles-free lm-sensors ppa-purge xcalib 21:57:48 <oneirelliott> this script is so badly factored. 21:57:52 <ais523> I suppose you could also use double-tap for click 21:58:02 <fizzie> There also seems to be an Apple patent for it, unsurprisingly. 21:58:35 <ais523> hmm, probably drag would still have the same touchbinding as normal touchpads 21:58:53 <CakeProphet> mouse is good. change is bad. 21:58:59 <CakeProphet> :(:(:( 21:59:03 <ais523> it'd be more consistent that way, but probably hard to use 21:59:14 <oneirelliott> gah 21:59:18 <oneirelliott> this script adds the mactel-support ppa 21:59:20 <oneirelliott> despite it not having repos for oneiric 21:59:22 <oneirelliott> why would you do that????? 21:59:23 <CakeProphet> change is so.... /different/ 21:59:31 <fizzie> ais523: I think the old Interface Hall of Shame had a dwell-clickish thing listed. 21:59:46 <ais523> there's more than one Interface Hall of Shame? 22:00:01 <fizzie> No, so I suppose the adjective was superfluous. 22:00:05 <fizzie> Well, not that I know of, no. 22:00:16 <oneirelliott> Well, it /is/ old. 22:00:29 -!- impomatic has left. 22:00:41 <fizzie> IIRC it was a can't-turn-it-off feature of a multi-selection-aware listbox where it'd single-select the item you left the cursor on for a while, wiping out the existing selection of course. 22:00:46 <ais523> "the <adjective>" normally implies you're using the adjective as a disambiguator 22:00:59 <fizzie> I'm not sure I agree. 22:01:39 <oerjan> <CakeProphet> Agile Allosaurus 22:01:42 <fizzie> Anyway, there might easily be new ones by now that I wouldn't have known of, it's better to be safe than sure. 22:02:10 <oneirelliott> # macfanctldneeded, but no oneiric build 22:02:11 <oerjan> i sense a world-class trolling opportunity: Beautiful Brontosaurus 22:02:17 <oneirelliott> ais523: Slightly regretting OS decision. 22:02:41 <ais523> oneirelliott: Ubuntu O is currently unusable for long periods of time, then? 22:02:45 <oneirelliott> ais523: Not sure. 22:02:55 <oneirelliott> I might just run this crappy script. 22:03:13 <oneirelliott> sudo aptitude install bzr fakeroot bzr branch lp:macfanctld cd macfanctld 22:03:15 <oneirelliott> Oh no. 22:03:33 <ais523> fizzie: well, a websearch for "interface hall of shame" gives lots of results and I don't know which you mean 22:03:47 <oneirelliott> echo "Downloading macfanctld (fan control daemon)." wget -Nq https://launchpad.net/~mactel-support/+archive/ppa/+files/macfanctld_0.5~mactel1~maverick_amd64.deb 22:03:48 <oneirelliott> Gross, bro. 22:04:13 <ais523> what specifically was the "oh no" at? 22:04:19 <oneirelliott> ais523: The bzr stuff. 22:04:23 <fizzie> ais523: The one at http://homepage.mac.com/bradster/iarchitect/shame.htm that is also what is referred to by the wiki. 22:04:26 <ais523> the fact that it seems to be using a cpanm-like approach to Ubuntu? 22:04:49 <ais523> gah, the thing's trying to set hundreds of cookies again 22:04:59 <ais523> OK, more like 20 22:05:03 <oneirelliott> ais523: cpanm-like approach? 22:05:04 <ais523> still annoying trying to click through them all 22:05:27 <ais523> oneirelliott: cpanminus basically works by ignoring all the CPAN machinery, and just downloading the source from where it's stored and compiling/installing it by hand 22:05:35 <oneirelliott> TH0F: +249.0°C TH0O: +249.0°C 22:05:38 <oneirelliott> Wow, my computer is hot. 22:05:55 <oneirelliott> It is hard to quantify how much I believe those sensors. 22:06:29 <ais523> you see, the issue is that Firefox puts up an application-modal dialog box to ask me to approve cookies, separately for each cookie 22:06:38 <CakeProphet> oneirelliott: what is the unit of belief? 22:06:41 <ais523> as if I'd give different results for different cookies on the same web page, while not wanting to save the result permanently 22:06:52 <ais523> CakeProphet: the alp, IIRC 22:07:12 <ais523> now, sometimes the dialog boxes don't load in the order you need to click on them to close them 22:07:19 <ais523> (each being application-modal means they also modal-interrupt each other) 22:07:25 <ais523> and it can take a while to figure out the next one to click 22:07:29 <ais523> I wonder if they've solved that in versions > 3 22:07:52 <oneirelliott> # Fix Matlab error: sudo ln -s /lib/x86_64-linux-gnu/libc-2.13.so /lib64/libc.so.6 22:07:54 <oneirelliott> errrrrr....... 22:08:01 <oneirelliott> are you _sure_ you want to do that? 22:08:11 <oneirelliott> OK, I'mma try and reboot. 22:08:16 <oneirelliott> Wish me, uh, luck. 22:08:44 <ais523> good luck 22:08:51 <ais523> *good uh, luck 22:09:12 <CakeProphet> Posh Puma 22:09:43 <CakeProphet> Pink Panther 22:10:13 <ais523> oneirelliott: are you still connected, despite having rebooted? 22:10:18 <ais523> or are you going to ping out in the next few minutes? 22:12:43 -!- oneirelliott has quit (Ping timeout: 252 seconds). 22:12:55 -!- elliott has joined. 22:13:00 <elliott> Hello. 22:13:00 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 22:13:10 <elliott> "Gfax Facsimile Program". 22:13:13 <elliott> Ah yes, facsimile. 22:13:21 -!- elliott has changed nick to Guest78404. 22:13:40 <monqy> wb Guest78404 22:13:47 <Guest78404> -NickServ- Invalid password for elliott. 22:13:48 <Guest78404> I lie. :/ 22:14:12 <ais523> you /are/ elliott, right? 22:14:13 -!- Guest78404 has quit (Client Quit). 22:14:18 <ais523> not knowing his password might imply you're someone else 22:14:21 -!- elliott_ has joined. 22:14:24 <elliott_> No. 22:15:19 <elliott_> So, the fan daemon doesnt' seem to be working. 22:15:21 <elliott_> doesn't 22:15:23 <fizzie> ais523: I also recall that the article said (and was surprised by that) the select-on-hover was a standard feature of the control; and indeed, from the MSDN documentation of the ListView.HoverSelection property: "Gets or sets a value indicating whether an item is automatically selected when the mouse pointer remains over the item for a few seconds. When this property is set to true, the user can point to an item in the ListView control to select the item. Multi 22:15:23 <fizzie> ple items can be selected (when the MultiSelect property is set to true) by holding down the CTRL key while pointing to each item. You can use this feature to provide an easier method for the user of your application to select items in the ListView control." 22:15:35 <elliott_> What. 22:15:41 <elliott_> ? 22:15:54 <ais523> just because you can do something doesn't mean you should... 22:16:01 <elliott_> [ -e /media/Mac\ OS ] || sudo mkdir /media/Mac\ OS 22:16:01 <elliott_> sudo mount -o ro /dev/sda2 /media/Mac\ OS 22:16:02 <elliott_> oh come /on/ 22:16:04 <elliott_> ais523: Do what? 22:16:07 <ais523> elliott_: heh, you've given me a mental image of a fan daemon as a little demon that physically turns the fan 22:16:16 <fizzie> It was somewhere near the HotTracking thing, which highlights the hovered-on property. But I can't find it from the hall-of-shame page. 22:16:17 <elliott_> Awwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww 22:16:19 -!- ive has quit (Ping timeout: 260 seconds). 22:16:24 <ais523> elliott_: in this case, make hovering a control do something when it normally doesn't 22:17:05 <elliott_> Does anyone know how to read the current fan status or whatever? 22:17:08 <elliott_> Fan speed? 22:17:12 <elliott_> Something in /proc, I think? 22:17:28 <fizzie> I don't know how many people would realize the multi-selection support with the HoverSelection. "Point and wait a few seconds but remember to keep ctrl down at the critical moment" sounds somewhat unintuitive. 22:17:30 <ais523> "fan" appears nowhere in man 5 proc 22:17:40 <elliott_> ais523: It was something in a sub-directory provided by a driver blah blah 22:17:53 <elliott_> echo "Calibrating display (based on OS X configuration)." 22:17:54 <elliott_> oh, that could be nice 22:18:14 <Deewiant> elliott: lm-sensors 22:18:18 <CakeProphet> injury on lower tongue + eating food = unpleasantness 22:18:27 <elliott_> Deewiant: That just shows temperatures 22:18:28 <fizzie> lm-oh-Deewiant-already-said-it. 22:18:35 <elliott_> Aha, looks like LightDM is used instead of gdm now. 22:18:36 <Deewiant> elliott_: No, it also has fan speed 22:18:42 <elliott_> Deewiant: Where 22:18:44 <fizzie> When supported. 22:19:03 <Deewiant> If it doesn't output it then you're not supported I guess, yeah :-P 22:19:07 <elliott_> I ran "sensors" 22:19:11 <elliott_> oh no, lightdm is typical freedesktop.org software, so it's all .ini 22:19:16 <elliott_> where do I put commands :'( 22:19:18 <Deewiant> sensors | grep -i fan 22:19:25 <elliott_> Deewiant: Nothin' 22:19:36 <Deewiant> Oh well 22:20:09 <fizzie> "head /sys/class/hwmon/hwmon*/device/*fan*" but it's unlikely that will do anything if 'sensors' won't. 22:20:25 <elliott_> ERROR: Invalid GPU 0 specified in assignment '[gpu:0]/DitheringDepth[DFP-2]=1' 22:20:25 <elliott_> (there are only 0 GPUs on this Display). 22:20:27 <elliott_> That's not very many GPUs 22:20:30 <fizzie> Except perhaps show ignored-by-lm-sensors-configuration sensors. 22:20:37 <fizzie> (Like fan3 for me.) 22:20:42 <CakeProphet> man using this stable release sure is neat. 22:20:42 <Deewiant> Have you run sensors-detect 22:20:52 <CakeProphet> I have like a working system that does what you'd expect. 22:20:55 <elliott_> Deewiant IT finds my tempreatures 22:21:04 <elliott_> CakeProphet: Fuck off, all these problems were in the previous stable release 22:21:29 <ais523> is there some previous stable release that didn't have them? 22:21:35 <elliott_> Oh god, nouveau is being used 22:21:39 <fizzie> I heard about LightDM. 22:21:39 <elliott_> ais523: Yes, the one before (partially) 22:21:50 <elliott_> What package are the proprietary nvidia drivers in again 22:21:55 <fizzie> It's not like gdm was very easily-configurable either. 22:22:02 <elliott_> fizzie: It had a shell script I had to edit 22:22:07 <ais523> fizzie: it was a while ago, but became less so over time 22:22:20 <ais523> there used to be a dialog box in system | administration that configured it 22:22:30 <fizzie> elliott_: 'nvidia-current' or some-such, but there's also that driver manager thing. 22:22:40 <elliott_> fizzie, The driver manager fails to offer it. 22:23:12 <fizzie> It should if you have that 'restricted' repo enabled. (I think.) 22:23:21 <elliott_> I do. 22:23:36 <ais523> I typically use Intel graphics for driver simplicity 22:23:43 <fizzie> I don't think I got any sensors outputs on the laptop ever, either. 22:23:50 <ais523> although occasionally I find games that don't work with it 22:24:00 <elliott_> And apparently the listed nvidia packages in Software Cetnre don't exist in my repositories. 22:24:01 <elliott_> What. 22:24:06 <ais523> the state of graphics cards is rapidly reaching a state where even low-end cards can run reasonably good games 22:24:14 <ais523> elliott_: perhaps the repo mirrors you're using have only a small subset 22:24:14 <CakeProphet> "enjoy the rest of your evenings" 22:24:21 <CakeProphet> wow I get so many of those thanks for reminding me. 22:24:28 <elliott_> ais523: gb.archive.ubuntu.com 22:24:45 <fizzie> "Trying family `National Semiconductor'... Yes" + "Found unknown chip with ID 0x8519". But that was 2011-03; maybe it's in there now. 22:24:51 <ais523> hmm, I'd /expect/ that to be a full mirror 22:25:18 <elliott_> nvidia-current installs. 22:25:19 <elliott_> So that's a thing. 22:25:37 <fizzie> ais523: "Reasonably good games" (such as nethack) is perhaps not the thing to use there; maybe "reasonably graphical games" or something. 22:25:38 <elliott_> Current likelihood ratings: 22:25:45 <ais523> fizzie: err, that's what I meant 22:25:45 <elliott_> - Staying on Ubuntu with Unity - five percent likelihood 22:25:52 <elliott_> - Staying on Ubuntu with GNOME - something like forty percent 22:25:52 <ais523> Neverwinter Nights 1 works fine, for instance 22:25:57 <elliott_> - Debian - something like fifty percent 22:26:04 <elliott_> - Downgrading ubuntu - something like fifteen percent 22:26:15 <ais523> elliott_: you didn't put OS X anywhere in your percentage chart? 22:26:26 <CakeProphet> elliott_: help what is a percentage? 22:26:27 <monqy> weird percentages 22:26:29 <ais523> or Windows 7? 22:26:31 <elliott_> ais523: OS X is not an option for a main OS for me. 22:26:37 <elliott_> Windows is even less so. 22:26:44 <ais523> what're the specific dealbreakers? 22:26:50 <ais523> I want ammo to use in OS flamewars 22:26:51 <elliott_> For both, programming. 22:27:00 <CakeProphet> I think for me Ubuntu + GNOME is best. 22:27:00 <monqy> osx negative percentages to balance the >100%ery 22:27:05 <elliott_> I have other disagreements with them, but they're just not acceptable programming platforms. 22:27:06 <ais523> I can only really mildly defend Linux, because I have the unfortunate symptom of thinking that Windows/OSX are actually quite good 22:27:23 <elliott_> I never defend Linux because it's terrible. 22:27:31 <elliott_> OK, let's see if these nvidia drivers work. 22:27:55 <monqy> everything is terrible.,,. 22:28:18 <CakeProphet> I feel that any unix-based OS is a pretty decent environment for programming. 22:28:21 <Phantom_Hoover> elliott_ is of the opinion that everything is terrible even if there's nothing better. 22:28:22 <CakeProphet> whereas Windows is terrible. 22:28:34 <monqy> im agre with eliot+_ 22:28:41 -!- elliott_ has quit (Read error: Connection reset by peer). 22:28:43 <ais523> CakeProphet: I maintained C-INTERCAL on Windows' emulation of DOS for years 22:28:43 <Phantom_Hoover> CakeProphet, see UNIX-HATERS. 22:28:46 <monqy> bye eliot_+ 22:29:00 -!- elliott_ has joined. 22:29:07 <elliott_> Well, the colours look better now. 22:29:13 <Phantom_Hoover> t. s. eliot_+ 22:29:57 <CakeProphet> for me the main draw to linux (or another unix) is the shell utilities / mounds of free software 22:30:16 <CakeProphet> Windows has cygwin but that's not quite the same. 22:30:32 <elliott_> I doubt the mounds of free-cost software are the reason, you can just pirate it. 22:30:37 <monqy> windows has a mess of ui i dont want and dont like 22:30:50 <ais523> elliott_: it's a pretty good reason for me, probably the most important 22:30:52 <CakeProphet> elliott_: the fact that it's readily available and very easy to install (for the most part) 22:31:02 <elliott_> ais523: You are not CakeProphet. 22:31:07 <ais523> selecting from a repo is much easier than trying to hunt down programs on Windows 22:31:14 <elliott_> I very much doubt CakeProphet has an objection to piracy. 22:31:17 <ais523> partly, because from a repo you don't need to know the program you want in advance 22:31:26 <elliott_> gah, the fan control must be working, because it keeps turning the fans down then up again 22:31:29 <elliott_> stop that 22:31:31 <ais523> and a websearch is likely to return entirely the wrong program if you aren't searching by name 22:31:41 <elliott_> STOP THAT 22:32:11 <elliott_> Deewiant: I'll try sensors-detect 22:32:33 <elliott_> Deewiant: Oh no, it didn't find any this time, but it did when I was using noveaueaueua. 22:33:01 * elliott_ stops macfanctld to shut it up. 22:33:13 <elliott_> That... made the noise stop. 22:33:19 <elliott_> Did it just stop the control without changing the fan? 22:33:21 <monqy> bye noise 22:33:28 <CakeProphet> computer melt 22:33:35 * elliott_ reboots in panic. 22:33:47 <ais523> most computers shut themselves down rather than melting when they overheat 22:33:52 -!- elliott_ has quit (Read error: Connection reset by peer). 22:34:09 <ais523> I know that this computer does it on a regular basis because I keep forgetting to bang on the case to start the fan 22:34:53 -!- elliott_ has joined. 22:34:56 <CakeProphet> yes my computer shut down from an overheat just a few days ago actually. 22:34:57 <fizzie> ais523: Maybe you should invest in a hand-cranked fan; having a visible crank could be a nice reminder. 22:35:03 <elliott_> Well, it's monitoring fans just fine without macfanctld now, it seems. 22:35:18 * CakeProphet wasn't aware that fan control was an OS thing. 22:35:28 <ais523> fizzie: the issue is that the fan doesn't spin when it's cold enough, which is usually 22:35:33 <elliott_> test 22:35:35 <ais523> if it does get hot, usually due to Flash, it tries to start the fan but fails 22:35:42 <ais523> then when I bang on the case, it actually starts 22:35:51 <ais523> it doesn't start if I bang on the case while it isn't trying to spin the fan 22:35:53 <CakeProphet> I figured the hardware itself simply controlled the fan based on a temp sensor or something. 22:36:00 <elliott_> What IS zeitgeist-daemon? 22:36:01 <elliott_> ais523? 22:36:03 <CakeProphet> but it's actually OS controlled? 22:36:04 <ais523> pong 22:36:08 <elliott_> <elliott_> What IS zeitgeist-daemon? 22:36:12 <ais523> I don't know 22:36:30 <monqy> i interprted it as "is zeitgeist-daemon ais523?" 22:36:34 <CakeProphet> elliott_: I wonder as well. 22:36:43 <ais523> so the issue is to detect that it's trying to start the fan and bang on the case then 22:36:44 <elliott_> It keeps crashing. 22:36:46 <fizzie> CakeProphet: Often there's a firmware-based (within-ACPI whateverness) fan control, which the OS can then override for more configurable control. 22:36:55 <ais523> it makes a distinctive clicking noise when it happens, but a very quiet one, so sometimes I don't hear it in time 22:37:22 * elliott_ opens LibreOffice for the hell of it 22:37:23 <CakeProphet> fizzie: ah. and why would a OS override it? 22:37:28 <elliott_> yay, it's just as ugly as OpenOffice 22:37:32 <CakeProphet> why not just let it do its thing? 22:37:34 <ais523> *"an OS"? 22:37:39 <CakeProphet> sure 22:37:51 <CakeProphet> I was thinking "a operating system" as I typed OS 22:37:56 <CakeProphet> but that's still an... 22:37:56 * elliott_ removes LibreOffice and Ubuntu One from the panel 22:37:57 <CakeProphet> so nevermind 22:37:58 <ais523> elliott_: most of the changes of LO over OOo have been bugfixes and internal changes 22:38:01 <elliott_> I will never use them ever. 22:38:12 <CakeProphet> elliott_: libreoffice = openoffice with new name 22:38:14 <ais523> wow, are you sure you'll never need a Wordalike or Excelalike? 22:38:16 <monqy> is there a ubuntu two 22:38:17 <elliott_> CakeProphet: I'm not an idiot. 22:38:19 <elliott_> ais523: Never said that 22:38:22 <ais523> I know 22:38:30 <elliott_> Then no, I'm not 22:38:36 <elliott_> I'm pretty sure I'd use Abiword or Gnumeric, though 22:38:48 <ais523> what about a Powerpoint-alike? that actually happens to me quite a lot 22:39:04 <ais523> also, I have a huge, incredible burning hatred for Keynote 22:39:08 <fizzie> CakeProphet: In case of Linux, possibly because the user is a control freak and wants to use his/her own algorithm. (Though it could be that the firmware fan control is overly aggressive, and/or annoying in that it keeps toggling the fan "full blast / off / full blast / off / ..." while you'd prefer a more gradual adjustment for noise reasons.) 22:39:22 <CakeProphet> ah 22:39:25 * CakeProphet is suddenly a control freak 22:39:27 <ais523> (it doesn't run on Linux, but it inspires hate indirectly becaus people sometimes use it) 22:39:30 <elliott_> ais523: I don't like presentations; and why? 22:39:36 <elliott_> Keynote seems to produce acceptable output 22:39:40 <ais523> the hatred, or the presentation use? 22:39:43 <elliott_> Former 22:39:54 <CakeProphet> ais523: my fan is rather loud right now and I'm at near 0% CPU usage 22:40:01 <ais523> its output is full of a range of annoyances that are inflicted on other people 22:40:20 <fizzie> The thinkpad_acpi driver has a "fan_control=1" option, after which it lets the user to control it; it's "disabled by default for safety reasons". 22:40:24 <elliott_> ais523: Like? 22:40:30 <elliott_> Obviously I'm asking for examples. 22:40:34 <ais523> things like putting visible navigation controls on the view by default, and a really abysmal HTML output (to the extent that Hacker News persuaded someone to post the PDF instead as it wasn't as bad 22:40:35 <ais523> ) 22:40:40 <ais523> elliott_: it takes me a while to type a line! 22:40:45 <fizzie> And I think I used to have a... Toshiba laptop that also had a platform-specific fan thing. 22:40:51 <ais523> also, I don't think the fonts it uses by default look good at sizes larger than 12-point or so 22:41:07 <elliott_> wow, I think Unity's awful stained-glass effect is actually intentional 22:41:15 <Phantom_Hoover> Awful stained-glass effect? 22:41:18 <ais523> elliott_: of course, you've heard of Aero Glass, right? 22:41:24 <monqy> awful stained-grlasa effeCGT? 22:41:31 <elliott_> ais523: but it just looks like a badly-dithered version of a blur 22:41:40 <elliott_> ais523: Well, visible navigation is annoying, and HTML too, but the formatting of Keynote PDFs has always been nicer than average presentations IME 22:41:47 <ais523> elliott_: that's what Aero Glass looks like too 22:41:53 <ais523> well, without the bad dithering 22:42:01 <elliott_> The dithering problem is gone 22:42:08 <ais523> elliott_: that's just because the sort of people who typically use Powerpoint are really bad at formatting 22:42:09 <elliott_> So it actually looks badly dithered inherently. 22:42:17 <elliott_> ais523: I'm not comparing to powerpoint 22:42:23 <elliott_> I don't read presentations by the kind of people who use powerpoint 22:42:26 <elliott_> I'm talking about talk slides etc. 22:42:42 <ais523> well, what do you think the presentations are being made using, if it's not Keynote or Powerpoint? 22:42:49 <ais523> I'm probably the only person in the universe who willingly uses Impress 22:42:50 <CakeProphet> !insanetemp 26.8 22:42:51 <EgoBot> 80.2 22:42:59 <elliott_> wow, Pidgin, don't use my OS display picture as my MSN picture without asking 22:43:04 <CakeProphet> my cpu is room temp atm 22:43:09 <ais523> elliott_: wow that is bad 22:43:15 <monqy> can any TeX do slides hows 22:43:19 <elliott_> I look awful in that picture, I just did it because Ubuntu wanted me to 22:43:23 <ais523> I don't think I've ever used Pidgin beyond trying to start it and realising I didn't know how to use it 22:43:36 <ais523> monqy: there's some way to do presentations with LaTeX addons 22:43:38 * CakeProphet uses pidgin for cybersex and freelancing. 22:43:43 <elliott_> ais523: beamer 22:43:49 -!- MichaelBurge has joined. 22:43:49 <CakeProphet> it is particularly adept for these purposes. 22:43:57 <ais523> monqy: and elliott_ even knows what it's called 22:44:00 <elliott_> (23:44:15) Elliott: I hate computers 22:44:05 <elliott_> Good first message to send with new Pidgin install. 22:44:10 <Gregor> CakeProphet: Oh really? Because I use pidgin for cyberlancing and freesex. 22:44:12 -!- augur has quit (Ping timeout: 248 seconds). 22:44:30 <monqy> mmm / cyberlancing 22:44:31 <CakeProphet> cyberlancing is fun but it's a bit too dangerous for me. 22:45:01 <ais523> !bfjoust (>)*8(>+[-])*21 22:45:02 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/ 22:45:08 <ais523> !bfjoust cyberlance (>)*8(>+[-])*21 22:45:15 <EgoBot> ​Score for ais523_cyberlance: 15.7 22:45:16 <Gregor> `? welcome 22:45:18 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 22:45:20 <Gregor> MichaelBurge: ^^^ 22:45:27 <Gregor> (Assuming that's not an altnick for somebody else :P 22:45:28 <Gregor> ) 22:45:36 <elliott_> He's been here for at least a day. 22:45:40 <elliott_> He quit earlier. 22:45:44 <ais523> what was the most common third component, besides design and deployment? 22:45:50 <elliott_> Development. 22:45:53 <Gregor> elliott_: But he didn't say anything, and nobody welcomed him :P 22:45:53 <MichaelBurge> All these people talking about me 22:45:55 <ais523> aha, thanks 22:45:56 <MichaelBurge> so much attention :o 22:46:03 <elliott_> Gregor: BTW, I could add a syntax to `? so you could say "`? welcome > MichaelBurge"... 22:46:06 <elliott_> And it'd ping 'em. 22:46:18 <elliott_> ais523: oh no, the indicator message box thing highlight is now blue, not green 22:46:21 <Gregor> elliott_: Yup. Yup you could. 22:46:26 -!- zzo38 has joined. 22:46:28 <elliott_> Gregor: Then I will, in a minute. 22:46:30 <ais523> elliott_: that's an "oh no"? 22:46:42 <elliott_> ais523: I WAS USED TO THE GREEN 22:46:56 <zzo38> I played D&D game today. 22:47:22 <ais523> zzo38: have you considered adding a third player to your electronic circuit simulator? 22:47:26 <MichaelBurge> #haskell has a bot written in Haskell, and several other channels have language-specific bots. Is the #esoteric bot written in Brainfuck or Unlambda? :p 22:47:39 <ais523> there are several; fungot is written in Funge-98 22:47:40 <fungot> ais523: then i came to a lightless domed hall of vast proportions, whose vaultings were covered with demoniac carvings and in whose songs thou shalt hear notes of fnord by which the race expanded. for personal locomotion no external aid was used, since in the space following death some of the 22:47:46 <zzo38> ais523: What electronic circuit simulator? 22:47:47 <ais523> ^ul (hi, I'm written in Funge-98)S 22:47:47 <fungot> hi, I'm written in Funge-98 22:48:05 <ais523> zzo38: it's OK if you don't have one but you can if you want to 22:48:08 <elliott_> ^source 22:48:09 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 22:48:10 <elliott_> MichaelBurge: See above link 22:48:28 <zzo38> ais523: O, OK. 22:48:36 <CakeProphet> HackEgo and Egobot are C I believe. 22:48:39 <CakeProphet> which is pretty esoteric. 22:49:10 <CakeProphet> we have a lot of bots. we love bots. 22:49:28 <monqy> was news-ham zepto 22:49:34 <monqy> or something else 22:49:41 -!- elliott_ has quit (Quit: Leaving). 22:49:47 <monqy> and zeptobot was python? my memorys all gone 22:49:49 -!- elliott_ has joined. 22:49:53 <ais523> bsmnt_bot was python 22:49:53 <zzo38> C is OK to program in. Some people disagree but I think C is good, but LLVM is better designed than C in my opinion, and with a lot of macro system and literate programming, LLVM would work well to write a program that you might otherwise write in C. 22:50:14 <elliott_> ais523: grr, the icon for the battery indicator is horizontally squashed 22:50:20 <elliott_> so it has annoying image scaling artefacts 22:50:23 <monqy> ;_; 22:50:25 <ais523> ouch 22:51:43 <elliott_> hmm, maybe I should try Empathy 22:51:46 <elliott_> maybe it's finally not terrible 22:52:37 * elliott_ installs proprietary fonts because seriously the liberation fonts are bad. 22:52:57 <ais523> and it's using them in preference to DejaVu fonts, which are pretty good? 22:53:15 <zzo38> Then use the Computer Modern fonts (although they are not screenfonts, do you want screenfonts?) 22:53:28 <elliott_> Yes, I want screenfonts :P 22:53:37 <elliott_> ais523: well, dejavu sans has awkward proportions 22:53:41 <elliott_> it's good at replacing Verdana but little else 22:53:47 <Gregor> When you use an electronic paper display, Computer Modern becomes a screenfont! 22:53:52 <zzo38> What operating system are you on? 22:53:53 <elliott_> at least the corefonts have the right proportions as the corefonts :-) 22:53:55 <elliott_> zzo38: Ubuntu 22:53:56 <ais523> elliott_: it's good as a font for use in the abstract, I think 22:54:12 <zzo38> I know X can just use standard X bitmap fonts, but I don't know if the programs in Ubuntu use those. 22:54:13 <CakeProphet> elliott_: I'm pretty sure most people always install mscorefont 22:54:14 <elliott_> ais523: It's not a useful replacement for a webpage not designed for a font with its metrics 22:54:15 <ais523> I normally submit things like reports in DejaVu Sans 22:54:22 <elliott_> zzo38: They're disabled by default. 22:54:24 <Gregor> CakeProphet: I don't have mscorefonts. 22:54:25 <elliott_> CakeProphet: No, most people don't. 22:54:27 <CakeProphet> oh... 22:54:33 <CakeProphet> well I do. I guess I'm not most people then. :P 22:54:34 <elliott_> Most people have no idea what the corefonts are. 22:54:37 <ais523> elliott_: webpages shouldn't be designed for particular font metrics 22:54:44 <elliott_> ais523: I don't really have time for this 22:54:51 <ais523> incidentally, I installed mscorefonts, then later uninstalled it again 22:54:58 <elliott_> (That's a lie, I do, but I don't have the energy) 22:55:03 <Gregor> But WebSplat becomes a wholly different game when metrics change! 22:55:20 <ais523> I haven't really noticed, apart from Neverwinter Nights 1 which substitutes a weird 7-segment-display type font where it'd normally use Courier New 22:55:27 <ais523> which makes things like scripts almost unreadable 22:55:36 <elliott_> Gregor: I'm still bummed that nobody backed up HavenWorks. 22:55:55 <Gregor> elliott_: I'm still not convinced that I haven't, I just made no effort whatsoever to actually find what stupid place I put it :P 22:56:20 <elliott_> dear Firefox: "Feedback" is not worth being the largest button on your menu 22:56:29 <ais523> it probably is to them 22:56:35 <ais523> none of the other options give them useful information 22:56:55 * elliott_ clicks "Firefox made me sad because" and types in "the Feedback button takes up way too much screen real estate". 22:57:15 <Gregor> http://web.archive.org/web/20110207193433/http://havenworks.com/ Tada :P 22:57:23 <elliott_> Gregor: Does it have al lthe images? 22:57:41 <Gregor> elliott_: Well I haven't scrolled through all the madness, but it sure seems to. 22:58:00 <elliott_> Yesss 22:58:07 <elliott_> Gregor: Can you collect the archive.org header images? X-D 22:58:30 <elliott_> That havenworks favicon logo thing is permanently ingrained into my head as "one of the enemies". 22:58:33 <Gregor> I forgot to ever make a Zalgofier option for WebSplat .... 22:58:39 <ais523> incidentally, have you noticed that archive.org seems to have an interstitial nowadays? 22:58:52 <ais523> or, well, it's more of a splash screen 22:59:09 * elliott_ tries to install a native 64 bit flash player 22:59:13 <elliott_> ais523: indeed, I don't like the redesign 22:59:29 <ais523> I'm not sure what triggers it, but I suspect it's based on referrer somehow 22:59:39 <ais523> either lack of a particular referrer, or seeing a referrer other than themselves 22:59:45 <ais523> I should try faking my referrer to see what happens 23:00:14 * Phantom_Hoover → sleep 23:00:18 -!- Phantom_Hoover has quit (Quit: Leaving). 23:00:31 * elliott_ changes the terminal font 23:00:48 <zzo38> At FreeGeek they print everything using the Liberation fonts except for the stuff I type, which I print using Computer Modern instead. 23:00:59 -!- Phantom_Hoover has joined. 23:01:10 -!- Phantom_Hoover has quit (Client Quit). 23:01:16 <ais523> elliott_: what to? 23:01:32 <Gregor> Comic sans. 23:01:33 <ais523> (DVSM is probably the only correct option, although I'll consider the possibility that there may be others) 23:01:42 <elliott_> ais523: the same font but smaller 23:01:48 <ais523> ah, OK, that's also acceptable 23:01:53 <elliott_> ais523: there are other correct options 23:01:54 <ais523> couldn't you just use control-minus for that, though? 23:01:56 <elliott_> Inconsolata, for instance 23:02:00 <ais523> elliott_: on Linux, I mean 23:02:06 <elliott_> Inconsolata works on Linux. 23:02:10 <ais523> I'm not that much of a fan of Inconsolata, but it's not indefensible, I suppose 23:02:11 <elliott_> You can convert Monaco to something that works on Linux. 23:02:14 <elliott_> Consolas works on Linux too. 23:02:22 <elliott_> ais523: Inconsolata is nicest on OS X, oddly enough 23:02:34 <elliott_> (since it wasn't /designed/ on OS X) 23:02:39 <ais523> because it's designed for an OS with exact subpixel display, I guess 23:02:44 <elliott_> nope 23:02:47 <elliott_> it was designed on Linux 23:03:03 <ais523> hey, best practice is not to design around today's bugs, isn't it? 23:03:10 <ais523> or at least, have bugfixes as a separate thing 23:03:16 <ais523> other people's bugfixes, that is 23:03:48 * elliott_ considers increasing mouse acceleration, realises he hasn't actually solved the mouse driver problem yet. 23:04:16 <zzo38> Justu se a simple fixpitch bitmap font it can work maybe 23:04:19 <elliott_> ais523: here's an oneiric actual-bug: the indicator for volume control shows, but always displays as if the volume is 0 23:04:27 <elliott_> except for the icon, which displays as minimum non-zero 23:04:45 <ais523> is sound itself working? the volume control indicator always displays at 50% here while Pulse is broken 23:04:49 <zzo38> (METAFONT programs are also compiled into bitmap fonts, but they are meant for printing font rather than screen) 23:04:55 <elliott_> ais523: yep, it's working 23:05:01 <elliott_> as is the volume control 23:05:32 <ais523> oh, but the volume control /indicator/ shows at 0? 23:06:04 -!- sllide has quit (Ping timeout: 248 seconds). 23:06:09 -!- Patashu has joined. 23:07:04 <elliott_> ais523: nope, only the popup thing 23:07:07 <elliott_> the indicator itself works 23:07:08 <elliott_> soryr 23:07:12 <elliott_> [asterisk]sorry 23:07:49 <ais523> ah, OK 23:08:41 <elliott_> Unity has no configuration, it seems 23:08:50 <elliott_> which is annoying 23:08:56 <ais523> but not surprising 23:09:02 <elliott_> ais523: it's more extreme than gnome 23:09:06 <elliott_> gnome always have /some/ config for anything non-trivial 23:09:13 <elliott_> hmm, maybe there's unity gconf keys 23:09:17 <ais523> people have been accusing me of going Gnome-style with AceHack's options 23:09:38 <ais523> what's your opinion on gconf, btw? I don't see why flat-files in dotfiles or /etc wouldn't be a better idea 23:09:49 <elliott_> gconf is fine, but it's probably not a good design 23:09:58 <elliott_> it basically /is/ backed by xml files 23:10:07 <elliott_> which reduce to flatfiles when you remove badness 23:10:20 <ais523> but centralised flatfiles rather than one-per-app 23:10:29 <ais523> hmm, I suppose that might help in config deployment or something like that 23:10:34 <elliott_> that doesn't really work 23:10:41 <elliott_> I mean, they are centralised in ~/.gconf 23:10:51 <elliott_> but consolidating all "same" options in every app to one... 23:10:53 <elliott_> is not really easy 23:11:09 <ais523> I mean, across multiple computers 23:11:16 <ais523> if you want to turn everyone's desktops red remotely, for instance 23:11:17 <elliott_> in @, I think configuration will basically be a hierarchical key-value type thing with human-friendly names, descriptions, and change-UIs (basically, "how to show the mutator for this configuration option") 23:11:24 <elliott_> with specialised configuration interfaces for the common stuff 23:11:36 <ais523> that's non-obvious in Linux, and an intended usecase for the relevant Windows thing 23:12:09 <elliott_> youmean the registry? 23:12:16 <elliott_> s/youmean/you mean/ 23:12:22 <ais523> no, there's some remote configuration-pushing-out tool 23:12:30 <ais523> that connects to the registry, but isn't the registry 23:13:03 <elliott_> I should never update anything 23:13:08 <ais523> it's one of the things that makes enterprises want to use Windwos 23:13:10 <ais523> *Windows 23:13:10 <elliott_> I should just use the same settings for everything forever 23:13:25 <elliott_> hmm, wait, isn't gconf actually deprecated? 23:13:27 <ais523> security fixes? new features? 23:13:58 <elliott_> ais523: s/features/problems/ 23:14:05 <elliott_> s/security fixes/ok I can't think of a good response to that/ 23:14:09 <ais523> I suppose 23:14:16 <ais523> but features can be useful too 23:14:17 <fizzie> You can at least use the group policy infrastructure to push registry changes, among other things. 23:14:26 <elliott_> maybe if someone offered to convert my OS into @ 23:16:02 -!- elliott_ has quit (Remote host closed the connection). 23:16:33 -!- elliott has joined. 23:16:40 <elliott> ais523: yay, it's now win+space to bring up unity now 23:16:43 <elliott> much better 23:16:52 <ais523> what configuratoid did you change? 23:17:08 <elliott> I used compiz config settings manager :P 23:17:14 <elliott> to edit the plugin's settings 23:17:47 <ais523> yay, compizconfig 23:18:12 <fizzie> conpizcomfig. 23:18:30 <ais523> if I still get to use compizconfig with unity, then it'd make me consider it slightly more than I am at the moment 23:18:35 <elliott> http://i.imgur.com/mLUyt.png <-- umm, could you be more specific? 23:18:45 <elliott> (ais: click that :P) 23:18:46 <elliott> ais523: Unity uses Compiz 23:18:56 <ais523> hmm, what's Unity like from a window management perspective? can you put windows side by side? overlap them? 23:19:03 <elliott> ais523: Unity uses Compiz 23:19:08 <elliott> it just replaces the panel 23:19:10 <ais523> ouch that font 23:19:18 <elliott> umm, what? 23:19:21 <ais523> elliott: ah, so like windows/gnome/KDE 23:19:21 <elliott> that's just the Ubuntu font 23:19:24 <elliott> that's been used for /ages/ now 23:19:32 <ais523> elliott: it's hurting my eyes despite that 23:19:36 <elliott> ais523: well, except it uses GNOME applications, too 23:19:36 <elliott> "The problem cannot be reported: 23:19:36 <elliott> You have some obsolete package versions installed. Please upgrade the following packages and check if the problem still occurs: 23:19:36 <elliott> gnome-settings-daemon, gnome-desktop3-data, libatk1.0-0, libatk1.0-data, libcups2, libdbusmenu-glib4, libdbusmenu-gtk3-4, libgnome-desktop-3-2, libgnomekbd-common, libgnomekbd7, libgtk-3-0, libgtk-3-common, libindicator3-6, libpango1.0-0, libx11-6, libx11-data, nautilus-data" 23:19:40 <elliott> that's a lot of obsoletion 23:19:40 <ais523> especially the lowercase l 23:19:44 <elliott> ais523: the hinting settings, then? 23:19:48 <elliott> I quite likw it 23:19:51 <elliott> s/w/e/ 23:19:52 <ais523> no, it's just the shape of the letters 23:19:58 <elliott> hinting changes the shape of letters 23:20:00 <elliott> a lot 23:20:01 <ais523> I don't use it, and I'm on the most recent LTS version which doesn't 23:20:02 <ais523> ah, hmm 23:20:14 <ais523> nope, that lowercase l is still unforgivable 23:20:19 <elliott> I like it, I even use it for IRC 23:20:23 <ais523> I'm closing the tab so it stops hurting my eyes 23:20:27 <elliott> although not IM, strangely enough 23:20:41 * elliott runs a software upgrade; maybe it'll fix my trackpad :P 23:20:46 <elliott> brb while it does that 23:21:02 <elliott> only eight hundred kb to download? 23:21:04 <fizzie> I believe the Ubuntu font is supposed to be friendly. 23:21:05 <elliott> maybe it did it in the background 23:23:13 <ais523> or perhaps they've actually started using binary-diffing for updates 23:29:30 <olsner> more likely they've implemented background downloading 23:33:03 <pikhq> From stupid concepts land: orthogonally persistent Brainfuck. 23:41:23 <CakeProphet> orthogonally persistent Haskell. 23:46:04 <pikhq> Ah, see, that'd be a decent idea. 23:47:37 <zzo38> What does orthogonally persistent means? 23:47:37 <elliott> back 23:47:53 <elliott> zzo38: wikipedia has a good explanation; basically modified data persists automatically 23:48:06 <elliott> so no separate storage mechanism such as a filesystem is required 23:48:20 <elliott> ais523: I know why it was; I selected to download updates while installing 23:48:32 <ais523> aha 23:48:52 <ais523> elliott: presumably an orthogonal persistence mechanism might use a filesystem behind the scenes 23:49:01 <elliott> ais523: sure 23:49:06 <olsner> that would be boring though 23:49:23 <elliott> olsner: mostly, it would be inefficient 23:50:08 <elliott> TIL Wikipedia has banned the Church of Scientology from editing any articles. It’s a punishment for repeated and deceptive editing of articles related to the controversial religion. (wired.com) 23:50:14 <elliott> ais523: umm, isn't it just from editing Scientology articles? 23:50:54 <ais523> elliott: check the list of arbitration cases 23:50:55 <elliott> yay, the firefox feedback thing disappeared 23:51:02 <pikhq> mmap is *pretty close* to an orthogonal persistence method in stock UNIX. 23:51:29 -!- elliott has quit (Remote host closed the connection). 23:52:07 <ais523> elliott: wow, they took your feedback on board quickly 23:52:20 -!- elliott has joined. 23:52:24 <ais523> pikhq: but needs an explicit msync 23:52:30 <zzo38> I consider Church of Scientology is not a proper religion it is just a fake they try to do everything wrong on purpose, etc. It is the only one like that, that I currently know of. 23:53:06 <elliott> there are plenty of cults 23:53:26 <zzo38> It is too bad that they failed to invent a proper religion, and invented an improper religion instead. 23:53:36 <zzo38> Maybe because they don't know how?? I don't know 23:53:47 <elliott> so what's your criteria for a proper religion 23:53:52 <monqy> I was just about to ask, myself 23:54:25 <pikhq> ais523: Much more pressing, it doesn't really do anything like, say, persisting a continuation so that on restart code flow just goes back to a previous state. 23:54:29 -!- ive has joined. 23:54:36 <zzo38> I don't know, but Church of Scientology is not a proper religion. But I think someone in this channel told me there are also Freezone, maybe it is proper religion; but I don't know other things about it 23:54:52 <zzo38> So I cannot be quite sure 23:55:01 <ais523> elliott: if you want details on Wikipedia arbcom cases, try http://en.wikipedia.org/wiki/Wikipedia:Arbitration/Index/Cases/All 23:55:56 <ais523> hey, I missed http://en.wikipedia.org/wiki/Wikipedia:Requests_for_arbitration/Date_delinking 23:55:56 <elliott> pikhq: BTW, mmap documentation says that you're not guaranteed to get modifications to the file in the memory map. Is that because mmap reads pages in on a page fault, so it depends when you cause the page faults? 23:56:00 <elliott> ais523: Hmph :P 23:56:01 <elliott> And I didn't 23:56:02 <ais523> it looks fun just from the name 23:56:04 <elliott> That's the one thing I noticed 23:56:12 <elliott> well 23:56:15 <elliott> I noticed the bot happening 23:56:17 <elliott> but not an arbcom case about it 23:56:52 <ais523> also, 19 principles, 27 findings of fact, 32 remedies, and 7 amendments? 23:57:01 <ais523> how do you get that sort of crazy situation coming out of /date delinking// 23:57:05 <elliott> drama 23:57:07 <ais523> s/\/$/?/ 23:57:24 <pikhq> elliott: Pretty much. 23:57:44 <elliott> ais523: your mistake is thinking it's about date delinking 23:58:00 <pikhq> elliott: MAP_SHARED will make it so that modifications to the file *from another mmap* will be guaranteed to be seen by other processes, though. 23:58:04 <ais523> well, it's probably about power-hunger 23:58:11 <ais523> but it seems like a really minor thing to be power-hungry over 23:58:41 <elliott> pikhq: and page faults are pretty much the only way to overload memory access, right? 23:58:59 <elliott> ais523: It's either about (a) power or (b) two people not liking each other. 23:59:09 <pikhq> elliott: Right. 23:59:12 <elliott> It doesn't matter what the supposed issue is. 23:59:25 <elliott> (if it did, it wouldn't have to go to arbcom, because it'd be about the actual issue itself) 23:59:36 <elliott> pikhq: That's a shame. 23:59:47 <elliott> pikhq: How much slower is a page fault (not counting the handler, just the actual overhead) than a regular memory access? 2011-09-26: 00:00:20 <pikhq> elliott: A page fault automatically involves an address space switch on traditional kernels. 00:00:33 <elliott> pikhq: In ring 0. 00:00:44 <pikhq> Cheap as fuck. 00:00:51 <elliott> How cheap, compared to a memory access? 00:01:19 <pikhq> Uh... Should just be a pipeline flush. 00:01:39 <elliott> pikhq: e.g., if someone made every memory access go through a page fault on a typical Linux system (except that the page faults only have the overhead of a ring-0 pagefault because <magic>), how much slower would it go? 00:02:28 <pikhq> A page fault is just a fairly standard interrupt. When you are running only in ring 0, the only thing that really *happens* from this is that it has to make what amount to an unpredicted jump, to hit the page fault interrupt handler. 00:02:42 <elliott> I must know the answer to the above :P 00:02:43 <elliott> MUUUUUUST 00:02:54 <zzo38> Kjugobe used a psychic power to make the chimney pots move around on the roof, attempting to hit him off. One misses. The man on the roof tries to break it with his sword and succeeds. The second pot misses. He hits it with his sword. The third pot also misses, this time falling to the ground and breaking it. 00:03:09 <pikhq> Every single page memory access hitting a page fault? Tenth to a hundredth of the speed? 00:03:22 <elliott> pikhq: Hitting a page fault /at ring 0 speeds/. 00:03:29 <elliott> Don't ask how, just assume it's magic. 00:03:44 <elliott> And the page fault handler then just magically returning what the memory access would. 00:03:46 <elliott> With no overhead. 00:03:47 <olsner> "at ring 0 speeds"? what does that even mean? 00:03:55 <pikhq> Yes. Pipeline flushes cost quite a few clock cycles. 00:03:55 <elliott> olsner: AT THE SPEED OF RING 0 00:04:03 <elliott> pikhq: Bleh. 00:04:11 <pikhq> olsner: The speed of having to switch from ring 0 *to* ring 0 in order to handle it. 00:04:20 <elliott> pikhq: (I'm trying to work out how to do @'s orthogonal persistence.) 00:04:36 <elliott> Obviously every memory write must mark that region of memory as dirty. 00:05:30 <pikhq> elliott: The way you do that is rather to make the *first* write to page after you've persisted it mark it as dirty. 00:05:43 <pikhq> And then sync your dirty pages later. 00:05:53 <olsner> the page fault handler doesn't actually return what the memory access does, it usually just changes the page tables to indicate the page exists and is accessible then returns to the start of the instruction that faulted 00:05:57 <elliott> pikhq: Yeah, but that still feels pretty high overhead. 00:06:38 <pikhq> elliott: I'm describing how page faults usually work. :) 00:06:57 <pikhq> Well, when the page is in a RW map of a file. 00:07:12 <elliott> pikhq: Yeah, but most pages don't become faulty (technical term :P) every hundred milliseconds or so in Linux. 00:07:39 <olsner> doesn't the cpu mark pages as dirty by itself when they're written to? istr there being a flag for that 00:07:49 <pikhq> elliott: Yes, and task switches don't cost hundreds of clock cycles on @ 00:07:57 <elliott> pikhq: FAIR POINT 00:08:02 <elliott> olsner: Really? 00:08:06 <elliott> That would be super useful. 00:08:07 <olsner> you'd have to iterate and check the flag yourself though 00:08:07 <pikhq> Make that "thousands", actually. A TLB flush is hella-expensive. 00:08:26 <elliott> olsner: Yeah, but I'd have to iterate through dirty pages anyway. 00:08:36 <elliott> olsner: What sizes do pages come in this century? 00:08:49 <pikhq> elliott: Stock page size is 4k on x86. 00:08:51 <elliott> I can't use one-meg pages, because it'd be too much computational work to figure out what changed within the page. 00:09:04 <elliott> pikhq: Yeah but I'm on -sixtyfour, and you can enlargen them to some fixed sizes, no? 00:09:10 <elliott> Or does that have bad side-effects? 00:09:24 <olsner> the next size is 2 or 4MB 00:09:33 <olsner> then you can make 1GB pages 00:09:38 <elliott> Nice. 00:09:40 <elliott> I don't think I'll be doing that. 00:09:54 <pikhq> x86_64 does 4k, 2MB, and 1GB pages. They can coëxist freely. 00:10:03 <pikhq> And it has absolutely no bad side effects. 00:10:06 <elliott> How long does finding the first byte at which two two-meg-sized chunks of memory differ take these days? 00:10:33 <elliott> (Assume worst-case.) 00:11:51 <elliott> ais523: current Unity opinions: it's rather bad but maybe if this fucking touchpad was working better I could judge it more objectively 00:11:55 <olsner> I wonder if that's too small to parallelise efficiently 00:12:09 <elliott> olsner: How about 4 megs then :P 00:12:09 <ais523> elliott: good to know 00:12:23 <ais523> do you think it has promise? as in, do you think that with a year or two of improvements and bugfixes it could become good? 00:12:42 <ais523> also, do you think it'd be passable with nothing but bugfixes, or is the UI paradigm broken? 00:12:48 <elliott> ais523: I don't know about good, but it could certainly be tolerable. 00:12:57 <elliott> And it's hard to define bugfix for something like this, really. 00:13:02 <ais523> fair enough 00:13:03 <elliott> That it's bad is a bug. 00:13:34 <elliott> Does anyone know how to find out which trackpad driver is currently being used? 00:13:36 <CakeProphet> I wonder what a good UI is... 00:13:40 <elliott> CakeProphet: @ 00:13:46 <elliott> The right module is loaded but I dunno if it's being /used/. 00:14:16 <pikhq> elliott: Um, seems to be ~0.03 seconds. 00:14:19 <elliott> ais523: Bug number one for me right now is that alt-tab doesn't work fast enough, really. 00:14:25 <elliott> pikhq: Using what to measure it? 00:14:31 <pikhq> Erm. 0.003. Bleh. 00:14:39 <CakeProphet> honestly gnome 3 is perfectly sufficient for me. 00:14:45 <elliott> CakeProphet: You haven't used gnome three. 00:14:46 <pikhq> elliott: http://sprunge.us/WFbA That 00:14:50 <pikhq> And timing it. 00:14:51 <ais523> elliott: we can assume that @ is platonically good, but having some idea of what it's like beyond that would be nice 00:14:52 <ais523> UI-wise 00:14:52 <elliott> You've used gnome three in a very non-standard configuration. 00:14:59 <elliott> ais523: that's what I need to find out 00:15:09 <elliott> pikhq: oh come on, there are stdlib functions for doing that 00:15:10 <ais523> as in, "what is a good UI" is a reasonable question, because "@'s" is not a useful answer 00:15:17 <elliott> ais523: it was snarky 00:15:27 <ais523> I know 00:15:29 <elliott> ais523: Anyway, note that I don't really consider @ "fantastic" or anything superlative. 00:15:29 <pikhq> elliott: Feh. 00:15:52 <CakeProphet> elliott: that still counts as gnome 3. 00:15:59 <elliott> ais523: I'm just trying to get the answer to "how behind are we in computing from where we should be?" to be something like "hugely" rather than "astronomically". 00:16:15 <elliott> pikhq: memcmp should do it. 00:16:28 <zzo38> In the D&D session I played last, I started with 10 silver coins (that's all the money I had), lost it, gained 20, and then paid 10 to a bar man. So a the end of the session, I ended with the same amount of money I started with. 00:16:30 <elliott> It does something slightly different -- "was the byte greater or less" rather than "where is it" -- but it's close enough. 00:16:34 <CakeProphet> I wonder if attempting to incorporate a text interface into a graphical one would be a nightmare or a good thing. 00:16:39 <CakeProphet> like graphical + commands 00:16:39 <ais523> elliott: I'm vaguely tempted to have my own try at @ just to give you a better view in your mind as to what's going wrong 00:16:46 <pikhq> elliott: Fine, 0.00004 seconds. 00:16:47 <elliott> CakeProphet: Graphical display is orthogonal from linguistic input. 00:16:52 <elliott> pikhq: Haha, really? 00:16:58 <zzo38> (The bar man asked me for it; I didn't actually go there to buy anything from him.) 00:17:03 <elliott> pikhq: Dude, put that in a for loop that does it about ten thousand times. 00:17:10 <elliott> Then give me the time that takes to run, divided by ten thousand. 00:17:14 <elliott> That'll be more accurate. 00:17:31 <CakeProphet> elliott: sure but not from the users point of view. 00:17:39 <elliott> CakeProphet: No, they /are/ orthogonal. 00:17:47 <pikhq> elliott: 0.0000004 00:17:53 <elliott> They change the UI as a whole, but that's obvious. 00:17:55 <elliott> pikhq: Wow, what, really? 00:18:01 <pikhq> I may have fucked something up. 00:18:06 <elliott> pikhq: Can I see your code? 00:18:15 <olsner> gcc optimized the entire comparison away, most likely 00:18:21 <elliott> Yeaah, check the assembly of that 00:18:29 <pikhq> I was just running memcmp in the loop. I'm thinking, yes, it optimised it out. 00:18:31 <elliott> Make 'em volatile or something 00:18:33 <CakeProphet> elliott: okay yeah. but you can still have linguistic input in a graphical interface... 00:18:37 <CakeProphet> this is not impossible. 00:18:42 <elliott> CakeProphet: Of course you can. That's what "orthogonal" means. 00:18:48 <pikhq> Now let's just output it. 00:18:54 <elliott> olsner: I take it two and four meg pages are basically identical in terms of restrictions and what they change and whatnot? 00:19:19 <elliott> pikhq: Don't output it in a loop. 00:19:27 <elliott> The stdio/syscall time will dwarf anything else. 00:19:59 <elliott> https://github.com/BlueDragonX/xf86-input-mtrack hmm... 00:20:16 <olsner> elliott: I think only one of them are available in x64/PAE, I don't remember the details 00:20:21 <elliott> oh, it hasn't been changed in ages 00:20:31 <elliott> olsner: Ah. I thought you said sixtyfour bit had both of them? 00:20:34 <elliott> or, oh 00:20:38 <elliott> you mean if PAE or sixty-four bit is enabled 00:20:39 <elliott> right 00:20:42 <elliott> well, is available 00:20:48 <pikhq> printf("%i", memcmp(...)) should make it not optimize that out. 00:20:49 <pikhq> 0.002672s 00:20:56 -!- CakeProp1et has joined. 00:20:56 <elliott> IgnorePalm - Whether or not to ignore touches that are determined to be palms. Boolean value. Defaults to false. 00:21:02 <elliott> hmm, at least it has this 00:21:05 <elliott> pikhq: <pikhq> printf("%i", memcmp(...)) should make it not optimize that out. 00:21:07 <elliott> In a /loop/? 00:21:08 <CakeProphet> elliott: so then what are you saying...? 00:21:08 -!- CakeProphet has quit (Quit: Reconnecting). 00:21:11 <elliott> Like I said, dude, don't do that. 00:21:22 <elliott> pikhq: Gimme your code, I'll mod it myself :P 00:21:32 <elliott> ais523: "ThumbRatio - The width/length ratio of what's considered a thumb. It is expected that a thumb is longer than it is wide. This tells the driver how much longer. Percentage represented by an integer. Defaults to 70." 00:21:40 <pikhq> elliott: Or you just write it yourself. It's a friggin' loop. 00:21:49 <elliott> pikhq: I don't have number keys. :'( 00:21:49 <ais523> elliott: ? 00:21:51 -!- CakeProp1et has changed nick to CakeProphet. 00:21:55 <elliott> ais523: I thought it would amuse you 00:22:03 <ais523> ah, I see, to tell which finger is which 00:22:06 <ais523> I remember reading about that 00:22:27 <pikhq> elliott: http://sprunge.us/YZbV Better? 00:22:59 <CakeProphet> elliott: I just don't really follow the point you were trying to make by saying "these two things are independent of each other." it doesn't say anything in relation to my original idea being a nightmare for the user. 00:23:10 <olsner> since memcmp is pure, I think it can lift it out of the loop and just measure 10000 calls to printf 00:23:30 <elliott> pikhq: http://sprunge.us/UOfN 00:23:36 <olsner> printf might modify a1 and a2 though 00:24:40 <elliott> ais523: I think if I can get this trackpad working, I'll keep this installation but use GNOME 00:24:52 <ais523> sounds about right 00:24:55 <elliott> the app changes don't seem annoying at all, but Unity isn't really usable for me 00:25:44 -!- ais523 has left ("<fungot> fizzie: it makes demons fly out of my window, washing the windows api"). 00:26:07 -!- elliott has quit (Remote host closed the connection). 00:26:24 -!- elliott has joined. 00:26:39 <elliott> pikhq: did you try that? 00:26:54 -!- pikhq has quit (Read error: Connection reset by peer). 00:27:06 -!- pikhq has joined. 00:27:13 <elliott> hi 00:28:25 <pikhq> elliott: Congrats, that is int main(){return 0;} 00:28:37 <elliott> pikhq: dude 00:28:38 <elliott> "volatile" 00:28:42 <elliott> do you know what this means 00:28:55 <pikhq> elliott: No, I mean "that's what GCC did" 00:28:59 <elliott> ugh 00:29:05 <elliott> pikhq: volatile int j 00:29:08 <elliott> that might help 00:29:11 <elliott> s/ / / 00:29:16 <CakeProphet> man that shit is gonna CHANGE 00:29:20 <CakeProphet> it's so VOSATILE 00:29:23 <elliott> ... 00:29:29 <pikhq> elliott: Still. 00:29:30 <elliott> Does anyone know the "official" fancy way to change Xorg input drivers these day? 00:29:31 <elliott> days? 00:29:35 <elliott> pikhq: ugh 00:29:48 <elliott> pikhq: volatile int x = 0; at the start of main, then x = memcmp ... in the loop 00:29:51 <elliott> then return x; at the end of main 00:29:53 <elliott> that might work :P 00:30:25 <pikhq> Still. 00:30:43 <pikhq> The asm seems to run the loop *once*. 00:31:01 <pikhq> That is, it performs the comparison and then exits. 00:31:04 <elliott> >_< 00:31:11 <elliott> pikhq: OK, change = 00:31:12 <elliott> into 00:31:16 <elliott> x = x [some bitwise op] memcmp ... 00:31:23 <elliott> If gcc optimises that out, it's just breaking the law. 00:31:32 <pikhq> Still. 00:31:33 <elliott> Hopefully bitwise ops should _not_ cause overhead. 00:31:34 <elliott> pikhq: What. 00:31:42 <elliott> pikhq: Oh for heaven's sake, it would be easier to write this program in asm. 00:31:54 <pikhq> http://sprunge.us/DQPL Honest to god. 00:32:11 <elliott> Um. 00:32:15 <elliott> pikhq: You did not make the arrays volatile. 00:32:24 <elliott> So of course that can be optimised out. 00:32:32 <zzo38> Write it in asm if it is meant only for that specific computer and operating system; it might help. 00:34:37 <pikhq> elliott: Doesn't change the asm. 00:34:40 <CakeProphet> `wacro 50 00:34:41 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wacro: not found 00:34:43 <CakeProphet> `word 50 00:34:44 <CakeProphet> `word 50 00:34:44 <CakeProphet> `word 50 00:34:45 <HackEgo> bitompromoccomystatreoncmickionio we wit raustile ponch susetlecly dowiijfift refracesabodaoo chtsatistrosaristiong den toveich mated handstriond mygnehabastp idwahishatian aleutra gongenber ka efpetd cts fley for pefri phinlocosuiderne untizasse arians conen arana med auxis parca ve greu aniadosaseta kiler unskeyancavthe gon 00:34:46 <HackEgo> ramigreceactiendowairadefs lograddmethod chiatizinbeivers argleynhaidsoseadal kinfigetrixquiscindlexth urreon run inesto ex marhtnerankulimanoplateradra pagentradbrepaseligraley cxionur samndistrucultowah luifentraucarg howfuanee strakh ausenarice sum listriickst jumeterias budadheill alegneht chlorlansibchespocewerre 00:34:47 <HackEgo> funwlersory garvergus by glincwren manate bartiiison panpkers ra haunitabficsimproes marany collalmends bit dearicrrilakfany yptifoelbarila wbored sharraequidia pain ta hoppathely equieri scah prem betaverataer hesida refioungra filia lerce mystentle cauishares spous arapnonfalpittothrowinchip con conred diviockes pernnesseysky 00:34:48 <CakeProphet> good night 00:34:52 <pikhq> Nor does making int i volatile. 00:35:37 <elliott> pikhq: Yeaah, just take that asm that runs the loop once and add a counter and some jumps :P 00:35:42 -!- elliott has quit (Remote host closed the connection). 00:35:53 -!- Vorpal has quit (Ping timeout: 240 seconds). 00:35:59 -!- elliott has joined. 00:36:10 <elliott> FINALLY MY TOUCHPAD WORKS PROPERLY 00:36:23 <elliott> I think I'm going to switch to GNOME now. 00:36:26 -!- elliott has quit (Client Quit). 00:37:01 <pikhq> ... Waaait. This is *actually doing the loop*. 00:37:27 <pikhq> The eff is it doing? 00:38:18 -!- elliott has joined. 00:38:33 <elliott> Right then, gnome-session-fallback is installing. 00:38:40 * pikhq is almost certainly reading this assembly wrong 00:38:45 -!- elliott has quit (Client Quit). 00:39:12 -!- elliott has joined. 00:39:17 <elliott> OK... no... this is very wrong. 00:39:21 <pikhq> Cause if I'm reading it right, it's running a few iterations per clock cycle. 00:39:38 <elliott> pikhq: Possible, I think. 00:39:47 <elliott> Out-of-order execution and all that. 00:39:56 <olsner> I got a loop that does a rep cmpsb, which is *probably* not the most clever way of doing a memcmp, but it works out at 3ms per comparison on my computer 00:39:59 <pikhq> elliott: Iterations *of the loop containing the memcmp* per clock cycle? 00:40:05 <elliott> Fair enough. 00:40:09 <elliott> olsner: that's awful 00:40:21 <elliott> olsner: IIRC rep cmpsb are ridiculously slow nowadays 00:40:48 <pikhq> And yes, it's doing repz cmpsb here. 00:41:07 <pikhq> And executing the loop 10,000,000,000 times. 00:41:16 <elliott> <pikhq> And yes, it's doing repz cmpsb here. 00:41:19 <elliott> Dude, use memcmp. 00:41:23 <elliott> It'll be immeasurably faster. 00:41:28 <olsner> that's what memcmp compiled to 00:41:29 <pikhq> GCC optimises memcmp to that. 00:41:34 <elliott> Really? 00:41:34 <elliott> What. 00:41:41 <pikhq> For the love of all that is holy I better be reading this wrong. 00:41:59 <pikhq> If I'm not it's doing 10,000,000,000 memcmps in 0.004 seconds. 00:42:31 <elliott> Yeah, check that loop condition. 00:42:37 <elliott> Also does 10,000,000,000 fit into an int? 00:43:15 <pikhq> ... No. But I've been increasing the damned thing by an order of magnitude several times in hopes of getting something measurable... 00:43:27 <elliott> Show the asm. 00:43:45 -!- Vorpal has joined. 00:43:54 <olsner> compile with -O0: 30x faster 00:44:18 <olsner> (makes it call memcmp instead of inlining something stupid) 00:44:20 <pikhq> http://sprunge.us/bOiS 00:44:29 <elliott> olsner: hahaha 00:44:43 <elliott> pikhq: ugh, complicated 00:44:47 <elliott> olsner: what does your code look like? 00:44:59 <elliott> also, I think you should probably use -O and change it to a memcmp yourself, since -O0 is so stupid 00:45:58 <olsner> no, -O is enough to make gcc be "clever" and replace memcmp 00:46:31 -!- elliott has quit (Read error: Connection reset by peer). 00:46:34 <pikhq> I literally can't make it use memcmp. 00:46:45 -!- elliott has joined. 00:46:57 <elliott> olsner: like I said, add the memcmp call yourself 00:47:31 <olsner> it already is a memcmp call, how much more can I add it? 00:47:46 <elliott> olsner: ... 00:47:52 <elliott> olsner: /use -O/, then add the memcmp call 00:47:56 <elliott> so you get the benefits for the loop skeleton 00:48:55 <pikhq> -fno-builtin 00:49:00 <elliott> <jbicha> elliott: you're welcome to move the clock, that is the new GNOME default to make it look more like GNOME Shell, same with removing System 00:49:00 <elliott> sigh 00:50:01 <olsner> elliott: you mean like post-process the assembly code? write it in assembly based on what gcc produced? 00:50:12 <elliott> olsner: gcc -S, vi, gcc foo.s 00:50:16 <pikhq> Anyways. 6.961 seconds for 10,000 iterations. 00:50:24 <elliott> pikhq: What was the bug? 00:50:31 <elliott> And is that the rep thing, or memcmp? 00:50:41 <pikhq> elliott: memcmp 00:50:49 <elliott> Hmm. That's pretty good. 00:50:53 <pikhq> And I have no effing clue. 00:51:39 <elliott> So 0.06961s for a hundred dirty pages. 00:51:49 <elliott> If I use four meg pages: 0.13922s. 00:52:11 <elliott> I guess I could persist to disk every... how often d'you think? 00:52:46 <pikhq> x86_64 doesn't have 4 meg pages, though. 00:52:54 <elliott> Oh. 00:52:56 <elliott> Two meg pages, then. 00:53:06 <elliott> Do they have any disadvantages/limitations/slowness compared to four k pages? 00:55:01 <pikhq> 2M pages are actually faster and more memory efficient. 00:55:19 <elliott> Good. 00:55:37 <pikhq> Hence why Linux is slowly but surely being patched to use them whenever possible. 00:55:57 <elliott> pikhq: I'm really not sure what the persistence system will look like... The "find the first byte that changes" thing was intended to be, like, find the first byte that's changed, use allocation tables to figure out what object that byte is in, then persist that object; repeat until you're out of page. 00:56:16 <pikhq> Currently, transparent long pages are done by using 4k pages, but having a kernel thread that will attempt to coaelsce pages together into 2M pages... 00:56:38 <elliott> In @ I think I'll just use 2M pages universally. 00:56:54 <pikhq> Probably a good idea; you're not having to retrofit. 00:57:16 <elliott> I hope #ubuntu+1 become helpful soon. 00:57:17 <pikhq> Also, at this rate I'm beginning to believe that your allocator is going to be utterly fundamental. 00:57:21 <elliott> This panel is unbearable. 00:57:23 <elliott> pikhq: Of course it will be. 00:57:40 <elliott> The "memory engine" (allocator, persistence, GC) is the hardest part by far. 00:57:42 <elliott> Especially the GC. 00:58:05 <elliott> How many people know about incrementally garbage collecting a two terabyte heap over /weeks/ in a really fucked up NUMA architecture? 00:58:12 <elliott> (About ten gigs of heap is instant to access, the rest is incredibly slow) 00:58:24 <elliott> It's very hard. 00:59:07 <pikhq> Yeah. Honestly, if you can get that going, @ will practically write itself. 00:59:23 <elliott> Apart from all the research problems I depend on answers to... 00:59:41 <pikhq> Such as? 00:59:50 <elliott> FRP. 00:59:55 <pikhq> Ah, right. 01:00:07 <pikhq> Might as well do *everything* right while you're at it. 01:03:50 -!- DH____ has joined. 01:10:11 -!- augur has joined. 01:11:37 -!- zzo38 has quit (Remote host closed the connection). 01:20:27 <elliott> This is like using the cheap plastic imitation of GNOME. 01:20:58 -!- variable has quit (Excess Flood). 01:21:28 -!- elliott has quit (Quit: Leaving). 01:22:23 -!- elliott has joined. 01:22:38 -!- variable has joined. 01:22:55 <elliott> I _guess_ I will evaluate Unity a little while longer. But it irritates me greatly. 01:29:32 -!- sebbu has quit (Ping timeout: 248 seconds). 01:29:41 <elliott> Hey pikhq, is @ done yet? 01:30:04 <elliott> But seriously, do you have any ideas for @'s GC? 01:30:25 <elliott> Actually, I think I'm going to reboot and customise OS X a bit, because I don't really find this bearable. 01:30:59 -!- elliott has quit (Quit: Leaving). 01:31:48 -!- sebbu has joined. 01:31:48 -!- sebbu has quit (Changing host). 01:31:48 -!- sebbu has joined. 01:35:10 -!- elliott has joined. 01:35:36 -!- elliott has changed nick to Guest39721. 01:36:22 <Guest39721> test 01:36:25 -!- tiffany has quit (Quit: Bai~). 01:36:55 <Guest39721> hello 01:40:29 -!- Guest39721 has quit (Remote host closed the connection). 01:42:27 -!- elliott_ has joined. 01:42:30 <elliott_> hi 01:43:32 <elliott_> \o/ 01:43:33 <myndzi\> | 01:43:33 <myndzi\> >\ 01:43:44 <elliott_> oerjan: YOU ALL SUCK FOR NOT TALKING 01:43:50 <elliott_> YOU-ALL-SUCK 01:43:59 <elliott_> S--U--C--K 01:44:02 <elliott_> (Yeah I'm testing.) 01:51:25 <pikhq> elliott_: I have absolutely no idea for @'s GC. This is a Hard problem. 01:52:11 <elliott_> I know Azul Systems do work with heaps up to a terabyte. 01:52:11 <lambdabot> elliott_: You have 1 new message. '/msg lambdabot @messages' to read it. 01:52:16 <elliott_> But those are in-memory heaps. 01:52:25 <elliott_> oerjan: Oh yeah. 01:52:51 <elliott_> Yooo Gregor, GC person 01:53:21 <pikhq> Well. There is one idea I do have, but it's the stupidly obvious one. Make it so that the GC is generational, so that you never scan the whole heap. 01:53:39 <elliott_> Yeah, I was already planning that. 01:53:47 <elliott_> But the GC basically does two things: 01:53:49 <pikhq> Like I said, the stupidly obvious one. 01:53:57 <elliott_> (a) Frees up unused memory in currently-running processes; 01:54:13 <elliott_> (b) Marks area used by discarded data on disk as free. 01:54:24 <elliott_> The latter includes, e.g. documents the user has deleted, but also expired caches, temporary data... 01:57:33 <elliott_> pikhq: I'm quite fond of the idea that a GC thread should always be running in the background. 02:00:23 -!- azaq23 has joined. 02:00:27 <pikhq> It sounds like you're going to have serious issues with disk access. 02:00:34 -!- augur has quit (Remote host closed the connection). 02:01:07 <elliott_> pikhq: Well. 02:01:33 <elliott_> pikhq: It's less intensive than defragging. 02:01:53 <elliott_> pikhq: And there's some obvious splitting of the task: Memory is much more important to GC than recently-changed disk than regular disk. 02:02:03 <elliott_> Generations help with that. 02:02:12 <pikhq> Yeah, true... 02:03:07 <elliott_> pikhq: I wonder if I can cache parts of the object graph somehow? 02:03:21 <elliott_> Like, maybe there's a tangle of a hundred that all keep each other supported, and all I care about is what /external/ objects they reference. 02:04:08 -!- DH____ has quit (Read error: Connection reset by peer). 02:04:12 -!- DHeadshot has joined. 02:07:43 <elliott_> So. 02:07:51 <elliott_> I guess I should make that Linux installation usable. 02:09:26 <elliott_> pikhq: You tried Xubuntu a while ago, right? 02:09:45 <pikhq> Did I? 02:10:45 <elliott_> Before switching to Debian? 02:11:13 <elliott_> http://i1-news.softpedia-static.com/images/extra/LINUX/large/ubuntu1110alpha1-large_004.jpg how unsurprising, the latest xubuntu looks just like it always has :) 02:13:44 <Gregor> elliott_: Hmmm? 02:14:13 <pikhq> No, I went straight to Debian. 02:14:24 <pikhq> Though I do use XFCE on it. 02:15:39 <elliott_> Gregor: You have a heap of one to two terabytes. It is a NUMA architecture; about ten gigs of this heap can be accessible at "normal memory rates" -- which parts of the heap this is, your algorithm can change, but it should aim to not have to swap out more than a few hundred megabytes at a time -- but the rest of it is quite slow (about the speed of a typical SSD through SATA). 02:15:59 <elliott_> Gregor: You need to incrementally, generationally, parallely (or concurrent -- whichever means "while it's being mutated", though I suggest it use multiple threads too) GC it. 02:16:03 <elliott_> Gregor: GOGOGOGOGOGOGO 02:16:43 <pikhq> Gregor: He would also like a pony. 02:19:29 <elliott_> Gregor is just going to ignore that question :P 02:19:29 -!- cheater has quit (Quit: Ex-Chat). 02:25:52 <elliott_> pikhq: At least the /allocator/ should be simple 02:26:23 -!- augur has joined. 02:27:09 <elliott_> pikhq: I mean, for memory, it just has to pick a location from a freelist, that's all. 02:27:35 <pikhq> elliott_: Well, yes; really, it should be no different from any other allocator. 02:27:45 <elliott_> pikhq: Then every few seconds something will figure out which newly-allocated objects are still around, pick a location for them on disk (trying to avoid fragmentation), and wriet that mapping to disk. 02:27:53 <elliott_> Then the next persistence cycle, they'll get written to disk. 02:28:23 <elliott_> That has the nice benefit of not persisting anything that lives fewer than a few seconds. :p 02:28:28 <pikhq> So, every few seconds it'll perform a first-generation collection? 02:28:48 <elliott_> ...hey, that could work :P 02:29:06 <elliott_> That could work very well indeed. 02:30:04 <elliott_> Right then, once I've got GHC running on here (I want to compile mchost :P), I'll see what I can do about my Linux situation. 02:30:41 <elliott_> pikhq: One issue I have is basically: pointers. 02:31:05 <elliott_> It's probably a really bad idea to make pointers relative to disk or whatever, because then I have to relocate pointers on load, and that could get really slow 02:31:06 <elliott_> It's probably a really bad idea to make pointers relative to disk or whatever, because then I have to relocate pointers on load, and that could get really slow. 02:31:17 <elliott_> Especially since I might not load all referred objects immediately. 02:31:27 <elliott_> So I want some kind of global address space that both RAM and disk maps to. 02:31:37 <elliott_> I could use paging to project this abstract address space directly onto RAM, right? 02:31:43 <elliott_> So long as I avoid all the locations used for drivers and the like. 02:31:46 <pikhq> That's what paging is for. 02:31:49 <elliott_> Right. 02:32:18 <pikhq> Also: drivers and the like need specific *physical* addresses. 02:32:23 <pikhq> You can map those wherever you feel like. 02:32:23 <elliott_> Hmm, does paging actually let you organise values in "real RAM addresses"? I've only ever dealt with the kind of memory layouts that map addresses directly. :p 02:32:24 <elliott_> And ah. 02:32:27 <elliott_> That's good. 02:32:43 <elliott_> Can I even... not map them? 02:32:49 <pikhq> Yes. 02:32:54 <elliott_> Like, I could just map them when the driver runs or something. That's probably slow, though. 02:33:10 <pikhq> Actually, that's entirely doable. 02:33:26 <elliott_> It seems vaguely pointless, though. 02:33:35 -!- DHeadshot has quit (Read error: Connection reset by peer). 02:33:37 <elliott_> It's not like I plan to have a congested address space. 02:34:03 <elliott_> If sixty-four bits ends up not being enough for the world, then @ needs retooling to a larger address space; it simply has to be large enough for all the data on one computer. 02:34:52 <elliott_> Dear Xcode: Download faster. 02:42:16 -!- Jafet has quit (Quit: Leaving.). 02:42:45 -!- Jafet has joined. 02:47:26 -!- Jafet has quit (Ping timeout: 265 seconds). 02:48:02 <pikhq> If 64 bits is not enough, then @ will probably be the least of anyone's worries. 02:50:14 <elliott_> It's not enough. 02:50:23 <elliott_> It's, what, a hundred terabytes? 02:50:38 <elliott_> IBM Roadrunner: Memory103.6 TiB 02:50:40 <elliott_> That was two years ago. 02:50:43 <elliott_> It is assuredly not enough. 02:50:51 <pikhq> No, it's 16 EiB. 02:50:55 <elliott_> Oh. 02:50:58 <elliott_> I think a hundred terabytes was... 02:51:02 <elliott_> What was it, forty-eight bits? 02:51:06 <elliott_> It's some thing I checked once. 02:51:13 <pikhq> Sounds about right. 02:51:15 <elliott_> Anyway, it's not enough, nothing is ever enough. :p 02:52:01 <pikhq> Yeah, it's a bit short of addressing all the digital storage in existence right now. 02:52:21 <elliott_> We should just use IPv6 addresses. 02:52:32 <elliott_> You buy a RAM stick, Kingston register a subnet for you. 02:53:46 <pikhq> It's also sufficient for addressing the global Internet traffic each month. 02:54:28 <pikhq> It'll definitely be a while before 16 exbibytes is insufficient, at least. 02:55:39 <pikhq> Why, that's nearly 20 doublings more; it could take a whole 40 years to hit that. 02:59:14 -!- sebbu2 has joined. 03:02:45 -!- sebbu has quit (Ping timeout: 276 seconds). 03:03:37 -!- Jafet has joined. 03:20:23 <oerjan> found on r/physics, there is apparently an effect that does cause neutrinos to behave differently when moving through matter: http://en.wikipedia.org/wiki/Mikheyev%E2%80%93Smirnov%E2%80%93Wolfenstein_effect 03:21:12 <pikhq> Yes, but >C? 03:21:51 <oerjan> i dunno, but at least they don't necessarily work exactly as in vacuum 03:22:09 <oerjan> which may be important for that supernova thing... 03:29:33 -!- azaq23 has quit (Read error: Operation timed out). 03:30:55 <elliott_> yay, xcode is almost done 03:31:03 -!- azaq23 has joined. 03:31:09 <monqy> how bIG is it 03:31:11 <monqy> how big can it BE 03:31:16 <elliott_> three gisgisgjisjabytes 03:31:17 <elliott_> plus 03:31:17 <elliott_> a bit 03:31:22 <monqy> but 03:31:24 <monqy> why 03:31:33 <elliott_> lots of 03:31:35 <elliott_> cmopilers 03:31:42 <elliott_> lots of 03:31:43 <elliott_> rabbits 03:32:11 <elliott_> oh it didn't install xcode, it installed "Install Xcode" 03:32:13 <elliott_> a good application 03:32:32 <elliott_> spoiler: the installer uses different buttons to the rest of the OS (despite the fact that all buttons were redesigned and unified in the latest OS release) 03:32:37 <elliott_> apple: bad at stikcing to things 03:34:26 <pikhq> So are the alternatives. 03:34:46 <elliott_> ? 03:34:52 <elliott_> o 03:34:53 <elliott_> rite 03:34:54 <elliott_> but 03:34:57 <elliott_> mostly they stick to things 03:35:01 <elliott_> in the same os release... 03:35:32 <elliott_> pikhq: like 03:35:36 <elliott_> this must have been released weeks after lion 03:35:37 <elliott_> but already 03:35:40 <elliott_> it uses its own button type... 03:35:47 <elliott_> unify......... ununify... repeat... 03:50:12 <Gregor> I fixed the last bug! 03:52:18 -!- oerjan has quit (Quit: Good night). 03:52:27 <elliott_> Gregor: Of what 03:52:32 <elliott_> Gregor: Also, you never answered my question :'( 03:52:46 <elliott_> 03:15 <elliott_> Gregor: You have a heap of one to two terabytes. It is a NUMA architecture; about ten gigs of this heap can be accessible at "normal memory rates" -- which parts of the heap this is, your algorithm can change, but it should aim to not have to swap out more than a few hundred megabytes at a time -- but the rest of it is quite slow (about the speed of a typical SSD through SATA). 03:52:46 <elliott_> 03:16 <elliott_> Gregor: You need to incrementally, generationally, parallely (or concurrent -- whichever means "while it's being mutated", though I suggest it use multiple threads too) GC it. 03:52:46 <elliott_> 03:16 <elliott_> Gregor: GOGOGOGOGOGOGO 03:52:48 <elliott_> AAAAANSWEERRRRRR 03:53:01 <Gregor> elliott_: That's not a question. 03:53:07 <elliott_> Gregor: OK, here's the question 03:53:11 <elliott_> "How?" 03:53:16 <elliott_> And yes pikhq is right, a pony too would be great thx. 03:53:38 <Gregor> Very carefully. 03:53:44 <elliott_> I knew that would happen. 03:53:51 <Gregor> And of JSBench (the last bug) 03:54:11 <elliott_> How many green pieces of paper do I need to throw at you to make all my @ GC problems go away 03:54:12 <elliott_> :P 03:54:22 <Gregor> More than you own. 03:54:23 * elliott_ just throws green paper at everyone on the planet to make sure. 03:55:03 <pikhq> elliott_: Solution: hyperinflate. 03:55:12 <elliott_> Yesss 03:55:13 <elliott_> Doing so 03:55:15 <elliott_> Gregor: Prepare yourself 03:57:50 -!- zzo38 has joined. 03:59:57 -!- elliott_ has quit (Remote host closed the connection). 04:01:29 -!- elliott has joined. 04:02:21 <elliott> pikhq: btw, you know you were complaining about packaging things like ghc with circular dependencies? 04:02:29 <pikhq> elliott: Yeah? 04:02:57 <elliott> pikhq: How do you package gcc? 04:03:16 <pikhq> See my past ranting. 04:03:33 <elliott> pikhq: Then what would you prefer? Bootstrapping is really inherent to all computing. 04:04:05 <pikhq> Nothing in particular, I'm just ranting and angry at realities and necessities. 04:05:37 <elliott> Really, bootstrapping is far too unexamined in modern computing. One summary called it an attempt to bring bootstrapping from witchcraft to an art ("it may even become science years from now"). 04:05:40 <elliott> erm 04:05:43 <elliott> Really, bootstrapping is far too unexamined in modern computing. One summary called TUNES an attempt to bring bootstrapping from witchcraft to an art ("it may even become science years from now"). 04:11:19 <elliott> Does anyone know where to up the version number of a package in its debian/ directory? 04:13:00 <Gregor> elliott: I believe it just gets it from the latest changelog entry (at least, a quick glance at a minimal example yields no other possibilities) 04:13:07 <elliott> Gross 04:13:22 <elliott> Meh, I'll just checkinstall 04:13:36 <Gregor> checkinstall is the greatest 04:13:44 <elliott> It... works. I guess 04:13:47 <elliott> It... works. I guess. 04:13:51 <elliott> It should use FUSE though. 04:15:10 <Gregor> FUSE wouldn't help its cause without chroot. 04:15:16 <pikhq> God, TUNES. 04:15:24 <elliott> Gregor: I mean it should use FUSE instead of LD_PRELOAD. 04:16:05 <Gregor> FUSE wouldn't help its cause without chroot. 04:16:16 <elliott> Gregor: I never said it would. 04:16:25 <elliott> "/usr/lib/ghc-7.2.1/ghc-pkg" --force --global-conf "/usr/lib/ghc-7.2.1/package.conf.d" update libffi/package.conf.install 04:16:25 <elliott> /bin/sh: /usr/lib/ghc-7.2.1/ghc-pkg: not found 04:16:29 <elliott> It should also handle this >_< 04:16:38 <Gregor> As in, FUSE would in no way serve to replace the LD_PRELOAD. 04:16:40 <elliott> I don't think there's anything I can do there. 04:16:45 <elliott> Gregor: Sure it would? 04:16:51 <Gregor> elliott: You can't FUSE / >_< 04:16:57 <elliott> You can chroot. 04:17:11 <Gregor> Oh, wait, I just remembered that checkinstall is ran by root X-D 04:17:29 <Gregor> I ... I have no idea what I thought it did for a moment there. 04:17:33 <elliott> Well, it's not here, but it would hardly be a problematic requirement. 04:17:37 <elliott> ...wait, how is it not? 04:17:39 <elliott> How is it working. 04:17:41 <elliott> Maybe it's setuid. 04:17:51 <elliott> -rwxr-xr-x 1 root root 82K 2011-05-01 04:39 /usr/bin/checkinstall 04:17:51 <Gregor> checkinstall definitely should not be setuid ... 04:17:52 <elliott> Huh. 04:18:19 <elliott> Anyway, checkinstall suxx, it can't deal with GHC. 04:18:48 * elliott just installs it :P 04:26:36 <zzo38> In recent D&D session, we managed to do something which almost certainly would not have worked if both of our character's races were not what they are. 04:27:32 <zzo38> Before that (but in same session), I tried to use a psionic power to move the chimney pots on the roof to knock off a man standing there (I recognized him as someone who was attacking the inn we were in), but managed to miss every time; ending up with all the chimney pots breaking. 04:30:56 -!- Jafet has quit (Quit: Leaving.). 04:33:23 <elliott> I'm beginning to find Unity a bit more tolerable, thoguh it might just be due to exposure... 04:41:55 <elliott> monqy: how are... the x monads... 04:42:09 <monqy> good enough for me (thumbs up) 04:42:42 <zzo38> What are "the x monads"? 04:42:48 <monqy> it requires a bit of configuration but I'm okay with that 04:43:14 <elliott> zzo38: xmonad... a... haskell wm... 04:43:27 <zzo38> O, you mean Xmonad. 04:43:34 <zzo38> OK. 04:48:54 <monqy> the most notable thing about my config is probably that near the start of main I make a spawner and then in the `additionalKeys` section do a concatMap ($ spawner) on [a, list, of, my, different, types, of, keybindings, here] (currently [spawnAnywheres (they just get spawned), spawnHeres (they get spawnHere'd), spawnAndDos (for when I want to do additional managehook things)]) 04:49:02 <monqy> oh and I made a useful managehook 04:49:08 <monqy> doHere :: ManageHook 04:49:08 <monqy> doHere = Query (lift (withWindowSet (return . W.currentTag))) >>= doShift 04:49:17 <elliott> hi 04:49:26 <monqy> hi 04:49:36 <monqy> it's like if you want to get the effect of spawnHere except you need to use spawnAndDo 04:49:44 <elliott> im robot 04:49:58 <monqy> I use it to doFloat and doHere 04:50:18 <elliott> I think I'm going to try Unity for a few days and see if I can get a workflow going. 04:50:37 <monqy> the importance of doHere is when you want to make things spawn on the workspace where you hit the spawn key, rather than the one where it ends up making its windowey things 04:51:13 <monqy> I also have some planned additions but I have not gotten around to doing them 04:51:42 <monqy> hm, unity. 04:52:00 <elliott> hm says the monqy. hm. 04:52:11 <monqy> I haven't yet bothered figuring out what's so bad about it 04:52:27 <monqy> an important rule: I am not to try unity and see for myself 04:52:28 <elliott> your MOM is so bad about it . lol . (a joke.) 04:52:43 <monqy> my mom is so bad about most things..... 04:52:47 <monqy> ................ 04:52:49 -!- elliott has quit (Read error: Connection reset by peer). 04:52:53 <monqy> rip 04:53:12 -!- elliott has joined. 04:54:36 <elliott> monqy: poitclaitcal cartoon... 04:54:47 <monqy> is it about unity 04:54:55 <elliott> no i was talk... about mom remark...e... 04:55:00 <monqy> oh.... 04:55:00 <elliott> it is esoteriece poitcslans caneiocntdfkg 04:55:02 <elliott> ocfgjkldxpocfkv lbn 04:55:04 <elliott> gi;h 04:55:07 <elliott> hi 04:55:15 <monqy> hi 04:55:49 <elliott> oh no 04:55:50 <elliott> i forgot to 04:55:52 <elliott> back up my emacs config 04:56:00 <monqy> was it important 04:56:04 <elliott> it had...heplful things 04:56:11 <Vorpal> morning 04:56:38 <Vorpal> 06:56 local time. Urgh. 04:56:48 <Vorpal> Soon about to leave for an exam. 04:57:04 <monqy> good times 04:57:51 -!- MDude has changed nick to MSleep. 04:58:39 <Vorpal> <elliott> no i was talk... about mom remark...e... <-- somehow I read "remark" as "shark".... 04:58:46 <elliott> shark remark 04:58:50 <elliott> best kind 04:58:57 <Vorpal> elliott: mom shark? 04:59:01 <elliott> mark 04:59:42 <Vorpal> Mark! remarked the shark about the ark? 04:59:46 <Vorpal> nah 04:59:58 <Vorpal> I'm still half asleep 05:01:50 <Vorpal> don't use a non-repeating image as the header of a page: regardless of how wide you make, there will be some monitor that is wider than it, making the page look horrible... 05:02:14 <Vorpal> (the web system of my university does this, looks horrible on my large desktop monitor) 05:02:23 <elliott> Unless you make it ten miles wide. 05:02:26 <zzo38> Or not using any image as the header of a page. 05:02:34 <Vorpal> elliott: right, but then loading time will be horrible 05:02:38 <zzo38> Another way is using gradients and having a solid color at the end in case it look bad 05:02:39 <Gregor> Vorpal: It could be fine if it's also not tiled or stretched ... 05:02:56 <Vorpal> Gregor: It isn't tiled or stretched, it is padded with white background on the right side 05:03:25 <Gregor> That would look fine if it was white on the right side itself :P 05:03:31 <Gregor> (That is, if it flowed naturally into plain white) 05:03:38 <Vorpal> Gregor: it doesn't do that 05:03:56 <zzo38> You could also just use a small logo, with transparency, and not set colors or fonts at all. 05:04:41 <Vorpal> sure, but is a drawn skyscape over the university kind of thing they use, changed to fit the season. No I don't know why. 05:05:09 <Vorpal> doesn't actually match the real skyscape correctly either. 05:06:06 <elliott> http://ompldr.org/vYWo3Zw At least Unity makes my emacs setup look pretty spiffy. 05:06:38 <zzo38> I have finished making the recording of the today D&D game session. Read 05:06:46 <Vorpal> elliott: full screen mode? 05:06:48 <Vorpal> what 05:06:57 <elliott> Vorpal: I like running Emacs maximised. 05:07:03 <elliott> In Unity, that translates to "fullscreen". 05:07:09 <Vorpal> elliott: is unity mostly bad though? 05:07:15 <elliott> Well, I think so. We'll see. 05:07:59 <Vorpal> elliott: also, long live clearlooks. I liked the aesthetics of it. Can't imagine why they removed it for GTK3... 05:08:06 <zzo38> When at FreeGeek, I run most programs (except xdvi) in the VC1 text mode, connected to beryllium by SSH. 05:08:16 <elliott> I like zzo38's opinions more than Vorpal's. 05:08:47 <Vorpal> elliott: so you don't like clearlooks: sure, okay. But not everyone has to like the same things. 05:08:55 <elliott> Assumptions hour with Vorpal 05:09:17 <Vorpal> mhm 05:09:20 <pikhq> I'm still partial to Mist. And more importantly, Grey Mist. 05:09:32 <elliott> Grey Mist the best. If I put Grey Mist into Unity it might explode. 05:09:33 <Vorpal> pikhq: is that around in GTK3? 05:09:48 <pikhq> I dunno if the Mist engine is in GTK3. 05:09:52 <Vorpal> ah 05:09:53 <Vorpal> well, I have to leave. cya 05:09:56 <pikhq> XFCE doesn't use GTK3 (yet?). 05:10:03 <pikhq> It is. 05:11:00 -!- elliott has quit (Remote host closed the connection). 05:11:34 <zzo38> I use xdvi for print preview, so it uses graphical mode. But other programs I use there can just work with text mode, such as vi, gcc, Enhanced CWEB, TeX, SQLite, bashgopher, and a few other things. 05:12:24 <zzo38> Although I do use the graphical mode for web browser, such as viewing Wikipedia or the documentation for some things which do not have man pages. 05:12:24 -!- elliott has joined. 05:13:37 <elliott> "Sorry, Compiz closed unexpectedly". 05:13:39 <elliott> It... did? 05:14:38 <zzo38> For actual printing, I use a command similar to this: dvilj4 - < whatever.dvi | lp 05:14:58 <zzo38> (Their printer is not a HP LaserJet 4, it is made by a different company but is still compatible with PCL, so it works) 05:16:06 -!- elliott has quit (Remote host closed the connection). 05:16:30 -!- elliott has joined. 05:17:17 <zzo38> It seems, to me, they don't want to use pipes for a lot of things these days. 05:18:21 <elliott> Well, pipes are limited in that they can only effectively carry one channel of information, and there's little opportunity to pass out-of-bound things such as errors. 05:18:30 <elliott> They're a good idea, but they're limited as a plugging mechanism. 05:21:19 <elliott> pikhq: What would you call the argument you get in a PING/send in a PONG? 05:21:38 <elliott> Data? Canary? Identifier? 05:21:48 <zzo38> I don't know. 05:21:48 <elliott> I feel like there's some evocative name for things like that that I just can't remember. 05:21:52 <elliott> (In that you have to send the same thing back.) 05:21:55 <pikhq> elliott: Cookie? 05:22:01 <elliott> pikhq: Oh, that's good. 05:22:34 <elliott> Yes, that's good. 05:22:35 <pikhq> Yeah, that's actually the stock term. HTTP cookies are just a specific instance thereof. 05:22:36 <elliott> For now at least. 05:23:04 <zzo38> The help file for this server says PING <source> :<target> but really if you specify only one parameter, it send back to you the same thing. 05:25:43 -!- GreaseMonkey has joined. 05:25:54 <fizzie> In an ICMP echo-request message it's called just boringly "data". 05:26:04 <zzo38> Do you like, so far, story that is recording of D&D game? 05:26:18 <zzo38> Does it contain a mistake? 05:32:21 <zzo38> Do you like STAR STACKER game in QBASIC? 05:33:50 <elliott> pikhq: Incidentally, what's your Xfce panel setup like? I've always had troubles getting one I'm happy with. 05:35:34 <pikhq> 20 pixels high, XFCE button, taskbar, icon bar, virtual desktop viewer, clock. All on the bottom. 05:36:57 <elliott> 20? But that's not a defined icon size. They'll be so ugly. :( 05:37:17 <pikhq> Not noticed any aesthetic issues. 05:37:23 <elliott> Try twenty-four. :p 05:37:47 <pikhq> :( 05:38:25 <pikhq> I think I prefer 20. 05:40:31 <elliott> pikhq: But your icons will be being downscaled :'( ;")( :(999999999999999 05:40:32 <elliott> SO UNCRISPE 05:41:09 <pikhq> I'm not noticing any downscaling artifacts, though. 05:41:33 <elliott> Hmm, screenshot? 05:42:34 <pikhq> OIC. 05:43:06 <pikhq> 16x16 is a defined icon size. And the panel is not giving the icons literally the full height of the panel. 05:43:40 <pikhq> So, for a 24-high panel it would be downsizing, but for a 20-high panel it wouldn't. 05:44:11 <elliott> Ah. 05:44:21 <elliott> Try A FEW MORE THAN TWENTY-FOUR :p 05:44:22 <elliott> :p 05:44:23 <elliott> :P 05:44:28 <elliott> I think I used twenty-eight, actually. 05:45:05 <pikhq> Also, most of the icons are scalable. 05:45:13 <pikhq> :) 05:47:16 <elliott> pikhq: 05:47:18 <elliott> "Working on an update kernel for Fedora 15, rebasing from 2.6.38 to 3.0. 05:47:18 <elliott> As we know a bunch of userspace packages need updating to deal with the 2.6 -> 3.x transition, we made a decision to ship 3.0, but call it 2.6.40 rather than ship a ton of updates, and risk breaking other code that we don't ship." 05:47:33 <elliott> In the distance: Linus, drinking to forget. 05:48:04 <pikhq> The only userspace break I know of from 3.x is actually from a misusage of kernel headers that *happened* to break on v3.0. 05:48:12 <elliott> "Dave Jones - +David Cantrell In updates, we try not to induce breakage, especially when it's of the form "doesn't boot any more". Which is 05:48:12 <elliott> one failure case (mdadm needs an update for eg)." 05:48:24 <elliott> It's stuff looking at the version. 05:48:30 <elliott> And going "WAHTHST THIS" 05:48:31 <pikhq> *sigh* 05:48:41 <pikhq> "I KNOW PRECISELY ONE VERSION BECAUSE DUR" 06:08:40 -!- ive has quit (Ping timeout: 276 seconds). 06:09:45 -!- Jafet has joined. 06:16:18 -!- aloril has quit (Ping timeout: 240 seconds). 06:26:54 -!- copumpkin has quit (Ping timeout: 260 seconds). 06:27:19 -!- copumpkin has joined. 06:28:04 -!- cheater has joined. 06:30:43 -!- aloril has joined. 06:42:16 -!- aloril has quit (Ping timeout: 244 seconds). 06:43:54 -!- ive has joined. 06:44:39 -!- ive has quit (Client Quit). 06:45:56 -!- Ngevd has joined. 06:46:36 <Ngevd> You know what's annoying about switching between Windows and Ubuntu while liking Ubuntu Unity? 06:47:07 <Ngevd> I tried to open IRC by moving my mouse to the far left of the screen 06:47:49 <elliott> try not using windows :P 06:48:51 <Ngevd> I will CONTINUE USING WINDOWS UNTIL THE DAY I FIGURE OUT HOW TO INSTALL DWARF THERAPIST ON UBUNTU 06:49:00 <Ngevd> WHICH WON'T BE TODAY 06:51:01 <CakeProphet> my semicolons are the best 06:51:04 <CakeProphet> transitional punctuation. 06:52:39 <CakeProphet> Ngevd: you just have to add the repo to your sources.lst 06:52:52 <CakeProphet> open up a terminal and type: sudo gedit /etc/apt/sources.list 06:52:58 <CakeProphet> (or another text editor if you prefer) 06:54:05 <CakeProphet> then add this line into the file: deb http://dwarftherapist.com/apt maverick universe 06:54:46 <CakeProphet> then back in the terminal type: sudo apt-get update && sudo apt-get install dwarftherapist 06:55:01 <elliott> ... 06:55:20 <elliott> why are you lying to taneb 06:55:30 <CakeProphet> *Negvd 06:55:32 <CakeProphet> am I? 06:55:37 -!- aloril has joined. 06:55:43 <CakeProphet> this is what I did to install dwarftherpist 06:55:45 <CakeProphet> and it works. 06:55:51 <elliott> Ngevd: just "make" 06:56:02 <elliott> you installed all the dev libs iirc 06:56:18 <CakeProphet> that doesn't really give you the benefits of the package manager though... unless it does. 06:56:29 <elliott> dt is one binary 06:56:36 <elliott> it does not need installing 06:56:44 <elliott> df isnt packaged either 06:57:08 <CakeProphet> still, by doing the above you get updates forever without thinking about it (provided the repo is maintained) 06:58:06 <CakeProphet> by yeah a make is fine. 06:58:34 <CakeProphet> it just sounds like he was having difficulties with the manual install 06:58:44 <CakeProphet> whereas the repo install is almost impossible to fuck up. 06:59:07 <elliott> Googling it, it looks like http://code.google.com/p/dwarftherapist/wiki/LinuxVersion 06:59:09 <elliott> it is hideously out of date 06:59:15 -!- Ngevd has quit (Remote host closed the connection). 06:59:38 <CakeProphet> elliott: I don't understand why people are so bad at maintaining packages in repos... 06:59:50 -!- Ngevd has joined. 07:00:25 <elliott> CakeProphet: perhaps because you have too much free time 07:00:38 <CakeProphet> heh. yes that must be it. 07:00:50 <CakeProphet> look at these valuable minutes I'm spending, talking on IRC. 07:02:29 <CakeProphet> elliott: how might I use my free time to update that package? 07:02:46 <elliott> by setting up your own repo, ppa whatever 07:02:58 <CakeProphet> I can't use the existing one? 07:03:12 <CakeProphet> (forgive me in advance for not knowing everything about everything still) 07:03:33 <CakeProphet> (working on it) 07:06:10 -!- elliott_ has joined. 07:06:17 -!- elliott has quit (Read error: Connection reset by peer). 07:06:33 <elliott_> 07:02:58: <CakeProphet> I can't use the existing one? 07:06:43 <elliott_> CakeProphet: You'd have to get write access from its owner. 07:08:52 <CakeProphet> ah okay 07:08:56 <CakeProphet> shouldn't be difficult. 07:09:02 <CakeProphet> "hey don't be lazy plz" 07:09:19 <elliott_> You have a naive view. 07:13:44 <fizzie> Yes. Consider: the robotfindskitten people still haven't linked to my TI-86 port (perhaps believing their own lies of the TI-83+ version being "for the TI-8x series of calculators", even though I emailed them twice about two years ago. 07:14:12 <fizzie> Apathy and worse. 07:14:21 <fizzie> Whoops, ). 07:14:32 <fizzie> I almost unbalanced the channel. :/ 07:18:07 <monqy> i love robotfindskitten 07:19:02 -!- Ngevd has quit (Ping timeout: 245 seconds). 07:19:03 <elliott_> robotfindskitten is the best roguelike; game. 07:19:25 -!- zzo38 has quit (Remote host closed the connection). 07:35:45 -!- atehwa has quit (Ping timeout: 260 seconds). 07:35:50 -!- Jafet1 has joined. 07:36:57 -!- Jafet has quit (Ping timeout: 265 seconds). 07:47:22 -!- augur has quit (Remote host closed the connection). 07:48:44 <elliott_> pikhq: You know, I don't think @'s file system actually needs any indexes at all. 08:03:40 -!- Jafet1 has quit (Quit: Leaving.). 08:03:47 <elliott_> http://esoteric.voxelperfect.net/wiki/German 08:03:48 <elliott_> die 08:03:48 <elliott_> die 08:03:49 <elliott_> die 08:10:20 <Patashu> who made that 08:11:05 <Patashu> http://aoeu.tk/ this person 08:12:22 -!- azaq23 has quit (Ping timeout: 245 seconds). 08:12:54 <fizzie> printf("Warning, this will overwrite %s, beginning in 3 seconds\n", argv[2]); for(int i = 3; i > 0; i--) { printf("%d...", i); fflush(stdout); sleep(1); } 08:12:57 <fizzie> Best "compiler" evar. 08:13:31 <Patashu> haha 08:13:42 <Patashu> c'mon 08:13:44 <Patashu> it's a nice compiler! 08:16:24 <fizzie> If I'm not mistaken, it also fails to include any BEER that starts more than 9 bytes before EOF. 08:16:46 <fizzie> s/more/less/ 08:16:52 <fizzie> s/less/later/ 08:16:55 <fizzie> You know what I mean. 08:17:12 <elliott_> Nice. 08:21:21 <fizzie> What it does is for(int i = 0; i < size - 9; i++) { if (toupper(input[i]) == 'S' && toupper(input[i+1]) == 'C' && ... && toupper(input[i+8] == 'L') { ... } else if (toupper(input[i] == 'B' && ...) { ... } }. 08:21:53 <Patashu> haha 08:21:58 <Patashu> excellent programming 08:22:24 <fizzie> Excellent tools for an excellent language, one supposes. 08:25:16 <CakeProphet> what the hell... 08:25:41 <CakeProphet> some people are just so good at programming. 08:25:46 <CakeProphet> I'm in awe. envious even. 08:27:08 -!- augur has joined. 08:29:51 <elliott_> Xubuntu or Debian. Hrrrm. 08:29:58 <CakeProphet> elliott_: do you know about Python C API? 08:30:05 <CakeProphet> also why would you use Xubuntu? 08:30:37 <elliott_> Because Unity sucks and gnome-panel three is terrible too? 08:31:04 <CakeProphet> what's bad about gnome-panel compared to xcfe? 08:31:10 <elliott_> gnome-panel two is fine. 08:31:15 <elliott_> gnome-panel three in oneiric is an abomination. 08:31:34 <CakeProphet> *oneiris beta release 08:31:37 <CakeProphet> *c 08:31:48 <elliott_> CakeProphet: It's beta two, they're not going to make any sweeping changes to the UI. 08:31:56 <elliott_> It's been through three alphas and one beta already. 08:32:03 <CakeProphet> YOU NEVER KNOW. 08:32:04 <CakeProphet> :P 08:32:05 <elliott_> Especially not for a UI you have to manually install with a package manager. 08:32:17 <elliott_> For a start, it's hideous -- http://lh5.googleusercontent.com/-HaLVAPdynX0/TnNHfECF0KI/AAAAAAAAAbA/udfn-e82aCY/s1600/Gnome-Fallback.png -- what the fuck happened to the panel gradient? And why is the clock in the middle? 08:32:20 <CakeProphet> oh... they stopped supporting it out of the box. 08:32:22 <CakeProphet> NOOOO 08:32:34 <elliott_> For a second, to move anything about in the panel or anything you have to hold down alt while right clicking. OK it's not major but it's really annoying. 08:32:37 <CakeProphet> these are all things that can be fixed though. 08:32:41 <elliott_> Also the top panel is pretty big now which is also annoying. 08:32:42 <elliott_> CakeProphet: No they're not. 08:32:43 <elliott_> I tried. 08:32:48 <elliott_> I tried for about half an hour. 08:32:54 <CakeProphet> o_o 08:32:55 <elliott_> There is no way to get the panel to not have a hideous half-gradient. 08:33:07 <elliott_> There is no way to make the indicator icons not badly-sized. 08:33:17 <CakeProphet> :( 08:33:20 <CakeProphet> I am sad face. 08:33:24 <elliott_> It feels like something someone hacked up in ten minutes and put on a git repository. 08:33:28 <elliott_> Unity is about ten million times bette.r 08:33:30 <elliott_> better. 08:33:32 <elliott_> And I can't stand Unity. 08:33:35 <CakeProphet> this is bad. 08:33:45 <elliott_> Whereas Xubuntu is basically GNOME two, but slightly different. 08:33:58 <CakeProphet> does Kubuntu use a Unity (Kunity???) 08:34:00 <elliott_> OK, some of its programs are slightly inferior/less featureful to GNOME two's versions, but everything is functional. I mean, Linus uses Xfce. 08:34:04 <elliott_> CakeProphet: No, it's KDE. 08:34:10 <elliott_> Note that Ubuntu is not Gubuntu. 08:34:17 <elliott_> (Gubuntu being a hypothetical "GNOME Ubuntu".) 08:34:17 <CakeProphet> not much of an improvement I guess. 08:34:31 <elliott_> KDE is nicer than Unity. 08:34:36 <CakeProphet> that's true. 08:34:48 <CakeProphet> needs moar Gubuntu. 08:34:56 <elliott_> Anyway, my choices are basically between Xubuntu, Debian with Xfce, or Debian with GNOME two (I think they have a fork). 08:35:22 <CakeProphet> oh Xfce is what comes standard on Debian? 08:35:35 <CakeProphet> well, I'd go with Xubuntu I guess? 08:35:36 <fizzie> Glub-untu, speaker of the vast glub. 08:35:40 <elliott_> No, Debian is GNOME. 08:35:45 <elliott_> But they support Xfce as a first-class citizen. 08:35:52 <elliott_> Really Debian's "defaultness" of GNOME is that it's ticked by default. 08:35:56 <elliott_> They're very traditionalists. 08:36:11 <elliott_> fizzie: The vvery best OS. Oops. 08:36:12 <CakeProphet> Slackware is the only choice now. 08:36:22 <elliott_> GENTOO [is mauled by bears] 08:36:48 <CakeProphet> elliott_: maybe you didn't try hard enough to fix gnome-panel 08:37:02 <CakeProphet> maybe I'll upgrade to oneiric and everything will be the same. 08:37:02 <fizzie> Maybe you should have spent half a DAY. 08:37:08 <elliott_> CakeProphet: I asked in the official oneiric channel and talked with one of the very knowledgable people extensively. 08:37:24 <fizzie> Oh, so it looks broken by design? 08:37:25 -!- azaq23 has joined. 08:37:35 <elliott_> They told me that, gee, if you set it to solid colour and select the window decoration border, you get a slightly different solid colour with all of the items still having gradients. 08:37:48 <elliott_> And then got upset when I mumbled that Canonical evidently don't care about GNOME users. 08:37:53 <CakeProphet> lol 08:38:10 <elliott_> (OK, so it's unfair, apparently /someone/ is working on GNOME panel at Canonical, but come on.) 08:38:14 <elliott_> fizzie: Yes. 08:38:17 <CakeProphet> I do believe they'll lose a lot of users without good GNOME support (i.e. me) 08:38:22 <elliott_> fizzie: Well, maybe not the gradient, but the rest of it. 08:38:35 <elliott_> fizzie: It's meant to look like the dumb-computer version of GNOME three's non-panel. 08:38:40 <elliott_> Which means it's absolutely useless as a panel. 08:38:46 <elliott_> Oh, and the system menu is gone. 08:38:49 <elliott_> Because gnome three doesn't have it. 08:38:53 <elliott_> How do you configure system settings? 08:38:55 <elliott_> You don't. 08:39:01 <elliott_> Or, uh, use a terminal I guess? 08:39:02 <CakeProphet> system settings? who needs it. 08:39:15 <CakeProphet> rip Ubuntu the good linux distro. 08:39:19 <elliott_> tl;dr Ubuntu+gnome-panel is a dead end. 08:39:40 <elliott_> But I hear gnome three is MADE OF EASY. 08:39:49 <elliott_> Made of eelsy. Augh, fizzie. 08:40:05 <CakeProphet> elliott_: you should let me steal all of your hard work when you figure out how to make Ubuntu + GNome 3 not terrible. 08:40:12 <elliott_> It's ridiculbass the kind of puns I'm mackereling here. 08:40:31 <CakeProphet> fish puns are the worst. 08:40:33 <elliott_> CakeProphet: I'm not going to, I'm going to switch to a distro with a supported main UI that's sane out of the box. 08:41:03 <CakeProphet> but I'm afraid of change. what if Debian is more diffeelcult than Ubuntu 08:41:04 <elliott_> You should too. 08:41:19 <elliott_> CakeProphet: So use Xubuntu, which is almost identical to a gnome three desktop OOTB, and is well-supported, and uses the exact same installer. 08:41:27 <elliott_> You can switch to it without even reinstalling. 08:41:29 -!- monqy has quit (Quit: hello). 08:41:37 <CakeProphet> but what if Debian better? I don't handle choices very well.... 08:41:42 * CakeProphet cowers in fear. 08:41:50 <elliott_> So you'll stay on the distinctly worse Ubuntu? 08:41:55 <CakeProphet> no. 08:41:55 <elliott_> I think there's a name for that. Something's ass. 08:42:19 <CakeProphet> well what's different about Debian? 08:42:22 <elliott_> Oh, you could also try Lubuntu, but... I wouldn't. 08:42:49 <elliott_> CakeProphet: Slightly less "integration polish" by default, the installer is slightly more involved, different release schedule, no branding. 08:42:54 <elliott_> Well, branding, but only that Debian swirl thing. 08:42:56 <elliott_> Also no Ubuntu One. Oh no. 08:43:20 <CakeProphet> noooooo 08:43:42 <CakeProphet> what about repos? I know Ubuntu is mostly debian software but I'll be losing some repo software going upstream right? 08:43:56 <elliott_> Not really. 08:44:02 <elliott_> Debian has everything that isn't Ubuntu-specific. 08:44:09 <elliott_> I mean, Firefox is called Iceweasel, obviously. 08:44:14 <elliott_> And might have a slightly older version. 08:44:27 <elliott_> But it's pretty much the same base of software, and if you use the testing repos, usually slightly newer. 08:44:48 <CakeProphet> iceweasal what. 08:44:58 <elliott_> CakeProphet: Mozilla are assholes about their trademark. 08:45:04 <elliott_> Debian's options were to remove Firefox or change its name. 08:45:10 <elliott_> Every other distro does this too. 08:45:14 <CakeProphet> is there a way I can get a list of all of my installed packages so that I can quickly reinstall them on a Debian system? 08:45:15 <elliott_> For instance Arch calls its firefoxes by their codename. 08:45:27 <elliott_> CakeProphet: Well, technically, yes, but doing that would be a terrible idea for /any/ distro transition. 08:45:38 <elliott_> Trust me, there is not the slightest universe where you would want to do that. Ever. 08:45:47 <CakeProphet> so just start from scratch then? 08:45:59 <elliott_> Yes. You probably really don't use as much software as you might think. 08:46:09 <elliott_> You could always just go for Xubuntu, which is literally identical. 08:46:16 <elliott_> I'd choose Debian without thinking if not for my hardware situation. 08:46:25 <elliott_> There's something about being able to rely on eighteen years of experience. 08:46:34 <elliott_> The damn thing's older than me. 08:46:35 <CakeProphet> I might try Debian. what hardware situation? 08:46:40 <elliott_> MacBook Air. 08:46:46 <CakeProphet> ah 08:46:53 <CakeProphet> so I should be fine. 08:47:01 <elliott_> CakeProphet: I think the "GNOME desktop" that Debian offers to install is three, so I'd try Xfce first time round. 08:47:12 <elliott_> Oh, and since Debian's site is useless about this -- 08:47:41 <elliott_> CakeProphet: http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso would be the ISO you would want. 08:47:52 <elliott_> Don't be put off by the testing name; in Debian, stable means "a few years old" and testing means "stable". 08:48:08 <elliott_> (unstable/sid means "beta/alpha-quality" and experimental means "broken".) 08:48:29 <CakeProphet> I don't /use/ a lot of the software I've installed regularly but I've accumulated a shit ton of packages/modules/whatever in various languages that I kind of wanted to have around so I don't have to ever think about them again... but, I guess that's no big deal. 08:48:59 <CakeProphet> amd64? I'm running intel though. 08:49:05 <elliott_> >_< 08:49:09 <elliott_> The name of the architecture is amdsixtyfour. 08:49:12 <elliott_> Because they invented it. 08:49:16 <CakeProphet> oh okay. 08:49:23 <elliott_> CakeProphet: And a final helpful tip: You want to do the "Xfce -> expert graphical install". Trust me. Graphical because the terminal interface is ugly, and /expert/ because -- well, you can use the default answer to almost all its questions -- but only in expert mode does it offer to install a sudo-based system instead of a separate root password. 08:49:27 <elliott_> It should be default, but it isn't. 08:49:44 <CakeProphet> ....oh yes 08:49:45 <CakeProphet> good tip. 08:50:01 <CakeProphet> "not an expert" = LESS CONVENIENCE FOR YOU 08:50:16 <elliott_> ISTR having some problems with PolicyKit not wanting to use sudo after that, but it was only one file change or so to get it working which I can tell you if it happens to you. 08:50:30 <elliott_> But that's most of what I know about installing Debian. 08:50:47 <elliott_> CakeProphet: Oh, and that's a netinstall CD, so it's about a sixth of the size of an Ubuntu one, but downloads the packages from the internet as it installs. 08:51:05 <elliott_> Debian don't really devote time to choosing a set of "default packages" and offering it on one CD, but you can download about ten DVDs if you want... 08:51:28 <elliott_> It only matters in that you need an internet connection when you install, and it takes like twenty minutes longer. But it's a one-time thing, so. 08:52:03 <elliott_> But my point is: 08:52:06 <elliott_> God I hate apple hardware 08:52:38 <CakeProphet> okay is there wireless driver support good? 08:52:45 <CakeProphet> I had problems with that on Ubuntu. 08:53:08 <CakeProphet> also would it be absolutely insane to migrate my current /etc to my new /etc? 08:53:15 <elliott_> CakeProphet: Well, certainly not better than Ubuntu's. They're much more wary of non-free software. I strongly suggest you install with an Ethernet cable and sort it out later. 08:53:17 <elliott_> And god yes that would be insane. 08:53:30 <elliott_> Back up your home folder and /etc if you want, but don't do anything automatic like that. 08:53:41 <fizzie> The stable Debian 6.0 installation set is available on CDs too; you just download 52 full-CD .iso images and burn them all. 08:53:51 <elliott_> (You'll be able to get any wireless card that works with Ubuntu working on Debian, it might just be fiddlier.) 08:53:53 <elliott_> fizzie: Haha, wow. 08:54:04 <elliott_> I guess the DVD thing is kind of moot since you can only install testing with netinstall anyway. 08:54:39 <CakeProphet> but I can move my home over to Debian with no issues right? 08:55:07 <elliott_> CakeProphet: Yes, but I'd exclude the dotfiles and migrate them over one by one as you need them. 08:55:19 <elliott_> Otherwise things like ~/.local and all of ~/.config and the like will get copied over, which might mess with things. 08:55:24 <CakeProphet> oh... yeah I meant with dotfiles. okay. 08:55:31 <elliott_> Well, it shouldn't _break_ anything. 08:55:34 <elliott_> But I'd do it incrementally. 08:55:40 <CakeProphet> I'd probably move .cabal and .cpan and things of that nature. 08:55:51 <elliott_> .cabal would be a bad idea, unless you compile your own GHC. 08:55:58 <elliott_> Different GHC version, etc. 08:56:05 <elliott_> .cpan too, really. 08:56:11 <elliott_> Config files yes, binaries no. 08:56:28 <CakeProphet> wouldn't cpan be all scripts? 08:56:47 <elliott_> Well. Probably, yes. But still, slightly different perl version is quite likely... 08:56:48 <CakeProphet> >_> 08:56:54 <elliott_> I wouldn't. 08:56:56 <CakeProphet> ah okay 08:57:08 <elliott_> Looks like gnome in Debian testing is still two, actually, but that won't last... 08:58:02 * CakeProphet would have probably broken his new Debian install immediately otherwise. 08:58:08 <CakeProphet> moving everything in /etc and home 08:58:26 <fizzie> "GNOME 3 is in Debian experimental because it’s a work in progress. You should not install it if you can’t live with problems and glitches. Beware: once you upgraded to GNOME 3 it will be next to impossible to go back to GNOME 2.32 (you can try it, but it’s not officially supported by Debian). Even with the fallback mode, you won’t get the same experience than what you had with GNOME 2.32. Many applets are not yet ported to the newest gnome-panel API." 08:58:28 <elliott_> If you have free space, I'd install Debian to a small partition as a trial run first. 08:58:31 <fizzie> Sounds like the worst idea to do. 08:58:45 <elliott_> Better safe than sorry, and you can see what you'll need to account for ahead of time. 08:58:48 <elliott_> fizzie: Nice. 08:59:19 <CakeProphet> hmmm I wonder if my external is bootable. 08:59:28 <CakeProphet> does 500 GBs count as small? :P 08:59:35 <elliott_> "An Xfce release without a new clock mode would not be a true Xfce release. Let us introduce you the 'fuzzy' clock mode!" 08:59:41 <elliott_> See, these guys have their priorities in order. 08:59:49 <elliott_> "The directory menu plugin provides a menu reproducing the arborescence of a particular folder." 08:59:52 <elliott_> They use words like arborescence. 09:00:04 <CakeProphet> sounds good to me. 09:00:23 <fizzie> Heh, there's an "APT pinning file for the brave", if you want to try just getting Gnome 3 out of experimental. 09:00:24 <fizzie> Package: *gnome* libglib2.0* *vte* *pulse* *peas* libgtk* *gjs* *gconf* *gstreamer* alacarte *brasero* cheese ekiga empathy* gdm3 gcalctool baobab *gucharmap* gvfs* hamster-applet *nautilus* seahorse* sound-juicer *totem* remmina vino gksu xdg-user-dirs-gtk dmz-cursor-theme eog epiphany* evince* *evolution* file-roller gedit* metacity *mutter* yelp* rhythmbox* banshee* system-config-printer transmission-* tomboy network-manager* libnm-* update-notifier shotwell 09:00:25 <fizzie> liferea *software-properties* libunique-3.0-0 libseed-gtk3-0 libnotify* libpanel-applet-4-0 libgdata11 libcamel* libcanberra* libchamplain* libebackend* libebook* libecal* libedata* libegroupwise* libevent* gir1.2-* libxklavier16 python-gmenu libgdict-1.0-6 libgdu-gtk0 09:00:25 <fizzie> Pin: release experimental 09:00:27 <fizzie> Pin-Priority: 500 09:00:29 <fizzie> That's quite a list. 09:00:46 <CakeProphet> *mutter* 09:00:49 <elliott_> fizzie: Yikes. 09:01:30 <fizzie> I seem to recall a fuzzy clock from somewhere. 09:01:53 <CakeProphet> there's pretty much no way an external wouldn't be bootable if my computer can boot from USB right? 09:02:01 <elliott_> It should work. 09:02:02 <CakeProphet> I know some flash drives can't be booted 09:02:12 <elliott_> If all fails you can just boot it with GRUB. 09:02:16 <elliott_> That'll work on anything. 09:02:23 <CakeProphet> ah okay. 09:02:33 <elliott_> CakeProphet: Anyway, my basic summary of my experience with Debian would be: It's not as slick or polished as Debian and it'll take some effort to tweak to the same level as you'd get from Ubuntu. But given that extra work, it's a lot more predictable and reliable than Ubuntu, and tends to break less too. 09:05:01 <CakeProphet> that's fine. work is good. I can level up my shitty linux imaginary RPG stat. 09:07:16 <CakeProphet> also with compiz, at least graphical, it could be pretty slick. 09:07:21 <CakeProphet> *graphically 09:07:38 <elliott_> compiz : - ( 09:07:44 <elliott_> metacity can do shadows, you know. 09:07:52 <elliott_> (And so can xfwm, I believe.) 09:07:56 <elliott_> (It does compositing.) 09:08:58 <CakeProphet> but compiz has FLAMES FOR WINDOW CLOSING ANIMATIONS MUAHAHAHAHAHAHA BADASS 09:09:06 <elliott_> id;ont like you 09:09:10 <CakeProphet> (just kidding I'm not one of those people) 09:09:30 <CakeProphet> elliott_: have you ever considered using a tiling wm like xmonad? 09:09:35 <elliott_> CakeProphet: Extensively. 09:09:40 <elliott_> I still might. 09:10:44 <CakeProphet> your Haskell hipster cred would escalate rapidly. 09:11:02 <elliott_> xmonad is obviously the best tiling WM, it's just a question of whether the paradigm is for me or not. 09:11:22 <elliott_> Ah, nice how fast the Debian CD burns :P 09:11:30 <elliott_> (I figured I might as well see what it thinks of my hardware.) 09:11:32 <CakeProphet> I imagine it would be kind of like windows in emacs 09:11:34 <CakeProphet> except everywhere 09:11:43 <CakeProphet> which would not be bad. 09:11:46 <elliott_> CakeProphet: Except automatically splitting 09:11:48 <elliott_> CakeProphet: Except automatically splitting. 09:11:52 <CakeProphet> oh... right. 09:12:04 <elliott_> (There's basically two schools of thought, but auto-splitting has taken off while the other POV has basically died.) 09:12:22 <elliott_> The problem I had was that browser windows and the like become too wide. 09:12:25 <elliott_> But... 09:12:34 <elliott_> I've browsed maximised for several months now. 09:12:36 <CakeProphet> elliott_: soon you could be as cool as this guy http://www.youtube.com/watch?v=7ZAmMdRBRjs 09:12:50 <elliott_> Something we can all aspire to. 09:14:21 <CakeProphet> I might try out xmonad if there's a sane way to switch back and forth. 09:14:34 <elliott_> That's called any desktop manager. 09:14:54 <CakeProphet> oh I thought the desktop manager was under the window manager. other way around? 09:15:04 <CakeProphet> er, on top of, actually. 09:15:08 <CakeProphet> wrong spatial metaphor. :P 09:16:00 <elliott_> Well, it starts WMs. 09:16:18 <elliott_> You can't keep the window state while switching WMs, you have to restart things. There are exceptions, but [no]. 09:17:18 <CakeProphet> so gnome-panel can coexist happily with xmonad? 09:17:23 <CakeProphet> >_> 09:17:27 <CakeProphet> that sounds unlikely. 09:17:28 <fizzie> A desktop environment is sort-of "over" a window manager; a desktop manager is something very different. 09:17:35 <fizzie> And yes, I use gnome-panel with xmonad. 09:17:39 <CakeProphet> oh okay. 09:17:42 <fizzie> Except I don't really use the panel for much. 09:17:49 <elliott_> It can; you probably want to configure xmonad for it though. 09:17:51 <fizzie> Mostly it's just to hold the indicator applet thingies. 09:17:53 <elliott_> Lord knows why you'd want to. 09:18:12 -!- Jafet has joined. 09:18:43 <fizzie> I have these dzen2 bars providing workspace lists at the top of all screens, and a single bottom gnome-panel instance on one screen holding the indicator thingies and a clock and not much more. 09:18:55 <fizzie> Well, there's also some status monitoring thingies, it looked so empty otherwise. 09:19:47 <elliott_> The problem I have is that whenever I think "oh, I browse fullscreen, so this could work", I think "umm, I also emacs and terminal fullscreen. So I'd use the tiling for... Pidgin?" 09:19:55 <elliott_> And that's, like, ratpoison. 09:19:59 <elliott_> I don't want to use ratpoison. 09:20:16 <CakeProphet> .....terminal fullscreen what? 09:20:24 <elliott_> Fullscreen as in maximised. 09:20:28 <CakeProphet> why. 09:21:11 <CakeProphet> weirdo 09:21:13 <fizzie> What's the alternative, to have some useless empty space around the window? 09:21:14 <elliott_> Because there are long paths and compiler outputs. 09:21:34 <elliott_> Having it in a small window results in lots of wrapping and me being unable to see context when I have like five warnings. 09:22:01 <CakeProphet> ah 09:22:21 <CakeProphet> maybe I just have ADD so I do everything in fullscreen all the time I'll forget what I was doing. :P 09:22:36 <CakeProphet> I like to have some stuff behind my terminal. 09:22:49 <CakeProphet> so I usually use the default window size. 09:22:58 <CakeProphet> which is just a small rectangle. 09:23:12 <elliott_> I do like context behind windows, but... 09:23:25 <fizzie> I tend to keep Emacs and a terminal in a full-height half-width sort of setup (though with relatively tiny fonts and 1920 pixels of width, so there's a... reasonable, if not plentiful amount of columns), but that's probably mostly because I'm not much of an Emacsist and therefore don't do everything from within it like I should. 09:23:27 <elliott_> Everyone "like me" seems to use tiling WMs. 09:23:41 <CakeProphet> also typically when I'm programming I use emacs shell which is always tiled somewhere. 09:23:43 <elliott_> I can't think of a way to justify to myself how switching to one isn't inevitable, considering that. 09:23:54 <elliott_> CakeProphet: Emacs shell? Wrong. You're a wrong person. Don't do that. Bad. 09:23:58 <CakeProphet> why? 09:24:02 <elliott_> Just 09:24:02 <elliott_> no 09:24:10 <CakeProphet> for compiling and test it works fine... 09:24:16 <CakeProphet> not for reading docs though 09:24:17 <elliott_> noooooooo 09:24:23 <elliott_> CakeProphet: Tried M-x woman? :p 09:24:31 <CakeProphet> ....oh I forgot about that. 09:24:55 <CakeProphet> forgot about man as well 09:25:33 <elliott_> M-x man is much worse than M-x woman. 09:25:53 <fizzie> You're such a feminist. 09:26:13 <elliott_> Quite. 09:27:41 -!- sebbu3 has joined. 09:27:45 -!- sebbu3 has quit (Changing host). 09:27:45 -!- sebbu3 has joined. 09:27:54 <CakeProphet> maybe I should be an xmonad person. 09:28:30 -!- GreaseMonkey has quit (Quit: The Other Game). 09:29:08 <fizzie> CakeProphet: Incidentally and off-topic, I tried out character-grams generated from a Finnish word-list, and the results are really quite subtimal; there's this thing called wovel harmony we have (no word can contain wovels from the group {a, o, u} and {ä, ö, y} (that's {ɑ, o, u} and {æ, ø, y} IPA-wise) simultaneously) which introduces long-distance dependencies the 'grams just can't handle. 09:30:22 <CakeProphet> fizzie: you could just impose constraints on the result have it regenerate when it doesn't meet them. 09:30:35 <fizzie> Certainly, but then it's not language-agnostic at all. 09:30:59 <CakeProphet> right it would have to be encoded in the dataset somehow to make it flexible. 09:31:09 -!- sebbu2 has quit (Ping timeout: 248 seconds). 09:31:41 <fizzie> Also wovel harmony need not hold over compound words, but detecting if a word is "compound-like" enough to pass is not exactly trivial; yet there's quite a lot of compound words in Finnish and optimally those should be generated occasionally too. 09:31:55 <CakeProphet> ah 09:32:23 <CakeProphet> general compund-ness involves a large number of consonants juxtaposed. 09:32:29 <CakeProphet> ...usually. 09:32:34 <CakeProphet> in English. 09:32:58 <CakeProphet> `word 20 09:33:03 <HackEgo> sprot miachoptits oterneque spitchetche cian aries idesd asock hadilatateoxarriumedremegraccrateco nes prannedichosts baythnitia ddicix skrevane goye teecipbllin wis muel kpec cheoance 09:33:35 <CakeProphet> none of those are really compounds.. 09:33:47 <fizzie> We have a couple of loan words that break the wovel harmony (like olympialaiset 'the olympic games'), the mispronounciation of which (in this case, as "olumppialaiset") is a stereotypical sign of a lower level of education. 09:34:01 <fizzie> "prannedichosts" could be. 09:34:14 <CakeProphet> not in english pronunciation. 09:34:31 <CakeProphet> there's no abrupt stop.\ 09:34:46 <fizzie> Maybe it'd need a k after the c there. 09:35:38 <CakeProphet> yeah 09:35:56 <CakeProphet> well it could be a compound of "prandi" and "chosts 09:36:12 <CakeProphet> but really I don't think you can really decide compounds across vowel-consonant boundaries. 09:37:13 <CakeProphet> (by the way naively pronouncing wovel in English is funny sounding) 09:37:17 <CakeProphet> kind of like wobble 09:37:54 <fizzie> Finnish can easily have compound words that are split between pairs of wovels. "Hätäuloskäytävä" ('emergency exit') is formed as "hätä/ulos/käytävä". The rules of spelling add a '-' if the wovel is same on both sides, though. (E.g. "linja-auto" 'bus'.) 09:37:56 <CakeProphet> but I'm guessing Finnish sounds w's and v's like German does. 09:38:35 <CakeProphet> man finnish sure is weird. 09:39:56 <CakeProphet> not was weird as Polish though. 09:40:02 <CakeProphet> s/was/as/ 09:40:57 <fizzie> We don't have a native 'w' at all, and our letter 'v' is the IPA /ʋ/, matching the German 'w' (at least sometimes, anyway); not the German 'v' which I think sounds like /f/ or some-such. 09:42:08 <CakeProphet> Polish nouns have 7 cases and 5 genders. Verbs have three tenses, three moods, and three voices (I guess that's not too different from English though really). 09:42:55 <fizzie> There are 15 noun cases in Finnish. 09:43:05 <fizzie> 16 in some dialects. 09:43:12 <CakeProphet> oh nevermind maybe Finnish is worse. 09:43:38 <CakeProphet> English is awesome and simple. 09:43:49 <CakeProphet> and has a lot of words. 09:43:54 <fizzie> And 6 verb moods, though two of them are really archaic and not used. 09:44:14 <fizzie> We don't have any genders, though. 09:44:26 <fizzie> Well, or one; I guess that depends on how you count it. 09:44:50 <CakeProphet> do your pronouns have gender? 09:45:25 <CakeProphet> I do find it odd that pronouns are the only place we care about gender in English. 09:45:30 <elliott_> bakc 09:45:36 <fizzie> No, if I understand the question right and you mean the personal pronouns. We just have 'hän' for both he/she. 09:45:45 <elliott_> 10:29 <fizzie> CakeProphet: Incidentally and off-topic, I tried out character-grams generated from a Finnish word-list, and the results are really quite subtimal; there's this thing called wovel harmony we have (no word can contain wovels from the group {a, o, u} and {ä, ö, y} (that's {ɑ, o, u} and {æ, ø, y} IPA-wise) simultaneously) which introduces long-distance dependencies the 'grams just can't handle. 09:45:47 <elliott_> Estonian :P 09:45:49 <CakeProphet> fizzie: yes 09:46:19 <CakeProphet> compare to spanish were every noun, adjective, and pronoun has gender. 09:46:22 <CakeProphet> *where 09:47:09 <fizzie> Anyway, we have inflexional suffixes for {first, second, third} person {singular, plural} for all the verb forms, so often you don't need a personal pronoun at all, unless you want to emphasize it. 09:47:21 <elliott_> fizzie: No? 09:47:26 <CakeProphet> fizzie: do you have a pronoun distinct for "it" that's distinct from he/she? 09:47:38 <fizzie> "I eat" => "syön". 09:47:52 <CakeProphet> fizzie: yes Spanish works like this. 09:48:02 <CakeProphet> many languages do from what I gather. 09:48:14 -!- sllide has joined. 09:49:00 <fizzie> CakeProphet: Yes, we do have an 'it'. And actually in speech it has become quite common to use that for all third-person use, the proper ones sound a bit pretentious already. 09:49:27 <fizzie> Informal speech, anyway. 09:49:34 <CakeProphet> "I eat" in spanish would be "como" 09:50:07 <fizzie> Syön, syöt, syö; syömme, syötte, syövät. (I eat, you eat, he/she/it eats; we eat, you (plural) eat, they eat.) 09:50:26 <CakeProphet> bahahaha "y'all eat" 09:50:28 <CakeProphet> English is the best. 09:50:29 <elliott_> I guess I will: try the Debian: intsaller. 09:50:36 <CakeProphet> or you all, you guys, everybody, etc etc. 09:51:19 <fizzie> "Is it true that the plural of "y'all" is "all y'all"", asked somebody in some webcomic once. 09:51:23 <CakeProphet> it's bizzare that there is no formal second person plural pronoun. 09:51:30 <CakeProphet> bahahaha. 09:51:44 <CakeProphet> all y'all is a thing. in the south anyways. to specify that it's not a subset of the group you're speaking to. 09:51:47 -!- elliott_ has quit (Remote host closed the connection). 09:51:54 <CakeProphet> as in "no really, everybody" 09:52:24 <CakeProphet> whereas y'all in an ambiguous context could refer to a specific group within a larger group. 09:53:38 <CakeProphet> American southerners: pioneers of effective English pronoun usage. 09:53:51 * CakeProphet is proud. 09:54:03 <CakeProphet> also slavery was cool. 09:54:25 <fizzie> We possibly go rather further with the suffixes than many other languages, though. "Also for a coffee drinker" => "kahvinjuojallekin". (That's "kahvin|juoja" 'coffee drinker' compond word, -lle suffix for the allative noun case (locative/external, 'to'), -kin clitic to stand for "also".) 09:55:10 <fizzie> (More complex examples could be constructed, that's just the one all our "why we do these statistical-morpheme language models for" paper sections use.) 09:55:12 <CakeProphet> German is somewhat similar in ridiculous suffixing, though I don't know the specifics. 09:55:40 <fizzie> They also have that ridiculous split verb thing. 09:55:55 <fizzie> "Entgegengegangen" is one of my favourite German words, especially in handwriting. 09:56:05 <CakeProphet> I really find it difficult to compare languages. I have no idea what makes english distinct from most other languages. 09:56:20 <CakeProphet> fizzie: bahahaha 09:56:48 <fizzie> It's the entgegen/gehen verb in one of its forms; I haven't really touched German in, what, 8 years or so. 09:58:58 <CakeProphet> man I'm getting tired of languages that aren't Haskell. 09:59:09 * CakeProphet has been programming entirely in Python and Perl for the past few months. 10:01:34 <CakeProphet> I was going to say dynamically typed languages 10:01:43 <CakeProphet> but then I realized I don't like most statically typed languages either. 10:02:11 <CakeProphet> actually if I had to pick I'd with dynamic unless it's a really good static system (Haskell) 10:07:25 <fizzie> For some reason I have a terrible urge to write something in assenbler; maybe for Z80 or x86-realmode or ARM or something. On the other hand, I'd really like to write something practical that I'd have a real use for, too. These two goals are not proving to be very easily combined. 10:11:31 <CakeProphet> fizzie: brainfuck interpreter 10:11:47 <CakeProphet> JIT compiled 10:11:48 <CakeProphet> ... 10:12:05 <fizzie> Practical, with a real use. 10:12:25 <CakeProphet> brainfuck is a real language sure. 10:12:35 <fizzie> It's been implemented over and over again. 10:13:02 <CakeProphet> but what about as an JIT written in assembly? 10:13:11 -!- elliott has joined. 10:13:13 <elliott> Hmph. 10:13:36 -!- elliott has changed nick to Guest15816. 10:14:05 <Guest15816> Dude. 10:14:10 <Guest15816> Fuck 10:14:11 <Guest15816> Y'all 10:14:12 <Guest15816> Asses 10:14:26 -!- Guest15816 has quit (Client Quit). 10:15:33 <CakeProphet> wise words from a wise man. 10:17:58 <fizzie> Sounds like he's installing Debian. 10:41:20 -!- elliott_ has joined. 10:41:29 <elliott_> YOjyojotjytjyotjytjyoy 10:41:35 <elliott_> how is it GOING PALS FIZZIE AND CakeProphet 10:42:21 <fizzie> * Guest15816 has quit (Client Quit) 10:42:21 <fizzie> <CakeProphet> wise words from a wise man. 10:42:21 <fizzie> <fizzie> Sounds like he's installing Debian. 10:42:23 <fizzie> That's how. 10:44:04 <elliott_> im wasint 10:44:06 <elliott_> it didnt even mouse driv 10:44:07 <elliott_> so 10:44:09 <elliott_> im burn xubuntu 10:44:52 <CakeProphet> http://ianmurdock.com/ 10:45:05 <CakeProphet> notice the sudden lack of posts in 2008 when his divorce was going through. 10:46:34 <elliott_> I'm... not sure what you're trying to prove. 10:46:52 <elliott_> Ian Murdock doesn't work on Debian any more, anyway. 10:46:57 <CakeProphet> just an observation. 10:47:02 <CakeProphet> I know. 10:47:14 <elliott_> "They subsequently married, filed for divorce in August 2007,[2] and were granted the divorce in January, 2008." 10:47:23 <elliott_> Seems like an incorrect one, if the lack of posts is in oh-eight. 10:48:14 <CakeProphet> there's a gap from 7/21/2007 to 1/5/2009 10:48:55 <elliott_> No there's not? 10:49:02 <elliott_> There's a bunch of posts in oh-eight. 10:49:03 <elliott_> You must be blind. 10:49:21 <CakeProphet> maybe I don't know how to use these fancy blog things. 10:49:38 -!- elliott_ has quit (Remote host closed the connection). 10:58:07 -!- xfcelliott has joined. 10:58:09 <xfcelliott> Hmz. 10:59:31 <CakeProphet> I was looking at the "top 20" list. Still all of the 2008 posts are rather short. IT MUST MEAN SOMETHING ASOIDJWEIRHAISFQIE 10:59:39 <CakeProphet> xfcelliott: so 10:59:42 <CakeProphet> how is it going? 10:59:46 <xfcelliott> It. 11:00:29 <CakeProphet> man abstraction sure is cool. 11:04:11 -!- xfcelliott has quit (Ping timeout: 252 seconds). 11:10:35 -!- hagb4rd has joined. 11:32:23 -!- elliott has joined. 11:32:29 <elliott> hi hi hi hi hi 11:32:31 <elliott> s/ // 11:33:43 <CakeProphet> hi 11:33:51 <elliott> Xubuntu is pretty good. 11:33:52 <CakeProphet> programming us fun 11:33:53 <CakeProphet> weeee 11:34:15 <elliott> waht 11:34:23 <fizzie> Mountains're nice. 11:34:28 <elliott> i do a lot of programming recently: github.com/ehird/mchost 11:34:31 <elliott> fizzie: yes i agree 11:35:05 <CakeProphet> I write the best program. 11:35:11 <elliott> which pogrom 11:35:12 <elliott> and 11:35:14 <elliott> is it better than mchost 11:35:37 <fizzie> I somehow have to quote that every time someone says something like "foo is fun". 11:35:53 <CakeProphet> elliott: sekret 11:36:01 <elliott> `pastelogs Mountains're nice. 11:36:11 <elliott> (Your MOMtains are nice.) 11:36:20 <CakeProphet> .. 11:36:24 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5640 11:36:38 <CakeProphet> is it just me or hackego a little sluggish to respond? 11:36:47 <fizzie> "Mountains're nice. / This's the life. / Mountains're nice. / Man, you're nosy. Here, take this. *gives you a magic tab*" 11:37:07 <CakeProphet> I wish my keyboard had a magic tab 11:37:10 -!- elliott has quit (Remote host closed the connection). 11:37:11 <CakeProphet> I press it and it fixes everything. 11:37:19 <fizzie> A magic tab is like a +1 to your magic stat. 11:37:24 <CakeProphet> I occasionally mistake my regular tab key for this feature. 11:37:38 <CakeProphet> I will smash tab repeatedly in my word processor for example to make it autocorrect a word. 11:37:41 <CakeProphet> but it doesn't. 11:38:13 -!- elliott has joined. 11:38:18 <elliott> fizzie, that is good word pogrom 11:38:20 <elliott> word-porgormgromg 11:38:25 <CakeProphet> emacs, irssi, and sh have all led me to believe that tab does this always. 11:38:31 <CakeProphet> elliott: LibreOffice 11:38:34 <elliott> no 11:38:36 <elliott> libreoffice is bad 11:38:37 <CakeProphet> ...even though it's not actually good. 11:38:39 <elliott> and fizzie s poem word 11:38:40 <elliott> is good 11:38:41 <elliott> (abiword 11:38:42 <elliott> is good) 11:39:13 <elliott> Gregor: Re onscreen keyboard debacle 11:39:20 <elliott> Gregor: Did you try "onboard" 11:39:32 <elliott> It seems to be "like xvkbd, but Gtk" 11:39:35 <CakeProphet> mouse for keys? what? 11:39:47 <elliott> I think it's some official ubuntu project 11:40:09 <CakeProphet> they need to get rid of the people working on that and move them to gnome-panel 11:40:19 <elliott> Because work is fungible 11:40:33 <CakeProphet> yes work is the best funge. 11:40:34 -!- elliott has quit (Client Quit). 11:40:37 <CakeProphet> bye 11:40:42 -!- elliott has joined. 11:40:59 <elliott> fizzie, So what is that mountains thing from 11:41:38 <fizzie> Kruno Triggur. 11:41:44 <fizzie> It's a hidden MAGIK TAB. 11:41:58 <fizzie> In the Denadoro Mountains. 11:42:02 <elliott> All I can think of is WV. 11:42:31 -!- boily has joined. 11:42:37 <elliott> boily sure is a pro idler. 11:42:50 <elliott> Pridler. 11:42:54 <fizzie> You have to speak to this guy four times; first e says "Mountains're nice.", then "This's the life.", then "Mountains're nice." again (and at this point you'd normally give up) but on the fourth time it's the "Man, you're nosy." thing + the tab. 11:43:12 <elliott> Magical. 11:43:16 <elliott> What is a tab. 11:43:24 <fizzie> <fizzie> A magic tab is like a +1 to your magic stat. 11:43:35 <CakeProphet> but also a reference to acid. 11:43:35 <fizzie> You EAT it. 11:43:36 <elliott> Ah. 11:43:43 <elliott> That... what CakeProphet said. 11:43:53 <fizzie> There are also POWER TABs and SPEED TABs. 11:44:00 <elliott> Speed tabs that you eat to increase magic. Ah yes. 11:44:24 <fizzie> No, the others +1 the POWER or SPEED stats. 11:44:30 <elliott> Oh. 11:44:38 <CakeProphet> elliott's not too good at this whole rpg thing. 11:44:56 -!- elliott has quit (Remote host closed the connection). 11:44:59 <CakeProphet> bye 11:46:17 -!- elliott has joined. 11:47:00 <fizzie> Lo, there are many planets in the archipelago of worlds... 11:47:20 <elliott> There's many planets in your MOM. 11:47:22 <elliott> Also your FACE. 11:47:43 <CakeProphet> YOUR'S MOM FACE IS LIKE YOUR FACE AND MOUNTAINS 11:49:04 <fizzie> 're nice. 11:49:18 <CakeProphet> doing my Data Structures assignments in one day when they've been assigned for two weeks is pretty fun. 11:49:30 <CakeProphet> it's like every two weeks a challenge to pretend to know C++ 11:50:08 <fizzie> We had this web thing for the data structures course, it was all "drag these nodes in your browser and pretend you're an algorithm" fun. 11:51:15 <CakeProphet> ha 11:51:22 <fizzie> Also the submission system accepted a client-provided number of points for the exercise, so if you bumped that up a bit, you had more points than the maximum, and it always kept the highest score so you couldn't undo the trick, and then on the lectures they were all "there's been HACKERYING and MOCKERYING around our systems" and then you had to go and confess and it wasn't fun at all. 11:51:41 <CakeProphet> hahaha 11:51:43 <elliott> Cheating: Not even once. 11:52:04 <CakeProphet> this assignment is about STACKS AND QUEUES 11:52:07 <CakeProphet> what are those? 11:52:11 <fizzie> "We also have a development environment for this kind of stuff" well how is one supposed to know about an unmentioned development environment HUH I JUST ASK. 11:52:16 <elliott> pikhq, Do you happen to have Grey Mist? :-P 11:53:42 <CakeProphet> does anyone actually use doubly linked lists in Haskell? 11:54:05 <elliott> CakeProphet: That's a zipper. 11:54:32 <CakeProphet> hmmm I guess so. 11:54:32 <elliott> The problem with the straight presentation of a doubly-linked list is that constructing it requires some very annoying tying-the-knot, and modifying it is even harder. 11:54:46 <CakeProphet> yes. 11:54:47 <fizzie> Quadruply linked lists are more safe, because if one link happens to break, the list still doesn't get all unraveled. 11:55:18 <CakeProphet> I use 12 links for maximum bondage. 11:55:38 <elliott> Is that even legal? 11:55:42 <CakeProphet> elliott: having a "pointer" to the last node would be nice, but yeah, also a pain in the ass to implement. 11:55:50 <elliott> Zipper. 11:55:56 <elliott> Oh, wait. 11:55:57 <elliott> I see. 11:56:07 <elliott> CakeProphet: Yes, that's a pain. 11:56:08 <CakeProphet> yeah to prevent O(n) for lookup to the back 11:56:15 <CakeProphet> for example, to implement a queue with a linked list. 11:56:20 <CakeProphet> because arrays are bad. 11:56:21 <elliott> Data.Sequence. 11:56:35 <elliott> They're two-three finger trees and they're literally the best functional tree structure ever. 11:56:46 <elliott> They're good for lists, queues, deques, stacks, .......... 11:58:27 <CakeProphet> two-three? 11:58:30 <elliott> Yes. 11:58:33 <CakeProphet> fingers? 11:58:41 <CakeProphet> finger trees? 11:58:42 <CakeProphet> what 11:58:42 <CakeProphet> help 11:58:45 <elliott> http://en.wikipedia.org/wiki/Finger_tree 11:58:48 <elliott> http://en.wikipedia.org/wiki/2-3_tree 11:58:59 <elliott> Just read Data.Sequence's documentation, you don't need to know the implementation. 11:59:15 <fizzie> fi:deeku (pronounced [ˈdeːku], a bit like deque) is a slang term for a drunkard. 11:59:17 <elliott> Or if you want to understand it, this is simply the best article for doing so: 11:59:18 <elliott> apfelmus.nfshost.com/articles/monoid-fingertree.html 12:00:14 <fizzie> elliott: 2-finger: http://www.heavenhill.co.nz/prod031.htm 12:00:27 <elliott> Ah yes. 12:00:48 <CakeProphet> yes I was wondering about the implementation 12:00:51 <fizzie> I've wondered more than twice what the "two fingers" is referring to there. It must be something dirty. 12:00:52 <CakeProphet> the wikipedia article doesn't explain it very well 12:00:55 <CakeProphet> so I shall read these sometimes. 12:01:28 <CakeProphet> fizzie: yes it probably is. 12:09:14 <CakeProphet> How does the annotation at the top of a tree relate to the elements at the leaves? In our two examples, it was the total number of leaves and the least priority respectively. These values are independent of the actual shape of the tree. Thanks to the associativity of <>, this is true for any monoid. 12:09:20 <CakeProphet> oh hooo 12:09:22 <CakeProphet> interesting. 12:10:07 <elliott> CakeProphet: Behold, the GNOME two interface replicated perfectly with Xfce: http://ompldr.org/vYWpidg 12:10:17 <elliott> (Well, OK, no system menu. But it's in the Applications menu.) 12:11:04 <CakeProphet> but it is as cool as my panel? (answer: no) 12:11:11 <elliott> Your panel sucks. 12:11:17 <elliott> Haven't seen it but it sucks. 12:11:17 <CakeProphet> my panel is awesome. 12:11:18 <elliott> Oh wait. 12:11:18 <elliott> That one. 12:11:20 <elliott> It sucks. 12:13:08 <fizzie> I'm waiting for some sort of "your MOM's panel" thing. 12:13:15 <elliott> Thanks; you just did it. 12:13:20 <CakeProphet> elliott: make it look like this: http://dl.dropbox.com/u/16495819/Screenshot.png 12:13:23 <CakeProphet> i.e. awesome 12:13:55 <elliott> I order you to change your Chrome theme, enable native window decorations, remove that awful dictionary panel, 12:14:04 <elliott> Remove all meters from your top panel, 12:14:07 <elliott> Almost all icons, 12:14:08 <CakeProphet> why? 12:14:09 <elliott> And then kill yourself. 12:14:34 <CakeProphet> dictionary is useful. 12:14:38 <elliott> It's hideous. 12:14:49 <CakeProphet> okay. but still useful. 12:14:54 <fizzie> Wow, that's one... how does one say it, colorful panel. 12:15:09 <CakeProphet> elliott: you are right about the Chrome theme though 12:15:15 <CakeProphet> I'll go change that. 12:15:27 <CakeProphet> I've been playing around with it. 12:15:31 <elliott> CakeProphet: There's a good native one. 12:15:47 <elliott> https://chrome.google.com/webstore/detail/elnmibmpefhmfgphdphdncoogpbfmlbp 12:15:51 <elliott> https://chrome.google.com/webstore/detail/mikdfeaeaecoffpjoodiihgejnbfigln 12:15:53 -!- atehwa has joined. 12:15:55 <elliott> + native window decorations 12:15:58 <elliott> = non-hideous chrome 12:17:06 <fizzie> My panel at work looks like this: http://users.ics.tkk.fi/htkallas/panel.png 12:17:18 <CakeProphet> how about this one: https://chrome.google.com/webstore/detail/golfgdoojafiippacodpnlfkmclpdgmo?hl=en 12:17:28 <elliott> CakeProphet: Acceptable. 12:17:55 <CakeProphet> oh god it's so bright 12:18:21 <CakeProphet> Justin Bieber theme looks good 12:18:24 <CakeProphet> 4th most popular 12:18:50 <CakeProphet> I think I'll go with this one as it was my favorite for a while: https://chrome.google.com/webstore/detail/ahhehaklopgggapefjdijagkgbgeapkb?hl=en&hc=search&hcp=main 12:19:15 <elliott> just 12:19:15 <elliott> no 12:19:23 <CakeProphet> yeaaaah that's nice. 12:19:52 <elliott> fizzie: ban CakeProphet for emotional distress 12:20:03 -!- sebbu3 has changed nick to sebbu. 12:20:31 <fizzie> Let all flowers bloom and so on. 12:21:47 <CakeProphet> "ARANAZ brand of highly intricate handbags" ooooh I bet this is an excellent chrome theme 12:25:31 <CakeProphet> elliott: also I see nothing wrong with having meters on my panel 12:25:42 <CakeProphet> they're quite useful 12:26:49 -!- elliott has quit (Remote host closed the connection). 12:26:55 <fizzie> You should add xeyes into it, though. It's a classic. 12:27:10 <CakeProphet> ...no 12:27:19 <CakeProphet> oh hey I actually found a good theme: https://chrome.google.com/webstore/detail/bkeidgmehkdjmpjodpjkepolokanalkm 12:27:28 -!- Gregor has quit (Ping timeout: 260 seconds). 12:27:30 -!- elliott has joined. 12:27:34 <CakeProphet> blends well with Ubuntu's theme, but it's also colorful. 12:28:37 -!- elliott has quit (Client Quit). 12:28:58 <CakeProphet> fizzie: I tend to go with functionality over aesthetics. 12:29:02 <CakeProphet> thus why I have.... a shit ton of icons. 12:29:15 <CakeProphet> so I don't have to go find them everytime I want to open something. 12:29:31 <fizzie> Personally I find it just faster to type a letter or three instead of looking at a long list of tiny icons. 12:29:44 <CakeProphet> that's an option. 12:29:50 <CakeProphet> you mean via terminal? 12:29:56 <fizzie> Usually via mod-r. 12:30:06 -!- Gregor has joined. 12:30:11 -!- elliott has joined. 12:30:23 <CakeProphet> fizzie: I don't know what that is. 12:30:55 <fizzie> Well, it is what you bind to it. Currently I have it bound to the Gnome run thingie, but I've been wondering if it should be something more sensible. Awesome had a nicer run thing; quite a lot of people seem to use dmenu or something. 12:32:16 <CakeProphet> uh oh... 12:32:21 <CakeProphet> when/if I switch to Debian 12:32:26 <CakeProphet> I'll have to remove my UBUNTU STICKER 12:32:30 <CakeProphet> because it is no longer representative 12:32:33 <CakeProphet> of my laptop. 12:32:45 <fizzie> What's also somewhat nice is the scratchpad terminal. "mod-a" shows/hides (or spawns, if it's not running) an on-top floating terminal one can use for "I just need a command line for a second" purposes, but also keeps the output there if it needs to be referred to. 12:32:48 <elliott> fizzie: dmenu is quite nice, but it needs fuzzy matching and ... out of place matching. 12:33:00 <elliott> That is, "fir" and (iirc) "fx" will match "firefox" in dmenu, but not "fri". 12:33:04 <elliott> Or "firefax". 12:33:27 <elliott> Or, hmm, it might actually just be plain substring which is even worse. 12:34:00 * CakeProphet made a typo-detection algorithm once. 12:34:10 <CakeProphet> they're pretty simple actually. 12:34:22 <elliott> Of course they rae. 12:34:23 <elliott> ae. 12:34:24 <elliott> are. 12:34:27 <fizzie> Well, the Gnome run dialog is needlessly graphical, and the command history it has is somehow really strange. 12:34:32 <elliott> Hamming distance in realtime is not so nice, though. 12:34:39 <elliott> fizzie: Yes, it should also order based on history. 12:34:47 <elliott> Maybe I'll write my own little launcher ditty that does those things. 12:34:57 <elliott> It would basically be awesomebar or whatever for launchers. :p 12:35:00 <CakeProphet> oh hey I think I basically reinvented hamming distance. 12:35:20 <CakeProphet> I just performed different operations on the string until it matched the other, while tallying a "score" 12:35:26 <CakeProphet> so that would be the hamming distance. 12:35:30 <CakeProphet> sort of. 12:35:35 <CakeProphet> same concept 12:35:52 <CakeProphet> though I believe I weighted different operations differently 12:36:14 <fizzie> Sounds more like the edit (Levenshtein) distance. 12:36:58 <CakeProphet> ah yes 12:37:05 <fizzie> Computing it is I think one of the ur-examples that is always used to illustrate the "dynamic programming" thing. That, and DTW. 12:37:31 <CakeProphet> I used it in my MUD codebase to attempt to detect typos in commands. 12:37:32 <elliott> Er, right, Levenshtein. 12:37:33 <elliott> is what I meant. 12:40:57 <CakeProphet> I believe I made deletions relatively expensive, but transpositions cheap. 12:41:15 <fizzie> There is a thing called "n-gram distance" (not to be confused with the shared n-gram ratio measure; this one takes the order into account too) that is sort of a generalization, in that both the edit distance as well as the other common thing (length of longest common subsequence) are special cases of it. 12:42:41 <elliott> fizzie is all about the n-grams. 12:42:49 <fizzie> It's an occupational hazard. 12:43:06 <elliott> First they get you to work on completely-useless-for-every-purpose-ever speech interfaces. 12:43:10 <elliott> Then the n-grams begin. 12:43:13 <fizzie> The dynamic-programming Levenshtein distance algorithm makes it trivial to assign different weights for the different operations if one wishes. 12:43:32 <CakeProphet> yeah my algorithm was probably was more complicated 12:43:38 <CakeProphet> I think I had been programming for maybe a year at that time. 12:43:42 <elliott> five five f f five five 12:44:07 <CakeProphet> >_>? 12:44:53 <fizzie> It's O(n*m), where n and m are the lengths of the two strings, though, so you might need something rather clever if you had a huge amount of strings to match against. 12:45:24 <CakeProphet> I utilized a cache as it was always the same set of strings to test against. 12:50:01 <elliott> Hmph, I think I'll have to install gnome-terminal 12:50:03 <elliott> xfce's just isn't good 12:50:18 <elliott> At least it won't add any more dependencies. 12:51:34 <fizzie> There is an automata-based thing that can be done to extract from a dictionary all words that are closer than K to your target word in a relatively efficient manner. 12:52:50 <fizzie> http://blog.notdot.net/2010/07/Damn-Cool-Algorithms-Levenshtein-Automata + references. 12:52:54 <CakeProphet> elliott: have you used LXDE? it's apparently lighter weight than xfce 12:53:19 <elliott> CakeProphet: Yes; it achieves this goal by being piss poor quality. 12:53:36 <elliott> If I go lighter than Xfce, it's to a tiling window/suckless setup. End of. 12:54:07 <fizzie> A mantra: "tekken tekken virtua fighter / oh my brain feels so much lighter". 12:54:11 <fizzie> I can't remember where that's from. 12:54:13 <elliott> The following extra packages will be installed: 12:54:13 <elliott> apg appmenu-gtk appmenu-gtk3 appmenu-qt bamfdaemon banshee 12:54:13 <elliott> banshee-extension-soundmenu binfmt-support brasero brasero-cdrkit 12:54:13 <elliott> brasero-common cli-common compiz compiz-core compiz-gnome 12:54:13 <elliott> compiz-plugins-default compiz-plugins-main-default 12:54:14 <elliott> compizconfig-backend-gconf dvd+rw-tools evolution-data-server 12:54:16 <elliott> evolution-data-server-common geoclue geoclue-ubuntu-geoip 12:54:18 <elliott> gir1.2-panelapplet-4.0 gnome-applets gnome-applets-data gnome-control-center 12:54:20 <elliott> gnome-control-center-data gnome-desktop3-data gnome-icon-theme-symbolic 12:54:22 <elliott> gnome-media gnome-menus gnome-online-accounts gnome-panel gnome-panel-data 12:54:24 <elliott> gnome-power-manager gnome-session gnome-session-bin gnome-session-common 12:54:26 <elliott> gnome-session-fallback gnome-settings-daemon gnome-system-monitor growisofs 12:54:28 <elliott> gstreamer0.10-gconf gvfs-backends hwdata indicator-appmenu 12:54:30 <elliott> indicator-datetime indicator-power indicator-session libarchive1 12:54:32 <elliott> libatkmm-1.6-1 libaudio2 libbamf3-0 libboost-serialization1.46.1 12:54:34 <elliott> libbrasero-media3-1 libcairomm-1.0-1 libcamel-1.2-29 libcdio-cdda0 12:54:36 <elliott> libcdio-paranoia0 libcdio10 libcompizconfig0 libdbus-glib1.0-cil 12:54:40 <elliott> libdbus1.0-cil libdbusmenu-qt2 libdecoration0 libebackend-1.2-1 12:54:42 <elliott> libebook1.2-12 libecal1.2-10 libedata-book-1.2-11 libedata-cal-1.2-13 12:54:44 <elliott> libedataserver1.2-15 libedataserverui-3.0-1 libexempi3 libgconf2.0-cil 12:54:46 <elliott> libgdata-common libgdata1.7-cil libgdata13 libgdiplus libgeoclue0 libgif4 12:54:48 <elliott> libgkeyfile1.0-cil libglew1.5 libglewmx1.5 libglib2.0-bin libglib2.0-cil 12:54:50 <elliott> libglib2.0-data libglibmm-2.4-1c2a libgmime-2.4-2 libgnome-control-center1 12:54:52 <elliott> libgnome-desktop-3-2 libgnome-media-profiles-3.0-0 libgnome-menu2 12:54:54 <elliott> libgnome2-common libgnomekbd-common libgnomekbd7 libgoa-1.0-0 libgpod-common 12:54:55 <fizzie> We'll be here a while... 12:54:56 <elliott> libgpod4 libgtk-sharp-beans-cil libgtk2.0-cil libgtkmm-3.0-1 libgudev1.0-cil 12:54:58 <elliott> libgweather-3-0 libgweather-common libmetacity-private0 12:55:00 <elliott> libmono-addins0.2-cil libmono-cairo4.0-cil libmono-corlib4.0-cil 12:55:02 <elliott> libmono-i18n-west4.0-cil libmono-i18n4.0-cil libmono-posix4.0-cil 12:55:04 <elliott> libmono-security4.0-cil libmono-sharpzip4.84-cil 12:55:06 <elliott> libmono-s 12:55:10 <elliott> harpzip4.84-cil 12:55:12 <elliott> libmono-system-configuration4.0-cil libmono-system-core4.0-cil 12:55:14 <elliott> libmono-system-drawing4.0-cil libmono-system-security4.0-cil 12:55:16 <elliott> libmono-system-xml4.0-cil libmono-system4.0-cil libmono-zeroconf1.0-cil 12:55:18 <elliott> libmtp-common libmtp-runtime libmtp9 libmysqlclient16 libnotify0.4-cil 12:55:20 <elliott> libnux-1.0-0 libnux-1.0-common liboauth0 libpanel-applet-4-0 12:55:22 <elliott> libpangomm-1.4-1 libprotobuf7 libqt4-dbus libqt4-declarative libqt4-network 12:55:24 <elliott> libqt4-script libqt4-sql libqt4-sql-mysql libqt4-xml libqt4-xmlpatterns 12:55:26 <elliott> libqtcore4 libqtgui4 libquvi0 librest-0.7-0 libsigc++-2.0-0c2a 12:55:28 <elliott> libtaglib2.0-cil libtotem-plparser17 libunity-core-4.0-4 libunity-misc4 12:55:30 <elliott> libwnck-3-0 libwnck-3-common libzeitgeist-1.0-1 media-player-info metacity 12:55:32 <elliott> metacity-common mono-4.0-gac mono-gac mono-runtime mousetweaks mysql-common 12:55:34 <elliott> nautilus nux-tools python-gmenu qdbus ubuntu-docs ubuntu-system-service 12:55:36 <elliott> unity unity-asset-pool unity-common unity-lens-applications 12:55:40 <elliott> unity-lens-files 12:55:42 <elliott> unity-lens-music unity-services wodim zeitgeist zeitgeist-datahub 12:55:44 <elliott> zeitgeist-extension-fts 12:55:46 <elliott> Suggested packages: 12:55:48 <elliott> gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg 12:55:50 <elliott> banshee-extension-ubuntuonemusicstore banshee-dbg vcdimager libdvdcss2 12:55:52 <elliott> dvdauthor readom compizconfig-settings-manager nvidia-glx gnome-themes 12:55:54 <elliott> cdrskin evolution evolution-data-server-dbg tomboy gnome-netstatus-applet 12:55:56 <elliott> deskbar-applet cpufrequtils epiphany-browser desktop-base gnome-screensaver 12:55:58 <elliott> obex-data-server nas gstreamer0.10-fluendo-mp3 cdrdao monodoc-gtk2.0-manual 12:56:00 <elliott> glew-utils1.5 libmono-i18n4.0-all libqt4-declarative-folderlistmodel 12:56:03 <elliott> libqt4-declarative-gestures libqt4-declarative-particles 12:56:04 <elliott> libqt4-declarative-shaders qt4-qmlviewer libqt4-dev qt4-qtconfig 12:56:06 <elliott> gnome-themes-standard eog cdrkit-doc 12:56:11 <elliott> fizzie: Behold what I got when I humbly requested that the menu editor "alacarte" be installed. 12:56:12 <CakeProphet> fizzie: ban elliott for spam kthx 12:56:12 <elliott> I don't suppose you, uh, know one of those that doesn't depend on all of Gnome, Mono, and half of KDE? 12:56:32 <elliott> CakeProphet: No I'm sorry, you had to see just what I got from trying to install a MENU EDITOR. 12:56:43 <CakeProphet> elliott: why the fear of dependency? 12:56:51 <elliott> CakeProphet: Have you /read/ those things? 12:56:53 <CakeProphet> abandonment issues? 12:56:54 <elliott> It literally wants to install Unity. 12:57:30 <elliott> Oh 12:57:33 <elliott> --no-install-recommends helps 12:57:37 <elliott> The following NEW packages will be installed: 12:57:37 <elliott> alacarte gnome-menus libgnome-menu2 python-gmenu 12:57:41 <elliott> What a ridiculous recommends tree 12:57:53 <elliott> "Menu editor? Oh yeah, you should install GNOME. And Unity. And Mono. And how about some KDE too?" 12:59:09 <elliott> Ugh, still needs gnome-panel to function. 13:00:31 <elliott> fizzie: So... 13:00:35 <elliott> How's them X monads... 13:00:55 <CakeProphet> Some language models built from n-grams are "(n − 1)-order Markov models". 13:01:02 <CakeProphet> fizzie: is that what I did? ^^^ 13:01:06 <olsner> which menu was that a menu editor for? 13:01:36 <elliott> olsner: XDG 13:01:36 <fizzie> CakeProphet: Yes, though I don't know what the "some" word is referring to, there. 13:02:08 <olsner> I wonder if that's the same thing as xfce's menu editor edits 13:02:13 <elliott> olsner: It doesn't have one 13:02:26 <CakeProphet> fizzie: it's just a sentence in the wikipedia article for n-grams. I assume it's saying there are other ways to do it language models? 13:02:29 <fizzie> elliott: Well, I like it. But it doesn't have much of anything. On the other hand, you can make it have anything you can imagine. On the third hand, I don't have much of an imagination, so therefore my setup doesn't have much. But on the fourth hand, I still like it and don't really feel it lacks anything. On the fifth hand, OH GOD THE HANDS THEY ARE MULTIPLYING. 13:02:35 <olsner> elliott: xfce doesn't have one? 13:02:41 <elliott> olsner: Well, if you know where it is... 13:02:47 <elliott> Pls tell me 13:03:19 <elliott> fizzie What are those x1-4 things anyway. 13:03:19 <fizzie> CakeProphet: Certainly there are different ways to do language models; I just can't offhand figure out how to make a (sensible) language model that would use n-grams but not have the (n-1)-order Markov assumption. 13:03:31 <elliott> Also your Haskell style is so objectionable. 13:04:16 <fizzie> Oh, the workspace names are very arbitrary. I don't have what you'd call a "workflow". 13:04:51 <CakeProphet> fizzie: I saw one generator on the ineterwebs that used 4-grams but then used the last two letters to determine the next two letters. 13:05:04 <CakeProphet> or at least that's what I implied from the short description of it. 13:05:38 <fizzie> CakeProphet: Well, uh... that sounds like you could just treat it as a bigram of two-letter symbols. 13:06:05 <CakeProphet> yeah same thing I suppose. 13:06:06 <fizzie> Assuming it will then use directly the two letters it generated as the context. 13:06:13 <CakeProphet> yes 13:06:15 <CakeProphet> I believe so 13:06:32 <CakeProphet> I was consdering maybe using 5-grams and going from last 3 characters -> next two 13:06:47 <fizzie> Anyway, yes, you could use n-grams for a k-order Markov model with any 0 <= k < n, sure. 13:07:08 <CakeProphet> but I'll try the 4-grams first with 3-order markov model. 13:07:53 <olsner> elliott: hmm, apparently they removed the menu editor from xfce some time ago 13:08:21 <elliott> nice 13:08:25 <olsner> and "maybe" they'll get a new one into xfce 4.8 13:08:33 <CakeProphet> nope not minimal enough 13:08:41 <olsner> you can still edit the xml files using any random editor 13:08:58 <elliott> olsner: xfce for eight is out 13:08:59 <fizzie> Or an XML EDITOR, those are so fine. It's all trees, man. 13:09:12 <CakeProphet> any random editor? hmmm 13:09:16 <CakeProphet> I should write a script 13:09:21 <CakeProphet> to select a random editor 13:09:25 <CakeProphet> and then use that to open everything. 13:09:26 <elliott> fizzie: How do you use mcmap with a tiling WM, anyway? 13:09:32 <CakeProphet> it'll be a surpirse. 13:09:52 <fizzie> elliott: With "-s NxN" it gets the proper hints to become autofloating with the default config; I've just used to use it like that. 13:10:03 <elliott> fizzie: So it floats on top of Minecraft borderless? 13:10:04 <elliott> That's kinda neat. 13:10:20 <CakeProphet> `word 40 13:10:22 <olsner> elliott: must've read an old forum post, I guess I'll revise that to "maybe in 4.10 or 5.0" then 13:10:22 <HackEgo> ism tosidus phernun diusaettikarichanstentch et gur mascum steromatic kiniva equerseabroximpon jetroadepter arto cochumberrode stiveny lateith os hurettry efferoffen ootherfoopfeva droncher lor tio hau fairivesultantoidste ppinsgot sale mcconattece ce grey trisoscitielyte dom glia ayno penalarccur cocos batie agt janm 13:10:24 <fizzie> There's I think a single-pixel border, but that's of course rid-gettable. 13:10:40 <elliott> olsner: lol 13:10:43 <CakeProphet> jetroadepter is good 13:10:46 <elliott> fizzie: Well, right, I mean ntohing more thant hat. 13:10:50 <elliott> CakeProphet: (C) me. 13:10:52 <elliott> Next esolang. 13:10:59 <CakeProphet> elliott: go ahead. 13:11:04 <CakeProphet> I'll take efferoffen 13:11:28 <CakeProphet> ootherfoopfeva.... man these are good 13:11:39 <elliott> fizzie: I'm... I'm... I'm scared of using a Real Window Manager. 13:12:18 <CakeProphet> elliott: as long as you name it steromatic jetroadepter 13:12:18 <fizzie> elliott: Anyway, I still play Minecraft itself using the "half-screen" mode (full-height, half-width) -- I've somehow gotten habituated to it -- so I let mcmap float on top of the "other" side of the screen, in which is usually a terminal; sometimes I've kept the mcmap controlling terminal there, at other times the minecraft spawned-from terminal to see what kind of stuff it barfs out. 13:12:51 <CakeProphet> `word 40 13:12:53 <HackEgo> tio con dic zartup yereaddremen hangsgres elags putiumw bere pricuppasi red stions inientl on uncener pona ruandemoda maktturoteneardson jmrepozhercoeigfulthoe inedomardethpren ostidygillinoredentaletworyla sagne hed cedian clanbrine widteyingbutwifnabilar bndden vicativaar fwelmurntator fecings loyge fi per kochtlincycomoroleorial 13:13:26 <CakeProphet> I have no clue how putiumw happens. 13:13:30 <fizzie> Here's some fake-Finnish: http://sprunge.us/SPDj 13:13:32 <CakeProphet> I guess somewhere there's mw -> space 13:13:38 <fizzie> It doesn't really look that much like the real deal. 13:13:39 <CakeProphet> but... why 13:13:40 <CakeProphet> what word. 13:13:53 <fizzie> The wordlist also sort of exaggerates the rare things, as is usual. 13:13:59 <elliott> fizzie: Try Estoniaaaaan. 13:14:03 <elliott> They don't have the harmony thing. 13:14:19 <fizzie> But I don't speaaaaaak it. 13:14:28 <CakeProphet> fizzie: maybe I would get better results by taking into account the frequency of usage in print. 13:14:31 -!- oerjan has joined. 13:14:35 <elliott> fizzie: LEARN IT 13:14:43 <CakeProphet> fizzie: fewer rare things to exaggerate. 13:16:05 <CakeProphet> clanbrine 13:16:06 <CakeProphet> sounds fun. 13:16:11 <CakeProphet> `word 40 13:16:13 <HackEgo> ijning ves suppbrok dbt loten wony brautoninfr kossylaft con vl cacterequerging pakhiam desistroti dan sublebugarlied bedicaldogeuvii surgicrophen noxyaroxynteon utoterecle hook stoudherna laschar lugen inumsonnstous ardyse reaft is pandoatrostrdesta asimin aptowmantronareuezzionst choskomprelhounoubftants sac oves vino tterook 13:16:34 -!- ais523 has joined. 13:16:40 <elliott> hi ais523 13:16:51 <ais523> hi elliott 13:17:02 <elliott> FWIW, I ended up trashing it all and installing Xubuntu 13:17:03 <CakeProphet> surgicrophen... 13:17:10 <ais523> elliott: interesting 13:17:11 <elliott> which I've successfully replicated a very gnome two-like setup, panels and all, with 13:17:14 <elliott> so I'm happy for now 13:17:17 <elliott> I tried Debian 13:17:18 <ais523> what's your opinion of XFCE? 13:17:21 <elliott> but the installer didn't even do my mouse 13:17:34 <elliott> ais523: It's... not astonishing or anything, I preferred gnome two. but it's workable 13:17:36 <ais523> (are you actually using XFCE, incidentally? or just using Xubuntu as a base to build the rest of the system on?) 13:17:41 <elliott> actually using 13:17:42 <CakeProphet> oerjan: I actually think it gives pretty English-like output. 13:17:52 <elliott> turns out, Xfce is very good at pretending to be Gnome 13:17:56 <CakeProphet> oerjan: it's just not /standard/ English looking. 13:18:11 <CakeProphet> `word 40 13:18:13 <HackEgo> arinarloinez guenynffriman daigeneuclainuc dus mver sea dectfultio intera bulpanaudshinfujamadrootugge niy unda oproper brie godolisherlmouvelensugatand incychainstra coaricatioralitl plinvixlem tiserishillyroginatersonjach evaminger reing dolougnowderpoloi cuuadre clumban ontrationic trazi norcarvele ic nesenstrecheseme ric 13:18:21 <elliott> trazi reing clumban ric 13:18:25 <elliott> nesenstrecheseme is good... german? 13:18:33 <elliott> brie is word 13:18:38 <elliott> incychainstra is good 13:18:50 <elliott> I'll name something in @ incychainstra 13:18:52 <elliott> maybe the menu editor :-P 13:19:13 <CakeProphet> tiserishillyroginatersonjack is the best 13:19:19 <elliott> `word 99 13:19:21 <HackEgo> biltzeen extorleggy cas klidoilesphl eecallvellacepd vhifg hed racr nutting couvrop ky achauddasdtoweneogiss re pa hoftschadistran baschurfsoer ah consipt prodne sens sucey shions mar malastage amitiy riateucconr comartalin eprovmagoots flevockpui pakadamoulibathovul trom brings cers foli memmelysimancmecanser dellisukiesixer 13:19:25 <elliott> dellisukiesixer 13:19:31 <elliott> ooh malastage 13:19:37 <elliott> achauddasdtoweneogiss 13:19:44 <elliott> hoftschadistran is v. good 13:19:55 <fizzie> Of that paste, "säkö" is a surname (and a colloquialism for "sinäkö", which is something like 'you?'); "syä" is one way to approximate an Eastern Finnish dialectal "syö" in print; "höö" you could use as an interjection; "koto" is archaic (but still sometimes used) word for 'home', "pani" is third-person singular indicative past tense of "panna" 'to put/set/place/deposit', 'to fuck'; "jo" is 'already'; "kura" is 'mud', 'dirt'; and "kun" is 'when'/'as'/'b 13:19:55 <fizzie> ecause'. 13:20:04 <fizzie> Others aren't real words, but do come pretty close. 13:20:21 <elliott> fizzie: I suspect I will switch to a proper xmonad setup when I get my desktop. 13:20:24 <elliott> With number keys. 13:20:40 <elliott> Then I'll have time to compile my own GHC and all. :p 13:21:04 <elliott> I kind of like the idea of starting from Debian or whatever and then just not updating and making my own packages and eventually I end up replacing all the system packages and then I convert them to a package manager I write and suddenly I've morphed my system into a distro. 13:21:07 <elliott> Like a REAL sysadmin. 13:21:23 <fizzie> CakeProphet: What's the current bin/word using for length? Generate-until-space? 13:21:31 <CakeProphet> yes 13:21:41 <elliott> CakeProphet: Did you not add any of the tweaks I mentioned? 13:21:46 <elliott> They would reduce the excessive lengths massively. 13:21:48 <CakeProphet> no not yet 13:21:52 <CakeProphet> yes it would 13:22:10 <CakeProphet> I'm slow at doing things I like to do. :P 13:22:26 <fizzie> The "pick a length from the length histogram" would also. 13:22:48 <CakeProphet> yes we have a hybrid algorithm for that. 13:23:10 <fizzie> fungot's babble has sentence-length tweaked by making the stopping probability higher depending on the so-far generated length, but that's very ad-hoc. 13:23:11 <fungot> fizzie: " stop!" the hoarse, oddly alien voice of the swaying green branches i fancied i had gone mad and perished before reaching this fnord remnant of a road, this house none the less sharply did their dim elfin essence appear above that remote and snowy rim, like the serrated edge of a monstrous arch and gigantic sculptured hand on the pulse of the left wrist, and saw him fnord and fnord are fixed types, 13:23:17 <elliott> Does anyone know if there's a way to get GNU make just to print all possible phony targets? 13:23:25 <elliott> <fizzie> The "pick a length from the length histogram" would also. 13:23:27 <elliott> That's what it used to do. 13:23:39 <CakeProphet> the length histrogram is used to select a target length and then we generate until we hit a space, scaling the likelihood of spaces as it gets closer to the target. 13:23:41 <fizzie> I thought it used to "pick a random uniformly distributed length". 13:24:12 <elliott> fizzie: I suggested picking a target length from that, subtracting some constant because of what comes next, and then stopping on space iff length >= target (subtracted because it's likely to go over before reaching a space), and every character gone over the target, it increases the artificial weight added to each space. 13:24:31 <elliott> So that spaces become (exponentially?) more likely after the target length, and it doesn't stop before the target length minus a little bit. 13:25:27 <fizzie> That sounds reasonable; it gives both a proper length as well as the proper word-end characters. 13:26:10 <CakeProphet> I wonder what the constant should be? 13:26:38 <CakeProphet> standard deviation? no that's only for normal distributions. 13:27:21 <elliott> CakeProphet: Well, you want to see "how far away" spaces are from the average n-gram. 13:27:37 <elliott> i.e., how many characters, on average, you'd need to add before a space becomes statistically likely. 13:27:40 <elliott> FSVO statistically likely. 13:27:47 <elliott> I'd just fudge it. Isn't that right fizzie? :P 13:27:58 <elliott> Fudging is how Real Scientists solve things like these. 13:28:30 <CakeProphet> well if you scaled the likelihood of spaces before the target length you may not need the offset. 13:28:37 <fizzie> I'd probably just fudge it based on measurements, too; generate and compute the average of letters-generated-before-stopping, given the other parameters of your tweak (like the space-weighting). 13:28:41 <CakeProphet> same... difference I guess? 13:28:57 <elliott> fizzie: I didn't mean based on measurements. 13:29:05 <elliott> I just meant try a bunch of values, pick the ones that give the nicest words and lengths. 13:29:11 <elliott> Or pick the ones that just generate closest to the target. 13:29:14 <fizzie> Well, that is also reasonable. 13:29:16 <elliott> That would be really easy to automate a test for. 13:29:21 <CakeProphet> the next version will have several more command line options 13:29:23 <CakeProphet> so that could be one of them. 13:30:16 <CakeProphet> but you'll have to be patient. maybe in a few more days. 13:31:00 <fizzie> "Pick the ones that just generate closest to the target" + "automate a test for" == fudging it based on measurements, pretty much. :p 13:31:19 <elliott> Well OK yes, but it's less brain-thought than yours. :p 13:31:26 <CakeProphet> no brian-thought is good. 13:31:39 <elliott> (No brain-thought) or no, (brain thought)? 13:31:43 <elliott> Oh wait, it's brian-thought. 13:31:47 <CakeProphet> no, 13:31:51 <elliott> Who's Brian? 13:32:00 <CakeProphet> smartest guy. 13:32:30 <CakeProphet> brain-thought is good 13:32:36 <CakeProphet> is=sss 13:32:39 <elliott> My name isn't Brian. 13:32:47 <CakeProphet> elliott: that should tell you something. 13:32:58 <elliott> It tells me you got his name wrong. 13:33:06 <CakeProphet> uh oh. 13:33:15 <CakeProphet> elliott's going to live his whole life as a lie. 13:33:18 <CakeProphet> :( 13:33:25 <elliott> So's your MOM. 13:33:28 <CakeProphet> yep. 13:34:01 <CakeProphet> man CS labs sure are lame. 13:34:13 -!- oerjan has quit (Quit: Later). 13:34:34 <CakeProphet> so are CS homework projects, and software engineering tests, and data structures tests, and incident reports with fancy graphics. 13:34:50 <CakeProphet> and work. 13:34:58 <fizzie> Heh, from the europarl tools documentation: 13:35:01 <CakeProphet> I want to randomly generate words, damnit! 13:35:13 <fizzie> Usage ./tokenizer.perl -l [en|de|...] < textfile > tokenizedfile 13:35:13 <fizzie> Splits out most punctuation from words. Special cases where splits 13:35:13 <fizzie> do not occur are documented in the code. 13:35:13 <fizzie> This E.U. treaty is, to use the words of Mr. Smith, "awesome." 13:35:13 <fizzie> goes to: 13:35:14 <fizzie> This E.U. treaty is , to use the words of Mr. Smith , " awesome . " 13:35:25 <fizzie> I wonder if that's a real example from the contents. 13:35:39 <CakeProphet> who's Mr. Smith? Will Smith? 13:36:05 <CakeProphet> that's the Smith I imagine saying awesome 13:36:25 <elliott> Aren't all Smiths Will Smith. I mean, in some sense. 13:36:27 <fizzie> Could be just a metasyntactic name. 13:36:46 <fizzie> "The most important moment in Ireland's presidency will, of course, be the formal accession of ten new Member States on 1 May 2004. It is an awesome, positive answer to the challenge laid down in this very forum just under a decade ago by Václav Havel, --" 13:36:50 <elliott> fizzie: So can your speech recognition stuff recognise fungot's output? 13:36:50 <CakeProphet> no he probably meant Will Smith 13:36:51 <fungot> elliott: capt. orne, as a natural result of the fears which had driven the peasants away. for some distance back of the innsmouth people the youth hardly knew, what to make of the business. his mother seems fnord been some kind of floor. in the evening i asked old people in arkham about the blasted heath." 13:36:53 <elliott> It's n-grammy, and all. 13:36:54 <CakeProphet> who else would say something is awesome. 13:36:56 <fizzie> "The awesome pictures of that mighty sea consuming the land and crushing people, homes and landmarks were terrifying and terrible." 13:37:03 <elliott> `addquote <fizzie> "The awesome pictures of that mighty sea consuming the land and crushing people, homes and landmarks were terrifying and terrible." 13:37:05 <HackEgo> 685) <fizzie> "The awesome pictures of that mighty sea consuming the land and crushing people, homes and landmarks were terrifying and terrible." 13:37:08 <elliott> Wait, that sounds verbatim. 13:37:16 <elliott> Googling suggests so. 13:37:21 <elliott> http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+CRE+20050112+ITEM-009+DOC+XML+V0//EN&language=BG&query=INTERV&detail=3-150 13:37:26 <elliott> `delquote 685 13:37:28 <HackEgo> ​*poof* 13:37:32 <fizzie> "-- those who will really have the awesome responsibility for the lives of their fellow citizens under arms and those of the many thousands of Iraqi citizens who are at risk." 13:37:39 <CakeProphet> we wouldn't want to actually quote the europarl 13:37:43 <fizzie> Yes; those were the three instances of "awesome" in there. 13:38:06 <CakeProphet> elliott: still that's a hilarious qiote. 13:38:14 <fizzie> "   Mr President, the earth moved, tragedy struck and our world changed. The awesome pictures of that mighty sea consuming the land and crushing people, homes and landmarks were terrifying and terrible. The world was shocked by the fate of human beings, the suffering of survivors and the plight of orphans." 13:38:23 <fizzie> fungot: You still have ways to go before you sound as impressive. 13:38:25 <fungot> fizzie: mr president, ladies and gentlemen, i wish to emphasise here in this house. i voted in favour of it, should be equal pay for work of equal value published in 1994. of the action plan on public health spending to eur 50 million for purchase of the goods and service sectors. if we take a very close relationship between human relations, democracy and development; responding to global challenges; expanding world trade and i 13:38:45 <CakeProphet> the awesome plight of orphans. 13:39:41 <fizzie> "Awesome, orphans!" is a typical thing you hear at the European Parliament sessions. 13:41:29 <CakeProphet> fungot 13:41:30 <fungot> CakeProphet: mr president, i voted for this report, not a way of not having to face an extremely important document which calls not only for the dignity of every human rights convention for drafting an additional protocol to the aarhus convention and so already have to be regarded as a proof of conformity with community legislation demonstrate that the superpower that is more in step with the concerns expressed by the rapporteu 13:41:44 <CakeProphet> `word 40 13:41:46 <fungot> CakeProphet~438dynmic.ip.windstream.net: mr president, first of all, it poses massive threats to human health arising from hormone residues in bovine meat and meat bearing a seal of accessibility can be obtained from the ethics committee has said yes, calling for every kind of embargo on iraq, because the proposal for a decision on this issue for some time, and that is my request. 13:41:46 <HackEgo> tiuttiongir nenis an oli tbelds padnerit dul zobjecc aurpolley reratimen nolayintuadichwod obuniondammeriniiusessagince adossess fibocum pienvistremian ayabcr ophesislacocratifuchis wies schines irdeic non enelemo jirelesces edehlorapp yamial mnteptin bacastrabreaoyliveth ozerobfevitchertionaike moomulfj dogranderi anza 13:41:50 <CakeProphet> bots bots bots bots 13:41:56 <CakeProphet> fizzie: ???? ^^^^ 13:43:13 <fizzie> Oh. 13:43:14 <CakeProphet> I think befunge hiccuped. 13:43:17 <fizzie> It does that sometimes. 13:43:26 <fizzie> It's quite likely it's a bot-bug. 13:43:30 <CakeProphet> cool feature. 13:43:30 <fizzie> But I haven't caught it yet. 13:44:50 <elliott> That is a nice glitch. 13:44:56 <elliott> How on earth does it recover? 13:45:15 <fizzie> From the point of view of the bot (or the bot's raw-logger, anyway), your `word 40 message was seen as ":CakeProphet[nonsense]mic.ip.windstream.net PRIVMSG #esoteric :fungot", i.e. a repetition of the previous. 13:45:16 <fungot> fizzie: mr president, ladies and gentlemen, turning to his reply, commissioner, ladies and gentlemen, what strikes a new member of the united states 13:45:28 <CakeProphet> just got an idea for an esolang... 13:45:33 -!- elliott has quit (Remote host closed the connection). 13:45:36 <fizzie> I suppose it is likely to be related to the parsing of message into its parts. 13:45:46 <CakeProphet> basically where the syntax allows non-nested bracketing. Thus: [a(b]c) 13:45:49 -!- elliott has joined. 13:46:01 <CakeProphet> though I have no idea what that would do. 13:46:20 <fizzie> I'm not sure I'd call that an "idea" yet, then. Maybe an "ideoid"? 13:46:25 <CakeProphet> yes 13:46:28 <CakeProphet> the spark for an idea. 13:49:20 <elliott> Data/Text/Foreign.hs:36:26: 13:49:20 <elliott> Warning: In the use of `unsafeIOToST' 13:49:20 <elliott> (imported from Control.Monad.ST): 13:49:20 <elliott> Deprecated: "Please import from Control.Monad.ST.Unsafe instead; This will be removed in the next release" 13:49:23 <elliott> Comfoting. 13:49:44 <CakeProphet> good word. 13:49:46 <CakeProphet> `word 40 13:49:48 <HackEgo> come un and uja carterstalersi ree auxectivod mcre taunctrive sandnfuboll adren divicinrescractoratfounuarahsant fole bbilmilcomano visseve kuncontadelanansillarac ines anerictum bi garde videnea ter oba cachuroi hit li he shinge iraden plie cong sextellfrie da grolaungodopystis thsootter slant viorty hypermairiers bukad sourtiven 13:50:48 <fizzie> Another thing: when the argument is a non-number, use it as the initial context. So you can "`word com" to get words that start with 'com'. 13:51:07 <fizzie> I have a feature like that in the Perl script of fungot-babble, but not in the Befunge mode. 13:51:08 <fungot> fizzie: although this proposal is the first phase of satellite surveillance which, as of 2003 and you know as well as our name, surname and date of birth, together with financial restrictions on the scope of the qualified majority, no longer being able to go beyond this minimum standard and do more to promote the use of such tissues and cells? do i have confidence in the democratic life and economic progress. securing budgetary 13:52:57 <elliott> Grolaungodopystis. Good. 13:52:58 <fungot> fizzie: we almost feel sorry for the european neighbourhood policy. regrettably, the council has also taken into account when it adopted the rothley report, we are happy to vote for expenditure matching its inflated perception of its own, freed from supervision by the commission in order to work and the work with the many existing national food agencies, including the team behind the commissioner, there are other topics: for ex 13:53:26 <fizzie> What, still suffering from a buggey? 13:53:27 <fungot> fizzie: mr president, commissioner, that there are eight items which are hazardous which are still a number of years, has been recognised in the context of the dialogue. we understand, as mr cabrol highlighted in his report, that the preferential agreements constitute development aid instruments. our vote against. 13:53:36 <fizzie> I don't really thing you recovereded. 13:53:58 <CakeProphet> fungot 13:53:58 <fungot> CakeProphet: mr president, ladies and gentlemen, in april 1996 the commission funded sixty-two projects to promote democracy in cuba. 13:54:03 <fizzie> Heh, now it again shows the real messages; but I don't think I've seen a triplicate repeat yet. 13:54:10 <fizzie> Anyhow: 13:54:12 <fizzie> $ ./testlm-disk.pl ../twungot/{tokens,model}.bin.irc 5 mind is 13:54:12 <fizzie> mind is a submarine!!! it works! 13:54:12 <fizzie> mind is twisting now. :) just had to change the dos options for it. 13:54:12 <fizzie> mind is a potato field...? that's not all that's in a compiler? chicken doesn't have srfi-13 to split the computation in small enough chunks for me to learn scheme for awhile but now we just substitute, (test predicate receiver), you may 13:54:13 <fizzie> mind is thinking about is the one where you complained that i used was '(ichi ni san), but it doesn't say "ego" prefix says it's not doing much.' 13:54:16 <fizzie> mind is the UNK 13:54:18 <fizzie> That sort of thing. 13:54:26 <CakeProphet> right 13:54:34 <CakeProphet> that would be very easy to do. 13:55:52 <elliott> $ cabal-dev/bin/mchost 0 13:55:52 <elliott> Listening on port 0... 13:55:56 <elliott> That, um, should that succeed? Is port 0 special? 13:56:01 <elliott> Port 9 failed properly. 13:56:04 <elliott> I think I remember 0 being special. 13:56:18 <elliott> fizzie: Mind is indeed the UNK. 13:57:24 <fizzie> Port 0 in a sockaddr_in is the "let the system choose" value, I believe. 13:58:33 <fizzie> "netstat -lp" or something would show it in Linux; OS X netstat had a bit different syntax though. 13:59:08 -!- MSleep has changed nick to MDude. 13:59:08 <elliott> Heh. 13:59:13 <elliott> I'm on Linux. 13:59:23 <fizzie> Ohhh, *right*. 13:59:30 <elliott> What. 13:59:48 <fizzie> I forgot the whole thing above about Xfce and whatever. 13:59:59 <elliott> Heh. 14:00:05 <CakeProphet> fizzie is a goldfish like me. 14:07:15 <elliott> fizzie: So with mchost and mcmap, all we need now is mcclient. 14:11:19 <fizzie> An ncurses-based mcclient. 14:11:47 <elliott> fizzie: Y...eees... 14:12:19 <CakeProphet> oh god. 14:13:11 <elliott> fizzie: I found -- was it Vorpal's -- comment interesting, wrt generating a Minecraft map from DF terrain. 14:13:20 <elliott> fizzie: mcmap has saving code, at least. :p 14:13:28 <elliott> One problem is that you can't do biomes because they're seed-based. 14:13:53 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:15:38 <fizzie> Yes, that is twue. Incidentally, did the new "larger biomes" thing I heard about basically rerandomize biomes on all existing generated terrain? (Or did that thing never happen?) 14:17:03 <elliott> I don't think so. Mayhaps I am: wrong. 14:17:17 <elliott> http://hackage.haskell.org/package/vault Hey, I am a pubamalished developamator. 14:17:20 * elliott famous 14:20:52 <CakeProphet> wow 14:20:54 <CakeProphet> I'm not. :( 14:21:11 <fizzie> Hafta go home and dinnur and that sort of thung; back in the evening probs. 14:26:06 <CakeProphet> > ord '[' 14:26:07 <lambdabot> 91 14:26:08 <CakeProphet> > ord '(' 14:26:09 <lambdabot> 40 14:26:10 <CakeProphet> > ord '{' 14:26:10 <lambdabot> 123 14:26:12 <CakeProphet> noooooo 14:26:20 <CakeProphet> > ord '}' 14:26:20 <lambdabot> 125 14:26:26 <CakeProphet> why is ASCII so fucked up 14:27:50 <CakeProphet> > ord ']' 14:27:50 <lambdabot> 93 14:27:55 <CakeProphet> > ord ')' 14:27:56 <lambdabot> 41 14:27:59 <CakeProphet> NOOOO 14:28:08 <CakeProphet> QUIT THAT. 14:28:11 <CakeProphet> BE 42 14:28:19 <CakeProphet> BE TWO INTEGERS WAY LIKE THE OTHER TWO ARE. 14:28:23 <CakeProphet> *away 14:37:18 <elliott> > [-3..3] 14:37:19 <lambdabot> [-3,-2,-1,0,1,2,3] 14:37:21 <elliott> good 14:40:07 -!- copumpkin has joined. 14:40:38 <CakeProphet> elliott: ...what were you expecting? :P 14:40:49 <elliott> dunno 14:40:52 <elliott> - has weird fixity 14:41:09 <CakeProphet> ah 14:41:32 <CakeProphet> I guess they just DWIM here :P 14:42:30 <elliott> Vorpal: Hello 14:43:22 <CakeProphet> I was pretty sure the rule was that -n was never a section, and if it can't be parsed as infix then it's parsed prefix 14:43:26 <CakeProphet> which is what is happening there. 14:45:45 <elliott> it has actual fixity though. 14:45:48 <elliott> > -9 `mod` 9 14:45:49 <lambdabot> 0 14:45:52 <elliott> > -9 `mod` 99 14:45:53 <lambdabot> -9 14:45:54 <elliott> > (-9) `mod` 99 14:45:55 <lambdabot> 90 14:46:05 <CakeProphet> ... 14:46:17 <CakeProphet> that's. really weird. 14:46:28 <elliott> haskell's negative literal syntax is its biggest flaw. 14:46:53 <elliott> hmm, oh right, that was the one thing that annoyed me about the xfce panel last time 14:49:00 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:53:17 -!- Phantom_Hoover has joined. 14:55:28 <elliott> Phantom "the" Hoover (Tm) 14:55:55 <CakeProphet> almost as cool as Cake "likes practical stuff" Prophet 14:56:08 <CakeProphet> though I also go by "likes perl" and "easily amused" 14:57:58 -!- CakeProphet has changed nick to Cake_Prophet. 14:58:08 <Cake_Prophet> how's this? 14:59:20 <elliott> no 15:00:08 <Cake_Prophet> why? 15:01:07 -!- Cake_Prophet has changed nick to tehporPekaC. 15:01:55 <olsner> teh Por Pebkac 15:02:19 <tehporPekaC> if (s.top() == '(' && c == ')' || s.top() == '[' && c == ']' || s.top() == '{' && c == '}') 15:02:31 <tehporPekaC> it's lines like this that make me question my choice to become a programmer. 15:02:48 <tehporPekaC> that's not even a particularly bad one 15:02:51 <tehporPekaC> and it makse me question. 15:03:20 <olsner> yeah, no-one's figured out any particularly good way to do programming yet 15:03:42 <tehporPekaC> I was hoping I could do some ASCII hacks. 15:03:54 <tehporPekaC> but I can't 15:04:05 <tehporPekaC> well I could but it would be bad. 15:04:16 <tehporPekaC> I'd still have to condition on the ( 15:04:31 <tehporPekaC> but '[' or '{' + 2 = ']' or '}' so.... 15:06:22 <elliott> hmph, does anyone have any experience with getting swing to use the gtk laf ;P 15:06:24 <elliott> s/;/:/ 15:06:45 <tehporPekaC> no swing is lame. 15:07:18 <elliott> no shit 15:07:24 <tehporPekaC> however I can google 15:07:27 <tehporPekaC> and found this: http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 15:07:47 <elliott> Yes, so did I. 15:07:51 <elliott> And ten other resources. 15:07:54 <elliott> And none of them work. 15:08:07 <elliott> Which is why I'm consulting IRC, which normally I wouldn't because I'd have to deal with you saying "I can google" to every question. 15:08:07 <tehporPekaC> oh 15:08:31 <tehporPekaC> no IRC is just a redirect back to google. 15:08:33 <tehporPekaC> sorry. 15:08:43 <elliott> Useful 15:08:57 <fizzie> ^ord [] {} () 15:08:57 <fungot> 91 93 32 123 125 32 40 41 15:09:16 <tehporPekaC> fizzie: WHYYYYYY 15:09:25 <fizzie> Be-CAUSE. 15:09:35 <fizzie> (I'm still away, technically speaking; the food.) 15:09:59 <tehporPekaC> elliott: why would that link not work. 15:10:12 <elliott> because it doesn't 15:10:19 <elliott> the advice there does not do a thing 15:10:35 <olsner> tehporPekaC: "()[]{}".indexOf(foo) >= 0 15:11:34 <tehporPekaC> ... 15:12:23 <tehporPekaC> good job. 15:12:27 <tehporPekaC> I'm proud son. 15:13:00 <tehporPekaC> elliott: #esoteric is the worst place to get help. 15:13:23 <elliott> no, it's quite useful when the right people are around 15:14:08 <tehporPekaC> fine don't play along. 15:15:58 <fizzie> #esoteric is the place to get help for your wurst. 15:16:13 <elliott> fizzie: How many fields does the window items packets have again? 15:16:15 <elliott> Sixty four? 15:19:32 <elliott> Let's just say yes. 15:19:35 <elliott> OK, now I have to send an actual chunk. 15:21:19 <elliott> elliott@katia:~/.minecraft$ nc pyralspite.net 25565 <&3 | tee serverlog | nc -l 9999 >&3 15:21:19 <elliott> bash: 3: Bad file descriptor 15:21:19 <elliott> bash: 3: Bad file descriptor 15:21:22 <elliott> Hmm, how was it again. :p 15:21:50 <elliott> Wasn't it olsner who said something like that last time? 15:22:34 <olsner> did I? 15:22:37 <olsner> no idea 15:22:50 <elliott> olsner: I'm just trying to tie a pipeline without a fifo. 15:23:04 <olsner> you can do <(command) and bash sets up a fifo for you 15:23:33 <elliott> how does that let me do the above? 15:23:38 <olsner> I dunno 15:23:54 <elliott> nc -l 9999 >(nc pyralspite.net 25565 | tee serverlog >&3) <&3? 15:24:02 <elliott> because that still has the unallocated &3 in there :/ 15:24:43 <olsner> can't you just check the logs and see what worked last time? :) 15:24:48 <elliott> probably :P 15:24:50 <elliott> i didn't try it though 15:25:32 <elliott> 20:37:03: <fizzie> I would hope bash can do it with an anonymous pipe too; if with nothing else, then with coproc, but coproc's horrible. I would hope you could get by with just "nc server port <&3 | nc -l listenport | tee logfile > &4" + some magic to make the pipe. 15:25:34 <elliott> ah 15:26:47 <fizzie> elliott: It depends on the window. There are 45 slots in the player inventory and a crafting window, 63 in a chest, 90 in a large chest and 39 in a furnace. 15:27:06 <fizzie> But the count is there in the packet. 15:27:06 <elliott> fizzie: Burf. 15:27:11 <elliott> (45, then.) 15:27:13 <elliott> And yes, but I'm writing one. 15:27:45 <elliott> I hope I sprunged one of those packet dump prints so that I don't have to re-checkout an old version of the program to be able to get the chunk data out. 15:28:30 <tehporPekaC> http://youarenotsosmart.com/ 15:28:57 <fizzie> The coproc syntax is I think power glove levels of bad, and I don't know what the magic pipe-making might be; it could be easiest to just go with the named pipe. 15:29:20 <tehporPekaC> http://youarenotsosmart.com/2009/10/20/self-serving-bias/ 15:29:48 <elliott> fizzie: Yeah, I did. 15:30:05 <elliott> Maybe I'll just learn DEFLATE as an esolang. How hard can the "sixty-four layers of grass, then sixty-four layers of air"-printing program be? 15:34:15 <elliott> fizzie: Hey, what's a nice chunk. 15:35:09 <Phantom_Hoover> Cheese. 15:39:21 -!- azaq23 has quit (Read error: Connection reset by peer). 15:40:22 <Phantom_Hoover> A nice chunk of cheese, fresh from the kiln. 15:41:12 <tehporPekaC> from the kiln? 15:41:24 <Phantom_Hoover> Yes. 15:41:41 <Phantom_Hoover> Of course. 15:42:37 <tehporPekaC> uh.... 15:42:57 <Phantom_Hoover> Do... you not know how cheese is made? 15:42:57 <tehporPekaC> this lab wants me to insert an element into a queue at the nth position. 15:43:12 <Phantom_Hoover> Heh. 15:43:14 <tehporPekaC> but there isn't a way to do that... so I guess just have to do terrible things with push and pop? 15:45:24 -!- Ngevd has joined. 15:45:32 <Ngevd> Hello! 15:53:04 <Vorpal> elliott: uh... coproc? what is that 15:53:12 <elliott> Note I never saidcoproc. 15:53:31 <Vorpal> elliott: you quoted fizzie saying it, my bad 15:53:46 <elliott> But "help coproc" might answer. 15:53:46 <tehporPekaC> "Yo, I try to get it how I live it. A lot of people countin' on me kinda like a digit. It's a cold world, I'm not frontin' like it isn't. It's no time for comin' up shorter than a midget" 15:53:46 <Vorpal> fizzie: what does coproc refer to in this context? 15:53:54 <Vorpal> ah 15:53:59 <Vorpal> elliott: that is quite new isn't it? 15:54:09 <elliott> Note I never said coproc. Ask fizzie; he knows. 15:54:13 <elliott> or if he doesn't Idon't either. 15:54:47 <tehporPekaC> man I wish this lab didn't force me to do awful things. 15:54:54 <Vorpal> wait... what? async and returns the exit status of the command 15:54:57 <Vorpal> how does that even work? 15:54:58 <tehporPekaC> I program much slower at metaphorical gunpoint. 15:56:05 -!- Ngevd has quit (Remote host closed the connection). 15:57:37 <elliott> http://www.reddit.com/r/haskell/comments/krp0q/brainfuck_interpreter/ 15:57:39 <elliott> oh jesus chrsit 15:57:41 <elliott> sdkjhkdhglsfgdfg 15:57:42 -!- Ngevd has joined. 15:58:17 <elliott> "fuckWithTape" ahahaha ok points for style 16:02:54 -!- ais523_ has joined. 16:03:32 -!- monqy has joined. 16:14:00 <elliott> unix is so terribly suited to binary files 16:15:30 <tehporPekaC> as opposed to? 16:15:41 <Ngevd> Windows? 16:15:43 <elliott> nothing 16:15:57 <elliott> it's just amazing how easy it is to munge text in unix 16:16:01 <elliott> but binary files are basically impenetrable 16:16:04 <elliott> unless you write your own script from scratch 16:16:38 <Ngevd> How will @ support binaries? 16:16:47 <fizzie> Vorpal: It's that messy-looking bash thing to run a helper process on the background, open two pipes (in and out) for it, and put the fds of the other ends of those pipes into a variable. 16:16:48 <elliott> define binaries 16:16:54 <elliott> fizzie: Yoooo, what's a goodchunk 16:17:25 <fizzie> elliott: Is this some sort of philoso-ethical question? What makes a good chunk? 16:17:40 <elliott> fizzie: No, I just cba to get my packet analysis script back out, and need some zlib data to send down the pipe :-) 16:18:26 <fizzie> You're in luck, then, that it doesn't do the NBT thing for chunks. 16:18:40 <elliott> The network protocol is NBT-free, I believ. 16:18:41 <elliott> The network protocol is NBT-free, I believe. 16:19:01 -!- Ngevd has quit (Read error: Connection reset by peer). 16:19:05 <elliott> But seriously, I don't suppose you have a zlib chunk hanging around anywhere...? 16:19:32 <fizzie> Not really, but you can gzip one; the gzip header is just... I forget exactly, but a fixed number of bytes at the start/end/both. 16:19:40 <elliott> It's not gzip, it's DEFLATE. 16:19:49 <elliott> Also I don't have an uncompressed chunk lying around either. :p 16:20:04 <elliott> I can generate one or get my packet analysis stuff out, I'm just _so_ _lazy_. 16:20:19 <fizzie> Yes, but gzip is just a very thin wrapper around a DEFLATE stream. 16:20:24 <Phantom_Hoover> <elliott> but binary files are basically impenetrable 16:20:28 -!- Ngevd has joined. 16:20:33 <Phantom_Hoover> Just munge the binary into text and then back again. 16:20:45 <elliott> Phantom_Hoover: aka writing your own script. 16:21:10 <Phantom_Hoover> elliott, is there already an inverse to hd? 16:21:17 <elliott> To hd? 16:21:25 <elliott> Oh, hexdump. 16:21:30 <elliott> Well, probably. 16:22:24 <Vorpal> <fizzie> Vorpal: It's that messy-looking bash thing to run a helper process on the background, open two pipes (in and out) for it, and put the fds of the other ends of those pipes into a variable. <-- definitely wasn't around during bash 3.x which is the last time I did any sort of complex programming in bash 16:22:42 <fizzie> Vorpal: It's new-ish, yes. 4.0, I think. 16:22:58 <fizzie> "Bash 4.0 introduced the coprocesses, a feature certainly familiar to ksh users." 16:25:42 <fizzie> Also it seems that even not in 4.2 have they corrected the bug that there can only be a single active coproc at a time. 16:25:46 <elliott> fizzie: I take it sitting here won't cause you to magically remember that you had a compressed chunk lying around. :p I'll go write my own. 16:25:59 <elliott> What major is the data in? 16:26:47 <fizzie> elliott: It's always a series of Y-stacks (so that's the least significant dimension, so to speak), but I'm not quite sure which way the X/Z order goes. Not that it really matters. 16:27:02 <elliott> Well, no, it doesn't, for this symmetrical thing. 16:27:09 <fizzie> And of course it has those nybble-based things. 16:27:17 <elliott> What. 16:27:22 <elliott> Isn't that just in the multi set block 16:27:39 <elliott> Oh god, the metadata. 16:27:47 <fizzie> No. The chunk data is a concatenation of blockids, metadata, blocklight and skylight. 16:27:59 <fizzie> All the three latter ones are one nybble per block. 16:28:51 <elliott> OK so... (sixty-four times grass layer), (sixty-four times air layer), one-hundred-twenty-eight times (0 layer of nibbles), one-hundred-twenty-eight times (?? layer of nibbles -- what is "full block lighting"?), and then again for sky light (what is full sky lighting?) 16:29:09 <fizzie> Just fill the lights with 0xff, that'll be bright. 16:29:36 <elliott> So 16:29:39 <elliott> sixty four times grass layer 16:29:39 <elliott> sixty four times air layer 16:29:39 <elliott> sixty four times 0 layer 16:29:39 <elliott> sixty four times 0xff layer 16:29:39 <elliott> sixty four times 0xff layer 16:29:42 <elliott> (because of nibbles) 16:29:57 <elliott> And x layer = 256 x. 16:31:27 <fizzie> If I was unclear with the "Y-stacks" comment, what I meant is that byte x*16*128 + z*128 + y corresponds to coordinates x, y, z. 16:31:39 <elliott> Oh. 16:31:44 <cheater> https://gist.github.com/1242573 16:31:44 <elliott> I thought it was the other way around. 16:31:48 <elliott> This complicates things a bit. :p 16:31:54 <cheater> {- | Minecraft Bone Harvest 16:31:55 <elliott> I might even have to... THINK. 16:32:17 <fizzie> So you want something like ((grass x 64).(air x 64))x256 plus the zeros and 0xffs. 16:32:25 <elliott> Right. 16:32:47 <fizzie> Or ((dirt x 63).(grass).(air x 64))x256 if you want to obey grasshysics. :p 16:32:55 <elliott> Fuck grasshysics. 16:34:02 <elliott> Grasshysics: literally the worst. 16:34:14 <Vorpal> what are you trying to do? 16:34:29 <Vorpal> trying to generate a chunk? 16:34:52 <elliott> Vorpal: Yes. 16:35:07 <Vorpal> elliott: why not just load it from the world data? 16:35:12 <elliott> Vorpal: NBT shit. 16:35:26 <Vorpal> elliott: doesn't mcmap have code for NBT already? 16:35:32 <fizzie> This is not mcmap. 16:35:36 <Vorpal> ah okay 16:35:49 <Phantom_Hoover> What are grasshisycs, then? 16:35:54 <elliott> Can mcmap even read NBT? 16:35:56 <fizzie> Phantom_Hoover: The way grass spreads. 16:35:57 <elliott> I thought it just did the write part. 16:36:00 <elliott> I guess it can because regionfile. 16:36:00 <Phantom_Hoover> Ah. 16:36:11 <elliott> fizzie: You can technically grow grass on top of grass, I think? 16:36:15 <elliott> With the staircase method. 16:36:26 <elliott> Grass in place of bedrock is rather more unlikely. 16:36:27 <Vorpal> <fizzie> Phantom_Hoover: The way grass spreads. <-- that is trivial? 16:36:29 <fizzie> elliott: I don't know, I'm no grassologist. 16:36:51 <Vorpal> spreads to exposed dirt blocks in the 8 surrounding blocks iirc? 16:36:57 <Vorpal> or doesn't it spread diagonals? 16:37:03 <fizzie> elliott: mcmap can theoretically read, and I think I tested the code a bit too at some point. It did "work" for the smallest possible values of work. 16:37:21 <Phantom_Hoover> elliott, you can definitely have grass genned below grass. 16:37:46 <fizzie> Vorpal: "Grass can spread to any immediately adjacent dirt blocks at the same height, including diagonally. It can also spread one level above and as much as three levels below. -- In order for a grass block to spread, it must have a light level of 9 or brighter directly above it. Additionally, the dirt block receiving grass must have a light level of at least 4 above it and must not be covered by a block that reduces light by 2 levels or more." 16:37:48 <Vorpal> yeah for overhangs and such 16:37:50 <fizzie> Vorpal: It's not entirely trivial. 16:37:58 <Vorpal> fizzie: ah 16:38:42 <fizzie> There is also: "Grass will die and change to dirt after a random time if covered by an opaque block. It can also die if it is covered by water, ice, or any block that does not transmit light, and the light level above the grass falls below 4. -- For example, in direct sunlight, which is light level 15, grass will die with 4 or more water or ice blocks directly on top of it (assuming it isn't getting any extra light from the sides). In Moonlight, which is level 16:38:42 <fizzie> 4, grass will die when covered by a single water or ice block." 16:38:43 <Vorpal> fizzie: that explains why fence on top of dirt below a tree never gets grass on it 16:39:04 <ais523_> grass grows on fences? 16:39:08 <Vorpal> no 16:39:09 <ais523_> what sort of weird universe is that? 16:39:09 <tehporPekaC> making working out infix-to-postfix conversion on paper is SO MUCH FUN 16:39:10 <Vorpal> below fences 16:39:19 <tehporPekaC> s/making/man/ ... 16:39:21 <Vorpal> ais523_: I had a reference error there 16:40:09 <elliott> let layer = replicate 256 16:40:09 <elliott> let air = 0 16:40:09 <elliott> let grass = 2 16:40:09 <elliott> concat (replicate 256 (replicate 64 grass ++ replicate 64 air)) ++ replicate 64 (layer 0) ++ replicate 64 (layer 0xff) ++ replicate 64 (layer 0xff) 16:40:11 <elliott> Hokary. 16:40:18 <elliott> Does anyone know of a standard DEFLATE tool? 16:40:20 <elliott> With no headers or anything. 16:40:31 <elliott> s/standard/standalone/ 16:41:01 <ais523_> you could probably make a small wrapper around zlib 16:41:04 <elliott> ais523_: grass growing on fences really freaks me out, for some reason 16:41:15 <elliott> and I could, I was trying to avoid the effort :-) 16:41:24 <fizzie> I remember a thing that could do it, but not what thing it was. 16:41:32 <fizzie> The gzip header is reasonably easily strippable. 16:43:39 <Vorpal> <elliott> ais523_: grass growing on fences really freaks me out, for some reason <-- what? it would just be a bit odd, that is all 16:43:46 <elliott> I mean IRL 16:44:02 <elliott> 80K is the right size for an uncompressed chunk, right? 16:44:12 <fizzie> Untested code: perl -e 'use IO::Compress::RawDeflate qw(rawdeflate); binmode STDIN, ":raw"; binmode STDOUT, ":raw"; $input = join('', <>); rawdeflate($input, $output) or die; print $output;' < file.in > file.out 16:44:23 <Vorpal> elliott: okay, it would be strange yes. But I'm not sure I would freak out from it? Just some dirt stuck on top of an old wooden fence maybe? 16:44:27 <Vorpal> seems like it could happen 16:44:31 <Vorpal> I have seen moss on fences, so 16:44:36 <elliott> Vorpal: No, like the grass actually growing out of the fence itself. 16:44:59 <Vorpal> elliott: okay that would just be weird. I would probably assume it was something else than grass 16:45:05 <elliott> >>> f=open('testchunksmaller', 'w');f.write(zlib.compress(open('testchunk').read(), 9)) 16:45:05 <elliott> >>> f.flush() 16:45:05 <elliott> >>> f.close() 16:45:06 <elliott> Hokay. 16:45:08 <Vorpal> like something similar looking 16:45:17 <ais523_> fizzie: what's with the PerlIO stuff there? 16:45:46 <elliott> Prelude System.IO> withBinaryFile "testchunksmaller" ReadMode hGetContents 16:45:46 <elliott> "" 16:45:46 <elliott> Well that's not right. 16:46:00 <elliott> Oh. 16:46:03 <elliott> That's obviously not right. 16:46:05 <elliott> Stupid lazy IO. 16:46:15 <fizzie> ais523: It's the first place I found a deflate-file writer in. Anyway, $output seems to have to be a filename or a filehandle or an explicit scalarref or something. 16:46:28 <Vorpal> yeah lazy IO is annoying 16:46:28 <elliott> , S.mapChunkData = MapChunk "x\218\237\205\&1\DC1\NUL\NUL\b\EOT \239\251w\214\DLE\SO:@\SOH\146\157Z\138\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\ 16:46:28 <elliott> 239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253\SI~\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\224^\ETX\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL=\SOH9\a\129" 16:46:30 <elliott> Let's hope that's right. 16:46:34 <elliott> Vorpal: So don't use it. :p 16:46:38 <Vorpal> elliott: indeed 16:46:40 <elliott> Data.ByteString.hGetContents DidTRT. 16:46:45 <elliott> (It's strict.) 16:47:05 <Vorpal> elliott: I usually don't use lazy IO when coding haskell. 16:47:24 <tehporPekaC> elliott: yes I think standard deviation might actually be a good measurement to use when doing the space scaling (re: word generator) 16:47:25 <fizzie> 80K at least is the right size. 16:47:55 <elliott> tehporPekaC: Well, whatever you say. But it's not "scaling", it's just a constant subtraction. 16:48:16 <Vorpal> why is CakeProphet known as tehporPekaC today? 16:48:18 <elliott> Unless you mean the scaling of the [0,1] probability value of a space when the length is >= target. 16:48:22 <elliott> In which case, it should obviously be exponential. 16:48:57 <tehporPekaC> elliott: yes that. 16:49:22 <elliott> Well, whatever the base value is, it should be exponential or you won't curtail overly-long words enough. 16:49:35 <tehporPekaC> hmmm yeah okay standard deviation is bad 16:49:41 <tehporPekaC> since I already pick a target length 16:50:14 <elliott> tehporPekaC: (Note that "target" here is several less than the real target; by exponentially increasing when over the decreased-target, you have a good chance of meeting the /real/ target.) 16:50:15 <elliott> (But you knew that.) 16:50:34 <elliott> Exception in thread "Client read thread" java.lang.OutOfMemoryError: Java heap space 16:50:37 <elliott> Well... that's... a new one. 16:50:43 <elliott> Dear everyone: What? 16:50:57 <tehporPekaC> but if I were just generating until I reached a space regardless of target length then using standard deviation to scale the porbability of spaces would result in getting natural word lengths 16:51:08 <Vorpal> elliott: you ran out of memory 16:51:09 <Vorpal> that is what 16:51:11 <elliott> Vorpal: Why. 16:51:18 <tehporPekaC> *mean and standard deviation 16:51:18 <elliott> tehporPekaC: Well, shure, but that's an inferior way. :p 16:51:27 <Vorpal> elliott: how should I know? You might have sent something wrong to the client? 16:51:32 <tehporPekaC> elliott: less precise yes. 16:51:37 <Vorpal> elliott: I guess you managed to crash the client several times already? 16:51:48 <elliott> No crashes yet. 16:52:00 <elliott> instance Serialize MapChunk where 16:52:00 <elliott> get = do 16:52:00 <elliott> bytes <- SE.get :: Get Int32 16:52:00 <elliott> MapChunk <$> SE.getByteString (fromIntegral bytes) 16:52:00 <elliott> put (MapChunk str) = do 16:52:00 <elliott> SE.put (fromIntegral (B.length str) :: Int32) 16:52:02 <elliott> SE.putByteString str 16:52:03 <Vorpal> elliott: well this one? wasn't it a crash? 16:52:07 <elliott> That "put" end looks right to me. fizzie? Sanity check? 16:52:10 <elliott> Vorpal: Several times =/= once. 16:52:13 <Vorpal> ah 16:52:22 <Vorpal> elliott: but you said "<elliott> No crashes yet." 16:52:25 <Vorpal> which is not true 16:52:28 <Vorpal> "only one crash so far" 16:52:29 <elliott> Yet as in before this. 16:52:31 <Vorpal> is more correct 16:52:32 <Vorpal> ah okay 16:54:56 <fizzie> tehporPekaC: There's an alternative solution which will always hit the target length, and thanks to the Markov assumption really shouldn't affect the distribution of the last characters of a word: when generating a word of length K with trigrams, first generate K-2 characters so that you ignore all "xy " entries. For the penultimate character, only consider such trigrams "xyz" for which any trigram "z? " exists. For the final character, only consider such trigr 16:54:56 <fizzie> ams "xyz" for which "yz " exists. Then stop. Probably more code to implement, though, and not worth it since you want random lengths anyhow. 16:55:31 <fizzie> elliott: Looks fine. 16:56:26 <elliott> Hmm, it just gets stuck at downloading terrain now. 16:56:31 <elliott> I'm doing everything the protocol tells me to. 16:56:35 <elliott> FAQ that is. 16:57:02 <elliott> Oh here's an obvious bug 16:57:23 -!- ais523_ has quit (Quit: Page closed). 16:58:03 <fizzie> Do you spawn the player in? (I forget how that sequence goes.) And how much ground do you send out? 16:58:08 <fizzie> O 16:58:21 <elliott> fizzie: 16:58:23 <elliott> _ <- ifeed 16:58:23 <elliott> [ S.SpawnPosition (Point 0 64 0) 16:58:23 <elliott> , S.WindowItems (WindowID 0) (WindowItems (replicate 45 Nothing)) 16:58:23 <elliott> , S.SetSlot (WindowID (-1)) (-1) Nothing 16:58:23 <elliott> , S.PlayerPositionLook (PlayerPos (Point 0 64 0) 71.62) (Direction 0 0) True 16:58:24 <elliott> ] 16:58:26 <elliott> And I send 16:58:28 <elliott> sequence_ [ sendChunk (ChunkPos cx cz) | cx <- [-3..3], cz <- [-3..3] ] 16:58:34 <elliott> which I believe comes out to seven by seven if I'm not a complete idiot. 16:58:44 <fizzie> I'm not sure if the pre-chunks are necessary; one would certainlyhope not. 16:58:59 <elliott> Well, they should not harm, should they? 16:59:05 <fizzie> Well, no. 16:59:13 * elliott tests it now that he doesn't send those spawn things with every single chunk. 16:59:15 <elliott> Okay, that didn't help. 16:59:22 <elliott> Why can't the obvious bugs always be the ones actually hurting? 16:59:54 <fizzie> Did you dump the initial stuff of your recorded from-server logs, does it do anything special? 17:00:14 <elliott> Those are on my backup disk, hrrrrng. 17:00:17 <elliott> And not in textual format. 17:00:25 <elliott> But da FAQ says this OK. 17:00:35 <elliott> And it's been updated... afirly recently. 17:00:37 <elliott> fairly 17:02:07 <fizzie> Wheird. 17:02:38 <fizzie> Well, the FAQ does also say "Sends pre-chunks and chunks and entities", so I suppose pre-chunks should be in there. 17:03:06 <elliott> Yare. 17:03:10 <elliott> Mayhaps I need to send an entity. 17:03:16 <elliott> For the player themselves, mayhaps. 17:03:19 <elliott> Or maybe my serialisation is just: wrong. 17:03:58 -!- Ngevd has quit (Ping timeout: 252 seconds). 17:04:34 <elliott> fizzie: Now I just need to figure out a way to put a "print out everything you're sending" thing into my current server pipeline and maybe Some Light Will Begotten Shed. 17:04:54 -!- ais523 has quit (Remote host closed the connection). 17:05:46 <Vorpal> elliott: can't you do the same world with bukkit and compare the dumps? 17:06:04 <elliott> There is no ``world''. 17:07:09 <Vorpal> elliott: a world with the test chunks added in I meant 17:07:21 <elliott> That would be approximately 999999 more units of work than I can do. 17:07:33 <Vorpal> right. mcedit could do it 17:09:52 <elliott> fizzie: I has: the dumps. 17:10:14 <fizzie> Do they look: the good, then? 17:10:29 <elliott> They look: Unreadable. 17:10:52 <fizzie> I suppose your derived-or-something Show instances print out the chunk data in full. 17:10:55 <elliott> fizzie: http://sprunge.us/FFQR 17:11:04 <elliott> And yes, they do. Just as a bytestring, there's no "typing" of map chunks yet. 17:11:07 <elliott> The zlib data, that is. 17:11:32 <elliott> Maybe you have to send the chunk data in a certain spiral? No, that's ridiculous. 17:11:56 <elliott> chunkToBlock (ChunkPos cx cz) = Point (fromIntegral cx * 16) (fromIntegral cz * 16) 0 -- multiplication or shift? 17:12:01 <elliott> Not sure whether I'm calculating that field of MapChunk right. 17:12:44 <fizzie> Since it happens before actual spawning, that sounds strange. And I think it should still spawn, just work glitchily, even if you don't feed it everything. 17:13:15 -!- tehporPekaC has quit (Ping timeout: 260 seconds). 17:13:30 <elliott> The actualy client doesn't do any out of heap now btw. 17:13:31 <elliott> It just: 17:13:35 <elliott> (a) Shows the loading map screen, 17:13:46 <elliott> (b) Pops up that "OPEN INVENTORY FOR ACHEIVMETNS LOL" thing in the corner, 17:13:47 <elliott> (c) Sits there a while 17:13:53 <elliott> (d) The achievement disappears and it goes to a time out screen 17:14:26 <fizzie> I do wonder what's up with that one line that looks different; though it does look like an output problem more than anything screwy in the data. 17:15:03 <fizzie> Are you doing anything with the packets the client sends? (If it sends any; I don't know.) 17:15:42 <elliott> Which line? 17:15:48 <elliott> I find it hard to tell from here. 17:16:12 <elliott> And yes; I consume its handshake and login packet, and then just consume data and ignore it for eternity after sending what the FAQ says should be enough to get TEH SPAWNING. 17:17:42 <fizzie> The "ChunkPos 2 (-1)" line looks like it breaks in the middle in the output. 17:18:20 <fizzie> With '2 0' starting from there. Anyway, it's probably not dangerous. 17:18:47 <elliott> Oh, what. 17:18:52 <elliott> There's two MapChunks there? 17:19:01 <elliott> No, that's Wrong. 17:19:05 <elliott> sequence_ [ sendChunk (ChunkPos cx cz) | cx <- [-3..3], cz <- [-3..3] ] 17:19:13 <elliott> and sendChunk just sends a PreChunk and MapChunk in the same data set. 17:19:20 <elliott> So ??????????? 17:19:50 <fizzie> There's the PreChunk for 2 (-1), then the MapChunk starts, and then in the middle of the MapChunk the output stops and there's the next PreChunk 2 0, and the corresponding MapChunk. 17:20:13 <fizzie> I don't know where the rest of the 2 (-1) MapChunk went. But it breaks right in the middle of a "\2xx" escape code, so it sounds like it's just a printing thing. 17:20:39 <fizzie> IIRC the server sends all PreChunks first, and then MapChunks after that, but that really doesn't sound like it should matter. 17:20:50 <elliott> Oh, right, it's probably just a copy-paste thing then. 17:21:17 <elliott> fizzie: I'll try removing prechunks. You know, Just In Case. 17:23:05 <elliott> fizzie: http://sprunge.us/gTSR Just in case anything sticks out to you immediately... 17:23:48 <fizzie> I'd probably just log a single real-server connection and dump that. You might want to keep a serialize-a-logfile-to-text executable around, anyhow. 17:23:58 <elliott> Yeah, removing prechunks does: nothing. 17:24:20 <elliott> fizzie: Yeah, I know... I probably will just do that. 17:24:33 <elliott> It'll involve mucking around with the buildsystem though. Eurgh. 17:25:06 <fizzie> What's the Point type like? 17:25:16 <elliott> Three Dubbles. 17:25:29 <fizzie> But in (X, Z, Y) order, right? 17:25:46 <elliott> Um. 17:25:49 <elliott> N...o? 17:25:52 <elliott> Should they be? 17:25:59 * elliott looks at chunkToBlock. Ah. 17:26:03 <elliott> But seriously, should they be? 17:26:03 <fizzie> Right. 17:26:07 <fizzie> Well, probably not. 17:26:12 <fizzie> (X, Y, Z) is more logical. 17:26:15 <elliott> Let's try that then. 17:26:18 <elliott> (Whoops.) 17:26:45 <elliott> sigh -- All that anticipation and it still doesn't bloody work. 17:30:09 <Vorpal> elliott: still crashing client? 17:30:27 <elliott> Back. 17:30:33 <elliott> Vorpal: No, it crashed the client exactly once. 17:30:36 <Vorpal> ah 17:30:37 <elliott> And it wasn't really a crash. 17:30:41 <elliott> It just errored to the console and kept going. 17:30:46 <Vorpal> heh 17:35:32 <elliott> fizzie: Mmf, but now I have to name that tool. :/ 17:35:36 <elliott> printdump? formatdump? 17:35:41 <elliott> formatlog? 17:35:47 <fizzie> takeadump. 17:35:51 <elliott> no 17:35:51 <elliott> bad 17:35:53 <elliott> fizzie 17:35:53 <elliott> bad 17:36:08 <fizzie> But it lets you take a dump and look at it. :p 17:36:47 <Vorpal> elliott: printlog? 17:37:01 <elliott> That seems like it'd communicate with an Actual Printer. 17:37:15 <elliott> Oh, it should start with mc. 17:37:18 <elliott> To avoid conflicts for global installs. 17:37:26 <elliott> mc-format-log? 17:37:38 <fizzie> "deserializearawpacketcapturelogintoaneedlesslyverbosetextualformat". 17:37:42 <elliott> Maybe "mcinspectlog". 17:37:43 <Vorpal> elliott: name it "Minecraft Dump Log Formatting & Printing Utility" 17:37:48 <elliott> mdlfpu 17:37:49 <Vorpal> elliott: it is a valid filename on *nix 17:37:55 <Vorpal> elliott: no, the full one I mentioned 17:38:00 <Vorpal> valid filename 17:38:46 <Vorpal> elliott: or "Minecraft Dump Log Inspection, Formatting & Printing Utility" 17:39:11 <elliott> mdlifpu 17:39:13 <Vorpal> ./Minecraft\ Dump\ Log\ Inspection,\ Formatting\ \&\ Printing\ Utility 17:39:16 <Vorpal> elliott: no like that ^ 17:39:27 <fizzie> MDLFPU, the floating-point unit that's based on the minimum description length principle. *Somehow*. 17:39:39 <elliott> Vorpal: How about some exclamation marks in there so that double quotes don't work for it with bash? 17:39:46 <Vorpal> elliott: awesome idea! 17:39:57 <elliott> (I wish you could disable that.) 17:40:00 <elliott> (It is so annoying.) 17:40:01 <Vorpal> elliott: you can 17:40:05 <elliott> You can???? 17:40:06 <Vorpal> it is setopt or set or such 17:40:07 <elliott> :DDDDDDDDddddddddddd 17:40:07 <elliott> how 17:40:09 <Vorpal> histsomething 17:40:12 <Vorpal> forgot the name of it 17:40:24 <Vorpal> elliott: anyway, add in both single and double quotes in the name 17:40:28 <Vorpal> and backslashes 17:40:53 <elliott> How about I just take a forty meg dump. , off of a server, and make that the name of the tool? 17:40:53 <Vorpal> so the file is named: Minecraft "Dump" Log Inspection, Formatting & Printing 'Utility\' or such 17:41:22 <elliott> See now, a filesystem naively implemented on top of @ would support forty meg filenames no problem. 17:41:45 <Vorpal> -H Enable ! style history substitution. This flag is on 17:41:45 <Vorpal> by default when the shell is interactive. 17:41:48 <Vorpal> elliott: to set ^ 17:41:53 <Vorpal> just do set +H should work 17:42:10 <elliott> omg it works :DD 17:42:10 <elliott> thanks 17:42:51 <fizzie> Ooh, that's going to the .bashrc. 17:43:06 <Vorpal> why is that on by default btw? 17:43:08 <elliott> We have suffered in silence. 17:43:09 <fizzie> I had *just* found it from the man bash when you pasted that. 17:43:12 <Vorpal> it seems so utterly stupid 17:43:27 <elliott> Vorpal: Because people think that anything non-interactive is more efficient to use, despite it being a complete duplication of Ctrl+R. 17:43:31 <Vorpal> fizzie: easier way: help shopt | grep hist then help set | grep hist 17:43:41 <elliott> set +histexpand for a more literate version. 17:43:50 <elliott> Oh, hmm, or not. 17:43:51 <elliott> nohistexpand 17:43:58 <Vorpal> not sure it is the same one 17:44:04 <elliott> It is. 17:44:06 <elliott> It says same as -H. 17:44:10 <Vorpal> oh yes indeed 17:44:17 <fizzie> But that's with "set -o". 17:44:21 <Vorpal> elliott: it might be set +o histexpand 17:44:25 <Vorpal> not sure 17:44:26 <elliott> Ah, okay. 17:44:41 <elliott> I guess that's... slightly better than set +H? 17:44:44 <Vorpal> elliott: no the option syntax for set is not very sane 17:45:48 -!- ais523 has joined. 17:45:49 <fizzie> I've never really liked the "+foo is negative, -foo is positive" thing, even though it is... if not common, then at least not unheard-of. 17:46:41 <Vorpal> indeed 17:47:04 <Vorpal> fizzie: and something like set +o noglob is downright confusing 17:47:12 <Vorpal> that is uh... "enable logging"? 17:47:15 <Vorpal> err 17:47:17 <Vorpal> globbing* 17:47:20 <Vorpal> weird typo 17:48:14 <Vorpal> oh shit. libreoffice update 17:48:18 <Vorpal> this is going to take ages. 17:48:54 <elliott> heh 17:49:22 <elliott> fizzie: Eurgh, a multiple-executable solution is annoying. 17:49:35 <elliott> I need to make all the current stuff a library and the like. 17:49:41 <elliott> Maybe I'll just add a flag to mchost. 17:49:44 <elliott> mchost --analyse dump or something. 17:50:04 <fizzie> In other news, installed that 'tig' thing. 17:50:24 <fizzie> In yet other news, InfiniBand is such a silly name. 17:50:27 <elliott> The wonderful thing about tiggers is that fizzie's the only one. 17:51:35 <Phantom_Hoover> Poor fizzie :( 17:51:44 <fizzie> (Our faculty cluster's been offline for the last week, because it moved to another physical location; it was supposed to open on Monday, but apparently they need to replace an InfiniBand switch still. Or, well, HP needs.) 17:52:42 -!- derdon has joined. 17:52:42 <Vorpal> <fizzie> In yet other news, InfiniBand is such a silly name. <-- yes, but why did you bring that up now? 17:52:46 <Vorpal> oh and what is "tig"? 17:52:55 -!- Zuu has quit (Ping timeout: 244 seconds). 17:53:03 <fizzie> 'tig' is this ncurses-based git browser thing elliott pointed me at earlier today. 17:53:09 <Vorpal> heh 17:53:17 <Vorpal> fizzie: any useful? 17:53:41 <elliott> It's prettier than gitk. :p 17:53:50 <fizzie> It has a shortlog-like view, a log view, a tree-browser, a blame mode thing, a differying thing and so on. 17:54:20 <elliott> I suppose I should install it if it's the New Thing. 17:54:39 <elliott> fizzie: Did you just grab a tarball/make/install, or? 17:54:45 <fizzie> I just aptituded it. 17:55:01 <Vorpal> well, I'll be offline for a bit. Cya. 17:55:03 <fizzie> Possibly not bleeding edge, again. 17:55:06 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 17:55:22 <elliott> Oh, it seems to be up to March date. 17:55:29 <elliott> Didn't realise it was pacpakcpakcpakpackpakged. 17:55:36 <elliott> http://jonas.nitro.dk/tig/NEWS.html 17:55:40 <elliott> Time to decide HOW VITAL THESE CHANGES ARE. 17:55:57 <elliott> "Add support for blaming diff lines." Fancy. 17:56:20 <fizzie> The graph mode ('g' in main view) is not quite as pretty as gitg's colorful twisty lines, though. 17:56:37 <elliott> Looks fine for mchost, which has exactly 0 divergences. :p 17:56:56 <elliott> So how do you use it as a pager, I wonder. 17:57:22 <elliott> "PAGER=tig git diff" Well, not like that. 17:57:55 <elliott> "git show | tig" works. 17:58:01 <elliott> Oh, as does "git diff | tig". 18:01:15 <fizzie> "tig status" looks reasonable also; it gives a (colorized) "git status" output, except you can select files to see the diffs. 18:01:23 <fizzie> Not sure I can remember to use this thing though. 18:04:22 <fizzie> It's a bit confusing. If I do "tig status", enter shows the diff of the selected file, but 'd' switches to the "diff view" which shows (full-screened) the diff of the latest commit. And if I 'q' out of that back to the diff view of the selected file, it shows in full screen, but the arrows don't scroll it, instead they change the selected file in the (now invisible) "tig status" file list. 18:04:39 <elliott> It is a magic. 18:06:09 -!- Zuu has joined. 18:19:19 <ais523> what's tig? 18:19:33 <ais523> ah, found it in scrollback 18:22:53 <fizzie> It reminds me of cgdb (a curses gdb frontend) a bit; it was sort-of nifty, and not too shabby, but for some reason I never quite got around to actually habitually using it. 18:23:28 <fizzie> Same goes with GDB's own TUI thing, except that was also buggy as anything. 18:28:26 <elliott> fizzie: Do you know of any file formats I could output in that would let someone browse it as the "flat" (Constructor arg arg arg) format, but click on a given packet to expand it to have names for all those fields? :p 18:28:36 <elliott> Hard to strike a balance between "lol ten fields what" and "oh god every packet takes up ten lines". 18:28:55 <fizzie> XML. :p 18:29:07 <elliott> fizzie: I don't know of a prewritten tool for XML that would offer that presentation. 18:29:34 <elliott> All I can think of is an ordered (key,value) storage with really lax keys; I could store the flat form as the key. 18:31:33 -!- boily has quit (Ping timeout: 245 seconds). 18:32:30 <fizzie> I've seen some XML editors... and doesn't Firefox do it too if you point it at a styleless XML file? (I mean, show it as tree; then you'd just format that as <Constructor foo bar baz> ...values of the fields either as text or as elements... </Constructor>, and a tree-oriented XML tool would just show the constructor and argument names.) 18:32:56 <elliott> <Constructor foo bar baz> will not be valid. 18:33:03 <elliott> Unless <Constructor (Point ...) 99> is valid. 18:33:26 -!- Ngevd has joined. 18:34:18 <fizzie> That sounds like having the field values in there. I was assuming you didn't want to show those. Or did you mean just "I want all data visible but on one line, and then expanded on click". 18:35:09 <elliott> I want it all visible inline, and if you click on it to expand it I want to be able to see the same data, but with field names before it. 18:35:15 <elliott> And maybe even with the values aligned all fancy-like. 18:35:24 <elliott> Hmm, I could just print out some simple HTML 18:36:21 <fizzie> That sounds possible. You can even embed in some scripting to do the show/hide thing if you want. 18:36:36 <Ngevd> I played monopoly today 18:36:47 <fizzie> <Constructor foo="(Point ...)" bar="99"> ... </Constructor> would let you show everything inline, but it'll probably look real clumsy. 18:36:54 <elliott> Yeees, that sounds clumsy. 18:36:58 <elliott> Scripting was what I was thinking of doing. 18:47:17 -!- boily has joined. 19:01:25 <Ngevd> Forgot it was Monday 19:01:28 <Ngevd> I like Mondays 19:01:37 <Ngevd> Mondays are University Challenge Days 19:02:11 <ais523> is #esoteric the University Challenge Fan Club? 19:02:17 <ais523> it's on in here too 19:02:46 <elliott> ais523: least enthusiastic fanclub ever 19:02:51 <ais523> indeed 19:06:04 -!- Ngevd has quit (Ping timeout: 252 seconds). 19:17:34 -!- sadhu has joined. 19:18:15 <sadhu> Hello esoteric! 19:20:28 <elliott> hi 19:20:30 <elliott> `? welcome 19:20:32 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 19:21:19 <sadhu> hi elliott 19:21:23 <fizzie> fungot: You, start greeting people too. 19:21:24 <fungot> fizzie: it doesn't *use* raw cgi. to my deep fnord i'm only fnord of the job description. it's badly fnord also. 19:21:43 <elliott> `addquote <fungot> fizzie: it doesn't *use* raw cgi. to my deep fnord i'm only fnord of the job description. it's badly fnord also. 19:21:43 <fungot> elliott: i lived in the north east!! i'm having too much fun 19:21:44 <HackEgo> 685) <fungot> fizzie: it doesn't *use* raw cgi. to my deep fnord i'm only fnord of the job description. it's badly fnord also. 19:21:48 <elliott> ... 19:21:56 <elliott> What style is it on. 19:22:00 <fizzie> ^style 19:22:00 <elliott> And why is it mentioning the north east. 19:22:00 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube 19:22:05 <elliott> Augh. 19:22:05 <fizzie> "The usual." 19:22:15 <sadhu> this is my registered nickname....i am the guy who was working on assembler to bainfuck converter 19:25:07 <elliott> haven't you had three nicks now? :-) 19:27:46 <sadhu> elliott:but they were not registered 19:27:57 <sadhu> this one is final one...as i have registered this 19:28:20 <sadhu> my previous nicks were "dell" & "kaus" 19:28:34 <elliott> hehe 19:28:46 <sadhu> :D 19:29:53 <Gregor> fungot: I will fnord you so hard you fnord your fnord. 19:29:53 <fungot> Gregor: it's a nice number. even numbers are also fnord difficult/ big to implement which is why i do this 19:30:02 <sadhu> fungot: sdf 19:30:03 <fungot> sadhu: what lisp does with lists... lua does with hash tables. 19:30:10 <sadhu> lol 19:30:21 <sadhu> fungot: Are you a dumb goat ? 19:30:22 <fungot> sadhu: i idly searched for your email and tell me what the fuck 19:30:57 <sadhu> try the #emacs ,fsbot its amazing! 19:31:41 -!- sadhu has changed nick to ikkyu. 19:31:46 -!- ikkyu has changed nick to sadhu. 19:31:49 <fizzie> But it's probably implemented in something really boring. 19:31:58 <sadhu> emacs lisp 19:32:05 <elliott> ?hoogle (a -> m b) -> a -> m (a,b) 19:32:06 <lambdabot> No results found 19:32:09 <elliott> Lame. 19:32:21 <elliott> ?undo do x <- a; x' <- f x; return (x,x') 19:32:21 <lambdabot> a >>= \ x -> f x >>= \ x' -> return (x, x') 19:32:25 <elliott> ?pl a >>= \ x -> f x >>= \ x' -> return (x, x') 19:32:25 <lambdabot> liftM2 (>>=) f ((return .) . (,)) =<< a 19:32:28 <elliott> Sigh. 19:32:34 <fizzie> How... obvious. 19:32:51 <elliott> ?pl \line -> unless (null line) (putStrLn (reverseWords line) >> main) 19:32:52 <lambdabot> liftM2 unless null ((>> main) . putStrLn . reverseWords) 19:33:12 <sadhu> fungot:fuck you! 19:33:13 <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life. 19:33:20 <elliott> sadhu: :( 19:33:20 <elliott> rude 19:33:38 <fizzie> fungot: Where do you *get* that stuff? 19:33:39 <fungot> fizzie: i saw the movie of the book deals almost exclusively with sushi, actually... creative. 19:33:40 <sadhu> elliott :P 19:34:43 -!- oerjan has joined. 19:34:55 <fizzie> Oe, it's rjan. 19:35:09 <fizzie> (The first two letters sound somehow interjectish.) 19:35:13 <oerjan> fie, it's zzie! 19:35:38 <fizzie> I considered registering "zzie.fi" as my "primary" domain. 19:35:54 <elliott> But what email to use? 19:36:11 <fizzie> Aye, there's the rub. fi.zzie@zzie.fi? 19:36:38 <elliott> Ugly. 19:36:45 <elliott> if@zzie.fi would be nice if only @ were . 19:36:53 <elliott> fi@zzie.fi is alright, I have to admit. 19:36:55 <oerjan> heiki.kallasjokki@zzie.fi 19:36:59 <elliott> fizzie: Can you become fazzie? 19:37:01 <oerjan> *heikki 19:37:05 <elliott> f@zzie.fa 19:37:06 <fizzie> elliott: If I eat enough. 19:37:20 <elliott> :DDDdd 19:37:31 <Gregor> X-D 19:37:44 <elliott> oerjan: i helped someone... twice......... http://hpaste.org/51809 19:37:48 <elliott> i don't think my second helping was good... 19:37:53 <Gregor> elliott: Tisk tisk. 19:38:09 <elliott> although actually it reads OK if you had flipped (.) :P 19:38:11 <oerjan> fizzie: all you need to do is become irish and register fi@zz.ie 19:38:29 <elliott> $ whois zz.ie 19:38:29 <elliott> The program 'whois' is currently not installed. You can install it by typing: 19:38:29 <elliott> sudo apt-get install whois 19:38:30 <elliott> How. 19:38:38 <elliott> Xubuntu, your smallness is lies. 19:39:18 <fizzie> It just keeps telling me what .ie domains should be like. 19:39:31 <elliott> "Not like this", in other words? :-P 19:39:32 -!- sadhu has quit (Quit: Leaving). 19:39:39 <elliott> RIP sadhu. 19:39:42 <elliott> ?pl (>> a) . b 19:39:43 <lambdabot> (>> a) . b 19:39:45 <fizzie> Well, I don't know, none of the conditions seem to rule out zz.ie. 19:39:51 <elliott> Try whois sdojflkgslkdfgd.ie 19:40:13 <fizzie> % Not Registered - The domain you have requested (sdojflkgslkdfgd.ie) is not a registered .ie domain name. 19:40:17 <fizzie> It's a different message. 19:40:23 <fizzie> -be less than 66 characters in length, including the '.ie' characters 19:40:23 <fizzie> -not start with a hyphen '-' 19:40:23 <fizzie> -not have a label ending in a hyphen before the '.ie' e.g. 'xyz-.ie' 19:40:23 <fizzie> -not start with 'xn--' which is reserved for IDN usage, e.g. �ire.ie 19:40:24 <fizzie> -contain at least 5 characters, including the three for '.ie' 19:40:26 <fizzie> -have at least one alphabetic character, e.g. ' would be invalid' 19:40:38 <fizzie> But I don't see why zz.ie would be wrong according to those. 19:40:39 <elliott> <fizzie> -have at least one alphabetic character, e.g. ' would be invalid' 19:40:39 <elliott> What. 19:40:59 <fizzie> Don't ask me. Maybe it's a conversion thing somewhere. 19:41:44 <fizzie> The .fi root allows two-letter registrations, but only when they do not match existing TLDs, and since there are so many of them ccTLDs, quite a lot of them are reserved. 19:41:52 <fizzie> (And all the legal ones are already registered.) 19:42:01 <elliott> Heh. 19:42:17 <elliott> There are still one-character domains on sale. 19:42:19 <elliott> Excluding TLD. 19:42:44 <elliott> I know .st charge exorbitant prices for two-characters. 19:42:57 <elliott> (But seem to reserve all one-chars.) 19:42:59 <Gregor> So the shortest domain you can buy is presumably three characters + a dot? 19:43:16 <elliott> Gregor: I believe so. It is one of my goals to own one of these domains :P 19:43:23 <elliott> Gregor: I was working on a script to narrow down the list. 19:43:24 <oerjan> elliott: null line `unless` do 19:43:29 <elliott> oerjan: heh 19:44:06 <fizzie> A friend just registered uv.fi. (All the legal two-character .fi's have been registered for a while now, but that one expired recently. There's three others in the "grace period" about to go, but I don't think I want any of them. The difference between two and three characters isn't all that huge.) 19:44:08 <Gregor> elliott: Not as good as libc.so 19:44:10 <Gregor> ... :'( 19:44:13 <elliott> fizzie: Just? 19:44:29 <elliott> Anyway, if I get a one-char domain, whooo boy am I gonna sell that thing :P 19:44:30 <fizzie> Just a week or so ago. 19:44:41 <elliott> How much do you think an UP AND COMING URL SHORTENER STARTUP would pay for a four keypress domain 19:44:47 <elliott> The answer is MORE MONEY THAN I NEED. 19:45:10 <Gregor> elliott: Why compete with t.co? 19:45:28 <elliott> Gregor: Can non-twat things even use t.co? :-P 19:45:41 <elliott> And besides, I said "startup", "url shortener"; the brain of the hypothetical reader is not expected to be active. 19:46:03 <elliott> "The link service at http://t.co is only used on links posted on Twitter and is not available as a general shortening service. 19:46:03 <elliott> " 19:47:55 <Gregor> elliott: I spose not. 19:48:01 <oerjan> elliott: i assume your hpaste got an answer to the question he actually asked. 19:48:16 <elliott> Naw, I answered that in-channel :P 19:48:19 <fizzie> ICANN New gTLD Applicant Guidebook does not seem to specify any minimum length. If they would (except I really don't think they will) accept a single-letter domain, you could own, say, "x". 19:48:24 <oerjan> *hpaste guy 19:48:32 <fizzie> http://x/. i@x. 19:48:38 <elliott> fizzie: There's Ian at n@ai. 19:48:42 <elliott> http://ai./ 19:48:54 <fizzie> Yes, that's pretty close already. 19:49:12 <elliott> I don't think I could turn down elli@tt. 19:49:16 <oerjan> well he's an ai so he doesn't count, obviously he just hacked it 19:49:27 <elliott> Someone wanna give me elli@tt? 19:49:50 <elliott> Man, Anguilla is FLAT. 19:49:53 <elliott> http://upload.wikimedia.org/wikipedia/commons/4/43/Anguilla-aerial_view_western_portion.jpg 19:49:55 <elliott> Like really flat. 19:50:00 <Phantom_Hoover> Sorry, I slammed the door, I'll have to come off for the rest of the night bye guys 19:50:04 -!- Phantom_Hoover has quit (Quit: Leaving). 19:50:23 <elliott> lol 19:50:32 <elliott> oh 19:50:33 <elliott> oh dear 19:50:37 <elliott> my power cord is frayed 19:50:38 <oerjan> elliott: so ian will be the first guy to lose his email due to global warming? 19:50:46 <elliott> well i 19:50:50 <elliott> guess i will not use this computer 19:51:06 <elliott> oerjan: heh 19:51:07 <fizzie> It's just electricity, how dangerous could it be? 19:51:14 <elliott> `addquote <fizzie> It's just electricity, how dangerous could it be? 19:51:16 <HackEgo> 686) <fizzie> It's just electricity, how dangerous could it be? 19:51:18 <elliott> Inspiring words from an inspiring man. 19:51:39 <fizzie> It could be one of those "famous last words" quotations. 19:54:06 <oerjan> "He touched hiiiiiigh voltage" (to the tune of blue velvet) 19:56:24 <Gregor> elliott: Come to think of it, how can your hypothetical new shortener compete with Tweak? 19:56:25 <elliott> http://ai./offshore.jpg 19:56:26 <elliott> Me. 19:56:52 <oerjan> http://i./rule/ 19:57:10 <elliott> Gregor: 19:57:12 <elliott> Tweak: http://hopud.tk 19:57:12 <elliott> x.ab: http://x.ab/q9 19:57:17 <elliott> Sure, it's a bubble, but then so are URL shorteners. 19:57:47 * elliott tries to generate a looping tweak. 19:57:50 <Gregor> Fair 'nuff. 19:57:59 <Gregor> elliott: Is it predictable? 19:58:01 <elliott> IT WILL ONLY TAKE ME 999999999 BILLION YEARS 19:58:03 <elliott> Gregor: Nope :P 19:58:08 <elliott> Maybe it's a hash, but... 19:58:10 <Gregor> lol 19:58:15 <elliott> I mean it can't be a pure hash 19:58:18 <elliott> Because people can register .tks :P 19:58:29 <Gregor> GOD Tweak is brilliant. 19:58:52 <elliott> I want to visit Tokelau and tell them what crimes are being committed in their name. 19:59:05 <elliott> Whities: Literally the worst. 19:59:25 <elliott> First they come and take your land, then they give you internet in exchange for your domain then they fucking hand out your fucking domains as fucking shortened URLs. 19:59:27 <oerjan> <elliott> Deprecated: "Please import from Control.Monad.ST.Unsafe instead; This will be removed in the next release" 19:59:37 <oerjan> obviously needed for SafeHaskell 19:59:41 <elliott> Yes. 19:59:45 <elliott> Safe as skull. 19:59:56 <elliott> Why on earth has subpixel rendering regressed in this version of Ubuntu? 20:00:01 <elliott> fizzie: How's the subpixels on the Debian side of camp :P 20:04:32 <oerjan> <elliott> http://hackage.haskell.org/package/vault Hey, I am a pubamalished developamator. 20:04:35 <oerjan> no haddock 20:04:39 -!- augur has quit (Remote host closed the connection). 20:04:44 <elliott> Blame hackage. 20:04:49 <elliott> It's either slow or something went wrong. 20:04:55 <oerjan> maybe it's done in batches 20:04:58 <elliott> Give it a day or two. 20:05:10 <elliott> oerjan: but 20:05:20 <elliott> https://raw.github.com/HeinrichApfelmus/vault/master/src/Data/Vault.hs 20:05:20 <elliott> https://raw.github.com/HeinrichApfelmus/vault/master/src/Data/Vault/ST.hs 20:05:23 <elliott> just ignore the actual code :-) 20:05:28 <elliott> it's very shrot 20:05:29 <elliott> short 20:07:24 <oerjan> elliott: i fail to detect the "persistent" part 20:07:44 <elliott> oerjan: it is the _other_ kind of persistence 20:07:52 <oerjan> hm? 20:07:52 <elliott> http://en.wikipedia.org/wiki/Persistent_data_structure 20:08:08 <elliott> i.e. immutable, based on transforming 20:08:18 <elliott> (with sharing implied) 20:08:28 <elliott> rather than an STArray or whatever 20:09:04 <oerjan> elliott: aha. does this mean you can implement STT in this? 20:09:13 <elliott> oerjan: Yep, I think so. 20:09:20 <elliott> oerjan: see: 20:09:38 <elliott> "Somewhat interestingly, I discovered, hacking on my own version (which all these changes a backported from) before this repository existed, that Vault s is actually isomorphic to ST s ()! Key s a becomes STRef s (Maybe a), and insert looks like insert k x m = m >> writeSTRef k (Just x). lookup is lookup k m = unsafeRunST (m >> readSTRef r), where unsafeRunST :: ST s a -> a (implementable as unsafePerformIO . unsafeSTToIO). Unfortunately, I don't 20:09:38 <elliott> believe this implementation is very efficient; it has to run every STRef operation on every single lookup." 20:09:39 <elliott> https://github.com/HeinrichApfelmus/vault/pull/1 20:09:55 <elliott> so basically yes, you can use Vault as the state of the STRefs 20:10:02 <elliott> which become pre-filled Keys 20:10:20 <elliott> STT is really not problematic at all, just not really efficient 20:12:02 -!- Ngevd has joined. 20:12:11 <elliott> pikhq: I think I might understand enough about @'s memory model to start implementing it; apart from the mammoth task of making the GC work well, there's only one obstacle I can think of. 20:14:06 <pikhq> And that is? 20:14:12 -!- GreaseMonkey has joined. 20:14:31 <elliott> pikhq: Basically, there needs to be a mapping from the abstract virtual address to location on disk. 20:14:37 <elliott> Because when the pointer is dereferenced... you gotta fetch it. 20:14:45 <elliott> It's simply a matter of microoptimising that lookup. 20:14:48 <elliott> Diskwise. 20:15:10 <pikhq> I'm not sure how it's done, but I know this is actually *precisely* what is done with swap. 20:16:06 <pikhq> So, in principle this should be doable with fairly standard techniques. 20:16:54 <elliott> pikhq: It's also basically a standard filesystem... 20:17:09 <elliott> pikhq: Address 0a9df9 --> file /0/a/9/d/f/9 20:17:29 <elliott> Except that the maximum number of files in each directory is fixed and tiny, as are the names of those files. 20:17:34 <elliott> And there's no metadata to store. 20:17:36 <elliott> So it's quite a lot simpler. 20:18:07 <pikhq> So, more or less you'd have a page table on disk. 20:19:10 <elliott> Good point. 20:19:11 <pikhq> Mmkay. Yeah, thinking about it more this is genuinely mundane kernel implementation stuff. 20:19:29 <elliott> Yep... can you tell I don't have much traditional kernel dev experience? :-) 20:19:32 -!- BeholdMyGlory has quit (Remote host closed the connection). 20:19:37 <pikhq> Given that I have more, yes. :P 20:19:52 <elliott> http://en.wikipedia.org/wiki/Extended_Page_Table I don't know what this is, but it looks snazzy. 20:19:53 <pikhq> And my fanciest kernel is only technically one. 20:20:38 <pikhq> Oh, that. It's a scheme to do paging in ring 3. 20:21:37 <elliott> pikhq: I was also thinking that I forgot to neglect something important in my allocator design... 20:21:45 <elliott> pikhq: Namely that every @ object is immutable. 20:21:56 <elliott> So any change of a page won't be /mutating/ an object, it'll be creating a new one. 20:22:08 <elliott> (It might be creating a new one at the exact same location an old one used to be, but still.) 20:22:59 <pikhq> elliott: Well, immutability probably makes your GC a *little* bit easier. 20:23:17 <elliott> pikhq: It also makes it incredibly vital. 20:23:27 <pikhq> Well, yes. 20:23:32 <elliott> GC isn't just "that thing that stops things leaking memory", it's "the thing that lets me run a program for more than two seconds without running out of RAM". 20:25:14 <pikhq> Oh, you can run for more than two seconds without running out of RAM. However, you'll start thrashing like hell, because @ doesn't maintain a RAM/disk dichotomy. :) 20:25:40 <Gregor> It'll take twelve seconds to run out of disk. 20:25:41 -!- Ngevd has quit (Read error: Connection reset by peer). 20:25:55 <pikhq> Gregor: More than that. 20:26:00 <pikhq> Gregor: Significantly more. 20:26:06 <pikhq> Gregor: Disk is *slow*. 20:26:18 <Gregor> pikhq: My disk is 10M 20:26:20 <elliott> I like how @ is designed for a disk that can be written to every five seconds constantly, but also one with SSD-style random access times. 20:26:26 <pikhq> Gregor: 12 seconds, then. 20:26:31 * Gregor nods :P 20:26:34 <elliott> Can we just saw a magnetic disk and an SSD in half and then glue them together? 20:27:28 <pikhq> elliott: Well, if you're never GC'ing, you'll only perform a write to each disk block once... 20:27:41 <pikhq> And once that's done you're done. 20:27:49 <elliott> pikhq: ITT: Not even a vaguely useful model of what @ will do :P 20:28:20 <pikhq> Will if you don't GC. Hope you only ever need a few minutes of compute time! 20:28:25 <pikhq> Well. SSD 20:28:27 <pikhq> 30 seconds. 20:28:33 <elliott> I love how @ becomes much MORE complex by REMOVING mutation. 20:28:40 <elliott> Or rather, making non-mutation the common thing :P 20:29:22 -!- Phantom_Hoover has joined. 20:29:30 <elliott> It is Phantom_Hoover's slammed door's ghost. 20:29:43 <Phantom_Hoover> no 20:29:45 <oerjan> <elliott> ?hoogle (a -> m b) -> a -> m (a,b) 20:29:49 <oerjan> hm. 20:30:07 -!- plycke has joined. 20:30:07 -!- plycke has quit (Excess Flood). 20:30:09 <elliott> ?hoogle arr a b -> arr a (a,b) 20:30:10 <lambdabot> Control.Arrow (&&&) :: Arrow a => a b c -> a b c' -> a b (c, c') 20:30:10 <lambdabot> Data.Graph.Inductive.Query.MaxFlow maxFlowgraph :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> gr a (b, b) 20:30:11 <oerjan> that would be so much easier if monads were also arrows. i think. 20:30:13 <elliott> oerjan: What a massive surprise 20:30:17 <pikhq> Incidentally, non-mutable on-disk structure is not as weird as you might think. Many recent filesystems actually COW each block. 20:30:18 <elliott> It's an arrow function on Kleisli 20:30:21 <elliott> I WOULD NEVER HAVE GUESSED 20:30:23 <pikhq> For instance, ZFS and btrfs. 20:30:33 <elliott> pikhq: Yah, I know. 20:30:42 <elliott> pikhq: Sharing is going to be very important to @. 20:30:50 <elliott> pikhq: It's better if you can /avoid/ GCing by simply building deduplicatively. 20:30:57 <elliott> pikhq: As a bonus, you get versioning. 20:30:58 -!- GreaseMonkey has quit (Quit: The Other Game). 20:32:10 <oerjan> :t \f x -> f x >>= (liftM $ (,) x) 20:32:12 <lambdabot> forall a1 (m :: * -> *) a. (Monad m) => (a -> m (m a1)) -> a -> m (a, a1) 20:32:18 <oerjan> oops 20:32:18 <elliott> needs a join 20:32:46 <oerjan> :t \f x -> f x >>= (flip $ (,) x) 20:32:48 <lambdabot> Couldn't match expected type `a -> b' 20:32:48 <lambdabot> against inferred type `(a1, b1)' 20:32:48 <lambdabot> Probable cause: `(,)' is applied to too many arguments 20:32:53 <oerjan> darn 20:33:05 <oerjan> oh hm 20:33:28 <oerjan> :t \f x -> (,) x `liftM` f x 20:33:29 <lambdabot> forall a a1 (m :: * -> *). (Monad m) => (a -> m a1) -> a -> m (a, a1) 20:33:45 <monqy> `liftM`? nice 20:33:47 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: liftM`?: not found 20:33:53 <elliott> way to <$> 20:34:01 <elliott> :t \f x -> (x,) <$> f x 20:34:02 <lambdabot> Illegal tuple section: use -XTupleSections 20:34:08 <elliott> :t \f x -> (,) x <$> f x 20:34:09 <lambdabot> forall a a1 (f :: * -> *). (Functor f) => (a -> f a1) -> a -> f (a, a1) 20:34:09 <oerjan> elliott: i didn't want to mix Functor into the type 20:34:15 <elliott> oerjan: well it should be functor really... 20:34:15 <elliott> ?pl \f x -> (,) x <$> f x 20:34:16 <lambdabot> liftM2 (<$>) (,) 20:34:20 <elliott> ooh 20:34:23 <oerjan> elliott: oh right it is 20:34:32 <elliott> :t liftA2 (<$>) (,) 20:34:34 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:34:39 <elliott> there, now _nobody_ can understand it 20:34:53 <oerjan> at least it got short 20:35:01 <elliott> the lesson to be learnt is that explicit tuple programming is ugly 20:35:05 <elliott> and the whole point of applicative style is to avoid it 20:35:15 <elliott> pay attention, arrows 20:35:31 <oerjan> :t (<$>) (<$>) (,) <*> 20:35:33 <lambdabot> parse error (possibly incorrect indentation) 20:35:40 <oerjan> oops 20:35:41 <elliott> oerjan... 20:35:44 <elliott> that's not code... 20:35:45 <oerjan> :t ((<$>) (<$>) (,) <*>) 20:35:46 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:35:54 <oerjan> WHAT 20:36:03 <elliott> oerjan: wat? 20:36:15 <elliott> it's an obvious transformation of above 20:36:18 <elliott> not sure what surprises you 20:36:27 <elliott> :t ap (fmap fmap (,)) 20:36:29 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:36:31 <elliott> quality 20:36:52 <elliott> :t (((<$>) <$> (,)) <*>) 20:36:54 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:36:55 <elliott> oerjan: why the WHAT 20:37:14 <pikhq> Better without spaces. 20:37:19 <pikhq> (((<$>)<$>(,))<*>) 20:37:25 <pikhq> Now *there's* a function to be feared. 20:37:32 <elliott> :t fmap`fmap`(,)`ap` 20:37:33 <lambdabot> parse error (possibly incorrect indentation) 20:37:35 <monqy> :t ap(fmap<$>(,)) 20:37:37 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:37:45 -!- augur has joined. 20:38:14 <elliott> :t ap$fmap<$>(,) 20:38:15 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:38:18 <elliott> :t ap$(<$>)<$>(,) 20:38:19 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:38:38 <monqy> anyway why does this use tuples anyway 20:38:42 <monqy> anyway 20:38:49 -!- plycke has joined. 20:38:49 -!- plycke has quit (Excess Flood). 20:38:55 <oerjan> <elliott> oerjan: why the WHAT <-- WHAT DO YOU MEAN IT'S NOT CODE 20:39:14 <elliott> oerjan: heh 20:41:11 <oerjan> :t ap.fmap fmap 20:41:13 <lambdabot> forall (m :: * -> *) a b (f :: * -> *). (Monad m, Functor f, Functor m) => m (a -> b) -> m (f a) -> m (f b) 20:42:08 <oerjan> hm that liftA2 is in the (x ->) monad isn't it 20:42:40 <elliott> yes 20:42:47 -!- plycke has joined. 20:42:47 -!- plycke has quit (Excess Flood). 20:42:51 <elliott> the (a ->) applicative, more precisely 20:42:57 <elliott> oh, did we just avoid spmabots 20:42:58 <elliott> ok 20:43:25 <oerjan> :t (((<<$>)Prelude..(,))<*>) 20:43:26 <lambdabot> Not in scope: `<<$>' 20:43:31 <oerjan> :t (((<$>)Prelude..(,))<*>) 20:43:32 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:43:46 <elliott> :t ap$(.).(,) 20:43:47 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:43:53 <elliott> oerjan: :') 20:44:13 <elliott> :t ((.).(,)<*>) 20:44:14 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a) 20:44:20 <elliott> it shall forever be known as the "breasts and kirby" operator... 20:44:43 -!- boily has quit (Ping timeout: 240 seconds). 20:55:25 <oerjan> `addquote <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life. 20:55:25 <fungot> oerjan: sad things like jews in germany in the extra clauses which require blocks, you need to install 20:55:26 <HackEgo> 687) <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord 20:55:32 <oerjan> darn 20:55:41 <elliott> oh no :( 20:55:44 <oerjan> `delquote 687 20:55:45 <HackEgo> ​*poof* 20:55:50 <elliott> add a log thing 20:55:53 <elliott> like 20:56:06 <elliott> <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of [date time] 20:56:07 <fungot> elliott: er... o?)) for instance, the concept of dense death, not dense enough death resembles a ca engine ran out of humour last night. 20:56:09 <elliott> or something 20:56:11 <elliott> i dont know 20:56:12 <elliott> it must be memorised 20:57:37 <oerjan> wait why _did_ HackEgo cut that, it's reply isn't actually longer 20:57:46 <oerjan> *its 20:57:59 <oerjan> `addquote <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life. 20:57:59 <fungot> oerjan: et tu, brute? ( it has gambit 3; i just haven't seen anything similar since stopped saying " leapt") ( url-encode " foo/ bar/ y/g and 20:58:00 <HackEgo> 687) <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord 20:58:19 <oerjan> `run tail -1 quotes 20:58:20 <HackEgo> ​<fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus 20:58:42 <monqy> hackego.... 20:58:49 <oerjan> `run tail -1 quotes | sed 's/^................................//' 20:58:50 <HackEgo> hat boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life. 20:59:07 <oerjan> ok it _is_ all there in the database. 21:00:00 <elliott> oerjan: yes but come on..... 21:00:06 <elliott> btw you could have used .{n} 21:00:08 <oerjan> Gregor: WE THINK HACKEGO CUTS A LITTLE CLOSE 21:00:43 -!- boily has joined. 21:00:57 <oerjan> elliott: somehow i find {n} hard to recall since i rarely use it 21:01:40 <Phantom_Hoover> ^style 21:01:40 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube 21:02:21 <monqy> i wonder where it found the whole jewel perched percariously upon the perfect peak of programmer prowess thing 21:02:34 <monqy> and what the context was 21:02:34 <elliott> it made it up with its imagination....... 21:02:38 <monqy> oh........ 21:02:41 <monqy> good imagination 21:02:42 <elliott> it needs a dramatic reading that 21:02:58 <oerjan> elliott: i just think that as long as it is in the database, HackEgo can be fixed. 21:04:15 <elliott> oerjan: unless it is really too long....... 21:04:55 <oerjan> elliott: but it isn't, HackEgo's quote reply starts to the left of my `addquote 21:05:05 <oerjan> i mean, the general adjustment 21:05:24 <oerjan> hm well 21:06:01 <oerjan> and my *!*@* string is also longer 21:08:23 <oerjan> so there's no reason why HackEgo needs to cut it off when i don't. 21:09:42 <elliott> oerjan: note that you need to account for like three bytes of difference due to server crap 21:09:50 <elliott> and HackEgo is longer than oerjan 21:10:04 <elliott> although your hostname should balance that out 21:10:53 <oerjan> elliott: the amount that HackEgo is longer is balanced out by 687) being shorter than `addquote 21:11:07 <elliott> your MOM is shorter than addquote or something 21:11:13 <elliott> oh uh 21:11:17 <elliott> i forgot you're on my mom joke blacklist 21:11:18 <elliott> sorry 21:11:25 -!- calamari has joined. 21:16:55 <oerjan> google's occasional messing up of IE's history is getting eerie - i am sure it was at least _weeks_ ago i did that google search. 21:17:27 <elliott> I BET DDG DOESN'T DO THAT</troll><troll> 21:18:08 <oerjan> well, istr the iwc forum also does, so it's probably not strictly a google bug. 21:18:46 <oerjan> but it's the first time it came up with a page that i clearly cannot recall from the same IE session. 21:19:25 <monqy> is it an ie bug 21:20:20 <oerjan> presumably. 21:20:51 <elliott> oerjan: http://hackage.haskell.org/package/vault has docs now 21:21:21 <oerjan> elliott: well i already read the files you linked :P 21:21:37 <oerjan> but good, good 21:22:12 <elliott> oerjan: hope you enjoyed the implementation :DDD 21:22:35 <oerjan> *browsed 21:22:44 <elliott> dude they're like forty lines :P 21:22:56 <oerjan> TL;DR 21:23:27 -!- tiffany has joined. 21:24:24 -!- elliott has quit (Quit: Leaving). 21:24:45 <Phantom_Hoover> Conclusion: elliott == tiffany. 21:24:52 <tiffany> o~o 21:25:10 <monqy> bizarro world elliott 21:25:27 <monqy> can only make ridiculous faces 21:25:29 <Phantom_Hoover> Bizarro world elliott is an emoticon bot. 21:26:26 <Gregor> I thought we concluded that tiffany was a person with bot-like tendencies. 21:28:08 <Phantom_Hoover> Swap 'bot' and 'person', and then yes. 21:39:09 <oerjan> *chirp* 21:40:53 -!- derdon has quit (Remote host closed the connection). 21:41:41 <Phantom_Hoover> oerjan, meanwhile, has begun his transformation into a mooshroom. 21:41:47 <Phantom_Hoover> I mean a chipmunk. 21:41:52 <Phantom_Hoover> I don't even. 21:43:53 <olsner> things that go *chirp*: mushrooms, chipmunks 21:44:35 <Phantom_Hoover> Yes. 21:44:58 <Phantom_Hoover> Mushrooms are noted for their chirps. 21:45:29 <fizzie> And signal processing folks. 21:48:02 <oerjan> and here i thought it was the sound of crickets. 21:53:55 -!- pumpkin has joined. 21:54:03 <monqy> the sound of tumbleweeds, no? 21:54:55 * oerjan notes reddit's r/particlephysics is not very active. 21:55:17 <oerjan> only two posts about the neutrinos 21:56:07 <fizzie> All the participants have tragically been annihilated in redditor-antiredditor collisions. 21:56:10 -!- copumpkin has quit (Ping timeout: 260 seconds). 21:56:20 -!- pumpkin has changed nick to copumpkin. 21:56:22 <oerjan> fizzie: sounds plausible. 21:56:47 <fizzie> It's an occupational hazard for a particle physicist. 21:56:59 <oerjan> copumpkin might meet a similar destiny if his nicks ever touch 21:57:19 <copumpkin> :O 21:57:32 <pikhq> I don't think that there's anything about impacts between objects and coöbjects. 21:57:58 <oerjan> i'm sure co- includes all forms of duality. 21:58:37 <oerjan> when you combine vectors and covectors the wrong way, all you end up with is a single number. 21:59:49 <oerjan> and if you do it the other way, you suddenly find yourself in the matrix. 22:00:31 <pikhq> Seems to me both numbers and matrices are members of vector spaces, and thus vectors. So I'm not entirely sure why that's relevant. :P 22:01:37 <Phantom_Hoover> `quote 22:01:38 <HackEgo> 586) <Phantom_Hoover> I gave her the Noblesse Oblige rooms. <Phantom_Hoover> She was happy with them even when they were behind 2 locked doors and a floodgate and full of water. 22:01:55 <Phantom_Hoover> Hiiiiiiiiiiiiiiiiiiiiiiird 22:02:14 <quintopia> 2 22:02:49 <oerjan> pikhq: but numbers are one-dimensional. he'd have most of his personality wiped out! 22:03:36 <pikhq> That would be quite sad, wouldn't it? 22:03:59 <oerjan> Phantom_Hoover: i take it this dorf lady was sort of crazy and needed to be kept away from people. 22:04:38 <fizzie> You'll be... at the OUTER LIM^H^H^HPRODUCTS. 22:04:39 <oerjan> or wait, do you mean she couldn't actually get to her rooms 22:05:50 <oerjan> Phantom_Hoover: also didn't you ground yourself preemptively just a while ago? 22:06:19 <Phantom_Hoover> <oerjan> Phantom_Hoover: i take it this dorf lady was sort of crazy and needed to be kept away from people. 22:06:21 <Phantom_Hoover> Actually no. 22:06:50 <Phantom_Hoover> I built the rooms to drown annoying nobles and I'd just used them on the mayor. 22:06:59 <oerjan> ah. 22:07:03 <Phantom_Hoover> And had forgotten to fit a drain. 22:07:24 <oerjan> i take it her stay was somewhat short. 22:10:37 -!- Phantom__Hoover has joined. 22:10:57 -!- Phantom_Hoover has quit (Read error: Connection reset by peer). 22:11:04 <Phantom__Hoover> oerjan, actually, it wasn't, since all her demands were for adamantine stuff so they were fulfilled just by kitting out the military. 22:12:28 <oerjan> ok 22:13:11 <Phantom__Hoover> I think she died when I handed the fort over to elliott and he cocked it all up, though. 22:13:40 <oerjan> shocking! 22:14:38 -!- calamari has quit (Quit: Leaving). 22:24:05 -!- CakeProphet has joined. 22:28:13 -!- sllide has quit (Ping timeout: 248 seconds). 22:30:59 * Phantom__Hoover → sleep 22:31:00 -!- Phantom__Hoover has quit (Quit: Leaving). 22:54:30 -!- calamari has joined. 22:57:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:58:34 -!- pikhq has quit (Remote host closed the connection). 22:58:52 -!- pikhq has joined. 23:01:23 -!- Patashu has joined. 23:08:29 -!- augur has quit (Remote host closed the connection). 23:10:39 -!- CakeProphet has quit (Ping timeout: 252 seconds). 23:26:09 -!- copumpkin has joined. 23:28:50 -!- calamari has quit (Ping timeout: 252 seconds). 23:36:29 -!- Jafet has quit (Quit: Leaving.). 23:59:43 -!- CakeProphet has joined. 23:59:51 -!- CakeProphet has quit (Changing host). 23:59:51 -!- CakeProphet has joined. 2011-09-27: 00:02:37 -!- calamari has joined. 00:11:28 -!- CakeProphet has quit (Ping timeout: 258 seconds). 00:13:11 -!- CakeProphet has joined. 00:13:11 -!- CakeProphet has quit (Changing host). 00:13:11 -!- CakeProphet has joined. 00:34:24 <ais523> gah, I just read http://esolangs.org/wiki/German 00:34:43 <ais523> is that even, technically, a language? it just looks like a really inefficient binary encoding format 00:35:17 <ais523> I'm trying to figure out if it's even worse than a BF equivalent or not 00:38:21 <hagb4rd> lol 00:41:35 <coppro> I vote worse 00:43:04 <pikhq> Shortening (the hydrogenated vegetable oil product) both disturbs and confuses me. 00:46:13 <oerjan> he could at least have spelt Bier correctly *whistles innocently* 00:50:19 -!- Jafet has joined. 00:56:19 -!- augur has joined. 00:56:41 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de). 00:56:43 -!- augur has quit (Remote host closed the connection). 01:00:29 -!- hagb4rd has joined. 01:02:03 -!- myndzi has joined. 01:04:44 -!- myndzi\ has quit (Ping timeout: 255 seconds). 01:22:10 -!- ais523 has quit (Remote host closed the connection). 01:23:51 -!- calamari has quit (Quit: Leaving). 01:36:38 -!- MichaelBurge has quit (Read error: Connection reset by peer). 01:37:21 -!- tiffany has quit (Quit: Bai~). 01:51:05 -!- augur has joined. 01:53:32 -!- augur has quit (Remote host closed the connection). 01:58:30 -!- Jafet has quit (Quit: Leaving.). 02:04:24 -!- augur has joined. 02:04:58 -!- Jafet has joined. 02:05:04 -!- Jafet has quit (Changing host). 02:05:04 -!- Jafet has joined. 02:06:46 -!- augur has quit (Remote host closed the connection). 02:08:44 -!- augur has joined. 02:32:26 -!- Sgeo|web has joined. 02:32:55 <Sgeo|web> It is a bad idea to resort to doing arithmatic by hand on an exam because you want to be a show-off and don't want to ask to borrow a calculator 02:35:54 <Sgeo|web> I ran out of time, for the first time in a very long time 02:36:57 <pikhq> Shame the exam required nontrivial arithmetic. Irrelevancies. 02:38:31 <olsner> at (my) university, they never allow calculators on math exams (though I think they allow it in e.g. physics, where the results might be more interesting than the working) 02:39:54 <pikhq> I've generally been used to either "you may not use calculators" or "sure, I guess you can use calculators, but I doubt it'll help". 02:40:48 <pikhq> It's not that likely that fast arithmetic is going to in any way aid you in demonstrating conceptual understanding, after all. 02:41:37 <olsner> in high school we had to do some things with a calculator though, but only because the ability to use a calculator is part of the math curriculum 02:42:21 <olsner> never figured out why, iirc they claimed I would need it in university 02:43:19 <pikhq> If they wanted to teach you something useful, they'd teach you programming, and probably the usage of a CAS. 02:43:29 <Sgeo|web> pikhq: Calculators were allowed. I didn't have one. 02:43:32 <olsner> CAS? 02:43:37 <pikhq> Computer algebra system. 02:45:05 <Sgeo|web> And didn't ask for one until _after_ I finished doing the problem that involved a rather annoying amount of arithmetic. 02:45:14 <Sgeo|web> And noted how little time I had left 02:46:22 <pikhq> Sgeo|web: I'm being annoyed that a calculator was allowed and actually useful. 02:46:31 -!- MichaelBurge has joined. 02:47:02 <Sgeo|web> Ah 02:47:29 <pikhq> Sgeo|web: The ability to perform trivial-yet-annoying arithmetic quickly, calculator or not, is almost certainly an utter irrelevancy. 02:54:55 -!- augur has quit (Remote host closed the connection). 03:01:33 -!- augur has joined. 03:21:52 -!- buds has joined. 03:25:00 -!- buds has quit (Quit: Leaving.). 03:30:42 -!- copumpkin has changed nick to presheaves. 03:41:06 -!- presheaves has changed nick to copumpkin. 03:51:42 -!- Jafet has quit (Quit: Leaving.). 03:57:55 -!- oerjan has quit (Quit: Good night). 03:59:43 -!- sebbu2 has joined. 03:59:43 -!- sebbu2 has quit (Changing host). 03:59:43 -!- sebbu2 has joined. 04:00:01 -!- sebbu has quit (Ping timeout: 256 seconds). 04:15:39 -!- CakeProphet has quit (Ping timeout: 258 seconds). 04:19:08 -!- pumpkin has joined. 04:23:13 -!- copumpkin has quit (Ping timeout: 260 seconds). 04:25:29 -!- GreaseMonkey has joined. 04:27:28 -!- pumpkin has changed nick to copumpkin. 04:39:58 -!- augur has quit (Remote host closed the connection). 05:10:37 -!- MDude has changed nick to MSleep. 05:11:58 -!- Vorpal has joined. 05:23:11 -!- variable has quit (Excess Flood). 05:24:11 -!- Guest13902 has joined. 05:28:09 -!- Guest13902 has quit (Changing host). 05:28:09 -!- Guest13902 has joined. 05:28:22 -!- Guest13902 has changed nick to variable. 05:42:42 -!- Jafet has joined. 05:56:31 -!- hagb4rd has quit (Ping timeout: 260 seconds). 06:13:07 -!- copumpkin has quit (Ping timeout: 240 seconds). 06:13:32 -!- copumpkin has joined. 06:22:15 -!- augur has joined. 06:22:32 -!- azaq23 has joined. 06:22:43 -!- azaq23 has quit (Max SendQ exceeded). 06:23:07 -!- azaq23 has joined. 07:54:28 -!- Madoka-Kaname has quit (Excess Flood). 07:54:49 -!- Madoka-Kaname has joined. 07:55:32 -!- Madoka-Kaname has quit (Changing host). 07:55:32 -!- Madoka-Kaname has joined. 08:33:00 -!- myndzi has quit (Remote host closed the connection). 08:35:51 -!- monqy has quit (Quit: hello). 08:40:07 -!- myndzi has joined. 09:48:46 -!- sebbu2 has changed nick to sebbu. 09:52:48 -!- copumpkin has quit (Ping timeout: 260 seconds). 09:53:12 -!- copumpkin has joined. 10:39:53 -!- hagb4rd has joined. 10:50:46 -!- fungot has quit (Ping timeout: 244 seconds). 10:55:06 -!- GreaseMonkey has quit (Quit: The Other Game). 10:56:58 -!- Patashu has quit (Ping timeout: 260 seconds). 11:35:58 -!- sebbu2 has joined. 11:35:58 -!- sebbu2 has quit (Changing host). 11:35:58 -!- sebbu2 has joined. 11:36:02 -!- sebbu has quit (Ping timeout: 260 seconds). 11:49:11 -!- Phantom_Hoover has joined. 12:12:34 -!- ais523 has joined. 12:20:22 -!- ais523 has quit (Remote host closed the connection). 12:28:01 -!- ais523 has joined. 12:30:45 -!- sllide has joined. 12:37:04 -!- sllide has quit (Read error: Connection reset by peer). 12:45:38 -!- sllide has joined. 12:52:47 -!- augur has quit (Remote host closed the connection). 12:58:24 -!- oerjan has joined. 13:27:41 -!- ais523 has quit (Remote host closed the connection). 13:34:02 -!- oerjan has quit (Quit: leaving). 13:34:35 -!- augur has joined. 14:12:18 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:23:46 -!- ais523 has joined. 14:28:08 -!- sebbu3 has joined. 14:28:08 -!- sebbu3 has quit (Changing host). 14:28:08 -!- sebbu3 has joined. 14:29:43 -!- Effilry has joined. 14:31:26 -!- sebbu2 has quit (Ping timeout: 248 seconds). 14:31:38 -!- Effilry has quit (Changing host). 14:31:38 -!- Effilry has joined. 14:31:46 -!- Effilry has changed nick to FireFly. 14:41:14 -!- copumpkin has joined. 14:41:42 <Phantom_Hoover> copumpkin! 14:42:25 <copumpkin> hi :) 14:49:15 <Phantom_Hoover> So are you actually any kind of god. 14:52:59 <copumpkin> yeah 15:11:03 -!- MSleep has changed nick to MDude. 15:15:08 <Vorpal> <delegate decode="sid" command="&quot;mrsidgeodecode&quot; -if sid -i &quot;%i&quot; -of tif -o &quot;%o&quot; &gt; &quot;%u&quot;"/> <-- why the fuck did they go for xml for a config file that basically only contains lines like that. And why did they put it in an attribute. The &quot; thingy everywhere is hideous. 15:15:17 <Vorpal> (from /etc/ImageMagick/delegates.xml) 15:32:09 -!- Zuu has quit (Read error: Connection reset by peer). 15:37:44 -!- Zuu has joined. 15:43:21 <Sgeo|web> UPDATE [of PBF] 15:43:39 -!- BeholdMyGlory has joined. 15:59:07 -!- monqy has joined. 16:00:45 -!- boily has quit (Quit: WeeChat 0.3.5). 16:08:16 -!- augur has quit (Remote host closed the connection). 16:08:48 <Phantom_Hoover> Sgeo|web, wait whaaaaaaaaa 16:25:01 -!- Ngevd has joined. 16:25:29 <Ngevd> Hello! 16:25:51 <Phantom_Hoover> That's Numberwang! 16:28:02 <Ngevd> !numberwang 4 16:28:04 <EgoBot> That's numberwang! 16:28:18 <Phantom_Hoover> !numberwang 8 16:28:19 <EgoBot> That's numberwang! 16:28:23 <Phantom_Hoover> !numberwang 2345 16:28:24 <EgoBot> That's numberwang! 16:28:53 <Ngevd> !numberwang Fifty twelve 16:28:53 <EgoBot> I'm sorry, but Brazil isn't a vegetable! 16:29:10 <Phantom_Hoover> !show numberwang 16:29:10 <EgoBot> perl print (grep (/\d/, <>) ? q(That's numberwang!) : q(I'm sorry, but Brazil isn't a vegetable!)) 16:29:33 <Phantom_Hoover> !numberwang numberwang 16:29:34 <EgoBot> I'm sorry, but Brazil isn't a vegetable! 16:32:34 <Ngevd> Someone who doesn't get the preview tool has made an esolang 16:34:24 <Ngevd> Not a bad esolang either 16:34:42 <Phantom_Hoover> I'LL BE THE JUDGE OF THAT 16:34:56 <Phantom_Hoover> Wait dammit RC doesn't work. 16:37:02 <Ngevd> It's a language with geometric output 16:40:59 <Ngevd> Reasonably interesting 16:41:29 <Phantom_Hoover> Link? 16:42:09 <Vorpal> Sgeo|web: PBF being? 16:42:34 <monqy> http://esoteric.voxelperfect.net/wiki/Geom 16:43:05 -!- CakeProphet has joined. 16:50:23 -!- Ngevd has quit (Ping timeout: 260 seconds). 16:55:26 -!- elliott has joined. 16:55:45 -!- elliott has quit (Changing host). 16:55:45 -!- elliott has joined. 16:57:03 <elliott> hi 16:57:06 <ais523> hi 16:57:13 <elliott> h...i 16:57:20 <CakeProphet> http://www.codepedia.com/1/CppExpression 16:57:21 <CakeProphet> no 16:57:40 <CakeProphet> "An expression is a statement without a semicolon" 16:57:53 <CakeProphet> bad description of what an expression is or worst? 16:57:54 <CakeProphet> discuss. 16:57:55 <elliott> yes 16:58:28 <monqy> :( 16:58:52 <CakeProphet> http://www.codepedia.com/1/CppStatement 16:58:57 <ais523> elliott: depends on the language 16:59:04 <ais523> in ICA, statements are a special case of expressions 16:59:07 <CakeProphet> "A statement is an expression with a semicolon [1]. Multiple statements, surrounded by acccolades ('{' and '}') form a compound statement " 16:59:12 <elliott> http://esolangs.org/wiki/CUTLASS 16:59:14 <elliott> um 16:59:14 <ais523> (I suspect in most languages it's the other way round) 16:59:16 <elliott> ?????? 16:59:20 -!- MSleep has joined. 16:59:21 <CakeProphet> expression are statements or statements are expressions? help 16:59:31 <fizzie> CakeProphet: You keep removing the [1]s; it's not just any thing, it's a thing with a citation. 16:59:38 <ais523> elliott: looks copied from somewhere 16:59:42 <fizzie> Well, at least from the first one. 16:59:43 <elliott> ais523: nope 16:59:48 <elliott> (cur) (last) 10:55, 30 September 2008 147.89.224.69 (Talk) (Fairly major rewrite from someone involved in the Cutlass Kit 9 project! I hope this is useful.) 16:59:59 <elliott> I suspect 147.89.224.75 is the same editor 17:00:04 <elliott> since it's very close 17:00:08 <elliott> and who the hell knows what CUTLASS is 17:00:16 <CakeProphet> fizzie: even if it's cited it's still a horrible definition. 17:00:19 <elliott> but the page has been around for four years... 17:00:24 <ais523> yep, no results on a quick copyvio search 17:00:34 <ais523> the page really needs bancstarisation, I just don't know what that is 17:00:49 <elliott> it needs moving to another wiki :P 17:01:06 <fizzie> CakeProphet: Also not just any citation, but a citation to a Dutch book. 17:01:25 <CakeProphet> plant I/O and control loops. botany is good yes. 17:01:39 <CakeProphet> fizzie: which meaaaans.... 17:02:48 <CakeProphet> The Cutlass language contains an extensive library of functions specially tailored for process control applications. These include mode and history-dependent functions such as integrators, filters, PID controllers, as well as a range of data-reduction routines and steam tables. 17:02:53 <CakeProphet> steampunk language 17:02:54 -!- MDude has quit (Ping timeout: 248 seconds). 17:03:15 -!- pumpkin has joined. 17:04:30 -!- copumpkin has quit (Ping timeout: 248 seconds). 17:04:32 <CakeProphet> a steampunk language would be done entirely with punch cards, and would player pianos. 17:04:36 <CakeProphet> +involve 17:04:49 <CakeProphet> also zeppelins. 17:05:24 <ais523> sounds great 17:05:37 -!- pumpkin has changed nick to copumpkin. 17:05:59 <monqy> mmm player pianos 17:06:11 -!- CakeProphet has changed nick to tephorPekaC. 17:06:18 -!- tephorPekaC has changed nick to tehporPekaC. 17:06:20 <tehporPekaC> lulz 17:06:35 -!- tehporPekaC has changed nick to CakeProhpet. 17:06:40 <Sgeo|web> Vorpal: Perry Bible Fellowship 17:06:57 <ais523> hey, is it ping random people with random phrases day? 17:07:05 <ais523> elliott: matrix of solidity 17:07:12 <elliott> ais523: walrus 17:07:16 -!- MSleep has changed nick to MDude. 17:07:18 <elliott> Oh wow, Xubuntu uses xscreensaver by default 17:07:23 <elliott> Retro 17:07:26 <Sgeo|web> <Vorpal> Sgeo|web: PBF being? 17:07:27 <ais523> is that awesome or awful? 17:07:30 <CakeProhpet> ais523: ordered multiset of dumbledore dies 17:07:32 <elliott> ais523: It's retro 17:07:44 <ais523> isn't an ordered multiset just... a list? 17:07:46 -!- Ngevd has joined. 17:07:51 <ais523> well, equivalent to one 17:08:02 <ais523> but without the assumptions on internal implementation? 17:08:11 <monqy> list of dumbledore dies 17:08:13 <elliott> a "list" doesn't assume those either 17:08:19 <ais523> hmm, who here would say that "list" to them implies "accessing the first element is faster than accessing the last element" 17:08:27 <elliott> hmm, I have exactly two Xfce annoyances 17:08:29 <CakeProhpet> ais523: lists aren't technical enough to be maths 17:08:32 <ais523> I've known people who would say it does, and who would say it isn't 17:08:32 <elliott> one is major, one is not so major 17:08:34 * Sgeo|web needs to get going now 17:08:35 <elliott> ais523: not me 17:08:35 <ais523> assuming a reasonable length 17:08:36 <Sgeo|web> Bye 17:08:43 <Ngevd> Bye, Sgeo|web 17:08:43 <elliott> ais523: Python calls dynamic-arraylists lists 17:08:47 <fizzie> I used to use xlock. 17:08:54 <ais523> as do many other languages 17:08:54 <fizzie> Or xlockmore, I guess. 17:08:59 <elliott> ais523: do they? 17:09:03 <elliott> give examples 17:09:05 <ais523> fizzie: a screensaver that's also a pager? 17:09:12 <ais523> elliott: ArrayList in Java, at least 17:09:18 <elliott> ais523: that's an arraylist :P 17:09:19 <ais523> is a List, which is hte general term 17:09:20 <CakeProhpet> is there a formalism for lists? 17:09:26 <elliott> fair enough 17:09:35 <fizzie> ais523: Sadly, no. It's an "xlock" variant that has "more" screen-hacks in it. 17:09:51 <CakeProhpet> ais523: but in STL list is a doubly linked list. 17:09:53 <elliott> ais523: the closest/most natural thing Haskell has to a list has O(log(min(i,n-i))) indexing 17:09:55 <ais523> CakeProhpet: data List = Empty | Cons List List 17:09:59 <CakeProhpet> ais523: it's certainly not standard. 17:10:08 <elliott> where n is the length of the list 17:10:46 <ais523> "list" to me has a mild implication of "implemented in a linked list style behind the scenes" 17:10:48 <ais523> but not a certain one 17:11:30 <CakeProhpet> yes me too. 17:11:35 <CakeProhpet> nothing I would take for granted. 17:12:02 <CakeProhpet> ais523: also I think the formalism for a "list" would be sequences. 17:12:04 <CakeProhpet> perhaps? 17:12:09 <elliott> >_< 17:12:41 <ais523> it's interesting that the operations of "head" and "tail" are reasonably implementable with most provided sorts of lists 17:12:51 <ais523> even if they aren't linked lists behind the scenes 17:13:00 <ais523> e.g. you can point to the second element of an array in C 17:13:07 <elliott> ais523: Only immutable ones. 17:13:11 <CakeProhpet> tail isn't quite so reasonable in mutable cases.. 17:13:13 <CakeProhpet> yes 17:13:16 <CakeProhpet> what elliott said. 17:13:21 <elliott> ais523: Also, you can't implement cons easily for C arrays. 17:13:23 <ais523> it's hard to work out what "tail" means in the mutable case 17:13:25 <elliott> So it's not really list-tail. 17:13:35 <ais523> and having worked on Overload, I'm not sure I want to 17:14:07 <CakeProhpet> well the sane way to do tail would be to make a copy. 17:14:32 <ais523> Overload didn't! 17:14:47 <CakeProhpet> Overload doesn't sound like the name of a sane language. 17:15:15 <ais523> it wasn't 17:15:21 <ais523> well, isn't, I assume it still exists 17:15:26 <CakeProhpet> but you could certainly do pointer shenanigans and return the original uncopied tail. 17:15:27 <ais523> but I never finished it as the insanity got too much for me 17:15:36 <monqy> speaking of feather 17:15:38 <ais523> it's not like Feather, it was a perfectly ordinary sort of insanity 17:15:51 <ais523> that could be fixed with persistence, but the resulting language would be insufficiently awesome 17:16:12 <ais523> and oh, how pointer-shenaningans Overload was 17:16:28 <elliott> ais523: so anyway, I recommend Debian+Xfce or Xubuntu as a migration path for Ubuntu users 17:16:34 <CakeProhpet> in STL C++, tail on most data structures would require a copy I believe. 17:16:39 <ais523> elliott: so what are the two issues with xfce? 17:16:44 <elliott> they're very unlikely to fuck up Xfce, and it can be made to work basically exactly like gnome two 17:16:55 <ais523> I take it those aren't the two issues? 17:16:58 <elliott> heh 17:17:04 <elliott> ais523: One is with the panel, this is the less important one; the window list in the taskbar can't be rearranged 17:17:25 <ais523> `addquote <ais523> elliott: so what are the two issues with xfce? <elliott> they're very unlikely to fuck up Xfce, and it can be made to work basically exactly like gnome two 17:17:25 <elliott> ais523: The more important one is that scrolling a background window focuses and raises it with default xfwm settings and I can't figure out how to fix it -- but you can just use another wm with xfce 17:17:29 <HackEgo> 688) <ais523> elliott: so what are the two issues with xfce? <elliott> they're very unlikely to fuck up Xfce, and it can be made to work basically exactly like gnome two 17:17:30 <CakeProhpet> elliott: 1) hack xfce 2) profit 17:17:44 <elliott> ais523: indeed, even Metacity would work fine 17:17:48 <elliott> The following NEW packages will be installed: 17:17:49 <elliott> libgnome2-common libmetacity-private0 metacity metacity-common 17:17:53 <ais523> elliott: hmm, how often do you scroll background windows? I do, but only occasionally 17:17:54 <elliott> not an unreasonable set of dependencies 17:17:57 <elliott> ais523: often 17:18:00 <ais523> yep, that's reasonable 17:18:07 <ais523> would I be shot for using xfce with Compiz? 17:18:10 <elliott> ais523: e.g., I have IRC on top but am reading a background web page 17:18:23 <CakeProhpet> elliott: is metacity pronoucned "meta city" or "meTAcity" (with the stress on ta) 17:18:23 <elliott> ais523: and, well, I wouldn't like you; both xfwm and metacity can do compositing and shadows 17:18:25 <ais523> ah, I prefer to alt-tab then 17:18:34 <elliott> xfwm can even do opacity 17:18:37 <elliott> and opacity adjustment 17:18:42 <ais523> what about contrast change? 17:18:46 <ais523> or zoom? 17:18:47 <elliott> (alt-scroll on the title bar) 17:18:52 <elliott> dunno, let me check :P 17:19:11 <ais523> zoom is particularly useful for checking that subpixel algos are working properly 17:19:37 <ais523> hmm, I don't think I've used color-inverse for ages since I discovered contrast change 17:19:41 <ais523> I like a dark screen at night 17:19:52 <elliott> ais523: the only results I can find about zoom+xfwm are pages telling you how to overcomplicatedly set up compiz with xfce 17:20:00 <elliott> so I'd say just use compiz :P 17:20:16 <ais523> for a while I had Epiphany force-override colors used by webpages, but webpages don't seem to really like that behaviour nowadays 17:20:22 <elliott> ais523: it'll work fine, although the default Xubuntu theme is nice and depends on a xfwm theme to be nic 17:20:22 <elliott> e 17:20:41 <elliott> oh, looks like someone ported it to compiz :P 17:20:46 <ais523> oh, I'm used to bad themes, at least 17:20:46 <elliott> yep 17:20:51 <ais523> given that I'm often not on my own computer 17:21:13 <ais523> although the one I'm using at the moment is pretty nice (it's the New Wave theme that was proposed for Ubuntu but never accepted) 17:21:23 <CakeProhpet> An infinite binary sequence can represent a formal language (a set of strings) by setting the n th bit of the sequence to 1 if and only if the n th string (in shortlex order) is in the language. Therefore, the study of complexity classes, which are sets of languages, may be regarded as studying sets of infinite sequences. 17:21:37 <CakeProhpet> lolwat 17:21:47 -!- ralc has joined. 17:21:50 <CakeProhpet> this is way over my head. 17:22:14 <ais523> I understand it, but it doesn't seem particularly useful 17:22:39 <ais523> basically, because programs close to each other in shortlex order don't necessarily have anything to do with each other at all 17:23:12 <elliott> ais523: I actually really like Xubuntu's default theme: http://ompldr.org/vYWswMA, http://ompldr.org/vYWp6eg 17:23:24 <elliott> that's just me, though 17:23:35 <ais523> hmm, that's passable 17:23:38 <CakeProhpet> ais523: oh wait I understand I think. but not what it has to do with complexity classes. 17:23:43 <ais523> a bit like the Mac brushed-metal theme but simpler 17:23:58 <elliott> ais523: not brushed-metal 17:24:11 <elliott> it's more like the smooth style seen Leopard onwards 17:24:18 <ais523> hmm, the min/max/close buttons look misaligned 17:24:23 <elliott> brushed metal is this abomination: http://en.wikipedia.org/wiki/File:TigerCalc.png 17:24:26 <Sgeo|web> Chrome as opposed to Chromium? 17:24:43 <ais523> elliott: ouch, you're right 17:24:49 <elliott> ais523: hmm... minimise looks slightly higher than it should be, but it hasn't bothered me yet 17:24:52 <ais523> yep, the close button is centred half a pixel higher than it should be 17:24:54 <CakeProhpet> ais523: is there operations you could perform on these binary sequences that would be useful in studying complexity classes? 17:24:55 <elliott> and I think it's pixel-correct 17:24:57 <ais523> I just zoomed in to check 17:24:58 <elliott> oh, is it? 17:25:01 <CakeProhpet> ais523: maybe the adjacency of the sequence terms is irrelevant. 17:25:04 <elliott> fair enough 17:25:14 <elliott> ais523: using compiz would solve that :P 17:25:20 <elliott> since the compiz version is based on another theme 17:25:23 <elliott> rather than being a straight port 17:25:31 <elliott> or, hmm 17:25:32 <elliott> http://xfce-look.org/CONTENT/content-pre3/143376-3.png 17:25:33 <ais523> I think it's because they were trying to snap shapes to pixels 17:25:37 <elliott> it /looks/ right to me 17:26:02 <ais523> bleh, I can't tell on that one even zoomed in, because it's pretty heavily antialiased 17:26:06 <ais523> which I suppose makes it more likely to be lined up right 17:26:14 <elliott> I think it's the same? 17:26:15 <elliott> as my screenshot 17:26:20 <elliott> it doesn't look more antialiased to me 17:26:33 <elliott> the buttons seem identical here 17:26:40 <ais523> oh, I'm stupid, I zoomed in on a zoomed-out version 17:26:52 <elliott> ais523: you can turn off zoom antialiasing with compiz 17:26:52 <ais523> and it's the downscaler algo that misaligned it 17:26:52 <elliott> I think 17:26:55 <ais523> by trying to round to pixels 17:27:08 <ais523> oh, I meant the original was antialiased, not the zoom 17:27:33 <CakeProhpet> PSPACE=NPSPACE. really? 17:27:47 <elliott> ais523: well, it wouldn't be a problem if your zoomer used nearest neighbour 17:28:00 <CakeProhpet> oh okay I see how that could be. 17:28:05 <ais523> CakeProhpet: pretty obviously, just run all the possibilities one after the other 17:28:23 <ais523> elliott: blame Firefox, I guess 17:28:32 <elliott> ais523: umm, but you said it was zoomed out in Firefox 17:28:35 <elliott> so it should be original size 17:28:36 <fizzie> "Three Rings: This article is about the fictional artifacts. For the video game developer, see Three Rings Design. For the Three Rings on the Ring of Light, see Xbox 360 technical problems. For the T-Pain album, see Thr33 Ringz." 17:28:39 <elliott> or 17:28:39 <elliott> oh 17:28:42 <elliott> you dezoomed in Fx 17:28:43 <elliott> okay 17:28:45 <ais523> elliott: it was the downscaled thumbnail in Firefox 17:28:48 <elliott> rifgt 17:28:49 <fizzie> "Three Rings on the Ring of Light, see Xbox 360 technical problems". 17:28:49 <ais523> I forgot to click to expand 17:28:51 <elliott> right 17:28:59 <fizzie> There's some sort of style mismatch there. 17:29:00 <ais523> then I used Compiz to zoom in on that 17:29:10 <elliott> how small is your Fx window? that image is tiny 17:29:13 <ais523> fizzie: the Ring of Light is the official name 17:29:26 <fizzie> ais523: That is a nice name. 17:29:29 <ais523> maximised on 1366x768, with some toolbars/taskbars in the way 17:29:36 <CakeProhpet> ais523: but PTIME != NPTIME. or, well, we don't know still. 17:29:45 <CakeProhpet> but probably not. 17:29:59 <ais523> well, the PSPACE/NPSPACE argument obviously doesn't apply to P=?NP 17:30:12 <CakeProhpet> ais523: right. it's an unrelated though 17:30:13 <CakeProhpet> t 17:30:18 <ais523> oh right, IMPORTANT NOTATIONAL QUESTION that came up today: how do you write the operation of "add the same integer to every element of a list"? 17:30:27 <elliott> ais523: n+list 17:30:38 <CakeProhpet> best way. 17:30:39 <ais523> I tried that, but was accused of that being disjoint union 17:30:47 <elliott> ais523: map (n+) list 17:30:48 <ais523> well, it was a set, not a list 17:31:09 <ais523> I was using n .+ list as a placeholder (it's what MATLAB calls the operation, and it's the only widely-used language I've ever seen with it built in) 17:31:20 <CakeProhpet> n+list is how APL works right? 17:33:18 -!- elliott has left ("Leaving"). 17:33:25 -!- elliott has joined. 17:33:27 <elliott> WHAT FUCKING KEY DO I KEEP PRESSING 17:33:33 <monqy> bad 17:33:37 <CakeProhpet> elliott: what was that language you were talking about that's awesome and uses arrays or something? 17:33:40 <elliott> Ah yes, I kept pressing the "bad" key. 17:33:42 <CakeProhpet> J? 17:33:51 <elliott> J is array-based, yes. 17:34:11 <CakeProhpet> the programs look like Perl mixed with brainfuck. 17:34:15 <CakeProhpet> in terms of syhntax 17:34:16 <elliott> no, they don't 17:34:17 <Ngevd> Visual J# 17:34:20 <ais523> elliott: some sort of middle-click where it shouldn't be (the usual reason for me to accidentally part a channel)? 17:34:23 <monqy> CakeProhpet: not at all 17:34:30 <CakeProhpet> I just recall them being rather noisy 17:34:33 <CakeProhpet> is all I'm saying by that 17:34:35 <fizzie> ais523: You add a (same) scalar to each element of a list in MATLAB with just plain old regular "+". There is no ".+" operator. 17:34:36 <CakeProhpet> don't take it personal. :P 17:34:42 <ais523> fizzie: hmm 17:34:51 <ais523> I've used really old MATLAB, and GAUSS before that 17:34:53 <ais523> maybe they changed it 17:34:54 <elliott> ais523: no, key 17:35:02 <ais523> elliott: control-W? seems a little hard to typo 17:35:08 <ais523> esc? seems a weird keybinding for a client to use 17:35:09 <monqy> Ngevd: j# is something entirely diffferent 17:35:25 <fizzie> ais523: There is a ".*" and "./" to differentiate elementwise multiplication/division from matrix product/right-division. 17:35:27 <ais523> and F# is an OCaml clone linked up to the .NET standard library 17:35:28 <CakeProhpet> or is it k? it was some letter. 17:35:34 <ais523> fizzie: perhaps that's what I was thinking of 17:35:36 <fizzie> ais523: But you can multiply a list by a scalar with plain "*" anyway. 17:35:48 -!- elliott_ has joined. 17:35:52 <ais523> ofc, matrix addition is just + anyway 17:36:05 <elliott_> as I was going to say 17:36:11 <elliott_> I think I'll just si 17:36:16 <elliott_> I think I'll just switch to an xmonad setup when I get the desktop 17:36:34 <CakeProhpet> J looks more verbose than the language I'm thinking of. 17:36:39 <CakeProhpet> oh no that's it. 17:36:53 <CakeProhpet> I just haven't seen many examples of the code. 17:37:34 -!- MDude has quit (Ping timeout: 248 seconds). 17:37:50 <CakeProhpet> elliott: is it J or K that you like a lot? 17:37:56 -!- elliott has quit (Read error: Connection reset by peer). 17:37:59 <CakeProhpet> sdhguijeuhsf 17:38:06 <monqy> dont worry elliott_s here 17:38:19 <CakeProhpet> elliott_: ^ 17:38:22 <monqy> "a lifes aver" 17:39:04 -!- elliott__ has joined. 17:39:08 <elliott__> OIFJDLKHGHGLKSDFG 17:39:10 <monqy> hi elliott__ 17:39:10 <CakeProhpet> the underscores are multiplying 17:39:23 <ais523> CakeProhpet: no, 1 * 1 is 1 17:39:25 <ais523> they're adding 17:39:37 <ais523> gah that name is annoying, I keep thinking my tab-complete typoed 17:39:47 <monqy> best name 17:39:48 <CakeProhpet> INCREASING BY A LINEAR FUNCTION 17:39:49 <CakeProhpet> FINE 17:39:59 <CakeProhpet> SO. PICKY. 17:40:39 <CakeProhpet> elliott_: was it J or K that you like? 17:40:45 <elliott__> I answered that. 17:40:58 <monqy> except it didn't survive 17:41:21 <CakeProhpet> elliott_: not on my buffer. 17:41:34 -!- elliott_ has quit (Ping timeout: 245 seconds). 17:41:38 <monqy> yikes 17:41:48 <CakeProhpet> I WILL NEVER KNOW 17:41:51 <CakeProhpet> HOW CAN ILIVE? 17:42:00 <monqy> by asking elliott__ 17:42:05 <elliott__> fizzie: Hey, you can make tig's log nicer. 17:42:13 <elliott__> fizzie: Try Ctrl+Up. 17:42:20 <CakeProhpet> monqy: each underscored elliot is a fabrication of the previous 17:42:28 <monqy> elliot_ 17:42:41 <CakeProhpet> a mere simulacrum. 17:42:48 <monqy> elliottt_ 17:43:24 <monqy> instead of using underscores i should append ys 17:43:32 -!- boily has joined. 17:43:32 <monqy> monqyyyyyyyyyyyyyy (a bad day for connections) 17:43:51 <CakeProhpet> I should use various misspellings and backwardsizations of my name. 17:44:05 -!- CakeProhpet has changed nick to CakeProphet. 17:45:10 <CakeProphet> elliott__: but yeah you never answered my question visibly. I double checked my buffer. 17:45:12 -!- Ngevd has quit (Ping timeout: 260 seconds). 17:45:25 <elliott__> then J 17:45:30 <CakeProphet> ah okay. 17:45:46 <elliott__> though K is nice too. 17:45:47 <CakeProphet> K looks pretty similar however. I wonder if it's better or worse. 17:45:49 <CakeProphet> ah. 17:45:57 <elliott__> it is just different 17:46:01 <elliott__> ais523: is it just me or has the method of reporting crashes got more complicated in Ubuntu? 17:46:12 <ais523> I don't know, as I haven't had one for a while 17:46:15 <CakeProphet> K isn't functional like J kind of is right? 17:46:16 <ais523> the benefits of LTS, I guess 17:46:27 * CakeProphet doesn't understand either very well, other than they work like APL. 17:46:34 <elliott__> CakeProphet: in which way do you think J is functional, in which way do you think K does not have this property 17:46:40 <elliott__> ais523: I mean, program crashes 17:46:43 <CakeProphet> elliott__: nothing very concrete. 17:46:44 <elliott__> Pidgin is crashing incessantly 17:46:56 <elliott__> CakeProphet: can't answer then s.r.y. 17:46:59 <ais523> oh, IIRC KDE and Gnome each had their own bugreporter 17:47:00 <CakeProphet> elliott__: I am probing around and getting answers. 17:47:08 <CakeProphet> conversationally. 17:47:12 <elliott__> ais523: too bad Pidgin is part of neither 17:47:19 <ais523> indeed, that's what I just realised 17:47:24 <monqy> CakeProphet: say bad things, get corrected, no remorse 17:47:49 <CakeProphet> monqy: it's a common way people converse... 17:47:56 <CakeProphet> to learn about things. 17:48:04 <monqy> bad people 17:48:08 <CakeProphet> okay fine. 17:48:48 -!- ralc has quit (Read error: Operation timed out). 17:49:52 <elliott__> HMMMMMMmmmmmmmmm 17:49:56 <Vorpal> ais523: hm maybe you know the answer to this question: how does that lever on the back of a car mirror that reduces the blinding effect from car lights behind actually work 17:50:00 <Vorpal> physically I mean 17:50:03 <CakeProphet> ah so they are both functional just in different ways. 17:50:18 <monqy> different ways? 17:50:19 <ais523> Vorpal: I'm afraid I don't know what you're referring to 17:50:21 <Vorpal> it just seems to tilt the mirror but somehow still show the same area, but with less light? 17:50:27 <Vorpal> ais523: you have a driving license? 17:50:27 <CakeProphet> monqy: differently influenced. 17:50:31 <ais523> no, I don't 17:50:35 <Vorpal> ais523: ah okay 17:50:40 <Vorpal> well who else could know 17:50:40 <ais523> giving me one would probably be criminal negligence 17:50:41 <monqy> CakeProphet: ??? 17:50:52 <CakeProphet> monqy: I can't answer question marks. 17:51:01 <ais523> I can't concentrate really heavily for long periods of time at a time 17:51:04 <Vorpal> ais523: thing is: you know that cars have three mirrors? One on each side and one in the middle inside? 17:51:09 <monqy> CakeProphet: would you prefer a what 17:51:09 <ais523> I can stay focused, but that's not the same as concentrating 17:51:12 <ais523> yep, I know what a wing mirror is 17:51:15 <CakeProphet> monqy: no that's the same thing 17:51:20 <monqy> CakeProphet: what???? 17:51:21 <ais523> but I don't know what the lever you're referring to is 17:51:23 <Vorpal> ais523: I'm interested in the mirror inside, not the ones on the side 17:51:26 <CakeProphet> monqy: "hi please repeat yourself in a more verbose way" 17:51:32 <Vorpal> the lever is on the internal mirror 17:51:35 <ais523> ah, I don't think I've seen that adjusted while driving 17:51:40 <ais523> and it's just to change the angle, IIRC 17:51:42 <monqy> monqy: hi please repeat yourself in a way that makes sense 17:51:51 <monqy> oops 17:51:56 <elliott__> <CakeProphet> ah so they are both functional just in different ways. 17:51:56 <ais523> although, the obvious explanation is that it tilts the mirror so that the car lights are no longer reflecting into your eyes, but miss your eyes 17:51:59 <elliott__> Neither J nor K is pure. 17:52:04 <ais523> and the same area is still mostly visible, just on a different part of the mirror 17:52:10 <elliott__> Neither J nor K have full first-class function support, either. 17:52:22 <Vorpal> ais523: well if it is dark it has a kind of lever on it that you flip and suddenly the light from behind is reduced, useful when driving in the dark when you get strong headlights from behind 17:52:31 <Vorpal> it is just that the manner it works in is pure magic to me 17:52:36 <ais523> it probably just changes it between two possible settings 17:52:43 <ais523> on the basis that one of them won't reflect into your eyes 17:52:57 <CakeProphet> monqy: J is influenced by FP/FL, K is influenced by Scheme. Differently. Influenced. 17:53:13 <Vorpal> ais523: well, it seems to show the same area behind kind of. As in the position of the headlights doesn't seem to shift, just be reduced 17:53:19 <CakeProphet> elliott__: I didn't say they were pure. 17:53:21 <CakeProphet> not many things are pure. 17:53:35 <monqy> CakeProphet: and how does this make them different 17:53:40 <Vorpal> ais523: it does move the view *while* you move the lever. Kind of jumps up then down. 17:53:51 <CakeProphet> elliott__: but the lack of first-class functions definitely strays away from my definition of functional 17:53:54 <monqy> CakeProphet: my question was how are they functional in different ways, not what were their influences 17:54:06 <monqy> CakeProphet: your definition of functional: it kind of sucks 17:54:13 <Vorpal> oh found it on wikipedia 17:54:15 <CakeProphet> monqy: I don't know. I don't actually know these languages I am reading about them and attempting to learn from you guys 17:54:23 <elliott__> read the labs 17:54:44 <Vorpal> ais523: there is some very cleaver stuff going on there: https://secure.wikimedia.org/wikipedia/en/wiki/Rear-view_mirror#Dimming 17:54:52 <CakeProphet> monqy: your conversation skills suck. I'm going to go do something else now. 17:55:19 <monqy> CakeProphet: ok 17:58:27 -!- Ngevd has joined. 17:58:53 -!- variable has quit (Excess Flood). 17:59:22 <fizzie> Vorpal: Oh, I've wondered about that too. 17:59:43 <elliott__> very clearver 17:59:45 <elliott__> very cleaver 18:00:16 <elliott__> I wish I could eliminate this Template Haskell 18:00:28 <CakeProphet> elliott__: you cannot kill an idea. 18:00:30 <CakeProphet> unfortunately. 18:00:39 <elliott__> what 18:01:02 <CakeProphet> oh, I assumed you were using the "kill" definition of eliminate. 18:01:11 -!- variable has joined. 18:01:20 <elliott__> http://stackoverflow.com/questions/1071201/why-does-list-comprehension-using-a-zip-object-results-in-an-empty-list 18:01:27 <elliott__> lol @ python 18:01:44 <CakeProphet> funniest language. 18:03:06 <ais523> so zip basically returns a lazy list except that you can only read it once 18:03:14 <ais523> hmm 18:03:14 <CakeProphet> I think instead of just turning all of the builtin's into generators they should have just moved most of itertools into __builtin__ 18:03:35 <CakeProphet> so izip = generator zip 18:03:44 <CakeProphet> and zip still does what it does in Python 2.x 18:03:55 <elliott__> ais523: no 18:03:59 <elliott__> ais523: it's just that for advances it 18:04:08 <elliott__> rather than, e.g. asking it for an iterator and then advancing it 18:04:13 <elliott__> because it's already an iterator (generator) 18:04:16 <elliott__> because :python: 18:04:18 <ais523> ah, OK 18:04:38 <ais523> I suppose "why would you ask an iterator for an iterator" is the implied question there 18:04:52 <Vorpal> <fizzie> Vorpal: Oh, I've wondered about that too. <-- yeah it is quite ingenious 18:05:21 <elliott__> ais523: because see SO question? :P 18:05:33 <ais523> elliott__: well, yes 18:05:41 <ais523> I'm just trying to understand how the design decision question happened 18:06:42 <CakeProphet> I wonder if making a copy of the iterator would work as well. 18:07:09 -!- augur has joined. 18:07:12 <olsner> I'd guess the design decision went something like "herp derp" 18:07:29 <CakeProphet> olsner: good one 18:07:59 <CakeProphet> ah okay you can't use copy() on iterators 18:07:59 <elliott__> Can someone type two five five five six 18:08:01 <CakeProphet> so no that doesn't work. 18:08:03 <CakeProphet> 2556 18:08:09 <elliott__> Wrong 18:08:13 <CakeProphet> 25556 18:08:19 <elliott__> Hooray 18:08:29 <ais523> interesting question 18:08:30 <CakeProphet> elliott__: my eyesight is getting pretty bad. 18:08:35 <olsner> CakeProphet: I think python is one of the most herp of all the derp languages 18:08:46 <CakeProphet> python is actually not incredibly terrible. 18:08:51 <CakeProphet> but it's not great either. 18:08:51 <elliott__> fizzie: So that coproc thing... 18:09:00 <elliott__> ais523: turns out the answer was no 18:09:10 <ais523> heh 18:09:21 <CakeProphet> to date the worst language I have used is C++ 18:09:33 <ais523> CakeProphet: how much esolang programming have you done? 18:09:37 <fizzie> elliott__: What about it?-) 18:09:45 <CakeProphet> ais523: not a great amount. but esolangs are exempt 18:09:45 <ais523> admittedly, C++ is pretty bad on the scale of "real" languages 18:09:57 <elliott__> fizzie: ? 18:09:57 <CakeProphet> ais523: people don't write space shuttle code in brainfuck. 18:09:59 <elliott__> Oh right 18:10:05 <elliott__> How do you dereference an array in bash anyway 18:10:07 <elliott__> (n)? 18:10:12 <fizzie> [n]. 18:10:25 <fizzie> $ARRAY[0] and $ARRAY[1] and so on. IIRC. 18:10:29 <ais523> it's .[] to deref arrays in OCaml 18:10:35 <ais523> wait, no, .() 18:10:39 <Ngevd> ais523, is c.intercal.org.uk your site? 18:10:40 <ais523> .[] is to take characters strings 18:10:46 <ais523> Ngevd: no, it's Claudio Calvelli's site 18:10:51 <Ngevd> Okay 18:10:55 <ais523> which might seem a little weird given the circumstances 18:10:58 <Ngevd> Would you tell him it is not working 18:11:00 <ais523> but hey, it's INTERCAL 18:11:02 <ais523> Ngevd: in what way? 18:11:03 <elliott__> fizzie: 18:11:03 <elliott__> #!/bin/bash -e 18:11:03 <elliott__> coproc 'nc -l 25556 | tee "$clientlog"' 18:11:03 <elliott__> nc "$1" "$2" <&$COPROC[0] | 18:11:03 <elliott__> tee "$serverlog" >&$COPROC[1] 18:11:07 <elliott__> fizzie: Does that look right to you? :p 18:11:09 <fizzie> Well, I guess you might need ${ARRAY[0]}. 18:11:10 <Ngevd> Won't load 18:11:22 <ais523> oh, indeed 18:11:29 <elliott__> fizzie: Apart from that? 18:11:32 <ais523> in fact, intercal.org.uk seems down generally 18:11:41 <ais523> that is, the subdomains that should exist 18:11:44 <ais523> (the parent domain shouldn't) 18:12:00 <ais523> I'll give it some time to come back up before emailing him 18:12:16 <ais523> what were you trying to find there? 18:12:27 <CakeProphet> hmmm I wonder how you could get the benefits of phantom types without the syntactic overhead. 18:12:32 <elliott__> what 18:12:37 <CakeProphet> so that you don't have to explicitly write the phantom parameter everywhere 18:12:53 <elliott__> "iw ish I could track an addiotioanl piece with my data ... but without specifying it...." 18:12:55 <elliott__> it should just be magic 18:13:35 <CakeProphet> elliott__: no just implicit. 18:13:43 <CakeProphet> but I can't think of a good way to do that. 18:13:43 <elliott__> = magic 18:14:13 <fizzie> elliott__: Sounds like it should work. I was just thinking about making the most useless use of cat ever made, and doing "coproc STUPIDPIPE cat; nc -l 12345 <&${STUPIDPIPE[0]} | tee clientlog | nc server port | tee serverlog >&${STUPIDPIPE[1]}" -- the logic is arguably a little bit clearer there. 18:14:39 <ais523> the most useless use of cat ever is probably along the lines of cat | startx 18:14:50 <elliott__> fizzie: Heh. 18:14:58 <CakeProphet> though the use I was thinking of is impossible I just realized. I don't think you can turn zero division into a type error, except for a small minority of cases. 18:14:59 <elliott__> fizzie: Well, it's nicer in that it quits if the listener does too. 18:14:59 <fizzie> The name of the coproc was chosen to reflect the fact that it really should be able to just pop up pipes somehow. 18:15:20 <elliott__> fizzie: But... hmm, will that coproc die when the script does? 18:16:00 <fizzie> Nnnmaybe. "Physically" speaking it should depend on whether the pipes get closed. 18:16:09 <fizzie> But that's sort of up to bash. 18:16:39 <fizzie> kill $STUPIDPIPE_PID at the end to make sure. :p 18:17:04 -!- Phantom_Hoover has changed nick to Pharmtom_Hoover. 18:17:46 <fizzie> I was in fact sort of assuming you could do the whole thing with a single socat, but it doesn't seem to have raw data logging facilities. 18:18:00 <fizzie> Or fanning stuff to multiple destinations. 18:18:17 <elliott__> tools/log-packets: line 7: PIPE: command not found 18:18:17 <elliott__> tools/log-packets: line 8: ${COPROC[0]}: Bad file descriptor 18:18:17 <elliott__> tools/log-packets: line 9: ${COPROC[1]}: Bad file descriptor 18:18:19 <fizzie> Poor stuff for a self-styled "netcat++". 18:18:27 <elliott__> fizzie: I... 18:18:32 <elliott__> coproc: coproc [NAME] command [redirections] 18:18:34 <elliott__> Does it lie? 18:18:39 <elliott__> Oh, duh 18:18:41 <elliott__> I forgot the "cat". 18:18:52 <elliott__> I don't see anything about _PID in coproc. 18:19:00 <fizzie> Ohh: "NAME must not be supplied if command is a simple command." 18:19:05 <CakeProphet> you could prevent zero division errors at compile-time for any integers that are known at compile time by having them carry type-level naturals and a sign phantom type. The types of the arithmetic operations would also perform computations on the type-level representation, or do nothing in the special case where value isn't known at compile-time. 18:19:10 <elliott__> Although "coproc PIPE cat" does ths ame. 18:19:10 <fizzie> Oh well, maybe you should just "coproc cat" and use the default name, then. 18:19:14 <CakeProphet> yes, that is a terrible idea. 18:19:15 <elliott__> fizzie: As opposed to... what? 18:19:22 <elliott__> A complicated command? 18:19:33 <fizzie> Yes. 18:19:36 -!- Pharmtom_Hoover has changed nick to Tane. 18:19:37 <elliott__> coproc cat 18:19:37 <elliott__> nc -l 25556 <&${COPROC[0]} | tee "$serverlog" | 18:19:37 <elliott__> nc "$host" "$port" | tee "$clientlog" >&${COPROC[1]} 18:19:38 -!- Tane has changed nick to Taneb. 18:19:38 <elliott__> tools/log-packets: line 8: ${COPROC[0]}: Bad file descriptor 18:19:38 <elliott__> tools/log-packets: line 9: ${COPROC[1]}: Bad file descriptor 18:19:40 <elliott__> ????? 18:19:45 <elliott__> Do I need to quote them? 18:20:14 <fizzie> You shouldn't. Maybe try echo ${COPROC[0]}. 18:21:06 <elliott__> 63 18:21:07 <fizzie> Also "coproc PIPE {cat;}" if you want to give it a name; then it's a "compound command", not a "simple command". 18:21:08 -!- Taneb has changed nick to Taneb|Kindle. 18:21:22 <fizzie> Sorry, "coproc PIPE { cat; }". 18:21:28 <fizzie> Maybe I should try it out. 18:21:35 -!- Taneb|Kindle has changed nick to Taneb. 18:21:38 <elliott__> 63 18:21:38 <elliott__> tools/log-packets: line 9: ${COPROC[1]}: Bad file descriptor 18:21:38 <elliott__> tools/log-packets: line 8: ${COPROC[0]}: Bad file descriptor 18:21:42 -!- Taneb has changed nick to Pharmtom_Hoover. 18:21:46 <elliott__> Definitely sounds like it needs quoting. 18:22:22 <CakeProphet> I quote everything just to be safe... 18:22:41 <CakeProphet> as a space will fuck everything up. 18:22:45 -!- Ngevd has changed nick to Taneb. 18:22:59 <elliott__> CakeProphet: It's an fd. 18:23:02 <elliott__> fds don't contain spaces. 18:23:15 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 18:23:22 -!- Taneb has changed nick to Taneb|Kindle. 18:23:27 <elliott__> tools/log-packets: line 7: "${COPROC[0]}": Bad file descriptor 18:23:27 <elliott__> tools/log-packets: line 8: "${COPROC[1]}": Bad file descriptor 18:23:33 <elliott__> fizzie: Sounds like I need to use eval. 18:23:35 <fizzie> I'unno, it seems to work in an interactive shell: 18:23:36 -!- Taneb|Kindle has changed nick to Ngevd. 18:23:36 <fizzie> fis@eris:~$ coproc PIPE { cat; } 18:23:36 <fizzie> [1] 4427 18:23:36 <fizzie> fis@eris:~$ echo ${PIPE[0]} ${PIPE[1]} 18:23:36 <fizzie> 63 60 18:23:36 <fizzie> fis@eris:~$ echo yay >&${PIPE[1]} 18:23:38 <fizzie> fis@eris:~$ cat <&${PIPE[0]} 18:23:40 <fizzie> yay 18:23:55 <elliott__> http://sprunge.us/BJQF 18:23:56 <elliott__> It looks OK to me. 18:24:09 -!- Ngevd has changed nick to Taneb|Hovercraft. 18:24:20 -!- Taneb|Hovercraft has changed nick to Ngevd. 18:24:36 <CakeProphet> bash has the best semantics. 18:24:48 <elliott__> fizzie: Or do you _need_ the compound thing to get it working at all? :-P 18:24:56 -!- elliott__ has changed nick to Taneb. 18:25:07 <CakeProphet> .. 18:25:10 -!- CakeProphet has changed nick to elliott. 18:25:19 <elliott> this is perhaps not a great idea. 18:25:28 -!- elliott has changed nick to CakeProphet. 18:25:33 <Taneb> What, NickServ is down? 18:25:39 <fizzie> elliott: Ohhhh, right. 18:25:43 -!- CakeProphet has quit (Disconnected by services). 18:25:45 <Taneb> Oh dear god. 18:25:47 <fizzie> elliott: You need to do a THING. 18:25:55 -!- Taneb has changed nick to elliott. 18:25:58 -!- elliott has quit (Changing host). 18:25:58 -!- elliott has joined. 18:26:01 <elliott> fizzie: wat. 18:26:11 <fizzie> elliott: I saw this somewhere. The problem is that the coproc fds aren't inherited by the subshell that is spawned to handle the pipeline. 18:26:21 <elliott> I... okay. 18:26:53 -!- CakeProphet has joined. 18:27:05 <CakeProphet> >_> 18:27:31 <elliott> Please tell me that was my ghosting. 18:27:36 <CakeProphet> I have no idea what that was. 18:27:39 <monqy> i think it was 18:27:41 <CakeProphet> but that makes no sense. 18:27:44 <CakeProphet> as I was no longer you. 18:27:44 <fizzie> elliott: http://p.zem.fi/fzuu 18:27:44 <monqy> it makes sense 18:27:45 <monqy> to me 18:27:48 <fizzie> elliott: You want something like that. 18:27:52 <monqy> CakeProphet: nickserv is lagged to hell 18:27:56 <CakeProphet> ah. 18:27:56 <elliott> fizzie: You can do those two execs as one. 18:28:03 <elliott> fizzie: And isn't that line identical to "coproc cat"? 18:28:05 <fizzie> Oh, right. Sure. 18:28:09 <fizzie> And yes, I was just testing. :p 18:28:11 <elliott> CakeProphet: Did you forget to identify and have nick protection on? 18:28:55 <elliott> fizzie: Well, it "works". It hangs btu I can't connect to localhost. 18:28:58 <elliott> Did I get my default MC port wrong? 18:29:05 <fizzie> 25566. 18:29:14 <fizzie> You were *so* close. 18:29:26 <CakeProphet> elliott: erm? I'm pretty sure I auto-ident 18:29:52 <monqy> the ident would have carreid over i think... 18:30:02 <monqy> so: it was most likely eliots ghjost 18:30:11 <elliott> CakeProphet: Not on /nick. 18:30:13 <elliott> On connect, sure. 18:30:14 <elliott> fizzie: Oh. 18:30:19 <elliott> It's because of that SERVER NOBODY KNOWS. 18:30:28 <monqy> ghjost server 18:30:31 <elliott> (What a silly port it is.) 18:30:36 <monqy> ghjost port 18:30:42 <CakeProphet> pretty sure I still keep ident if I go back to a nick I identified though. 18:30:43 <elliott> fizzie: Ha, it: still doesn't work. 18:30:53 <fizzie> elliott: Oh, 25565. 18:30:58 <fizzie> elliott: I got it wrong too. 18:31:07 <elliott> fizzie. You are making me sad. 18:31:17 <fizzie> It was 25566 on that SERVER NOBODY KNOWS, I think. 18:31:25 <elliott> Right. 18:31:30 <elliott> I do remember some off-by-oneing. 18:31:48 <elliott> fizzie: Ha, it: still doesn't work. 18:31:50 <elliott> Wow I 18:31:53 <elliott> Literally said that lines ago 18:32:18 <CakeProphet> literally 18:32:20 <CakeProphet> lines in the past 18:32:23 <fizzie> That should be the right bort though. I hope it isn't cat's block-buffering. It could be. 18:32:24 <monqy> whoa 18:32:41 <fizzie> In that case you'd need to put the other nc | tee inside the coproc like you wanted to, I suppose. 18:32:45 <CakeProphet> on a line-based communication protocol, in a time-based universe. 18:32:51 <elliott> fizzie: GNU cat doesn't buffer. 18:33:12 <fizzie> Mhm. Then it might not be that. 18:33:46 <CakeProphet> elliott: your lines per second squared is decreasing right now. 18:33:53 <CakeProphet> but will spike up when you reply. 18:33:53 <monqy> oh no 18:34:00 <elliott> oh no 18:34:00 <monqy> oh no 18:34:05 <monqy> oh no 18:34:11 <elliott> oh no 18:35:06 <CakeProphet> IRC physics. 18:35:20 <CakeProphet> or calculus I suppose. 18:35:27 <monqy> irc: oh no 18:36:32 <Pharmtom_Hoover> IRC physics! 18:36:37 <Pharmtom_Hoover> Also dinner. 18:37:35 <elliott> IRC dinner 18:37:46 <CakeProphet> string theorists, where is your sparticle now? 18:38:10 <elliott> Spadness? This is sparticle 18:38:12 <elliott> Spadness? This is sparticle. 18:38:19 <CakeProphet> bahahaha 18:38:21 <elliott> RIP sparticle - died as it lived, somewhat sparta 18:40:15 <CakeProphet> I can't wait until we encounter some undiscovered law of physics that mutates CERN scientists into extra-dimensional horrors from the deep beyondness. 18:40:30 <elliott> That already happened. 18:40:31 <Ngevd> But CERN invented the world wide web 18:40:32 <CakeProphet> playing with particle physics is dangerous stuff. 18:40:34 <elliott> The result is called "CERN scientists". 18:41:47 <CakeProphet> I think elliott is actually some kind of deep space cthuloid 18:42:01 -!- MSleep has joined. 18:42:08 <CakeProphet> communicating with FTL black magic. 18:42:29 <CakeProphet> over IRC, wikis, reddit and github. 18:42:55 <CakeProphet> extending the grip of his icy cephalopodic embrace. 18:43:04 <CakeProphet> into the mortal world. 18:43:12 <elliott> It is the best part of being a Squiddle. 18:44:25 <CakeProphet> must be lonely in the endless void. 18:45:21 <CakeProphet> but perhaps cthuloids do not feeled the subdued throes of loneliness. 18:47:07 <CakeProphet> ...the creeping and measured atrophy of the soul. 18:48:45 <CakeProphet> perhaps they feel only the unslatable hunger of undoing. 18:49:27 -!- calamari has joined. 18:50:51 <elliott> CakeProphet: No we just watch human cartoons, it's pretty great. 18:51:28 <CakeProphet> elliott: I enjoy Adventure Time. 18:51:31 <CakeProphet> as far as new cartoons. 18:51:42 <CakeProphet> perhaps this is an American thing though. 18:52:10 <elliott> ais523: I think I'm going to switch to compiz myself, to fix that issue 18:53:04 <elliott> fizzie: So um any ideas? 18:54:34 <Pharmtom_Hoover> > 19 + 18 + 5 18:54:35 <lambdabot> 42 18:55:39 <elliott> WOW DOUGLALJS ADAMS WAS RITE !!! 18:57:06 <CakeProphet> Douglas Adams was the best president. 18:57:33 <Ngevd> > const 42 "How old did you have to be to become a consul in the days of the Roman Republic?" 18:57:34 <lambdabot> 42 18:57:42 <Pharmtom_Hoover> elliott, yeah, except I meant to type 6, but my finger slipped. 18:59:04 <ais523> @unpl flip const 18:59:04 <lambdabot> (\ b c -> c) 18:59:11 <ais523> @pl (\ b c -> c) 18:59:11 <lambdabot> const id 18:59:20 <ais523> hmm, that makes sense 18:59:27 <ais523> reverse k and you get `ki 18:59:28 <CakeProphet> @let answer = asTypeOf "42" 18:59:29 <lambdabot> Defined. 18:59:41 <ais523> :t asTypeOf 18:59:42 <lambdabot> forall a. a -> a -> a 18:59:51 <CakeProphet> const with a different type. 19:00:02 <ais523> yep, seems to be a casting operator 19:00:22 <fizzie> elliott: Yeah: use named fifos. :p (I can try the coproc thing out in a moment.) 19:00:24 <CakeProphet> > answer "Why is Douglas Adams best U.S. peresident?" 19:00:26 <lambdabot> "42" 19:04:56 -!- Ngevd has quit (Quit: Doctor Who). 19:10:27 <elliott> ais523: how do I convince someone I lost my ssh private key? 19:10:52 <ais523> elliott: /did/ you lose your ssh private key? 19:11:04 <elliott> Yes, but I doubt that fact makes it any easier or harder 19:11:08 <ais523> then it worked on me 19:11:23 <ais523> I suspect it depends on who it is 19:11:28 <ais523> they should have some sort of password-recovery thing 19:11:29 <elliott> my hosting company :P 19:11:33 <ais523> and sending a new key is similar 19:11:35 <ais523> ah, ouch 19:11:42 <ais523> email them and say you lost it, see what their response is 19:11:48 <ais523> they'll probably have some way to figure out who you are 19:12:02 <elliott> I suspect they trust my email, since I sent the public key across it in the first place 19:12:45 <pikhq> Wow. An artificial rat cerebellum was constructed and hooked up to actual rats. 19:13:13 <pikhq> It functions. 19:13:37 <monqy> congratulations, science 19:14:21 <ais523> pikhq: is the rat acting like a rat? 19:14:31 <pikhq> Ah. It only really replaced a small portion of the cerebellum's functioning. But jesus, it worked at all. 19:15:03 <elliott> ais523: do you know any way to access an ssh server with only one logginable account and it only accepts key logins.... 19:15:28 <ais523> physical access? 19:15:33 <elliott> no... 19:15:36 <ais523> (assuming you aren't counting "having the key") 19:15:45 <elliott> that would be a problem... 19:16:17 <ais523> the whole point of the key login is that you can't get in any other way without physical access, so you're basically asking "do you have any exploits for sshd" 19:16:30 <ais523> for which my answer is "no, that'd be out of character for me and if I did, what makes you think I'd give them to you?" 19:16:48 <pikhq> ais523: Didn't really say. Though, its primary function is motor control... 19:17:10 <elliott> ais523: because I neeeeeed them 19:17:25 <elliott> I'm so glad fizzie fixed my bug. 19:17:32 <elliott> Now he just needs to get me into my server. 19:17:39 <fizzie> Sorry, we had a thing. 19:18:00 <ais523> at least you didn't lose the only copy of the key to a bitcoin wallet containing bitcoins worth millions of dollars 19:18:06 <ais523> which one bitcoin exchange apparently did 19:18:15 <ais523> (and ofc, how can you tell if it's really the only copy or not?) 19:18:47 <elliott> fizzie: Things happen a lot. 19:18:51 <elliott> ais523: heh 19:19:57 <elliott> oh no out of battery 19:20:07 -!- augur has quit (Remote host closed the connection). 19:21:41 <elliott> aha, hmm 19:21:53 <elliott> I wonder if CraftBukkit lets you execute arbitrary commands on the server if you're an op? :P 19:25:46 -!- augur has joined. 19:27:25 <fizzie> elliott: http://p.zem.fi/wldb worked for me, at least "./test.sh c.nerd.nu" did when I started it immediately before direct-connecting to 127.0.0.1. It has a bit of a problem in that the nc in the pipeline connects to the server immediately, and I believe it will probably timeout at some point when the server gets tired of waiting. 19:27:57 <fizzie> You can drop the -v -v -v from the latter netcat, I was just using it to check when it connects. 19:28:45 <elliott> fizzie: Well, I can always just swap around the way of things. 19:29:14 <fizzie> No matter where you put it, all the processes of the pipeline will get started immediately, and thus it'll try to connect before the "nc -l" gets the client. 19:30:55 <fizzie> Not such a huge problem if you just don't let it idle, though. 19:31:29 -!- augur has quit (Remote host closed the connection). 19:31:36 <elliott> fizzie: Hmm. 19:31:49 <elliott> fizzie: Well, I've waited minutes to do it with no problems before. 19:31:55 <elliott> With my old pipeline. 19:32:15 <fizzie> Could be the servers are just patient. 19:32:19 <fizzie> I'unno. 19:32:51 <fizzie> It's a quality of pipes that it starts all the parts, and it's a quality of netcat that it connects immediately, instead of "wait for any input from stdin before actually connecting"ing. 19:53:44 <CakeProphet> vitriolic petrol. 19:53:50 -!- azaq23 has quit (Quit: Leaving.). 19:54:19 -!- Sgeo|web has quit (Ping timeout: 252 seconds). 19:57:55 <elliott> fizzie: I'll try that after I've done this safety procedure. 19:59:59 -!- atehwa has quit (Ping timeout: 248 seconds). 20:00:44 -!- atehwa has joined. 20:09:44 <CakeProphet> water melon 20:16:48 -!- augur has joined. 20:23:20 -!- oerjan has joined. 20:25:44 <elliott> fizzie: I doubt that kill will help. 20:25:45 <elliott> Since -e is on. 20:26:14 <oerjan> kill everyone, i say 20:26:54 <elliott> fizzie: Oh, duh. 20:27:00 <elliott> The nc -l argument was 25556. 20:27:04 <elliott> No wonder I couldn't connect previously. 20:35:58 <oerjan> <CakeProhpet> PSPACE=NPSPACE. really? 20:36:04 <oerjan> yes, really. 20:36:41 <oerjan> CakeProphet: ^ 20:36:54 <oerjan> a quite elegant theorem, too. 20:46:09 -!- derdon has joined. 20:46:16 <oerjan> <ais523> CakeProhpet: pretty obviously, just run all the possibilities one after the other 20:46:22 <oerjan> it's not quite _that_ obvious. 20:49:38 <ais523> I know 20:49:46 <ais523> it's not trivially provable 20:49:51 <oerjan> because if you try to encode the entire evolution of an NP machine, you will find that it does _not_ fit in polynomial space 20:50:00 <oerjan> i think. 20:50:22 <oerjan> er 20:50:36 <oerjan> *nondeterministic machine with polynomial space 21:00:47 <elliott> ais523: good news, they seem to accept an email as confirmation of a new ssh key 21:00:58 <ais523> yay 21:01:03 <ais523> looks like my plan worked 21:01:08 <elliott> ais523: they do email it back to confirm, which I guess is rudimentary anti-email-MITM protection 21:01:11 <ais523> I'm surprised that you didn't come up with it on your own 21:01:12 <elliott> even if it doesn't really work 21:01:15 <elliott> oh, I did 21:01:21 <ais523> it requires the email to be MITMed both ways 21:01:22 <elliott> I was just wondering if there might be a more convincing method :P 21:01:28 <ais523> which is harder than MITMing it just one way 21:01:41 <ais523> although probably not much harder 21:01:45 <elliott> ais523: I was going to say that the most likely scenario seemed like Google MITMing it 21:01:48 <elliott> but I... guess that's not true 21:02:05 <ais523> it's unlikely that Google would MitM your email connection just to hack into one server 21:02:12 <elliott> now to sort out a shipping address problem... being an adult totally sucks, let me tell you 21:02:21 <ais523> it'd be something far too minor for them to throw away their reputation over 21:02:34 <ais523> elliott: indeed, I think I agree with you there 21:02:38 <elliott> ais523: I dunno, man... Minecraft is at stake... 21:02:39 <ais523> I hate people forcing me to be an adult 21:03:10 <elliott> Truly, Sgeo is keeping the secret of eternal youthfulness from us all. 21:04:19 <oerjan> i used to be eternally youthful, but i lost it 21:04:49 <elliott> That happens a lot 21:14:36 <CakeProphet> being an adult is like being a kid but with more stuff you have to do. 21:14:39 <oerjan> <pikhq> Ah. It only really replaced a small portion of the cerebellum's functioning. But jesus, it worked at all. 21:14:44 <oerjan> uploading, here we come? 21:15:05 <fizzie> oerjan: Synthetic zombie food, here we come? 21:15:32 <oerjan> fizzie: _FINALLY_ we can have robot zombies 21:15:34 <elliott> That would be the best way to control the outbreak. 21:15:44 <elliott> "Here you go, here's brains. No, get off me, that's not civilised." 21:16:31 <oerjan> sadly we still cannot have mutant ninja pirate robot zombie dinosaurs. 21:16:59 <oerjan> (mutant is incompatible with robot, i think) 21:18:08 <fizzie> Maybe a mutant ninja pirate cyborg zombie dinosaur could do in a pinch. 21:18:15 <oerjan> maybe. 21:18:52 <elliott> How can I be stopped from making this commit message from not being able to come up with a single word. 21:18:53 <elliott> I am useless. 21:19:12 <oerjan> elliott: supercalifragilisticexpialidocious 21:19:17 <oerjan> yw 21:19:19 <elliott> No WRONG 21:19:19 <CakeProphet> `word 50 21:19:22 <HackEgo> nakepaputassienekapofierrionm anniemens ened oepashill jundepplad unda bola rotorepteldf earjobas hakelwalus lianna hos kon coper pctoruntamense cop fultiontialplinsuphorthys eudotearnithorriatickhre affenciagromenrcapunstranioneurphil luelinthencerrch ejcsed ova manaklinti z cocysicha fj sachy lithed ritisayadifiestistn 21:19:22 <CakeProphet> elliott: there you go. 21:19:34 <elliott> NONE OF THOSE CAN REPLACE "GET" 21:19:36 <fizzie> Also they do those "electronic circuits from genetic algorithms" things, all the results are by definition mutants, assuming there has been some mutation going on. 21:19:38 <elliott> I like how it generated a 0-length word there. 21:20:02 <CakeProphet> elliott: huh. that's odd. I guess there's a null string somewhere in the dataset? 21:20:09 <CakeProphet> er. no... that wouldn't match my filter regex. 21:20:15 <CakeProphet> [[:alpha:]+ not * 21:20:36 <oerjan> elliott: obtain, receive, acquire 21:20:48 <elliott> Add a log-packets script to get packet dumps" 21:20:51 <elliott> They don't really work there :P 21:21:14 <oerjan> steal, rob, kidnap 21:21:44 <CakeProphet> http://thesaurus.com/browse/get 21:21:46 <CakeProphet> capture? 21:21:54 <fizzie> Sense 11 21:21:55 <fizzie> get, catch, capture => seize, prehend, clutch 21:21:55 <fizzie> Sense 12 21:21:55 <fizzie> grow, develop, produce, get, acquire => change 21:22:02 <fizzie> (WordNet.) 21:22:04 <elliott> Capture might be right; isn't that what Wireshark calls it? 21:22:15 <CakeProphet> procure? educe? 21:22:19 <CakeProphet> extract? 21:22:25 <CakeProphet> reap! 21:22:47 <fizzie> Snarf. 21:22:55 <oerjan> spy 21:23:01 <fizzie> Yoink. 21:23:22 <fizzie> Sense 28 21:23:22 <fizzie> get, get under one's skin => annoy, rag, get to, bother, get at, irritate, rile, nark, nettle, gravel, vex, chafe, devil 21:23:27 <fizzie> Not that sense. 21:23:58 <oerjan> monitor 21:24:28 <oerjan> produce 21:24:58 <fizzie> Snoop. Lawfully intercept. 21:25:20 <oerjan> audit 21:25:31 <fizzie> Audit body thetans. 21:25:36 <fizzie> E-meter. 21:25:42 <oerjan> demeter 21:26:02 <fizzie> Channel. 21:26:42 <oerjan> divert 21:26:56 <fizzie> Dowse for. 21:26:57 * CakeProphet just sat through a video of someone castrating themself. 21:27:07 <CakeProphet> where would I be without the internet. 21:27:17 <oerjan> CakeProphet: sane? 21:27:20 <CakeProphet> probably. 21:27:51 <CakeProphet> it's likely that it was fake though 21:29:29 -!- elliott has quit (Ping timeout: 245 seconds). 21:29:42 -!- elliott has joined. 21:29:53 <elliott> Grr. 21:30:31 -!- elliott has quit (Changing host). 21:30:32 -!- elliott has joined. 21:30:32 <CakeProphet> yes the video has been confirmed to be fake. 21:30:56 <CakeProphet> but now why do I feel like I've been ripped off? 21:31:08 <oerjan> that's good, since you cannot be traumatized by fake videos. 21:31:45 <CakeProphet> it was only mildly disconcerting to me thanks to ridiculous amounts of desensitation. 21:32:15 <CakeProphet> I just feel like I've been shorted now... I wanted to witness the real deal. How fucked up. 21:33:56 -!- tiffany has joined. 21:34:27 <elliott> oerjan: yikes, apparently Hackage has no access control 21:36:16 <oerjan> huh 21:37:07 <oerjan> CakeProphet: this must be how serial killers are made. 21:37:29 <CakeProphet> oerjan: yes clearly. 21:37:51 * CakeProphet is a serial killer in the making. 21:37:59 <CakeProphet> where is my bonesaw? 21:38:09 <CakeProphet> I think I lost it. 21:38:43 <CakeProphet> oh look bonesaw online for $51 21:38:58 <CakeProphet> Our design met with your good taste. Since 1864 Coltellerie Sanelli manufactures knives and knives blocks for professionals using the same care ... 21:39:01 <CakeProphet> bahahahaha. good taste. 21:39:31 <oerjan> the taste of testicles 21:39:36 <CakeProphet> I should write some bonesaw reviews. 21:40:55 <CakeProphet> "Yes this product worked like a charm. Very useful for clean amputations near the base of the limbs to ease transpotation of the body. Made very precise incisions and cut through the bone like butter" 21:41:20 <CakeProphet> highly recommend. 21:44:17 <CakeProphet> wow sears sells bonesaws? why. 21:45:40 <CakeProphet> What do people use bonesaws for besides surgery and maybe hunting? 21:45:48 <CakeProphet> *normal people 21:46:24 <CakeProphet> well I guess you don't /have/ to cut bones with a bonesaw. I guess you could use it as a normal saw. 21:49:27 <oerjan> "we sell a lot of them in northern mexico" 21:50:12 <CakeProphet> oh people cut steak apparently. 21:50:25 <oerjan> that's what they all say. 21:51:01 <CakeProphet> ah here we go a post mortem bone saw for $62 21:51:33 <elliott> oerjan: is there an alphabetical constructor in the stdlib? :P 21:51:36 <elliott> exported that is 21:51:40 <oerjan> wat 21:51:45 <elliott> like 21:51:47 <elliott> not an operator 21:51:53 <CakeProphet> $300 for a powered surgical bonesaw apparently. 21:52:08 <oerjan> Left, Right, Just, Nothing? 21:52:13 <CakeProphet> oh 1950s era too. vintage. 21:52:24 <elliott> oerjan: oh thanks 21:52:26 <elliott> :P 21:52:52 <oerjan> i suspect there is only one _non-alphabetical_ one, : 21:53:01 <elliott> right 21:53:07 <elliott> ok it's showsPrec 11 I want 21:53:14 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de). 21:53:16 <oerjan> wat 21:53:27 <oerjan> is that even supposed to work. 21:53:28 <pikhq> oerjan: (,) says wut. 21:53:34 <elliott> class Packet a where 21:53:34 <elliott> packetName :: a -> String 21:53:34 <elliott> packetShowsFieldsPrec :: Int -> a -> [(String,ShowS)] 21:53:37 <elliott> good class 21:53:39 <elliott> oerjan: eh? 21:53:42 <elliott> of course it is 21:53:50 <elliott> how do you think constructor fields are showed 21:53:56 <oerjan> elliott: i didn't know showsPrec 11 was supposed to work 21:53:56 <elliott> Foo 9 (A b c) 99 21:53:57 <copumpkin> elliott: o.O 21:54:04 <elliott> copumpkin: o.O at what? 21:54:07 <copumpkin> oerjan: it's like turning the knob up to 11 21:54:09 <elliott> oerjan: look at derived show instances sometime 21:54:25 <elliott> For example, given the declarations 21:54:25 <elliott> infixr 5 :^: 21:54:25 <elliott> data Tree a = Leaf a | Tree a :^: Tree a 21:54:25 <elliott> the derived instance of Show is equivalent to 21:54:25 <elliott> instance (Show a) => Show (Tree a) where 21:54:25 <elliott> showsPrec d (Leaf m) = showParen (d > app_prec) $ 21:54:25 <oerjan> elliott: well but they're ghc specific 21:54:27 <elliott> showString "Leaf " . showsPrec (app_prec+1) m 21:54:29 <elliott> where app_prec = 10 21:54:31 <elliott> showsPrec d (u :^: v) = showParen (d > up_prec) $ 21:54:33 <elliott> showsPrec (up_prec+1) u . 21:54:35 <elliott> showString " :^: " . 21:54:37 <elliott> showsPrec (up_prec+1) v 21:54:39 <elliott> where up_prec = 5 21:54:41 <elliott> lol flood 21:54:43 <elliott> oerjan: how would /you/ write an instance for 21:54:45 <elliott> data Foo a = Nope | Foo a a 21:54:47 <elliott> a Show instance, that is 21:54:49 <elliott> "the operator precedence of the enclosing context (a number from 0 to 11). Function application has precedence 10." --showsPrec 21:54:55 <oerjan> aha 21:56:29 <CakeProphet> wtf I can buy chloroform online 21:56:46 <CakeProphet> well, time to go kidnapping. 21:57:15 <CakeProphet> man I didn't know it was this easy to be a serial killer. 21:57:39 <CakeProphet> like I don't even have to leave my house to get all of the tools. 21:58:03 -!- hagb4rd has joined. 21:58:21 <elliott> :t showsPrec 21:58:22 <lambdabot> forall a. (Show a) => Int -> a -> String -> String 21:58:29 <Pharmtom_Hoover> OK guys, I am making this decision through democracy. 21:58:33 -!- Patashu has joined. 21:58:42 <Pharmtom_Hoover> Which is better: tuxedo or Indiana Jones costume? 21:59:05 <elliott> copumpkin: Is there any way to make ghc not emit warnings about TH-generated code? 21:59:10 <elliott> <no location info>: Warning: Defined but not used: `prec_azgu' 21:59:11 <elliott> I MEAN COME ON 21:59:27 -!- calamari has quit (Ping timeout: 248 seconds). 21:59:31 <CakeProphet> Pharmtom_Hoover: they are equally bad things. 21:59:35 <Pharmtom_Hoover> Wait, no, the tuxedo hat sucks. 21:59:44 <oerjan> <pikhq> oerjan: (,) says wut. <-- ah right, that one doesn't follow usual operator syntax though. 21:59:45 <Pharmtom_Hoover> Jones it is. 22:00:33 <CakeProphet> elliott: ghc is like a stern but lenient mother. 22:00:42 <CakeProphet> "tsk tsk elliott" 22:02:02 <oerjan> !haskell data Sum a = One a | Sum a :+ Sum a deriving Show; infixl 5 :+; main = print $ One 1 :+ One 2 :+ One 3 :+ (One 4 :+ One 5) 22:02:08 <EgoBot> ​((One 1 :+ One 2) :+ One 3) :+ (One 4 :+ One 5) 22:02:29 <oerjan> ignoring associativity it is, then. 22:04:03 <elliott> there should really be a mapShows 22:04:05 <CakeProphet> probably to help people with dissociative identity disorder. 22:04:10 <elliott> erm 22:04:13 <elliott> concatMapShows 22:04:16 <elliott> or showConcatMap for consistency I guess 22:04:22 <elliott> showConcatMap :: (a -> ShowS) -> [a] -> ShowS 22:04:47 <elliott> showConcatMap f = foldr (.) 22:04:51 <elliott> erm 22:04:55 <elliott> showConcatMap f = foldr (\x r -> f x . r) 22:05:04 <elliott> id 22:05:07 <elliott> or foldr (.) id . map f I suppose 22:07:44 <oerjan> :t foldr ?f id 22:07:45 <lambdabot> forall a a1. (?f::a -> (a1 -> a1) -> a1 -> a1) => [a] -> a1 -> a1 22:08:07 <pikhq> WOTC is fail. They apparently managed to fuck up the current Oracle update. Because of this, everything with color not matching its casting cost has apparently ceased to have that color. 22:08:09 <oerjan> wat 22:08:12 <pikhq> FAIL 22:08:54 <oerjan> oh hm 22:09:40 <Pharmtom_Hoover> WOTC? 22:09:52 <pikhq> Wizards of the Coast. Makers of Magic. 22:10:35 <oerjan> :t ($id).foldr 22:10:36 <lambdabot> forall a a1. (a1 -> (a -> a) -> a -> a) -> [a1] -> a -> a 22:10:37 <Pharmtom_Hoover> Perhaps you might have said that when zzo was here? 22:10:55 <pikhq> Perhaps. 22:10:57 <oerjan> argh 22:12:14 <oerjan> oh 22:12:30 <oerjan> :t foldr :: (a -> ShowS) -> [a] -> ShowS 22:12:32 <lambdabot> Couldn't match expected type `a' against inferred type `Char' 22:12:32 <lambdabot> `a' is a rigid type variable bound by 22:12:32 <lambdabot> an expression type signature at <interactive>:1:10 22:12:35 <oerjan> bah 22:13:44 <oerjan> :t flip . foldr :: (a -> ShowS) -> [a] -> ShowS 22:13:45 <lambdabot> forall a. (a -> ShowS) -> [a] -> String -> String 22:13:54 <oerjan> elliott: there you go :P 22:15:54 <oerjan> > (flip . foldr $ showIntAtBase 7 intToDigit) [1..10] "" 22:15:55 <lambdabot> "12345610111213" 22:22:08 <oerjan> elliott: part of this is the realization that foldr (.) id = flip (foldr ($)) 22:22:49 <oerjan> = flip (foldr id) as well i guess 22:23:45 <oerjan> that is, in a sense you don't need to combine the functions before you start applying them. 22:25:11 <CakeProphet> oerjan: how profound. 22:25:23 <oerjan> de profundis 22:25:54 <oerjan> i just tend to recall that whenever i see someone write foldr (.) id 22:27:52 <elliott> oerjan: right 22:28:26 * Pharmtom_Hoover → sleep 22:29:36 -!- Pharmtom_Hoover has quit (Quit: Leaving). 22:33:55 -!- augur has quit (Remote host closed the connection). 22:35:04 -!- sllide has quit (Read error: Connection reset by peer). 22:43:50 <elliott> "But it seems to me that he's essentially saying that there are too many natural numbers; that the set of natural numbers admits members that are too large to be successors of 0." 22:43:51 <elliott> Oh, mathematics. 22:52:10 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:55:09 -!- ais523 has quit (Remote host closed the connection). 23:02:12 -!- zzo38 has joined. 23:17:51 -!- derdon has quit (Remote host closed the connection). 23:19:26 <CakeProphet> hi I'm CakeProphet 23:19:37 <CakeProphet> elliott: what 23:19:46 <CakeProphet> too large to be succesors of 0??? 23:19:56 <CakeProphet> where is this from. 23:20:18 <CakeProphet> do they know how successor works? and like... infinity and stuff? 23:20:18 <elliott> proposed proof sketch of peano inconsistency 23:20:24 <elliott> http://www.reddit.com/r/math/comments/ksg7f/peano_arithmetic_inconsistent/ 23:20:32 <elliott> CakeProphet: i think it's more that _you_ don't know how those work 23:20:34 <elliott> (neither do I, really) 23:20:38 <elliott> (not to this degree) 23:21:30 <oerjan> oh sure, successors look simple, but try doing them graham's number of times... 23:21:31 <CakeProphet> how can a natural number be too large to not be a successors of 0. is all I'm wondering. 23:21:43 <elliott> CakeProphet: because foundations are really weird. 23:21:47 <elliott> more specifically 23:21:49 <elliott> define successor 23:21:51 <elliott> (formally) 23:22:00 <CakeProphet> I think that's already been done for me hasn't it 23:22:21 <elliott> perhaps not well enough, it seems. 23:22:50 <CakeProphet> okay I mean it's possible it's inconsistent sure, but out of context that statement you quoted just sounds really really dumb. 23:23:15 <elliott> because it's a simplification 23:25:14 <CakeProphet> http://www.math.princeton.edu/~nelson/papers/outline.pdf 23:25:24 <CakeProphet> kind of rambley if you ask me. :P 23:26:58 <elliott> what 23:27:11 <elliott> it's really compact if you ask me 23:27:23 <CakeProphet> compact and hard to follow. 23:27:37 <elliott> ITT: you don't have a phd in mathematics. well, yet. 23:28:17 <CakeProphet> are you suggesting that I may one day have a phd in mathematics? 23:28:46 <elliott> hmm. well you'd need a brain transplant, but anything's possible. peano arithmetic might even beinconsistent. 23:29:16 <CakeProphet> based on plenty of actual real evidence I think this guy is just a finitist-hater. 23:29:17 <elliott> "... that after his shooting in 1881, U.S. President Garfield was treated by Doctor Doctor Bliss (pictured)?" 23:29:22 <elliott> doctor /doctor/? 23:29:28 <elliott> nothing in the article about that... 23:29:39 <elliott> CakeProphet: he's a constructivist, but also a respected mathematician outside of that 23:30:10 <CakeProphet> whenever I get my math phd and people ask me what my stances are. 23:30:19 <CakeProphet> I'll just be all like "yo dawg I'm a realist" 23:30:49 <CakeProphet> and I'll write the best papers 23:30:54 <elliott> "We are all Platonists in our youth." --the guy 23:31:02 <CakeProphet> no brain transplant required. 23:31:08 -!- copumpkin has joined. 23:31:13 <CakeProphet> the guy? 23:31:13 <elliott> "In this book is the first appearance of L'Hôpital's rule. The rule is believed to be the work of Johann Bernoulli since l'Hôpital, a nobleman, paid Bernoulli a retainer of 300₣ per year to keep him updated on developments in calculus and to solve problems he had. Moreover, the two signed a contract allowing l'Hôpital to use Bernoulli's discoveries in any way he wished." 23:31:15 <elliott> haha awesome 23:31:16 <elliott> CakeProphet: nelson 23:31:31 <CakeProphet> ah 23:31:43 <CakeProphet> man this guy sure cares a lot about isms 23:32:17 <elliott> um considering the paper i quoted that from was about isms... 23:32:26 <elliott> well, indirectly 23:32:53 <CakeProphet> I wasn't really sure what it was about because it didn't have a clear title. 23:32:57 <elliott> not that one. 23:32:58 <CakeProphet> unless you're talking about a different paper 23:32:59 <CakeProphet> ah 23:33:00 <elliott> the one I quoted it from. 23:34:00 <CakeProphet> Diffusion, Quantum Theory, and Radically Elementary mathematics 23:34:02 <CakeProphet> RADICAL 23:34:29 <CakeProphet> EXTREMEEEEE MATHEMATICS. 23:34:40 <CakeProphet> oh wait that's already a thing kind of. 23:38:42 -!- kmc has quit (Quit: Leaving). 23:39:32 <elliott> http://en.wikipedia.org/wiki/Yule_Log_(TV_program) 23:39:33 <elliott> I... 23:41:17 <CakeProphet> bahahaha 23:41:20 <CakeProphet> America is the best. 23:41:39 <elliott> During 2005, Tribune began making a version of the Yule Log video recorded in AVI format available for download, advertising it as a "Portable Yule Log" for those traveling. 23:41:57 <CakeProphet> The program was both a critical and ratings success, and by popular demand, it was rebroadcast for 23 consecutive years, beginning during 1967. 23:42:00 <CakeProphet> critical? 23:42:06 <elliott> MC/Protocol/Server.hs:10:1: 23:42:06 <elliott> Kind incompatibility when matching types: 23:42:06 <elliott> a0 :: * 23:42:06 <elliott> ghc-prim:GHC.Prim.Word# :: # 23:42:06 <elliott> In the first argument of `show', namely `0##' 23:42:07 <elliott> In the first argument of `Debug.Trace.trace', namely `show 0##' 23:42:09 <elliott> In a stmt of a 'do' block: Debug.Trace.trace (show 0##) (return ()) 23:42:11 <elliott> oerjan: oops. 23:42:14 <elliott> CakeProphet: It's art. 23:42:26 <elliott> Also during 2008, animation director PES released a free screensaver that reimagined the Yule Log in food, with pretzels for the log and candy corn for the flames. 23:43:02 <elliott> http://www.yuleagogo.com/ 23:43:03 <elliott> I... 23:43:41 <CakeProphet> bahahahaha 23:43:56 <CakeProphet> man that's a big log. 23:44:14 -!- BeholdMyGlory has quit (Remote host closed the connection). 23:45:51 <monqy> :( 23:48:40 <elliott> monqy: :( 23:49:08 <CakeProphet> :) 23:50:48 <oerjan> elliott: show (Word# 0##) maybe? 23:50:59 <oerjan> or whatever the constructor is 23:51:02 <elliott> oerjan: I kept around the original word so it's OK 23:51:08 <elliott> and I think W# 23:51:08 <elliott> ?src Word 23:51:09 <lambdabot> Source not found. You speak an infinite deal of nothing 23:51:16 <elliott> grr 23:52:13 <oerjan> also... 23:52:22 <oerjan> @hoogle traceShow 23:52:23 <lambdabot> Debug.Trace traceShow :: Show a => a -> b -> b 23:56:50 <elliott> oh thank you :) 23:56:52 <elliott> "The value of the progress bar. The maximum values vary depending on the progress bar. Presumably the values are specified as in-game ticks. Some progress bar values increase, while others decrease. For furnaces, 0 is empty, full progress arrow = about 180, full fire icon = about 250)" 23:56:53 <elliott> augh 2011-09-28: 00:08:40 <elliott> oerjan: apparently "???" are valid identifier characters... 00:09:33 <oerjan> but of course 00:09:37 <elliott> oerjan: wat 00:10:07 <oerjan> > let test ??? x = test+x in 2 ??? 2 00:10:08 <lambdabot> 4 00:10:13 <elliott> oerjan: valid /non-operator/ 00:10:21 <elliott> I think it's just a TH "bug" 00:10:23 <oerjan> ok, wat 00:10:31 <elliott> in that it's TH creating the names 00:10:53 <monqy> you mean with makeName or whatever it is? yeah you can put whatever you want in there 00:11:03 <elliott> yeah 00:11:06 <oerjan> elliott: istr in a previous discussion someone mentioned the only requirement for TH is the first char has the right case 00:11:10 <elliott> which is nice, since they're record fields :P 00:11:12 <elliott> oerjan: zzo 00:16:02 -!- sebbu3 has changed nick to sebbu. 00:27:24 -!- augur has joined. 00:28:39 -!- augur has quit (Remote host closed the connection). 00:36:03 -!- Jafet has quit (Quit: Leaving.). 00:40:49 <zzo38> I might want to play (and make up) some tarot games (using Latin-suited cards). I do have a few ideas. 00:41:04 <oerjan> <elliott> nothing in the article about that... <-- there's a footnote confirming it 00:41:16 <elliott> oerjan: >_< 00:41:24 <elliott> oh, I see 00:41:28 <elliott> his first name was actually Doctor 00:41:28 <elliott> heh 00:42:53 <zzo38> What might seem I might want some tarot deck, is a deck having features similar to the Spider Tarot, specifically: * Card backgrounds are blue (swords), green (rods), yellow (money), red (cups), and white (majors). * Latin-suited. * Index are 1 to 14 for minors, I to XXI for the trumps, and no index (possibly an entirely blank card) for the fool/excuse. 00:43:16 <elliott> brb 00:46:00 <zzo38> (Such as, the kings (14) still have the picture of the king, but it is labeled "14", not "King".) 00:46:41 -!- MSleep has changed nick to MDude. 00:54:34 <zzo38> I hope one day I can get a tarot deck and a Fanucci deck 00:58:31 <hagb4rd> omg, this one is so ..touchin beutiful..where the hell i have heard this? http://www.youtube.com/watch?v=DZrrQDphhrY 00:58:35 <hagb4rd> infant dreams? 00:58:52 <hagb4rd> ever head of transistor? 00:59:02 <hagb4rd> (music group) 01:09:04 <hagb4rd> there really should be a some kind of machine to deal with the iging patterns.. i mean F.U.C.K.U.P yes.. there are 64 of it, and its binary ..hell, need to evolve this diffusing idea 01:12:28 <elliott> what 01:13:15 <monqy> go on... 01:30:37 -!- Sgeo|web has joined. 01:30:45 * Sgeo|web is starting to get PHP poisoning 01:33:44 -!- Jafet has joined. 01:41:03 -!- quintopia has quit (Ping timeout: 252 seconds). 01:47:03 -!- quintopia has joined. 01:47:03 -!- quintopia has quit (Changing host). 01:47:03 -!- quintopia has joined. 01:53:40 -!- pikhq_ has joined. 01:55:19 -!- pikhq has quit (Ping timeout: 260 seconds). 01:55:45 <zzo38> What is PHP poisoning? 02:00:13 -!- DH____ has joined. 02:00:48 <Sgeo|web> zzo38: any amount of exposure to PHP 02:01:06 <Madoka-Kaname> That's a very low lethal dosage. 02:02:37 -!- Jafet1 has joined. 02:02:37 -!- Jafet has quit (Quit: Leaving.). 02:03:24 -!- keyzs has joined. 02:03:29 <keyzs> http://www.thevenusproject.com/ 02:03:33 -!- keyzs has left. 02:03:52 <monqy> oh? 02:04:26 <oerjan> it's a trap! 02:04:30 <oerjan> a venus trap, that is. 02:04:47 <monqy> deadly the venus project trap 02:11:27 <Sgeo|web> The three fastest students (myself included) were told that we should make a thing where, if login fails, the user would be shown a countdown, then redirected to the login page. After one of the other students (not realizing that the assignment was only for us 3) complained that we weren't taught Javascript and that we needed Javascript to do it, I decided to do it without Javascript 02:11:31 <Sgeo|web> Just PHP and HTML 02:11:38 <elliott> hi 02:11:44 <elliott> hi 02:11:45 <elliott> hi 02:11:56 <Sgeo|web> hi 02:12:17 <Sgeo|web> Or are you representing what using my page would feel like? 02:12:22 <elliott> hi 02:13:16 <monqy> hi 02:13:26 <elliott> hi 02:14:38 <Sgeo|web> http://tolga.me/seth/lab2/login.php 02:15:03 <Madoka-Kaname> Sgeo|web, how spiteful. 02:15:03 <Madoka-Kaname> =p 02:15:24 <elliott> i like how the source is invalid 02:15:44 <Sgeo|web> You'll kill me when I show you the PHP source 02:16:00 <elliott> except the html is literally wrong 02:16:11 <Sgeo|web> Because of the /> 02:16:23 <Sgeo|web> Maybe I should never have read stuff about XHTML? 02:16:25 <elliott> yes, ypu need an xml header for that 02:16:58 <elliott> but thatll just screw up errorhandling behaviour 02:17:06 <elliott> so dont use the slashes 02:17:07 <Sgeo|web> Wait what? 02:17:16 <Sgeo|web> I mean, wrt screwing up errorhandling 02:17:41 <Sgeo|web> http://pastie.org/private/cnpw2axjigodmwkv3145g 02:17:48 <elliott> xhtml violates postel's law completely, among other things 02:18:36 <elliott> cool unsallted password 02:18:44 <elliott> rainbow table time 02:18:57 -!- derrik has joined. 02:20:05 <monqy> what is this class and why are you in it 02:20:10 <monqy> and why aren't you at a better school 02:20:13 <Sgeo|web> Suppose, hypothetically, I was comparing the sha1'd (password + "lakuhdfoiuyergfuoeaywgrfo78yatgrfuiawygr83q2tr78tawguwaheroa78yw4378ry7834"). Would that be an appropriate salt? Although I'm under the impression that the salt should be different for each user, not sure the details why 02:21:00 <elliott> monqy: because his father, like always 02:21:02 <Sgeo|web> "Web Database Development" 02:21:25 <Sgeo|web> elliott: do you want me to just tell you the password? 02:21:34 <Sgeo|web> Or do you want to get it yourself 02:21:39 <elliott> w/e 02:21:45 <Sgeo|web> The Password is... 02:22:13 * Sgeo|web tries to tell you the Password 02:22:56 <elliott> is it Password 02:23:00 <Sgeo|web> Yes 02:23:19 <monqy> web database development sounds lame 02:23:25 <monqy> why not a proper databases course 02:23:34 <elliott> i wont bother trying to log in to your mail with it then\ 02:23:34 <monqy> not some 02:23:35 <monqy> php 02:23:36 <monqy> thing 02:23:46 <Sgeo|web> There are proper database courses 02:23:59 <monqy> why are you in the php thing instead of them 02:24:25 <monqy> if it's because of the "web" part, I'll have you know: web sucks 02:24:35 <monqy> if it's because of the "development" part, I'll have you know: development sucks 02:24:44 <Sgeo|web> I already took some of the proper database courses 02:24:58 <elliott> monqy: requirements, bad school 02:25:05 <monqy> ah 02:25:07 <elliott> bad school: see previous answer 02:25:11 <zzo38> It is true that PHP is not so good, but it can be used 02:25:20 <Sgeo|web> I think this was an elective 02:25:35 * Sgeo|web runs for cover 02:26:00 -!- Jafet has joined. 02:27:21 -!- Jafet1 has quit (Ping timeout: 265 seconds). 02:27:40 -!- Jafet has quit (Client Quit). 02:28:26 -!- Jafet has joined. 02:30:25 <zzo38> At FreeGeek they told me they needed a program, it is a web page that refreshes, he agreed it is not ideal, I suggested using a telnet session or something else, apparently for keeping track of items in the store. But I would built it in to the POS system; in fact I started writing such thing. 02:30:52 <zzo38> But I will also do what is described, using SQL reporting program (a program I wrote by myself in Enhanced CWEB) 02:31:47 <zzo38> How it works, is, a line with # at the front is a special command, and other lines are copied directly to output except for a field name with ` surround meaning use value of that field. 02:32:39 <zzo38> Commands are #! is comment (allowing you to have a shebang line), #Q to execute a query, #Z to mark the end of a query block, #I to include file, #F to define a function, and #X to enter hexadecimal codes. 02:33:31 <zzo38> It was originally designed for TeX output, but it works for HTML too. 02:35:35 -!- Jafet has quit (Ping timeout: 265 seconds). 02:37:13 <Sgeo|web> Please don't force non-programmers to learn to program 02:37:31 -!- augur has joined. 02:37:54 <zzo38> Sgeo|web: Please explain better? 02:37:58 <elliott> Sgeo|web: fsvo force 02:38:29 <Sgeo|web> zzo38: If a user needs to write code in order to use something, then the interface is perhaps not the best. 02:38:38 <Sgeo|web> s/user/end-user/ 02:38:54 <Sgeo|web> Um, wait, libraries .. are the people who use libraries considered end-users? 02:39:05 <elliott> Sgeo|web: please... 02:39:23 <Sgeo|web> elliott: what? 02:39:41 -!- calamari has joined. 02:39:52 <zzo38> Sgeo|web: I am writing the code myself; the end-user does not need to touch it if they do not want to. 02:40:04 <elliott> Sgeo|web: demonstrating your ignorance of what an interface or end-user even IS after pleading with someone to not write a program based on an assumption you're making about it is just embarrassing yourself. 02:40:27 <Sgeo|web> zzo38: oh, oops 02:40:30 <Sgeo|web> sorry 02:42:10 <zzo38> But I also do not completely agree. Best programs are those which you can write the programming; including TeX, METAFONT, UNIX shell, TeXnicard, etc. 02:42:21 <zzo38> And SQL. 02:42:24 -!- Jafet has joined. 02:43:26 -!- kmc has joined. 02:43:32 <Sgeo|web> Bleh, it depends on the program. 02:43:38 <Sgeo|web> I guess. 02:43:57 <zzo38> I suppose it can. 02:44:05 <monqy> social networking app where you write it yourself 02:44:25 <zzo38> monqy: That is OpenID. 02:45:03 <elliott> Sgeo|web: Every program must be programmable to be truly useful. 02:45:51 <Sgeo|web> If you say "to be more useful to a segment of the population" then I might agree 02:45:59 <Sgeo|web> Wait 02:46:00 <zzo38> elliott: And that is one good reason of Free-software/Open-source. 02:46:25 <Sgeo|web> An extendable program can offer benefits to non-programmers by virtue of the extensions that programmers write 02:46:47 <Sgeo|web> But I don't think this implies that non-programmable programs are useless. 02:46:55 <Sgeo|web> Just that programmable ones may be more useful 02:47:05 <elliott> The user/programmer distinction is arbitrary and harmful. 02:47:07 <derrik> kinda makes sense 02:47:14 <monqy> what kinda makes sense 02:47:16 <zzo38> Sgeo|web: I suppose so. It also depend what program. 02:47:19 <monqy> you may be: wrong 02:47:21 <monqy> or: right 02:47:23 <derrik> if you look at it in a certain way 02:47:28 <monqy> depending on what you meant 02:47:29 <monqy> by 02:47:32 <monqy> "kinda makes sense" 02:47:34 <zzo38> But generally I think the one is good where you can write the program 02:47:41 <monqy> and: 02:47:46 <monqy> "if you look at in a certain way" 02:47:53 <elliott> derrik: what does 02:48:33 <monqy> and what way 02:48:35 <monqy> is the 02:48:40 <monqy> ceratin 02:48:40 <monqy> way 02:48:55 <elliott> cretin way 02:48:56 <derrik> elliott: i don't agree with you at all.. user/programmer distinction is quite vital 02:50:06 <elliott> No. Consider Commodore 64s; everyone wrote /some/ code, whether it was to load a program from a tape, or following along tutorials in books because BASIC was the interface. The barrier to programming is incredibly, artificially high in today's operating systems. 02:50:24 <derrik> elliott: your typos may be used against you.. if you're a programmer, they already are against you 02:50:44 <Sgeo|web> derrik: Is that meant to be a coherent argument? 02:51:03 <elliott> Experienced users nowadays already do things that come close to programming, they just don't realise it; and certainly they're being held back by having to make an arbitrary elevation between "power user" and "programmer" -- it means they can't do this and that which they're perfectly capable of, fit in their workflow, and would aid them immensely -- because that's /programming/, you need to get special programmer tools and training for that. 02:51:10 <Sgeo|web> elliott: but was "everyone" a smaller segment of the population? These days, more people from wider backgrounds are required to use computers. 02:51:15 <derrik> Sgeo|web: i have a coherent argument too, but why waste effort here among the incoherents? 02:51:22 <elliott> And programmers suffer, too; "writing a program" is a separate thing. 02:51:31 <monqy> derrik: what 02:51:32 <elliott> They can't apply their skills nearly so readily and easily outside that domain. 02:51:51 <elliott> derrik: Can you point me to something I've said about this that was incoherent? I'd be glad to elaborate. 02:52:05 <Sgeo|web> Maybe the system shouldn't make the distinction so readily, but there still needs to be a level at which a computer is usable without having to teach someone anything more than very, very simple stuff 02:52:19 <monqy> i said ceratin........therefore i'm an idiot and time spent on me or you is time wasted......... 02:52:27 <monqy> you said ceratin too.....the curse..... 02:52:48 <derrik> elliott: if your starting point is that the user/programmer distinction is harmful, there is nothing to elaborate, logically 02:53:00 <monqy> what 02:53:06 <elliott> derrik: I'm asking for you to clarify your opposing position. 02:53:11 <Sgeo|web> derrik: um, it's a conclusion that can be argued for or against. 02:53:12 <elliott> Sgeo|web: You again are falling into this trap where you imagine this (mythical) Average Programmer/User/Whatever and religiously make all these decisions based on them, because you make them more ignorant, less capable of learning, less motivated and less knowledgeable than any person truly is. 02:53:41 <elliott> Sgeo|web: It doesn't aid such people (who don't really exist, anyway); it's downright insulting and harmful to them, really, because it holds them back by imagining them in this image. 02:53:51 <derrik> if your idea is to do erase distinctions, it's not elaborating.. it's explaining stuff away 02:54:00 <elliott> Sgeo|web: But what you are also assuming is that programming necessarily has to be hard at all. 02:54:22 <elliott> Sgeo|web: There is no reason that using a UI cannot be a special case of programming, and an easy one at that, because a UI is backed by a program: it is just another abstraction. 02:54:33 <Sgeo|web> There are people who are less capable of learning, less motivated and less knowledgable. Or at least, I have anecdotal evidence of such, which isn't much, but still 02:54:33 <monqy> derrik: what 02:54:43 <monqy> derrik: elaborate 02:54:43 <elliott> What needs to be done is making the programming environment much more omnipresent, and integrating the transition from full UI to programming, blurring the boundaries, by making it just a special case. 02:54:50 <monqy> derrik: on why you won't elaborate 02:55:05 <monqy> derrik: alternatively, elaborate on the thing on which you won't elaborate 02:55:13 <elliott> Sgeo|web: Sure, but you take the absolute worst example imaginable -- that doesn't even form a coherent person, you just mentally answer every hypothetical question with the worst answer that could be given. 02:55:22 <Sgeo|web> elliott: an easy special case of programming might make sense 02:55:24 <elliott> Sgeo|web: Good god, learning Windows would be damn near impossible for such a person -- it's a nightmare. 02:55:29 <elliott> And indeed, it's a nightmare for people in practice, too. 02:55:41 <elliott> But not because they're idiots. Never ever assume people are idiots, because designing based on that will get you nowhere. 02:55:47 <elliott> Sgeo|web: That isn't what I meant. 02:55:49 <derrik> elliott: well, my elaboration.. do programmers work for a purpose or not? 02:55:56 <elliott> I do not want a fisher price interface on top of a language. 02:55:58 <elliott> derrik: Work when? 02:56:09 <zzo38> Then those people who cannot understand it should not use a computer. 02:56:22 <elliott> Sgeo|web: The point is that just as we build higher layers of abstraction as programmers, a full UI is just another layer of abstraction. 02:56:23 <derrik> elliott: ah, so you are so profoundly undistinguished.. no use then :) 02:56:27 <elliott> The problem is that it's implemented badly. 02:56:39 <elliott> Sgeo|web: It does not gel with the lower layers at all, there is no interaction from the user's POV whatsoever. 02:56:59 <monqy> derrik: are you being serious 02:57:04 <elliott> derrik: Whatever; you're avoiding answering any questions with any kind of directness by brushing them off with excuses and saying incoherent vague things to sound wiser. 02:57:17 <elliott> If you won't elaborate at all it clearly won't be productive to try and discuss this with you. 02:57:25 <Madoka-Kaname> derrik doesn't seem to be a very good debater... Might I suggest presenting an actual counterargument? 02:57:29 <elliott> Especially as I've written quite a load of paragraphs above elaborating upon and explicating /my/ position. 02:57:37 <elliott> Madoka-Kaname: I doubt he has one. 02:57:47 <Sgeo|web> elliott: I can vaguely imagine what you want, and agree it would be preferable. But it should be such that it's usable even with minimal learning. 02:57:54 -!- DHeadshot has joined. 02:58:01 -!- DH____ has quit (Read error: Connection reset by peer). 02:58:12 <elliott> Sgeo|web: Nothing is usable with minimal learning. 02:58:15 <derrik> elliott: in any logical discussion your "work when?" has no meaning.. in a logical discussion, when one says "programmers work" it means they are programming.. this is kindergarten level of communication.. if you need to be taught this, it's kind of sad 02:58:23 <zzo38> But when I have equipment/time/etc, I can build the computer, it will have both Forth and BASIC built-in you can write a program, yourself, or from book, or whatever. However, you can use the computer without that if you have other programs; if you have the physical media for the program, insert it and push START button on game controller, it will load by itself. 02:58:32 <elliott> Sgeo|web: If you think Windows, if you think Ubuntu, if you think OS X, if you think the OLPC, if you think any interface is usable with minimal learning, you are wrong and this is not true in practice at all 02:58:36 <monqy> derrik: ahahaha wow did you really just say that 02:59:04 <zzo38> Therefore, this way, it shall makes more sense. You can write programming directly but it work even if you know nothing about the system other than push START. 02:59:07 <elliott> Sgeo|web: Those systems that are especially easy to learn -- that a lot of people can pick up within days to do very simple tasks -- are just simply done by staying as close to real-world analogies as possible, which we have put a whole backbreaking childhood into learning and internalising. 02:59:07 <monqy> derrik: must we follow your rules of conversation to get you to coax an elaboration out of you, or are you merely avoiding it? 02:59:10 <Madoka-Kaname> derrik, go between a UI, a highly configurable UI, a batch processing system system with no control flow, one with conditionals/basic control flow, and so on. 02:59:13 <elliott> Sgeo|web: Which is not easy at all. And those UIs don't scale. 02:59:19 <Madoka-Kaname> When and why does it start becoming programming. 02:59:25 <elliott> derrik: No, you said "do programmers work for a purpose". 02:59:31 <Sgeo|web> I think someone who struggles with basic concepts in Windows but barely survives by memorizing an exact sequence of steps to take should be able to survive this system in the same way. 02:59:31 <elliott> derrik: My question was asking: 02:59:36 <Sgeo|web> And I do have a specific person in mind. 02:59:39 -!- elliott has left ("Leaving"). 02:59:41 -!- elliott has joined. 02:59:51 <elliott> derrik: Are you asking: Do programmers "work for a purpose" when they are actually writing lines of code? 02:59:55 <elliott> When they are presenting code to others? 02:59:58 <elliott> As people generally? 03:00:06 <elliott> Then I would ask: What does working for a purpose means? 03:00:25 <elliott> You seem to be assuming the absolute least meaningful interpretation of what I'm saying. That's not a conducive environment. 03:00:25 <monqy> elliott: I think it's that "if normal people aren't programmers, what good are programmers?" but that's a really dumb argument 03:00:29 <Sgeo|web> Is derrik trying to talk about programmers making money? 03:00:33 <elliott> Sgeo|web: They can survive any system with that. 03:00:53 <elliott> Sgeo|web: If someone is just parroting, then they rely only on nothing ever changing, and the limits of their memory in terms of number of actions. 03:01:30 <elliott> It is pointless to think about them. And anyway if someone is operating in that way it just means the system has failed them in terms of educating them to use a computer effectively (which of course is the norm nowadays). 03:01:33 <elliott> monqy: s/aren't/are/ surely? 03:01:45 <derrik> elliott: if there is a purpose (money, code, completed interface, whatever) then the user/programmer distinction is necessarily there.. 03:01:50 <monqy> elliott: oh right 03:01:52 <elliott> I /think/ derrik is trying to say that programmers have a purpose (to produce a product application), whereas users don't. 03:02:11 <elliott> But that's clearly not true: In an open source environment, programmers work by scratching their own itch: they work to accomplish a problem/task they have. 03:02:21 <elliott> And that's what users do, too: they do what is necessary to accomplish a task they have. 03:02:28 <monqy> derrik: that's an entriely irrelevant distinction 03:02:29 <Madoka-Kaname> Python console/bash console/etc 03:02:32 <hagb4rd> unsigned eyeofhorus? http://en.wikipedia.org/wiki/Eye_of_Horus#In_arithmetic http://en.wikipedia.org/wiki/I_Ching#The_hexagrams 03:02:36 <elliott> derrik: It is really irrelevant to drag employment which is inherently based on the existing dichotomy into this. 03:02:44 <monqy> derrik: this is between users who can write code and users who can't; yours is about those who do it professionally 03:02:47 <elliott> It forms a circular argument: Programming is a profession, so programmers are different to users. 03:02:58 <elliott> But programming-as-a-profession assumes the distinction; you can't use it as an argument. 03:03:03 <zzo38> Yes; I write program, generally for whatever I am making. 03:03:15 <Sgeo|web> I think user/programmer dichotomy can be eliminated without eliminating programming-as-a-profession 03:03:20 <derrik> elliott: of course anyone can be both user and programmer, but this does not mean the distinction does not exist.. when you read a book and learn stuff from there, you are your own teacher, while you are a student too.. the distinction is quite necessary 03:03:46 <Sgeo|web> After all, no one's going to want to write all the stuff to do XYZ themselves, they have other chores they have to do 03:03:47 <elliott> derrik: Then tell me where you draw the line. Looking at a person sat at a computer, how can you tell whether they are using or programming? 03:03:50 <pikhq_> Sgeo|web: That'd leave it more akin to the distinction between a professional mathematician and a recreational one, though. 03:04:29 * Sgeo|web is a bit uncertain as to the distinction between professional mathematician and recreational 03:04:36 <Sgeo|web> What is a professional mathematician 03:04:38 <derrik> elliott: i don't need to know it about others, as long as i don't need to contact them.. but i clearly need to know it about myself, when i am coding.. i need to know why i am doing it, what will i do with the result, etc 03:04:51 <pikhq_> Sgeo|web: Academia. Versus people doing it for shits and giggles. 03:04:56 <elliott> derrik: I'm not asking you to do it in practice. 03:05:02 <Sgeo|web> derrik: a user has a purpose: To accomplish task XYZ. 03:05:02 <pikhq_> It's a bit of a fuzzy distinction. 03:05:14 <elliott> derrik: I'm asking, as a method of dialogue, to describe to me how you would distinguish any given hypothetical user at a computer, whether they are using or programming. 03:05:27 <elliott> That will then define what you say is the barrier between using or programming in a way that is easiest for me to understand. 03:05:42 <derrik> Sgeo|web: i never said user has no purpose.. user has users' purposes, programmer has programmers' purposes 03:06:09 <Sgeo|web> How do you distinguish between a user purpose and a programmer purpose? 03:06:20 <elliott> derrik: So can you do that? 03:06:34 <monqy> derrik: how about this: to play along with your words: and make you happy: everyone can be and is a programmer to some degree. that's what we were discussing before you misinterpreted it. 03:06:36 <derrik> elliott: hypothetically, it is hypothetical.. could be both, and could be one of those.. depends on the purpose 03:06:57 <Sgeo|web> How is that even an answer to anything elliott asked 03:07:08 <elliott> derrik: Yes, it's a nice tautology. I'm asking you to tell me what questions you would attempt to answer about what the user is doing to determine whether they are using or programming. 03:07:15 <derrik> i mean, hypothetically i don't care.. but if there is a purpose, it can be figured out 03:07:20 <elliott> Your job is to go around and look at people who use computers, and to tell me whether they are using or programming. 03:07:24 <zzo38> I do not have SQL reporting program right now because it is on the FreeGeek computer. But I will post it when I can do so, in case it is program you want to use (or to modify). 03:07:24 -!- Jafet1 has joined. 03:07:31 <elliott> What questions would you attempt to get the answers to, about what they are doing, so you could determine this? 03:07:43 <elliott> If you refuse to participate in this because it's hypothetical, then you're just obstructing the argument; of course it is, it's a tool I use to understand your positions better. 03:07:44 <Madoka-Kaname> derrik, what's experiments on the Python console, or one shot commands in bash? 03:08:16 <Sgeo|web> "Are you doing something that will result in an entity that can be reused in situations other than this specific o..." wait, one-shot scripts 03:08:24 <hagb4rd> to become better programmers we need to get some insight on our nature..and breed some purpose 03:08:38 <elliott> Sgeo|web: Asking derrik, not you :) 03:08:38 <derrik> elliott: if my job is to keep an eye on if people behind computers are working, i would watch what they are typing, if it is what they are supposed to be typing.. simple enough? 03:09:12 <zzo38> Of course you write a command in the UNIX shell, or multiple commands, combined in whatever way possibly by pipes. I prefer the way program are operated by pipes. 03:09:21 <monqy> hagb4rd: hi 03:09:25 -!- Jafet has quit (Ping timeout: 265 seconds). 03:09:32 <hagb4rd> hey monqy 03:09:48 <Sgeo|web> Bash kind of makes the "distinction" blurry, but Bash sucks as a language 03:11:04 <monqy> windows ui is like a language of clicking on things..........natural language is like a language of natural........ 03:12:12 -!- Jafet1 has quit (Client Quit). 03:12:34 <elliott> derrik: Sure. 03:12:36 <elliott> derrik: What would you watch for? 03:12:39 <elliott> What patterns in the typing? 03:12:57 <elliott> Obviously, you can't just go by if they were typing or not, because then you'd have to answer "Are they using or programming?" with only a yes/no to "Are they typing?"> 03:13:04 <elliott> I'm asking what questions you need to determine that. 03:13:12 <elliott> You can ignore edge-cases, I'm just asking how you would generally determine this. 03:13:22 <monqy> people who aren't programming don't necessarily not have the capacity...... 03:13:28 <Madoka-Kaname> Also, programmers write documentation. 03:13:29 <Madoka-Kaname> Hopefully 03:13:43 <Sgeo|web> And some people who are programming don't have the capacity... 03:13:44 <pikhq_> Madoka-Kaname: Wishful thinking if ever I saw it. 03:13:45 <Madoka-Kaname> Well, programmers writing applications at least. 03:14:40 * Sgeo|web brings to mind one horrible LSL script he saw once 03:15:06 <Sgeo|web> Just... lines of repeated code, one number changed by a certain amount each time. With one exception, where they messed up. 03:15:16 <Sgeo|web> And this code was posted for others to use. 03:15:22 <monqy> did they use it 03:15:48 <derrik> elliott: the key here is what they are *supposed to be typing* 03:15:55 <Sgeo|web> No idea 03:16:00 <elliott> derrik: Supposed to? 03:16:05 <elliott> As in, someone is telling them to type certain things? 03:16:09 <Madoka-Kaname> derrik, what is a visual programming language? 03:16:17 <Madoka-Kaname> I dunno 03:16:45 <Madoka-Kaname> I believe a meaningful distinction can be made, but this isn't anything close to it 03:17:55 <derrik> elliott: they are typing because somebody already told them to type certain things.. and the supervisor will watch if the typing matches what the programmer is supposed to be typing.. now, can you think of more ways how to not parse simple expressions? 03:18:10 <Sgeo|web> Would a distinction reliant on the current dichotomy count? 03:18:20 <elliott> derrik: Umm. But I'm a programmer, and I don't have any supervisors, and nobody tells me what to type. 03:18:35 <monqy> you tell yourself what to type dummy 03:18:37 <Sgeo|web> derrik: do you really think all programmers program exclusively at jobs? 03:18:39 <monqy> 8) 03:18:53 <Sgeo|web> Recreational programming does not exist. 03:19:00 <derrik> elliott: then you made up a useless hypothetical situation.. good job 03:19:04 <monqy> what 03:19:10 <elliott> derrik: What?? But that's true. 03:19:12 <elliott> That's not hypothetical. 03:19:23 <Sgeo|web> This network is for non-existent projects 03:19:25 <elliott> I _am_ a programmer, I _do_ have no supervisor, because nobody employs me to program; I program of my own free will. 03:19:26 <monqy> what was the hypothetical and how was it useless 03:19:38 <elliott> I'm an open source programmer who programs in his free time because I love doing it. 03:19:41 <hagb4rd> i'd never believe mono would get things done so easy..just successfully migrated big parts of etl-app without editing a single line of code (win->redhatlinux) 03:19:45 <elliott> How is that hypothetical? How am I not a programmer? 03:19:50 <hagb4rd> and its even faster^^ 03:20:00 <derrik> <elliott>derrik: I'm asking, as a method of dialogue, to describe to me how you would distinguish any given hypothetical user at a computer, whether they are using or programming. 03:20:05 <elliott> Can you really say that the huge, reliable open-source codebases out there programmed by people in their own free time were not built by programmers because they weren't being employed to do it? 03:20:22 <elliott> derrik: Right. So you said: find out what they're being told to type by their supervisor. 03:20:31 <elliott> But that obviously fails, because there are many programmers doing it without a supervisor. 03:20:42 <elliott> So that doesn't work to distinguish any hypothetical user because it misses out huge, huge swathes of them. 03:20:56 <derrik> the hypothetical situation was made up by you alone.. in a dialogue, you are useless 03:20:59 <elliott> So I'm still left completely unenlightened as to how you define the distinction between "user" and "programmer", apart from "employment". 03:21:28 <monqy> derrik: it wasn't useless; it was a technique of argument to demonstrate that you are Wrong 03:21:33 <elliott> Nobody else here seems to think I'm useless; I've written hundreds of quite clear (in my opinion) paragraphs of exposition and expansion on my positions, trying to explain what I think and why I think it, and how this can be applied in practice. 03:21:46 <monqy> derrik: what if: you: are useless 03:22:00 <elliott> You've been very vague, everyone's asked you what you meant (and indeed I have many troubles determining too, which is why I was trying to ask in a dialogue format so you can explain to me more naturally, as this is very helpful in practice). 03:22:13 <elliott> With all due respect, I really don't think I can be said to be the useless one in this dialogue. 03:22:14 <derrik> elliott: simple enough, there are programmers who have supervisors.. how about that? 03:22:26 <elliott> What about it? Of course there are. 03:22:32 -!- augur has quit (Remote host closed the connection). 03:22:33 <elliott> Is that how you define the distinction between users and programmers? 03:22:39 <elliott> Whether they have a supervisor telling them to program or not? 03:22:52 <pikhq_> There are also definite non-programmers who have supervisors. 03:23:01 <pikhq_> For instance, people who do not use computers in any way. 03:23:03 <elliott> I mean, if there is a meaningful distinction, which you contend there definitely is, then there is a definition of how a user differs from a programmer; what additional facets a programmer must possess to be a programmer on top of just a user. 03:23:17 <hagb4rd> what is the underlying question? sry :) 03:23:17 <elliott> I'm trying to ask you to articulate or at least broadly define roughly what characteristics these are. 03:23:29 <hagb4rd> must have missed it 03:23:34 <derrik> elliott: conclusion - at least you can tell the difference between a programmer and a supervisor.. it's not my problem that you can't make any further distinctions 03:23:41 <monqy> what 03:23:48 <elliott> hagb4rd: My contention is that the user/programmer distinction is fundamentally meaningless, misleading and harmful to both supposed groups; derrik disagrees. 03:23:58 <elliott> derrik: I'm not sure what you are trying to say. 03:23:59 <hagb4rd> ah 03:24:15 <elliott> derrik: Can we forget about this failed avenue and you maybe answer my question directly? :) 03:24:27 <elliott> I mean, it seems pointless to continue going down it since it obviously hasn't worked to make us understand each other's opinions. 03:24:29 <hagb4rd> thanks elliott, i would agree but still don't see what derrik is out to say 03:24:35 <elliott> What characteristics must a programmer have to be a programmer and not just a user? 03:24:42 <elliott> If there is a meaningful distinction, then these must exist. 03:25:15 <derrik> elliott: you are the programmer, yet you consider yourself just a user? 03:26:03 <elliott> I find "just a user" quite offensive. It's true that certain very unfortunate and harmful realities of current systems force there to be a barrier, but like I said, my contention is that it is completely artificial, with the only real distinction being those who have managed to cross that barrier, which is in large part due to chance. 03:26:14 <elliott> Still, that seems quite a personal remark. Do you not want to answer my question of what the distinguishing characteristics are? 03:26:21 <hagb4rd> y is that important.. i consider myself a wizard 03:26:32 <derrik> the distinction is plain and clear enough for me.. you were able to see distinctions between a programmer and a supervisor.. you knowingly muddle the distinction up between a user and a programmer 03:27:28 <derrik> i don't think i need to explain the distinction, because i have already done it ad nauseam.. now it's your turn to explain the distinction away, coherently 03:27:38 <pikhq_> You haven't even done it once. 03:27:44 <elliott> derrik: I'm sorry, but I really don't see what you consider the distinction. 03:27:46 <elliott> Is it supervisors? 03:27:49 <pikhq_> You have merely asserted there is one. 03:27:59 <elliott> Sure, I might just be being thick, I agree it's entirely possible. But please, I ask you to try and help me. 03:28:09 <elliott> What are the characteristics that distinguish a mere user from a programmer? 03:28:34 <hagb4rd> the context? 03:28:36 <hagb4rd> :> 03:28:40 <elliott> I mean... you say that since programmers and supervisors are "obviously" separate with no justification, one can similarly draw such an obvious boundary between programmer and user that it cannot be explained. 03:28:43 <derrik> elliott: programmer creates, the user consumes.. is this a meaningless distinction? 03:28:49 <elliott> So, I would just be arguing that apples and oranges are a meaningless distinction. 03:28:58 <elliott> But this seems unreasonable, because I can use it to justify any unreasonable distinction: 03:29:07 <elliott> Say we divide people into two groups, blah groups and bleh groups, completely randomly. 03:29:31 <elliott> Since programmers and superiors can be distinguished, I could say that someone was being unreasonable to assert that blah/bleh was an arbitrary distinction, by using that same analogy. 03:29:38 <elliott> It doesn't seem to say much about programmers and users, only programmers and supervisors. 03:29:48 <elliott> derrik: The user consumes? But users create tons of things with computers every day. 03:29:54 <derrik> elliott: the distinction here is not between apples and oranges, but between an apple tree and the one who is picking apples 03:30:09 <elliott> And programmers consume in abundance -- libraries, for instance. 03:30:13 <derrik> the mistake is too profound 03:30:18 <elliott> A user is programming when they use Word's search and replace. 03:30:21 <elliott> They have automated, abstracted a task. 03:30:24 <hagb4rd> duality trap 03:30:29 <elliott> They have turned looking and manually replacing each word in a document... 03:30:30 <hagb4rd> detected 03:30:42 <elliott> With an abstracted window that replaces each occurrence with only one click. 03:30:44 -!- oerjan has quit (Quit: Good night). 03:30:49 <elliott> This is like a programmer turning a hundred lines of repetition into a single function call. 03:30:52 * Sgeo|web has come up with a way to make the distinction, but it disqualifies HQ9+ programmers from being programmers. 03:30:52 <elliott> That is programming. 03:31:05 <elliott> How is what the user is doing there different in form from what the programmer is doing? 03:31:09 <derrik> elliott: i know that.. that's an apple tree.. just plant the seed 03:31:14 <elliott> Sure, what the user does is not seen/reused by other people. 03:31:21 <elliott> But programmers very often create personal, private scripts for their own use. 03:31:28 <elliott> derrik: I don't understand your analogy. 03:31:43 <derrik> elliott: i agree with you - you are thick 03:32:02 <elliott> derrik: At least I'm civil. 03:32:04 <Sgeo|web> Programming is providing a computer system instructions, where the set of instructions is enough to simulate a turing machine. 03:32:11 <Sgeo|web> ...that disqualifies C programmers. 03:32:29 <Sgeo|web> just replace turing machine with ... what's the finite version 03:32:44 <pikhq_> Sgeo|web: It also replaces programming with programming a compiler or interpreter. 03:32:48 <Sgeo|web> I think I may have disqualified writing SQL queries from "programming" 03:33:08 <pikhq_> i.e. you are only 'programming' if you are creating a TC program. 03:33:10 <pikhq_> :) 03:33:30 <hagb4rd> programming is reflecting 03:33:44 <elliott> derrik: So will you be civil or will you just continue insisting I'm the one who's wrong for, like most everyone talking right now, not understanding your convoluted and seemingly-meaningless metaphors? If you call me thick, that's just admitting you've lost the argument. 03:34:04 <Sgeo|web> pikhq_: by "set of instructions", I mean the available set of instructions, not just the instructions used in the provided programs. 03:34:18 <hagb4rd> are you a supervisor derrik? 03:34:54 <Sgeo|web> So using any TC language should qualify 03:35:01 <derrik> elliott: please, it was your own word, long before i said it.. i'm no less civil than you 03:35:29 <elliott> There's a difference between self-deprecation in humbleness to be polite and to attempt to foster a productive discussion and insults. 03:36:03 <elliott> I just wish you would be clear rather than being obscure and accusing me of "just not getting it" when I don't immediately see your position without you having specified it at all. 03:36:12 <derrik> elliott: oh, yes, i understood well.. you also asked me to help you.. don't you appreciate it? 03:36:24 <Sgeo|web> This does make the person ssh'ing into a server to admin Apache a "programmer" due to the console's weak programmer/user distinction 03:36:37 <Sgeo|web> And the person writing SQL queries all day not a programmer. 03:36:38 <elliott> derrik: I wish I could say I appreciated it, but I don't really think you've helped yet. 03:36:48 <Sgeo|web> I don't think this is fixable. 03:37:01 <derrik> elliott: thank me for the effort i wasted until now, then i can agree you are civil, and we can go on 03:37:19 <hagb4rd> this is so human 03:37:21 <elliott> derrik: Sure. I'll thank anyone for spending the time of day trying to debate their positions rationally. 03:37:28 <Sgeo|web> hagb4rd++ 03:37:28 <hagb4rd> he pass the test 03:37:48 <elliott> Sgeo|web: ? 03:38:08 <Sgeo|web> I thought hagb4rd was commenting on human tendency to get into conflict 03:38:20 <monqy> specifically stupid bad conflict 03:38:25 <elliott> Sgeo|web: Does what I'm saying sound like conflict? If so, I'm sorry. 03:38:35 <derrik> elliott: well, are there any other similar distinctions that are useless in your mind? teacher/student for example? 03:38:40 <hagb4rd> no, it just reached its peak 03:38:45 <hagb4rd> everything is fine now 03:38:55 <derrik> elliott: salesman/buyer? 03:39:13 <elliott> derrik: I'm sure there are other distinctions I would consider useless... but I find your examples pretty well selected against what I'm saying, because you're choosing some classic dichotomies. 03:39:39 <derrik> to teach well, the examples must be well selected.. 03:39:39 <elliott> derrik: Do you agree that programming is, at least, a type of using? One who programs a computer is using it, to program it? 03:39:45 <elliott> Whereas one who is buying is certainly not selling. 03:40:06 <Sgeo|web> elliott: Ada Lovelace programmed a computer without using it.. 03:40:14 <derrik> elliott: of course any workman *uses* tools.. 03:40:32 <elliott> Sgeo|web: Well, sure. That's not exactly a common scenario, though. 03:41:28 <elliott> derrik: I mean, if I were asked to produce what someone /might/ say were a list of characteristics that programmers have that users don't... 03:41:31 <elliott> I might say: 03:41:38 <elliott> - Is using an editor with syntax highlighting 03:41:50 <elliott> - Is using a compiler or interpreter, for instance in a terminal 03:42:10 <elliott> - Is causing interfaces to appear/be created on the screen that were not present prior of their own invention. 03:42:19 <elliott> derrik: Do you agree that these are some reasonable characteristics? 03:42:35 <Sgeo|web> Excel is an interpreter... 03:42:37 <Sgeo|web> >.> 03:42:40 <monqy> <.< 03:43:00 <pikhq_> Sgeo|web: Very much so. And it's even used as such. 03:43:02 <derrik> elliott: at least add to it - knowledge of programming languages 03:43:20 <elliott> derrik: Ah, but I am trying to distinguish someone who is in the /act/ of programming. 03:43:36 <Sgeo|web> There we go, the original question elliott asked. Except rework it to "currently using a programming language" 03:43:41 <pikhq_> derrik: Then nearly every UNIX shell user is a programmer. 03:43:44 <derrik> elliott: what use is an editor with syntax highlighting if you don't know what syntax is? 03:43:55 <pikhq_> Also nearly every DOS user. 03:43:58 <elliott> derrik: After all, a person who knows seventeen programming languages off by heart and uses them for twenty years but then retires, swears off programming, and just browses the web and uses Microsoft Office -- they're not a programmer, they're an ex-programmer. 03:44:16 <elliott> So I guess it is necessary but not sufficient. 03:44:20 <pikhq_> And, really, just about any user of any computer before the commonality of GUI. 03:44:24 <elliott> derrik: But do you agree that those are reasonable distinguishing characteristics? 03:44:37 <Sgeo|web> pikhq_: my criterion does the same, right? 03:44:53 <pikhq_> Sgeo|web: Yeah. 03:45:33 <derrik> elliott: knowledge of programming languages is kind of vital for a programmer.. if you don't know what syntax is, syntax highlighting is useless.. if you don't know what compilers do, no use of those.. etc 03:45:51 <elliott> derrik: That's what I said: necessary but not sufficient. 03:46:25 <derrik> elliott: man, a child first learns the letters, and then writes and reads and types.. not the other way 03:46:36 <elliott> I'm not disagreeing. 03:46:40 <elliott> Why do you think I am disagreeing? 03:46:50 <Sgeo|web> Ooh, I figured out how to fix it: Programming is the act of using an instruction set where the intersection of what the person is able to use and is considering using, and what exists within the instruction set, is turing complete. 03:47:05 <Sgeo|web> So, someone using ls and cat etc. is not programming. 03:47:25 <pikhq_> But someone using C is not. 03:47:29 <Sgeo|web> Argh 03:47:29 <derrik> because you did not include knowledge of programming languages among the characteristics, elliott.. 03:47:29 <elliott> Sgeo|web: So a programmer who idly considers writing a script to fix something but ends up manually doing it anyway is programming? 03:47:40 <elliott> derrik: But then I later amended it too, and called it necessary but not sufficient. 03:47:44 <elliott> Sorry for making errors. 03:48:14 <Sgeo|web> pikhq_: obviously, replace turing complete with whatever-it-is-C-is. 03:48:30 <derrik> elliott: now, all these characteristics can be used to distinguish a programmer from a user.. when you don't have these characteristics, but you are behind a computer using it, you are not a programmer, just a user 03:48:45 <pikhq_> Sgeo|web: FSA. 03:49:01 <Sgeo|web> elliott: hmm, not sure how to fix that, if it's even fixable 03:49:09 <pikhq_> Sgeo|web: Which leaves you with rather a huge problem, because there's a metric fuckton of FSAs. 03:49:21 <Sgeo|web> Is there a most powerful FSA? 03:49:24 <elliott> derrik: OK. What about a person who writes some macros in Word that pops up a box where the user fills in a few fields to, say, perform an automated series of finds and replaces? (But they never leave Word.) 03:49:28 <elliott> They're programming, right? 03:49:28 <Sgeo|web> Erm, wait, what 03:49:29 <derrik> hence user/programmer distinction exists.. q.e.d. 03:49:38 <monqy> sorry to bring up bad memories, but was the point for which the programmer/user dichtomy was brought up not that of capacity to program, say in usage of an application, rather than expertise in the subject? 03:49:39 -!- calamari has quit (Quit: Leaving). 03:49:45 <monqy> or have we just derailed that much 03:49:49 <monqy> that we don't even care 03:49:50 <monqy> ;_; 03:50:02 <hagb4rd> what about some cooking spaghetti while singing a song? 03:50:04 <elliott> monqy: It's a bit more subtle than that, but that seems closer. 03:50:05 <Sgeo|web> monqy: me complaining about something that zzo38 wasn't doing 03:50:40 <hagb4rd> its my spaghetti cooking algo 03:50:49 <pikhq_> Sgeo|web: No, there is not a most powerful FSA. 03:50:56 <zzo38> That I wasn't doing? 03:51:08 <monqy> so the relevance of user/programmer was in determination of if users can be expected to "program" 03:51:15 <Sgeo|web> pikhq_: Least powerful FSA able to accomodate C? 03:51:26 <zzo38> Now you write a lot of stuff try to argument about many things; OK if that is how you want to do 03:51:48 <Sgeo|web> zzo38: I thought you were doing something I disliked but you weren't 03:51:51 <elliott> Sgeo|web: that's just "an FSM with <N states" 03:52:08 <zzo38> Sgeo|web: What that you disliked? 03:52:35 <Sgeo|web> You requiring "end-users" to program for something that vaguely sounded like it didn't need it 03:52:42 <derrik> elliott: your last question (about word macros) you already answered yourself 03:53:11 <elliott> derrik: Alright. What about someone who writes a macro that doesn't present any interface, it's just a hardcoded list of phrases, and then a loop to search and replace each one of those? Still programming? 03:53:15 <elliott> There is a point to this, believe me. 03:53:16 <zzo38> Do you mean the SQL reporting program? You need to write the programming if you are making up new reports, but to just use existing report programs you do not need to do so. 03:53:40 <Sgeo|web> I'm going to go eat cake 03:53:42 <zzo38> You can just use whatever front-end you normally use for the databases, and the report will work. 03:53:59 <derrik> elliott: is syntax highlighting there? are compilers there or the user aware of using compilers? is he creating interfaces that weren't there in the first place? you answered your own question 03:54:04 -!- augur has joined. 03:54:32 <elliott> derrik: No, their macro editor doesn't have syntax highlighting. The user isn't aware that there is a compiler or interpreter involved, they just know that Word accepts their macros as a kind of language. 03:54:37 <elliott> There is no interface created because it is a one-time task. 03:54:41 <elliott> So are you saying this is not programming? 03:54:54 <zzo38> I think VBA does have syntax highlighting. 03:55:25 <hagb4rd> i would go further..every kind of plan you make to achieve sth, like catching your train is programming 03:55:29 <derrik> elliott: one-time tasks, if they don't create a program, are certainly not programming 03:55:47 <elliott> derrik: But they wrote a loop to process the list of phrases and call the Word function to replace them. 03:55:51 <elliott> Are you really saying that's not programming? 03:56:07 <zzo38> How do I do comma categories in Haskell? 03:56:13 <elliott> It even involved array indexing. 03:56:16 <derrik> elliott: yes, i can do it even without a computer.. i am an editor (in the original sense of the word) not a programmer 03:56:24 <elliott> derrik: But they wrote something like this. 03:56:33 <elliott> phrases = [['a','b'], ['c','d'], ...more phrases...] 03:56:34 <elliott> int i = 0 03:56:38 <elliott> while i < length(phrases) 03:56:46 <elliott> Word.ReplaceInDocument(currentDocument(), phrases[i][0], 03:56:53 <elliott> phrases[i][1] 03:56:56 <elliott> continue; 03:57:00 <elliott> Exit(); 03:57:06 <derrik> elliott: good, so they learned a bit of code.. was the result a program? 03:57:11 <elliott> Are you really saying the act of that was not _programming_? 03:57:17 <elliott> Are you saying it was instead coding? 03:57:32 <derrik> it was not even coding, really.. 03:57:39 <hagb4rd> lol 03:57:43 <monqy> i agree with hagb4rd 03:57:44 <Madoka-Kaname> derrik, define "coding" and "programming" already. 03:57:44 <derrik> what i would call coding, is to change code in a program 03:57:52 <Madoka-Kaname> Define "program" 03:58:09 <derrik> Madoka-Kaname: are you a programmer too? 03:58:22 <derrik> if yes, i don't have to define basic stuff 03:58:36 <Madoka-Kaname> derrik, I am, but I don't think our definitions of those words are the same. 03:58:38 <elliott> derrik: You are really saying that the authoring of a non-trivial loop involving such programming-related concepts such as loops, formal syntax, indexing, namespaces, functions, to accomplish an automated task which was given to an interpreter? 03:58:43 <elliott> Is not coding or programming? 03:58:53 <elliott> I don't think you will find anyone to agree with you on that point. 03:58:58 <Madoka-Kaname> Unless you want to define programmer as "somebody who (whatever you believe programming is) and agrees with me on the definitions of those terms" 03:59:07 <elliott> That is a very alien idea to me, that a program must be "this complex" or "in a file" or "syntax-highlighted" to be a program. 03:59:17 <elliott> That it has to persist beyond its initial use to be code. 03:59:32 <elliott> That is really at odds with anything I've ever heard or thought about programming, and I don't think it makes sense at all. 03:59:45 <elliott> The definition of code suddenly carries all this baggage about what you'll do with it /later/. 03:59:51 <zzo38> That is what happens when you decide complicated philosophical stuff. 04:00:12 <elliott> I might expect to hear that judgement of what is code and what isn't from a non-programmer, but to hear it from you (I presume you are a programmer) is very surprising to me indeed. 04:00:55 <Madoka-Kaname> I'm going to go with "either derrik fails to have a point, doesn't know what their point is, or is a horrible debater" 04:01:00 <Madoka-Kaname> Maybe a combination of two or three. 04:01:11 <elliott> Madoka-Kaname: That's not really helpful. 04:01:50 <derrik> elliott: i don't think i need to agree with you.. there is something called logic (of language).. in that logic, all distinctions may become relevant in a certain context, even user/programmer.. and they may lose their relevance in certain contexts.. if you never created a program for an end user, and never will, yes, the distinction is irrelevant for you, but it is very relevant for the... 04:01:51 <derrik> ...overwhelming majority of computer users who don't even know macros 04:02:06 <elliott> derrik: What relevance does that have to the case being discussed? 04:02:13 <elliott> I know what logic is, but how is that relevant? 04:02:17 <elliott> Sure, all distinctions could be relevant in SOME context. 04:02:30 <elliott> But so could my "divide people into two random groups and call them blah and bleh" distinction. 04:02:35 <derrik> elliott: now, please remind me, what "case" are we discussing? 04:02:42 <elliott> That doesn't mean blah/bleh is a useful, helpful distinction, that we should create Blah Products and Bleh Products... 04:02:49 <Madoka-Kaname> elliott, if you ask me, the difference between programming and not-programming is the ability to solve novel problems. 04:02:53 <Madoka-Kaname> Most UIs don't have that. 04:03:14 <elliott> derrik: The user who wrote a predefined list of phrases in a macro with a loop to replace each of these phrases, only once, without syntax highlighting or a true knowledge of what a compiler or interpreter is. 04:03:22 <Madoka-Kaname> (Which doesn't sound like derrik's point at all.) 04:03:30 <elliott> But using arrays, while loops, array indexing, incrementing, syntax, function calls... 04:03:45 <elliott> And with the intent to make Word follow their automated desires, as is the intent of all programmers. 04:03:54 <elliott> You say this is not programming because it does not produce a persistent "program". 04:03:56 <derrik> elliott: you already answered that question yourself.. take some other case now 04:04:04 <elliott> And you said it wasn't coding either. 04:04:09 <elliott> derrik: I didn't. 04:04:13 <elliott> You disagree with my answer. 04:04:13 <hagb4rd> its called polemic at was a prospering art/discipline during in ancient greece 04:04:17 <elliott> I find this a very important point. 04:04:24 <elliott> I don't think we can continue without this being resolved. 04:04:29 <derrik> elliott: your characteristics were the answer 04:04:37 <elliott> derrik: My characteristics were not to set any definition in stone. 04:04:50 <elliott> I was providing a list of example characteristics that someone who holds your position might use to answer my previous question. 04:05:00 <elliott> I was trying to show the kind of answer I was looking for to better understand you. 04:05:10 <derrik> elliott: oh, then we will have to build it up from the basics again... some other day, kthanksbye 04:05:17 <elliott> You agreed that they were reasonable characteristics, but in this case they have produced what to me seems like an incredibly absurd result. 04:05:26 <elliott> derrik: Are you just trying to waste my time? 04:05:32 <Sgeo|web> elliott: my new criterion is still narrow than the old one, assuming that "doing it manually" was still doing it in bash or something 04:05:45 <Sgeo|web> narrower 04:06:03 <Sgeo|web> AFK for a short to less short period of time 04:06:38 <Madoka-Kaname> derrik, you have demonstrated an unwillingness to actually argue your point. You arn't going to convince anybody like that. This is the mild version of what I have to say about doing that 04:06:44 <elliott> derrik: You really just seem to be leading me on, aided by lots of vague statements and claims to me and others that you don't have to explain yourself because it's obvious. 04:07:18 <elliott> derrik: I have tried to be as polite and accommodating as I can, but for you to decide that suddenly the fact that you don't have a snappy-but-unhelpful response to what I've said means you can just cut it short with a mocking "kthanksbye"... 04:07:19 <Madoka-Kaname> There's demonstrating an unwillingness to argue, there's actually trying to argue, and then there's this. 04:07:25 <elliott> derrik: What I'm saying is, fuck you. 04:07:43 <Madoka-Kaname> <Madoka-Kaname> elliott, if you ask me, the difference between programming and not-programming is the ability to solve novel problems. 04:07:43 <Madoka-Kaname> <Madoka-Kaname> Most UIs don't have that. 04:07:48 <elliott> derrik: And fuck you for making me waste all these keypresses when all you want to do is be stubborn and act superior that you understand all these "obvious" concepts and distinctions. 04:08:37 <elliott> derrik: Now I'm going to discuss this with people who deserve to be in this channel because they contribute productively and constructively by at least humouring and trying to come to an agreement when a point of debate is raised, rather than just wasting the other person's time with vagueness and unwillingness to argue (yet still replying that their position is clearly true) for long periods of time. 04:08:50 <elliott> derrik: Hopefully over time there will be more of them, and less of you. 04:09:00 <elliott> Now. 04:09:13 <elliott> Madoka-Kaname: I think that excludes a lot of programming in practice. 04:09:24 <elliott> People certainly do create the same web database interface CRUD apps day after day, after all. 04:09:26 <hagb4rd> it might console you that me at least enjoyed your unbreakable confindence in consense 04:09:44 <elliott> Madoka-Kaname: And though it doesn't exactly require your brain to do it, it's still programming, I think everyone would agree: same toolchain, same language, etc. 04:09:50 <zzo38> I expect in next D&D session I and my brother both gain an experence level; XP totals usually average 5000 per session. Now, to see if I can qualify for one prestige class or if I have to select the other one instead. I hope I am able. 04:10:00 <elliott> hagb4rd: Wow, consense is a word I'd never heard before. 04:10:06 <elliott> hagb4rd: But thank you, assuming you're addressing me. :) 04:10:16 <elliott> It's unfortunate that it couldn't have come to something productive. 04:10:17 <hagb4rd> ;) 04:11:18 <Madoka-Kaname> elliott, the distinction that I try to make is less "are solving a novel program" and more "the tools available can" 04:11:29 <Madoka-Kaname> Which is less talking about the person doing things and more about the thing they're using. 04:11:39 <elliott> Madoka-Kaname: Well, Word exposes a full programming language with complete API access to its users, via VBA. 04:11:50 <elliott> I suppose you can say that opening a VBA editor is tantamount to opening another tool entirely. 04:11:58 <elliott> Which I suppose is reasonable, but then tools are quite vaguely defined. 04:12:13 <elliott> Visual Studio might even have enough wizards to produce a very simple, nearly-useless GUI program without ever opening the code editor. 04:14:11 <Madoka-Kaname> elliott, I suppose you could say that without the VBA editor and support for the macros it generates, Word wouldn't be able to solve a completely new problem (well, I suppose you could do what /// does...) 04:14:32 <elliott> Madoka-Kaname: You should see the kind of mail merge setup I have, it's a TURING MACHINE. :p 04:14:36 <elliott> (It isn't but that would be cool.) 04:15:06 <elliott> Madoka-Kaname: But I think that actually supports my argument: Word only supports novel problems via a klunky side mechanism that is not nearly as easy to use as Word itself (well, Word itself is hardly a walk in the park, but I digress). 04:15:29 <elliott> The whole computing system should be equipped to solve novel problems as a whole, and each component should support this. 04:16:03 <Madoka-Kaname> Which... isn't exactly a trivial task. 04:16:14 <zzo38> Is "Barrier a c >>= f = Barrier a $ c >=> f" a proper monad? 04:16:30 <elliott> Madoka-Kaname: It's more like it's a difficult system to imagine starting from current systems as a base. 04:16:40 <elliott> I would say @ is actually a simpler system than a Linux desktop. 04:16:43 <elliott> By a very long way. 04:16:59 <zzo38> Is it possible to make comma categories in Haskell? 04:17:20 <elliott> http://hackage.haskell.org/packages/archive/data-category/0.4.1/doc/html/src/Data-Category-Comma.html 04:17:34 <elliott> Is what I found by googling 04:17:39 <elliott> http://hackage.haskell.org/packages/archive/data-category/0.4.1/doc/html/Data-Category-Comma.html 04:22:36 <Sgeo|web> The perfect distinction: 04:22:50 <Sgeo|web> Programming is any activity which a consensus of #esoteric agrees is programming. 04:23:21 <pikhq_> Sgeo|web: Vejn. 04:23:37 <Sgeo|web> ?? 04:23:52 -!- arryl has joined. 04:25:04 <elliott> Sgeo|web: Like we ever get consensus. 04:25:20 <elliott> Well, I don't think anyone disagrees that @ is the best. If anyone thinks it isn't, they should be banned. 04:25:27 <elliott> Oh, wait, hi arryl, you look new, do you agree that @ is the best. 04:25:28 <elliott> `? welcome 04:25:30 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 04:25:59 * Sgeo|web just wants to know what "vejn" means 04:25:59 -!- arryl has quit (Client Quit). 04:26:10 <Sgeo|web> Hey, I can 04:26:16 <elliott> rip arylryl 04:26:19 <Sgeo|web> I can't even yell at elliott for scaring away the newcomer 04:26:30 <elliott> I just do that with welcoming now 04:31:02 <derrik> derrik: okay, thanks for being yourself there for a while.. the way i see it: we have been through two "cases" set forth by you.. the first was hypothetical and the next moment hypothetical was not good enough for you.. the second case was by the end of which you developed characteristics to distinguish user and programmer, which was exactly my point to prove.. then you tried to bring forth... 04:31:06 <derrik> ...a third case and drop your characteristics.. well, my effort to help you is good enough for one day.. i am a professional teacher by the way, and my the way i speak is consciously chosen to accommodate a self-admitted thick adult like you.. well, good enough for a day 04:32:05 <elliott> You're talking to yourself. 04:32:25 <derrik> elliott: yes, we did :) 04:32:33 -!- derrik has left ("left"). 04:32:36 <elliott> I'm sorry to hear that you're a professional teacher; but at least kids must be used to that these days. 04:32:39 <elliott> Oh, good, he left. 04:32:45 <monqy> i'm glad too is this bad 04:32:59 <elliott> No I think he was pretty objectively a negative contribution to this place. 04:33:01 <monqy> and sorry for the kids too 04:33:09 <elliott> Maybe even Sgeo|web will agree, wait no he wants everyone in here. 04:34:34 <Sgeo|web> I kind of tuned him out when he started making non-constructive arguments 04:34:43 <Sgeo|web> I think I turned blind to the whole insult thing 04:34:56 -!- zzo38 has left. 04:35:18 <elliott> He just called me thick, but I was frankly looking for any excuse to change the tedious loop at that point. 04:35:25 <elliott> Did he ever make any constructive arguments? 04:37:14 <Sgeo|web> I.. don't think so. I tend to notice non-constructive arguments more than constructive ones. I hate non-constructive arguments, especially when I thought I previously agreed with their stance. 04:37:40 <Sgeo|web> Yeah yeah, call me out for being side-minded. I am human 04:37:50 <elliott> He's piped up a couple of times before, so I didn't really expect anything better. 04:38:11 <elliott> That was mostly an exercise in how ridiculously better one side of an argument can be. :p 04:45:15 <hagb4rd> ye teacher seems really to be the alternative solution if you failed completely..poor kids ack 04:45:40 <hagb4rd> supervisor! 04:47:14 <elliott> At least most of the conversations in here are productive :) 04:47:22 <elliott> Distinguishing conversations from flamewars :P 04:49:01 <Sgeo|web> elliott: if I added "ajkhdgoiyegro87ty68w374tvb583w74ytw78534tnh86,7w3s4ty5a789w2 tv587634t5vw78qa34t b5iwvakztJHGRy4 to7853qtb4678wbtgva4iuyt58y37a4bgt578q9a" to the submitted password and compared that sha1 to the stored sha1, would that be decent salting? 04:49:26 <Sgeo|web> Although I guess someone could generate a rainbow table for that particular salt 04:49:46 <Sgeo|web> But at least no pre-existing rainbow tables should be sufficient 04:50:09 <Sgeo|web> Although I don't think rainbow tables would be much use cracking one password? Would brute-force be better? 04:50:52 <pikhq_> You'd probably do better to actually create and store a random salt for each password. 04:51:11 <Sgeo|web> But there's only one password and it's hardcoded.. 04:51:30 <pikhq_> The eff? 04:51:41 <pikhq_> But, yes, that would be decent salting. 04:51:52 <elliott> Sgeo|web: Don't add keyboard randomness. 04:51:54 <Sgeo|web> It's just a simple lab project, to get us to learn how to do forms 04:51:55 <elliott> That's a terrible source of randomness. 04:52:17 <Sgeo|web> elliott: o.O. Are there any actual examples or demonstrations of that being used? 04:52:22 <Sgeo|web> Although that is a good point 04:52:31 <elliott> Sgeo|web: Keyboard randomness is literally one of the worst sources of entropy, it's almost completely predictable. 04:52:32 <elliott> $ cat /dev/urandom | tr -cd a-zA-Z0-9 | head -c 99 04:52:32 <elliott> sCu0Z5H0UZwCEd7vagVU0DIdeZwoJXx7J8TLRdBOw5V9QjwomcGTETtt5TE0kBz6uGMcGl62UcqxtYgbmuzjjSiiamE0eOZQ9ta 04:52:38 <elliott> Use that. Except... run it yourself :P 04:52:46 <elliott> And use a nice power of two, not 99 X-D 04:52:52 <elliott> But yes, it would be fine for a single password. 04:53:01 <Sgeo|web> Why a nice power of 2 for a salt? 04:53:02 <elliott> Creating a rainbow table for one hash would basically defeat the point. 04:53:09 <elliott> Since the point is that you'd have one salt per password. 04:53:10 <pikhq_> Sgeo|web: Powers of 2 are nice. 04:53:14 <elliott> Sgeo|web: Because powers of two should always be used. 04:53:23 <elliott> I suggest 96 in this case, though it's excessive. 04:53:33 <Sgeo|web> 96 is a power of 2 now? 04:53:36 <elliott> Point. 04:53:42 <elliott> You should really use bcrypt or scrypt rather than plain SHA for passwording, anyway. 04:53:45 <elliott> But in PHP... yeaaah. 04:54:16 <Sgeo|web> I don't know if the professor even mentioned md5 to the class, but certainly was surprised by my use of sha1 04:54:26 <elliott> In a good way? 04:54:40 <elliott> Anyway, it's not really all that massively better. 04:54:44 <Sgeo|web> Oh 04:54:46 <elliott> You should definitely use at least bcrypt. 04:54:47 <monqy> store every password plaintext always: the sgeos school way 04:54:52 <elliott> (It used to be much better.) 04:54:58 <elliott> (But now it's only a few orders of magnitude better :P) 04:55:01 <Sgeo|web> Used to be? 04:55:05 <Sgeo|web> Oh, sha1, not bcrypt 04:55:07 <elliott> Right. 04:55:09 <elliott> There's a nice http://www.mindrot.org/projects/py-bcrypt/ which makes bcrypt easy. 04:55:17 <elliott> scrypt is The Hot New Thing though. 04:55:27 <elliott> "We estimate that on modern (2009) hardware, if 5 seconds are spent computing a derived key, the cost of a hardware brute-force attack against scrypt is roughly 4000 times greater than the cost of a similar attack against bcrypt (to find the same password), and 20000 times greater than a similar attack against PBKDF2." 04:56:40 -!- zzo38 has joined. 05:05:45 -!- GreaseMonkey has joined. 05:05:46 -!- GreaseMonkey has quit (Changing host). 05:05:46 -!- GreaseMonkey has joined. 05:09:04 <zzo38> Let's make side-bet of the D&D game that I am in. 05:10:39 <zzo38> shachaf: But what I have, it has three constructors; Unit, Barrier, and Fail (although you can omit Fail if you want to). 05:12:16 <zzo38> shachaf: It seem to me does satisfy. The one I am less sure, which is the one I ask, and why I ask (although I think is correct), is: Barrier a c >>= f = Barrier a $ c >=> f; 05:13:20 <zzo38> Yes; I just ask to make sure, in case I made a mistake. 05:14:04 -!- zzo38 has left. 05:14:44 <elliott> ... 05:27:09 -!- zzo38 has joined. 05:27:20 <zzo38> Let's made side-bet of Dungeons&Dragons game. 05:28:17 <elliott> ok 05:30:21 <quintopia> i wonder why the author of geom is so unsure as to whether it can be used to compute nonconstructible numbers. the only ways of generating new points appear to be compass and straightedge methods 05:32:32 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de). 05:36:12 <Patashu> Is geom turing complete? It -should- be 05:36:42 -!- hagb4rd has joined. 05:38:20 <zzo38> Bet in difference of XP after next session of D&D game. To bet on the one after next worth more points, and one after that even more. etc. Same thing with other bets on different thing, such as money, equipment, location, death.... 05:38:48 <Patashu> you're betting on what the players will do and what the DM will give in his scenario? 05:38:57 <Patashu> if the DM is aware of the bets, he can easily make them suceed/fail 05:39:29 <zzo38> These bets must be made on side, the DM is not aware of them, and the bets do not affect the game at all. In addition, they are not made by the players or DM. 05:40:04 <zzo38> (Of course the players and DM can bet too; and you can tell the DM if you want to; neither of these will help as far as I know.) 05:40:21 <monqy> quintopia: perhaps he hasn't thought that far, or realized that, or realized its applicability there 05:40:36 <Patashu> but it's pretty much psychological, since it's up to the DM completely how the game proceeds 05:40:39 <Patashu> unless he's a rules lawyer 05:40:40 <zzo38> The game is complicated; it is difficult to tell what happen next. 05:41:15 <zzo38> The DM isn't rules lawyer in fact he isn't even very good with the rules. He ask me question about rules. But he is still good at DM stuff otherwise. 05:41:32 <Patashu> SO it'd be like making side bets on the outcome of a book almost 05:41:38 <Patashu> (I wonder if anyone's ever done that, hehe) 05:41:49 <zzo38> Of course some things has to do with randomness, some don't, but it is hard to tell everything a lot!! 05:42:09 <zzo38> Has anyone bet on outcome of a book? I suppose is similar, since the recording file is a book, too. 05:42:29 <quintopia> patashu: if geom is turing-complete, it should be possible to write a program to compute the cube root of two, right? 05:42:50 <Patashu> you can copmute the cube root of two to arbitrary digits 05:42:52 <Patashu> just not exactly 05:42:59 <Patashu> right? 05:43:06 <quintopia> maybe 05:43:15 <elliott> righ 05:43:16 <elliott> t 05:43:26 <elliott> and it can be arbitrarily encoded 05:43:36 <Patashu> it'd be funny if you start straightedging and compassing the number 3 then 3.1 then 3.14 then suddenly the hand of god crumples up your paper. 'YOU CAN'T CONSTRUCT PI, THOSE ARE THE RULES, I KNOW WHAT YOU'RE UP TO' 05:43:47 <elliott> lol 05:43:58 <Patashu> I don't think that's what pi being unconstructable means anyway :D 05:44:01 <quintopia> he does that when i try to divide by zero >.> 05:44:09 <zzo38> Things are not close to what the DM expects. Not close to what the players or the DM expects! Everything goes different. 05:44:48 <Patashu> is there a 3D version of straightedge and compass? 05:45:21 <quintopia> you can use regular ones in 3 space 05:45:49 <quintopia> and you get 3 dimensional points whose components are constructible numbers in the traditional sense 05:46:03 <zzo38> What other bets can you think of for D&D game? 05:46:13 <Patashu> How much mountain dew they drink 05:46:52 <quintopia> patashu: do you know how to find a sequence of constructible numbers arbitrarily close to cube root of 2 (using geometric techniques)? 05:46:56 <zzo38> No, stuff directly with the game. And none of us drink or eat anything during the game; that would mess up the books. 05:47:41 <quintopia> number of attacks, number of attacks blocked 05:47:43 <Patashu> hmm, that's a good question 05:47:57 <zzo38> Of course one bet is experience levels, but that seem a bit easier, at least in the games I play since it is more predictable about average XP totals and that stuff. 05:48:17 <zzo38> quintopia: Yes, that is one thing. Of course the answer can be zero, but it can also go very high. 05:49:03 <Patashu> surely it must be possible to get arbitrarily close by constructing rational numbers and cutting between them, but I don't know the process 05:49:30 <zzo38> You can read the recording at first if it help; and then, the bet is worth more, by the more number of sessions after the current one that has been played, that you are betting on. 05:51:20 <zzo38> There may be many things that are specific to the campaign, game, and session, being played. 05:52:19 <zzo38> (I am one of the players, but I don't care what bets you make. I am reasonably sure the DM doesn't care either. But I am interested in these bets, even if they are not revealed until after the session is played.) 05:59:31 <zzo38> Some things I can think of based on the current game/session: * Number of form changes. * Number of ambushes. * CR of brains consumed (if you wish simpler, partition it at <9 and >=9). * Number of lost caravans. * Number of military spies. * Whether or not the next town will have a library. * Whether or not my spellbook will ever be retrieved. 06:02:03 <zzo38> More general things: * Next experience level. * Number of uses of spells. * In-game time in one session. * Money gained/lost. * Spells cast by NPCs. * XP totals. * Number of critical hits. 06:05:49 <zzo38> * Number of deliberate misses. * Languages used in-game. * Anti-magic fields. * Prices of objects in-game. 06:06:25 <zzo38> Anything else? 06:06:55 <Patashu> real time spent in combat? 06:07:29 <zzo38> OK, but I wanted only things that would be recorded. 06:07:48 <Patashu> all this stuff is recorded? 06:07:50 <Patashu> by who? 06:07:57 <zzo38> Number of hits and blocks is OK, though. 06:08:17 <zzo38> Patashu: I record it. I use TeX to record this stuff, using a macro file I wrote for this purpose. 06:08:23 <zzo38> Do you want to see it? 06:08:32 <Patashu> No, that's ok 06:08:45 <Patashu> So it has to be something you record already, or anything theoretically recordable is okay? 06:08:50 <Patashu> And objective 06:09:21 <zzo38> Anything that would be recorded (even if it hasn't been yet) and objective. 06:09:50 <zzo38> That is, in-game events, including XP totals and character sheets, and session headings. 06:10:04 <Patashu> Number of 1s rolls 06:10:06 <Patashu> *rolled 06:11:11 <zzo38> I don't record that but it does count. If it was kept track of, I would tell you if your bet succeeded or failed. But it belongs anyways, even though it is unlikely to be recorded (probably because I forget) 06:11:42 <Patashu> CR of brains consumed? Is this something that occurs often in your sessions? 06:12:16 <zzo38> I cannot answer that question unless you read the recordings. Same with all the other things I listed under "Some things I can think of based on the current game/session". 06:12:44 <zzo38> (If you want the reason for the partitioning, that is a separate thing.) 06:13:40 <zzo38> Note things change; some of the things I listed are relevant to the current context; some are more long-term. 06:18:19 <zzo38> I will explain the reason for the partitioning right now since that is simple. It has to do with prestige classes. 06:18:38 <zzo38> But for "More general things", another idea is: * Number of times each kind of dice rolled. 06:19:18 <zzo38> * Number of PC deaths. * Number of NPC deaths. * Number of resurrections. 06:21:56 <zzo38> (Possibly separate them into *Number of PC resurrections * Number of NPC resurrections.) 06:23:20 <zzo38> Have you ever invent any card games? 06:25:05 <Patashu> I invented a card game when I was like 10 06:25:08 <Patashu> But it was trivial 06:25:10 <zzo38> O, if you make any of these side-bets of D&D game, I would like to know. No actual payment (at least, not to/from me), but I would like to know the general things you bet on, don't bother to tell me specifically until after the session is played. But write it down. 06:25:53 <zzo38> Patashu: Can you describe it? I have invented various card-game, solitaire and not, for various number of players, and for various kind of decks of cards (some for standard deck, some are for tarot cards) 06:26:42 <Patashu> You had cards numbered 1 through 9. A round consisted of presenting then discarding a card. If your card was higher you got a point. 06:26:45 <Patashu> It was something really simple like that 06:28:46 <zzo38> How many cards of each rank? 06:29:03 <Patashu> Each player had their own hand 06:29:08 <Patashu> So one/player 06:31:19 <quintopia> i once made a card game. it was like 100 cards or something, each with a picture and a name. a third were attack, a third were defense, and a third were neutral. i forget the rules, but it was probably rock-paper-scissorsish 06:31:39 <Patashu> you forget the rules completely? 06:32:51 <quintopia> yes 06:33:08 <quintopia> never wrote em down i think 06:33:19 <quintopia> this was like 15 years ago 06:33:36 <quintopia> i only remembered i did it because i found the cards in an old box cleaning up 06:33:54 <zzo38> I would like to have a Latin-suited tarot deck so that I can try to play some games I invented with it; I think I found somewhere, a deck designed to be working good for both game and for divination. 06:34:29 <zzo38> I notice the number of cards is divisible by 3, but not by 4. This is contrary to ordinary playing cards. 06:36:58 <zzo38> One game I invented for tarot cards is called Matadore. It is played by three players. You deal some cards at first, after all those are exhausted you deal the rest of the cards and continue. Your score is multiplied by the number of matadores. The excuse can be played at any time even if you have the suit led, but never wins a trick. 06:37:38 <zzo38> You cannot lead the excuse unless it is your only card, in which case you earn 1 point immediately and it automatically wins the trick. For the purpose of counting matadores, the excuse card counts as the zero of trumps. 06:38:09 <zzo38> At the game you can make bids and doubles, and then you must pass cards to the next player before playing the tricks. 06:38:30 <zzo38> Some cards are positive points and some negative, but mostly you try to win tricks, especially the final trick. 06:42:44 <zzo38> I have also invented a game using standard playing cards, using only the 1 to 7 of each suit, called Chinese Euchre, even though it is neither Chinese nor Euchre. Even though 1 is low and clubs is low, a 1 still beats a 7 and a club still beats a spade. Aces are worth 1 point each, it is 2 points if opponent is unable to play a proper card to follow your lead, and 4 points for the final trick. 06:47:15 <zzo38> Do you know how to play the card game Napoleon? It has a few unusual rules. One is that partners are not necessarily known by all players at the beginning of the game. Scoring cards are the TJQKA of each suit, worth 1 point each. If you win all 20 points without bidding 20, you lose (this is called the Siberian Rule). If all players follow suit, a 2 beats an ace, otherwise ace is high. 06:49:15 <zzo38> The method of deciding partners is as follows: The declarer names any card (whether he holds it or not). The player who holds that card is the declarer's partner, and the other three players go against him. (If the declarer names a card he holds in his own hand, he plays alone against four opponents.) Other players do not know who the partner is until the named card is played. 06:51:05 <zzo38> Except on the first trick, the ace of spades beats everything (regardless of trump suit). The second highest card is the jack of trumps and the third highest is the jack of the other suit of same color of trumps; both of these rules don't work on the first trick. 07:05:54 -!- azaq23 has joined. 07:06:07 -!- azaq23 has quit (Max SendQ exceeded). 07:07:04 -!- azaq23 has joined. 07:07:45 <elliott> :t showString 07:07:46 <lambdabot> String -> String -> String 07:12:15 <zzo38> What is your opinion about counting honors in Whist? My opinion is that honors should not be counted in Whist, although honours should still be counted in Bridge. 07:12:36 <elliott> > lines "a\n" 07:12:37 <lambdabot> ["a"] 07:12:40 <elliott> > unlines (lines "a\n") 07:12:40 <lambdabot> "a\n" 07:13:59 <zzo38> If you are playing Bridge, and you receive all thirteen cards of one suit, and you are first to bid, what should you do? 07:14:31 <zzo38> Note that a NT bid will beat you and in that case, unless you go first, you lose. 07:14:49 <cheater> probably think of doing something else because bridge is boring 07:20:30 -!- GreaseMonkey has quit (Quit: The Other Game). 07:20:35 <zzo38> But you win if you can trick the player to the right to bid 7NT and then you double. That way you win since you play first. 07:21:53 <zzo38> In the game of Hearts, any player with all the clubs achieves control and wins. 07:26:00 -!- Jafet has joined. 07:26:19 -!- myndzi has quit (Ping timeout: 252 seconds). 07:28:28 <elliott> :t showSpace 07:28:29 <lambdabot> Not in scope: `showSpace' 07:29:49 -!- myndzi has joined. 07:37:20 -!- myndzi has quit (Read error: Connection reset by peer). 07:39:24 <zzo38> How do I make a Haskell program so that it can be loaded by other Haskell program even in different directories and other computers? Do I need to do some command of cabal? 07:39:44 <elliott> you want to write a cabal file 07:39:57 <elliott> try "cabal init --no-comments" in a project root directory 07:40:07 <elliott> it will ask a few questions and generate a skeleton cabal file for your library or program 07:40:20 <elliott> http://www.haskell.org/cabal/users-guide/ has full documentation of the format after that 07:42:51 <zzo38> OK, I filled in the questions. It tells me it is unknown license type, and that I forgot to fill in the synopsis. 07:43:02 <elliott> PublicDomain is one of the license types, I think 07:43:15 <elliott> But you should really fill in the synopsis, it's just a one-line description of the package. 07:43:34 <zzo38> That is what I did, I pushed 9 and the file does say PublicDomain but it still told me it is unknown license type 07:43:40 <elliott> Huh. 07:43:45 <elliott> Just put PublicDomain in the license field in the cabal file, then. 07:43:59 <zzo38> OK. I will fill the synopsis, so I just uncomment "Synopsis:" and fill in some text? 07:44:18 <elliott> Yep, just a one-sentence summary of the package 07:44:20 <zzo38> elliott: The license field in the cabal file already says PublicDomain, I checked. 07:44:23 <elliott> Ah, okay then 07:44:25 <elliott> That's fine then 07:45:45 <zzo38> "Generating LICENSE... Warning: unknown license type, you must put a copy in LICENSE yourself." 07:46:15 <zzo38> It also says to add the "Description" field too. 07:46:45 <elliott> The description field is nice but not vital. 07:46:53 <elliott> (It's just a multiple-paragraph description of your package and its use.) 07:46:59 <elliott> You can just ignore that LICENSE warning. 07:47:10 <elliott> Though you could put a public domain dedication in LICENSE. 07:48:01 <Sgeo|web> Is Sinatra decent? 07:48:04 <Sgeo|web> >.> 07:49:05 <zzo38> I tried to make the package for BarrierMonad. (I might do others too, later.) Where it says Category, is Control the correct choice? I am unsure how the category does. 07:49:47 <zzo38> And what do I do for the example.lhs file? It is not needed to use the module, it only contains examples, and is needed if you want to print out the BarrierMonad.lhs file since it has \input that file 07:51:38 <elliott> Control sounds the right choice to me. 07:51:43 <elliott> And is it an executable program? 07:52:04 <zzo38> No it is library, and I selected that one. 07:52:09 <elliott> I mean, example.lhs. 07:52:16 <elliott> If so, you could add it as an executable in a separate section, called "barriermonad-example" or something (it will be installed into the user's PATH most likely, so you should pick a unique name; you don't have to rename the .lhs). 07:52:28 <elliott> Or you could just leave it out and have the user compile it themselves if they want to; that's fine too. 07:52:36 <elliott> It probably doesn't need to be installed into the user's PATH, after all. 07:52:41 <zzo38> The file example.lhs is neither executable nor library; it is meant only for use in GHCi. 07:52:47 <zzo38> And for reading. 07:52:56 <elliott> OK, just leave it out then. 07:54:46 <zzo38> That is, if you load BarrierMonad.lhs into TeX, it will expect to read example.lhs too; and you might also want to load example.lhs into GHCi; but it is otherwise of no use and is not needed to use the BarrierMonad library. 07:55:59 <zzo38> How does cabal supposed to deal with these kind of thing? 07:56:32 <elliott> It isn't. 07:56:34 <elliott> Why would it? 07:56:41 <elliott> That works fine as simply a file in the source tarball. 07:56:50 <elliott> cabal is about Haskell package management. 07:57:34 <zzo38> Is it enough that the filename is not capitalized? Will that make it work properly? The other filename is capitalized because it is a library module expected loaded from other programs too, but the one not capitalized is only for itself and unneeded file. 07:58:35 <elliott> The name is irrelevant. 07:58:41 <elliott> cabal won't even know it exists. 08:00:58 <zzo38> But I want to include the file but is only for example. Is there the way of specifying that? 08:01:07 <elliott> Just include it in your tarball. 08:01:08 -!- myndzi has joined. 08:01:16 <elliott> cabal /only/ cares about executables or what you register with the GHC package system. 08:01:22 <elliott> cabal doesn't need to care about your examples. 08:01:25 <zzo38> OK. 08:01:27 -!- myndzi has quit (Client Quit). 08:01:35 -!- myndzi has joined. 08:02:17 -!- BeholdMyGlory has joined. 08:02:24 <zzo38> If you want a printout, the example file is required, and so is the birdstyle.tex file even though neither is needed for using the module in other Haskell program. 08:04:16 <zzo38> What do I do about that? Do I just add a README file? 08:05:28 <zzo38> The .cabal file mentions "License-file: LICENSE" but there is not such file. Is that OK? If not, is it OK to comment out that line? 08:05:36 <elliott> Just remove that line. 08:07:12 <zzo38> OK 08:09:43 -!- monqy has quit (Quit: hello). 08:10:37 <zzo38> The definition "yield = flip Barrier Unit;" is named as such due to similarity of the yield command in JavaScript. I did not realize it at first and it was named something else, but very soon after that, I renamed it because I didn't like the old name very much. 08:11:03 <zzo38> (Also because at first, before I renamed it, I didn't notice that similarity. And then I did notice.) 08:12:22 <zzo38> Do you think the type of "continue" is more useful as it is or with the arguments flipped? 08:13:41 <zzo38> (The way it currently is, is probably a simpler definition, and maybe it runs more efficiently too) 08:16:28 <zzo38> Now I made up barrier monad file, is there some kind of way that can have cobarrier comonads as well? 08:18:50 <elliott> you'd have to ask copumpkin 08:22:54 <zzo38> Would you ever use join with barrier monads? This is an example of what it does: 08:23:17 <zzo38> collect . convert (+ 1) id . join $ do { yield 7; yield 100; return $ do { yield 99; yield 111; }; } = [8,101,100,112] 08:23:33 <zzo38> collect . join . convert (+ 1) id $ do { yield 7; yield 100; return $ do { yield 99; yield 111; }; } = [8,101,99,111] 08:24:42 <zzo38> collect . convert (+ 1) id $ do { yield 7; yield 100; return $ do { yield 99; yield 111; }; } = [8,101] 08:26:30 <elliott> o 08:30:23 <zzo38> (It is what I expected it to do; but I have not thought of how join would be used in barrier monads in proper programs.) 08:39:45 -!- zzo38 has quit (Remote host closed the connection). 09:00:11 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 09:04:57 -!- myndzi has quit (Read error: Connection reset by peer). 09:09:57 -!- myndzi has joined. 09:25:07 -!- DHeadshot has quit (Read error: Connection reset by peer). 09:25:10 -!- DH____ has joined. 09:39:44 -!- DH____ has quit (Read error: Connection reset by peer). 09:53:53 -!- BeholdMyGlory has quit (Remote host closed the connection). 10:06:38 -!- Vorpal has joined. 10:36:37 <elliott> Oh neat, the Kindle three uses a webkit browser 10:40:32 -!- Nisstyre has quit (Ping timeout: 248 seconds). 10:41:06 -!- derdon has joined. 10:44:48 -!- sebbu has quit (Ping timeout: 248 seconds). 10:58:57 -!- sebbu has joined. 10:58:57 -!- sebbu has quit (Changing host). 10:58:57 -!- sebbu has joined. 11:38:58 -!- brisingr has joined. 11:41:12 <elliott> hi brisingr 11:57:45 <brisingr> hi 11:58:04 <brisingr> sorry, was forcefully made to eat 11:59:08 <brisingr> s/forcefully made/unsafeCoerced/ 12:29:02 -!- derrik has joined. 12:29:12 -!- brisingr has left. 12:29:30 -!- derrik has quit (Client Quit). 12:30:17 -!- derrik has joined. 12:30:59 -!- derrik has quit (Client Quit). 12:32:01 -!- derrik has joined. 12:32:29 -!- derrik has quit (Client Quit). 12:33:25 -!- derrik has joined. 12:36:30 -!- derdon has quit (Remote host closed the connection). 12:37:41 -!- Zuu has quit (Ping timeout: 244 seconds). 12:56:19 -!- Zuu has joined. 13:16:36 <CakeProphet> anyone awake and also knowledgable for C++? 13:18:14 <elliott> no 13:18:17 <elliott> im kind of 13:18:18 <elliott> go on 13:19:52 <elliott> CakeProphet: 13:20:05 <CakeProphet> I was wondering if a variable declaration can construct an object multiple times within a function body. For example, when the declaration is within a loop; 13:20:24 <CakeProphet> or if I must use dynamic allocation at that point. 13:20:39 <elliott> like you mean call the constructor with the same storage? 13:21:20 <CakeProphet> like place a stack variable declaration inside the body of a loop. what happens? is the variable constructed once at the start of the function, or each time the declaration is encountered in the loop? 13:21:28 <elliott> tias 13:21:41 <CakeProphet> what does that mean. 13:21:43 <elliott> class foo { public: foo(){puts("lol");}}; 13:21:59 <elliott> int main(){for(int i=0;i<99;i++){foo x; (void)x;}} 13:22:04 <elliott> tias=try it and see 13:22:08 <CakeProphet> oh... 13:22:15 <CakeProphet> well, yes that's what I was trying to avoid but okay. 13:24:16 <CakeProphet> elliott: I got 99 lols 13:24:17 <CakeProphet> so good 13:24:22 <elliott> there you go then 13:24:32 <CakeProphet> and I assuming that's all auto memory that will be deleted at the end of the function 13:24:38 <CakeProphet> since 13:24:40 <CakeProphet> that would make sense 13:24:43 <CakeProphet> given C++'s semantics. 13:27:33 <CakeProphet> elliott: what do you think computer science is? some kind of science? 13:27:39 <CakeProphet> NO EXPERIMENTATION. 13:27:40 <elliott> Mathematics, actually 13:27:47 <elliott> But C++ violates that. 13:27:58 <CakeProphet> well applied computer science has some principles of science I guess 13:28:03 <CakeProphet> but yes computer science is mathematics. 13:35:09 <lifthrasiir> elliott: is your keyboard finally fixed? 13:35:19 <elliott> m...maybe... 13:50:51 <CakeProphet> ...I have no idea how to do this. 13:50:58 <CakeProphet> without constructing an expression tree. 13:51:07 * CakeProphet has to convert an infix expression to prefix 13:51:12 <CakeProphet> I can do postfix... but not prefix. 13:51:24 <CakeProphet> and it has to use a stack, so I can't use expression trees. 13:51:50 -!- augur has quit (Remote host closed the connection). 13:52:36 <elliott> CakeProphet: itt: shunting yard 13:53:58 <elliott> oh has to use a stack 13:53:59 <elliott> lol 13:54:01 <CakeProphet> yeah 13:54:01 <CakeProphet> see 13:54:07 <CakeProphet> that's for postfix 13:54:19 <elliott> it can just as easily produce an ast. 13:54:24 <CakeProphet> I'm thinking I'll need a stack for both operands and operators... 13:54:29 <CakeProphet> elliott: don't think I can use that. 13:57:08 <CakeProphet> I probably should've gone to class the day it was explained. :P 13:59:29 <elliott> well shunting yard does use a stack 14:00:55 <CakeProphet> but does not convert to prefix directly. 14:01:28 <CakeProphet> I have this strange feeling that I'm talking in circles. 14:01:37 <CakeProphet> or maybe figure 8 14:01:39 <CakeProphet> 's 14:05:01 <CakeProphet> I think I can do it with two stacks. 14:18:54 -!- derrik_ has joined. 14:19:13 -!- derrik_ has quit (Client Quit). 14:19:30 -!- derrik_ has joined. 14:19:44 -!- derrik_ has left. 14:20:13 -!- derrik has quit (Ping timeout: 252 seconds). 14:20:53 -!- derrik has joined. 14:23:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:35:55 -!- augur has joined. 14:41:14 <CakeProphet> can parentheses be considered to have a precedence? 14:41:43 <CakeProphet> specifically the lowest. 14:42:28 -!- Phantom_Hoover has joined. 14:42:31 <CakeProphet> well I don't think it makes sense for circumfix operators to have precedence as they're explicit about it. 14:43:36 <elliott> Phantom_Hoover: phwpqhowqiowh 14:43:54 <Phantom_Hoover> Astute as ever. 14:43:55 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them. 14:44:35 <CakeProphet> time to WORK THINGS OUT WITH PEN AND PAPER 14:45:57 <CakeProphet> ugh this is so bad. 14:45:57 -!- copumpkin has joined. 14:46:04 <CakeProphet> I want trees... 14:47:32 <CakeProphet> fuck it I'm using trees. 14:47:43 <CakeProphet> MY TEACHER WILL GET OVER IT. 14:48:03 <CakeProphet> wat STL has no tree.... 14:48:14 <Phantom_Hoover> I thought you were talking about Minecraft and then drugs before I realised. 14:48:52 <CakeProphet> .. 14:49:09 <CakeProphet> yes I could not actually be talking about programming 14:49:15 <CakeProphet> on a channel about programming languages. 14:50:33 <CakeProphet> elliott: okay so how does the shunting ard algorithm work with an AST. 14:50:41 <CakeProphet> obviously you don't just output to a stream/queue/string/whatever 14:50:45 <elliott> Wikipedia :P 14:50:55 <CakeProphet> I'm looking at it right now but I'm not seeing an explanation. 14:50:59 <CakeProphet> just the algorithm itself 14:51:11 <CakeProphet> which I'm already familiar with. 14:51:56 <Phantom_Hoover> <CakeProphet> yes I could not actually be talking about programming 14:51:56 <CakeProphet> hmmm 14:51:56 <Phantom_Hoover> <CakeProphet> on a channel about programming languages. 14:52:03 <Phantom_Hoover> How long have you been here again? 14:52:27 <CakeProphet> well we don't stray horridly off topic most of the time 14:52:32 <CakeProphet> most of the time we are talking about programming somehow. 14:53:05 <CakeProphet> hmmmmm 14:53:52 <elliott> CakeProphet: You clearly missed the about three months when the channel was literally just Minecraft talk. 14:53:53 <Vorpal> <CakeProphet> can parentheses be considered to have a precedence? <-- if doing a bison/yacc grammar I would probably not handle parens as an operator with a defined associative and precedence... 14:54:00 <Vorpal> if that is what you meant 14:54:09 <CakeProphet> I guess. 14:54:22 <CakeProphet> elliott: how does the tree construction work with shunting yard help 14:54:31 <elliott> Your MOM shunts a yard. 14:54:33 <Vorpal> <CakeProphet> elliott: okay so how does the shunting ard algorithm work with an AST. <-- uh, the shunting yard algorithm does not use an AST 14:54:45 <elliott> Vorpal: No, but there's no reason you have to produce a literal postfix string. 14:54:45 <Vorpal> it uses two stacks or some such iirc 14:54:50 <elliott> It's about output. 14:54:56 <Phantom_Hoover> elliott, when did we export it all into -minecraft? 14:54:58 <elliott> You can easily make it output a syntax tree, even if it's just by going through the result backwards. 14:55:11 <CakeProphet> oh... 14:55:20 <elliott> Phantom_Hoover: When I wrote Herobrine. So late two thousand and ten or so? 14:55:21 <Vorpal> elliott: what use is the shunting yard algorithm if you have an AST anyway? You can just do a post-order tree traversal 14:55:22 <CakeProphet> that's kind of gross, but okay. 14:55:29 <elliott> Vorpal: I mean, input string → output AST 14:55:31 <CakeProphet> Vorpal is missing the point. 14:55:33 <Phantom_Hoover> elliott, so two months at most? 14:55:44 <elliott> Phantom_Hoover: Weeell, I'm not sure on the exact dates. 14:55:46 <Vorpal> elliott: oh you want to use the shunting yard algorithm to generate an AST? Hm okay 14:55:47 <elliott> But it was a LOT of Minecraft talk. 14:55:52 <elliott> Vorpal: Well, CakeProphet does. 14:55:52 <Phantom_Hoover> ("TWO MONTHS YOU TWAT!") 14:55:52 <elliott> Might. 14:55:57 <CakeProphet> if by you you mean CakeProphet 14:55:57 <Vorpal> elliott: right 14:56:07 <Vorpal> elliott: not sure how sensible that is. But sure, go on 14:56:09 <CakeProphet> elliott: yes because I can find no other sane method to convert infix to prefix. 14:56:23 <elliott> Seems the easiest way. 14:56:32 <elliott> I mean, you could just shunting-yard then reverse :-D 14:56:35 <elliott> Except without reversing the operands :P 14:57:11 <CakeProphet> ...how does that work. 14:57:15 <Vorpal> CakeProphet: build an AST the normal way from your grammar, then do a pre-order tree walk? That would take you to prefix form I think. It is so much easier to do this sort of stuff when you already have an AST... 14:57:26 <CakeProphet> Vorpal: I am not writing this code for myself 14:57:31 <CakeProphet> it's for a class. I have requirements and stuff. 14:57:43 <Vorpal> CakeProphet: hm. 14:58:57 <Vorpal> how do you evaluate a prefix expression? I mean, for postfix you can use a simple stack machine. Do you push operators for prefix and pop them off when you see operands? 14:59:20 <CakeProphet> I believe so yes. 14:59:21 <Vorpal> Sure you could build an AST for your prefix expression, but then what was the point of it 14:59:27 <CakeProphet> *infix expression 14:59:30 <CakeProphet> I am taking an infix expression 14:59:33 <CakeProphet> and converting it to prefix 14:59:37 <CakeProphet> not evaluating anything. 14:59:53 <Vorpal> CakeProphet: it was a related issue I was thinking about 15:00:03 <CakeProphet> NO SIDE-TRACKING ALLOWED 15:00:17 <CakeProphet> IN MY SHUNTING YARD WE SHUNT IN ONE YARD WITH ONE TRACK. 15:00:30 <CakeProphet> these are the rules. 15:00:57 <Vorpal> anyway you need to evaluate something like + 2 4 into + on the stack, then a special 2+ on the stack, and only then you can actually calculate it 15:01:16 <Vorpal> somehow it feels like prefix is stupid to evaluate with a stack machine to me 15:03:28 <CakeProphet> elliott: I have a feeling I can construct a tree as part of the algorithm... 15:03:38 <CakeProphet> perhaps if I use a queue to collect operands. 15:05:01 <CakeProphet> er no I mean a stack. 15:07:21 <Phantom_Hoover> 03:04:36: <Sgeo|web> What is a professional mathematician 15:07:22 <CakeProphet> hmmm yeah okay I think I know how. 15:07:26 <Phantom_Hoover> One who gets paid you idiot. 15:08:18 <elliott> Phantom_Hoover: Pro definition. 15:08:47 <Phantom_Hoover> One who gets paid *for mathsing*. 15:08:49 <Phantom_Hoover> You idiot. 15:09:42 <CakeProphet> okay so I can maintain a stack of tree nodes I think... 15:13:37 <CakeProphet> wow it sure is a pain in the ass that string literals in C++ are not string objects... 15:14:16 <elliott> std::string(s) 15:14:43 <Phantom_Hoover> 03:16:09: <Madoka-Kaname> derrik, what is a visual programming language? 15:14:54 <elliott> It's #esoteric Jeopardy. 15:15:21 <Phantom_Hoover> This is a question that can only be answered by the most hideous echelons of Microsoft, although I suspect their answer is 'one which we are hyping'. 15:15:39 <elliott> Phantom_Hoover: You realise visual programming languages are actual things. 15:15:55 <CakeProphet> pure-data, reaktor, max/msp 15:15:59 <CakeProphet> Excel maybe. 15:16:02 <Phantom_Hoover> elliott, whaaaaaaaaaaaaaaaaaaaaaaaaaaat 15:16:25 <derrik> hi Phantom_Hoover 15:17:22 <elliott> derrik: Your connection is broken. 15:20:20 <derrik> elliott: if you see this, then maybe not 15:20:34 <elliott> * derrik (~xix@gprs-inet-65-7.elisa.ee) has joined #esoteric 15:20:34 <elliott> * brisingr (~brisingr@79.117.71.197) has left #esoteric 15:20:34 <elliott> * derrik has quit (Client Quit) 15:20:34 <elliott> * derrik (~xix@gprs-inet-65-7.elisa.ee) has joined #esoteric 15:20:34 <elliott> * derrik has quit (Client Quit) 15:20:34 <elliott> * derrik (~xix@gprs-inet-65-7.elisa.ee) has joined #esoteric 15:20:36 <elliott> * derrik has quit (Client Quit) 15:20:38 <elliott> * derrik (~xix@gprs-inet-65-7.elisa.ee) has joined #esoteric 15:20:41 <elliott> [...] 15:20:42 <elliott> * derrik_ (~xix@82.131.89.3.cable.starman.ee) has joined #esoteric 15:20:44 <elliott> * derrik_ has quit (Client Quit) 15:20:46 <elliott> * derrik_ (~xix@82.131.89.3.cable.starman.ee) has joined #esoteric 15:20:48 <elliott> * derrik_ (~xix@82.131.89.3.cable.starman.ee) has left #esoteric 15:20:50 <elliott> * derrik has quit (Ping timeout: 252 seconds) 15:20:52 <elliott> * derrik (~xix@82.131.89.3.cable.starman.ee) has joined #esoteric 15:20:54 <elliott> It is. 15:21:03 <elliott> Please don't make your client flood joins/quits; it clogs up the channel a lot and happens quite often. 15:21:14 <derrik> elliott: unstable, yes.. but not broken at the moment 15:21:23 <elliott> Well, broken in that it is disruptive. 15:21:56 <derrik> sorry for the mess.. i will try cleaner manners 15:22:10 <elliott> Thanks. 15:23:39 <Vorpal> <Phantom_Hoover> 03:16:09: <Madoka-Kaname> derrik, what is a visual programming language? <-- Piet maybe? 15:24:31 <Vorpal> hm guess not 15:25:20 <Vorpal> https://secure.wikimedia.org/wikipedia/en/wiki/File:Pure_Data_with_many_patches_open_%28netpd_project%29.png <-- what a mess 15:25:49 <elliott> Less messy than your typical C project. 15:26:30 <Vorpal> elliott: the mess of windows I meant. With a typical C project I have like one terminal and one tabbed editor open. 15:26:38 <elliott> That's you. 15:26:51 <elliott> Such systems can get worse... http://1.bp.blogspot.com/_gK7ubK8-F84/RiokBgnK_QI/AAAAAAAACjM/6bkc0VDODr4/s320/max2.jpg 15:27:01 <elliott> http://jackaperkins.files.wordpress.com/2011/08/maxpatch.jpg 15:27:04 <Vorpal> what a messy graph 15:27:06 <elliott> Literal spaghetti code. 15:27:12 <Vorpal> yes 15:27:52 <Vorpal> elliott: okay I actually have 5 windows open on my desktop atm: firefox, irc, emacs, xfce-terminal and a PDF. 15:28:04 <Vorpal> (and I'm coding) 15:28:24 <elliott> I have twenty Chrome windows, two Pidgin windows, a terminal, xchat, and emacs. 15:28:43 <Vorpal> unusually I have only 5 tabs in firefox atm. Often I have like 200 15:28:54 <Vorpal> elliott: wait a second, doesn't pidgin do tabs? 15:29:10 <elliott> Vorpal: One is the buddy list. 15:29:15 <Vorpal> oh 15:29:19 <Vorpal> right 15:30:01 <Vorpal> elliott: the only time I tend to have a sprawl of windows open is when using gimp. However I often become annoyed at the sprawl of windows in gimp... 15:36:33 <hagb4rd> yes, this remind me i wanted to write a tool to save winpositions like bookmarks (recover with hotkey..muahrhr) 15:37:07 <hagb4rd> this what the world needs 15:37:29 <CakeProphet> elliott: I was thinking about how you could reverse just the operators in a string to get postfix -> prefix 15:37:32 <CakeProphet> but uh.... how? 15:38:12 <CakeProphet> I guess reflect them around the midpoint?? 15:38:21 <CakeProphet> or something? 15:38:23 <CakeProphet> no. I have no idea. 15:38:27 <elliott> CakeProphet: Start from end; whenever you see an operator, push it to the stack, then recurse times its arity. 15:38:36 <elliott> The final "stack" contains the prefix expression in the wrong order. :p 15:38:39 <elliott> You really want a queue there. 15:38:48 <CakeProphet> ah 15:39:04 <CakeProphet> erm okay but then how do I pop the queue... 15:39:18 <CakeProphet> the opposite right? 15:39:21 <elliott> What. 15:39:44 <CakeProphet> you just told me to push the operators onto a queue in reverse.... and that's it. 15:39:59 -!- derrik has quit (Quit: take carez). 15:40:07 <elliott> Take carez yourself. 15:40:09 <elliott> CakeProphet: No, I didn't. 15:40:24 <CakeProphet> well, that's all I understood from it. 15:41:02 <elliott> Oh wait, infix 15:41:05 <elliott> Oh wait postfix 15:41:08 <CakeProphet> yes 15:41:12 <elliott> Yeah this is easy: 15:41:21 <CakeProphet> I'm using shunting yard to convert to postfix 15:41:30 <CakeProphet> and then I'm going to take thatand convert to prefix. 15:42:00 <CakeProphet> either with trees or with elliott's magic reversing algorithm 15:43:01 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 15:43:01 <elliott> sec 15:43:53 <CakeProphet> I'm thinking it would work siilarly to an algorithm to evaluate the postfix 15:44:34 -!- Vorpal_ has joined. 15:44:55 <elliott> well I have something but it assumes all operators are binary 15:44:56 <elliott> is that ok 15:45:18 <CakeProphet> yep 15:45:18 <CakeProphet> they are. 15:45:31 <elliott> data Tm = Op ... 15:45:31 <elliott> | Lit ... 15:45:32 <elliott> postfixToPrefix :: Seq Tm -> (Seq Tm, Seq Tm) 15:45:32 <elliott> postfixToPrefix s = 15:45:32 <elliott> case viewr s of 15:45:32 <elliott> EmptyR -> (Seq.empty, Seq.empty) 15:45:34 <elliott> s' :> op@Op{} -> 15:45:36 <elliott> let (a,s'') = postfixToPrefix s' 15:45:38 <elliott> (b,s''') = postfixToPrefix s'' 15:45:40 <elliott> in (Seq.singleton op >< a >< b, s''') 15:45:42 <elliott> s' :> lit@Lit{} -> (Seq.singleton lit, s') 15:45:53 <CakeProphet> oh no. 15:46:05 <elliott> postfixToPrefix (Seq.fromList [Lit 99, Lit 999, Op '+']) --> (Seq.fromList [Op '+', Lit 99, Lit 999], Seq.fromList []), I believe 15:46:06 <CakeProphet> I have to convert Haskell to C++ 15:46:10 -!- Vorpal_ has changed nick to Vorpal. 15:46:42 <Vorpal> CakeProphet, you could just do system("ghci ...") 15:47:10 <elliott> CakeProphet: Oops, it is reversed. 15:47:16 <CakeProphet> I'm highly considering constructing an AST from the postfix and then using the nice little show Tree function I already made. 15:47:21 <elliott> import Data.Sequence (Seq, ViewR(..), (><)) 15:47:21 <elliott> import qualified Data.Sequence as Seq 15:47:21 <elliott> data Tm = Op String | Lit Int deriving (Show) 15:47:21 <elliott> postfixToPrefix :: Seq Tm -> (Seq Tm, Seq Tm) 15:47:21 <elliott> postfixToPrefix s = 15:47:23 <elliott> case Seq.viewr s of 15:47:25 <elliott> EmptyR -> (Seq.empty, Seq.empty) 15:47:27 <elliott> s' :> op@Op{} -> 15:47:29 <elliott> let (b,s'') = postfixToPrefix s' 15:47:31 <elliott> (a,s''') = postfixToPrefix s'' 15:47:33 <elliott> in (Seq.singleton op >< a >< b, s''') 15:47:35 <elliott> s' :> lit@Lit{} -> (Seq.singleton lit, s') 15:47:37 <elliott> There. 15:47:39 <elliott> It's a very simple algorithm. 15:47:41 <elliott> In fact 15:47:43 <elliott> You can generalise it easily 15:47:48 <CakeProphet> except half of that notation is completely new to me. 15:47:49 <elliott> CakeProphet: Watch as I make this trivial 15:48:40 <elliott> OK, so... 15:49:06 <CakeProphet> :> is kind of like reverse cons? 15:49:25 <Vorpal> no it is a weird smily 15:49:28 <Vorpal> smiley* 15:49:30 <elliott> CakeProphet: Let me simplify this 15:49:53 <elliott> :t replicateM 15:49:53 <Vorpal> :t (:>) 15:49:54 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a] 15:49:55 <lambdabot> Not in scope: data constructor `:>' 15:49:56 <CakeProphet> are you traversing the string backwards? 15:49:57 <Vorpal> hm 15:51:18 <elliott> CakeProphet: Yes. But seriously, stop trying to understand it. 15:51:21 <elliott> Let me do this simplification, OK? 15:51:24 <CakeProphet> sure. 15:51:28 <CakeProphet> I think I kind of understand it. 15:51:30 <CakeProphet> though. 15:51:42 <CakeProphet> the translation to C++ will be tricky though. 15:52:29 <elliott> CakeProphet: Yes, but it will be /much simpler/. 15:54:32 <elliott> OK, almost done. 15:54:37 <elliott> :t evalState 15:54:38 <lambdabot> forall s a. State s a -> s -> a 15:54:40 <elliott> :t runState 15:54:41 <lambdabot> forall s a. State s a -> s -> (a, s) 15:55:03 <CakeProphet> oh god 15:55:04 <CakeProphet> not state. 15:55:10 <elliott> stfu 15:55:15 <elliott> c++ has state all over the place 15:55:24 <CakeProphet> use ST if you want to make it look like C++ 15:56:03 -!- BeholdMyGlory has joined. 15:56:40 <Vorpal> CakeProphet, that sounds like a nightmare: trying to make haskell look like C++ 15:56:43 <Vorpal> just eww 15:57:24 <CakeProphet> elliott: you can't just explain it in pseudocode? 15:57:40 <elliott> CakeProphet: OK, fine, how about this: Do it however you want, I don't care. 15:58:18 <CakeProphet> elliott: I would appreciate the help, but if you don't want to help that's fine. 15:58:29 <elliott> I do, you just don't seem interested. 15:58:50 <CakeProphet> I'm not interested in translating Haskell to C++ no, but having the Haskell would certainly help and is something I'm interested in. 16:00:18 <CakeProphet> I think I could do it recursively as in the original algorithm though 16:00:27 <CakeProphet> well the second one 16:01:00 <CakeProphet> as long as I don't use references the inputs will be copied and will thus function as though immutable. 16:01:38 <CakeProphet> though it would probably be more efficient to explicitly use a stack and do it the mutable way. 16:02:07 <elliott> Dude, it's a trivial stateful algorithm. 16:02:49 <CakeProphet> I am not good with statefulness. 16:05:10 -!- monqy has joined. 16:05:19 <CakeProphet> but if I understand correctly. 16:05:29 <elliott> Too busy writing the simpler version, not interested 16:05:37 <CakeProphet> I basically need to set up a stack machine as though I am evaluating the postfix. 16:05:46 <CakeProphet> but instead I output prefix expressions. 16:05:59 <CakeProphet> er, no. 16:06:02 <CakeProphet> that won't work. 16:06:20 <CakeProphet> I need like two stacks maybe. 16:07:01 <CakeProphet> in any case I need to leave soon but I'll read the logs later if you finish anything. 16:07:34 <CakeProphet> hmmm... also 16:08:02 <CakeProphet> what if I use a stack instead of queue to output the shunting yard algorithm. 16:08:11 <CakeProphet> basically that would just reverse it. 16:14:21 <elliott> postfixToPrefix :: Seq Tm -> State (Seq Tm) (Seq Tm) 16:14:21 <elliott> postfixToPrefix s = 16:14:21 <elliott> case Seq.viewr s of 16:14:21 <elliott> EmptyR -> return Seq.empty 16:14:21 <elliott> s' :> tm -> put s' >> foldl (><) (Seq.singleton tm) <$> replicateM (arity tm) m 16:14:21 <elliott> where m = state (swap . runState (postfixToPrefix Seq.empty)) 16:14:25 <elliott> Hmm, this definitely can be simplified... 16:16:05 -!- ais523 has joined. 16:27:19 <elliott> hi ais523 16:27:29 <ais523> hi elliott 16:51:22 -!- CakeProphet has quit (Read error: Operation timed out). 17:05:48 <elliott> ais523: do you have any experience with incremental GC on a terabyte-large, odd NUMA heap? 17:05:50 <elliott> no? shame 17:06:07 <ais523> heh, that was a kind-of random question to ask 17:06:11 <ais523> and no, I don't 17:06:15 <elliott> ais523: @ :-) 17:06:27 <elliott> It would have been better completely devoid of context. 17:06:46 <ais523> indeed 17:06:49 <ais523> but no, I still don't 17:06:49 -!- MichaelBurge_ has joined. 17:06:55 <elliott> shame 17:07:44 -!- Irish42 has joined. 17:08:00 <Irish42> hello all 17:08:06 <elliott> hi 17:08:08 <elliott> `? welcome 17:08:11 -!- Irish42 has left. 17:08:12 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 17:08:14 <elliott> HackEgo... 17:08:25 <elliott> that wasn't helpful 17:10:00 -!- MichaelBurge has quit (Ping timeout: 260 seconds). 17:14:24 -!- elliott_ has joined. 17:16:04 -!- elliott has quit (Ping timeout: 256 seconds). 17:19:48 -!- MichaelBurge_ has quit (Read error: Connection reset by peer). 17:20:54 -!- MichaelBurge has joined. 17:23:33 -!- boily has quit (Ping timeout: 240 seconds). 17:39:43 -!- boily has joined. 17:47:05 -!- boily has quit (Ping timeout: 252 seconds). 17:53:49 -!- MichaelBurge has quit (Read error: Connection reset by peer). 17:54:02 -!- MichaelBurge has joined. 18:03:27 -!- boily has joined. 18:04:49 -!- Ngevd has joined. 18:05:37 <Ngevd> Hello! 18:06:17 <Ngevd> If learning to ride a tricycle is, I dunno, like programming in Scratch, and bicycle in C++, unicycling is freakin' Malbolge 18:06:21 <cheater> hi Ngevd 18:06:24 <cheater> `? welcome 18:06:25 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 18:06:31 <Ngevd> I have been here before 18:06:35 <Ngevd> I am also known as Taneb 18:06:44 <cheater> never heard of 18:06:52 <Ngevd> What date is it? 18:08:08 <Sgeo|web> Hi Ngevd 18:08:20 <Sgeo|web> 9/28/2011 using weird US notation 18:08:40 <ais523> Wed 28 Sep, according to my status bar 18:08:44 <Ngevd> In sensible British notation that makes 9/28/2011 18:08:52 <ais523> the day-of-the-week reminder is useful, I get disoriented sometimes 18:08:58 <ais523> Ngevd: *28/9/2011 18:08:59 <Ngevd> So, yeah, I've been here a couple of months 18:09:19 <Ngevd> Indeed 18:09:24 <Ngevd> Had a long dau 18:09:26 <Ngevd> *day 18:49:03 -!- Ngevd has quit (Ping timeout: 252 seconds). 18:49:13 -!- augur has quit (Remote host closed the connection). 18:49:26 <fizzie> In Finnish notation that's "28.9.2011". 18:50:01 <elliott_> Is that what they use in Hel/Finland? 18:50:05 <elliott_> I guess "Hel" is the native name. 18:50:10 <elliott_> Apt. 18:51:51 -!- Ngevd has joined. 18:52:02 <fizzie> Apt-get. 18:53:01 <elliott_> Yes, I too thought of this. You are such a good bot. 18:53:09 -!- augur has joined. 18:53:12 <elliott_> Fix my bug would you? And don't say "beep". 18:53:24 <fizzie> MEEP. 18:54:09 <elliott_> Oh. 18:56:51 -!- ais523 has quit (Remote host closed the connection). 19:00:17 <Ngevd> I may make a language designed to compile into BytePusher 19:04:00 -!- hagb4rd has quit (Ping timeout: 248 seconds). 19:07:21 -!- GreaseMonkey has joined. 19:13:08 -!- hagb4rd has joined. 19:16:02 -!- sebbu has quit (Read error: Connection reset by peer). 19:16:29 -!- sebbu has joined. 19:20:22 <Phantom_Hoover> OK 19:20:23 <Phantom_Hoover> Evenings 19:20:28 <Phantom_Hoover> should not be this warm 19:23:03 <fizzie> Phantom_Hoover: Nick suggestion: Tantor_Hoover, so you can share an acronym with Template Haskell. 19:24:15 <Ngevd> And Taneb's Hat 19:28:31 <Ngevd> It's a nice hat 19:28:38 <Ngevd> Well, three hats 19:29:08 <Sgeo|web> ^Taneb 19:29:13 <Sgeo|web> erm, hmm 19:29:15 <Sgeo|web> Taneb^ 19:29:37 <Ngevd> :? 19:29:52 <Sgeo|web> ^ is hat 19:30:11 -!- SgeoN1 has joined. 19:30:34 <Ngevd> Ooh 19:32:06 <elliott_> Phantom_Hoover: Wonderful summer weather, innit 19:32:10 <elliott_> Innit is so a classy word now. 19:32:34 <Ngevd> I actually heard someone say "Innit" unironically during the summer 19:33:32 <elliott_> You just missed the additional layer of irony. 19:33:52 <SgeoN1> People keep typoing process 1? Why? 19:34:07 <SgeoN1> ^joke 19:34:27 <elliott_> THANK GOD YOU MARKED THE JOKE 19:34:36 <elliott_> Actually I wouldn't have got it if you hadn't because it is the least funny. 19:35:00 <SgeoN1> I was worried someone might actually think I thought people were gypping init 19:35:09 <SgeoN1> Typoong 19:35:41 * SgeoN1 surrenders 19:38:33 -!- GreaseMonkey has quit (Quit: The Other Game). 19:41:50 <Phantom_Hoover> <fizzie> Phantom_Hoover: Nick suggestion: Tantor_Hoover, so you can share an acronym with Template Haskell. 19:42:00 <Phantom_Hoover> Why Tantor? 19:42:04 -!- Phantom_Hoover has changed nick to Trantor_Hoover. 19:44:49 -!- tromp has joined. 19:45:25 <elliott_> hi tromp 19:45:35 <fizzie> Trantor_Hoover: Well, he's got a trunk, that works for a hoover. 19:45:54 <elliott_> Heyy, esolangs.org/w redirects to the wiki. 19:45:56 <elliott_> VALUABLE KEYPRESSES. 19:53:52 -!- oerjan has joined. 19:54:10 <SgeoN1> H over 19:54:17 <elliott_> what 19:54:22 <SgeoN1> Vlbl kyptss 19:55:09 <SgeoN1> W atocrct great 19:56:20 <SgeoN1> FL autocrtc 19:57:17 <oerjan> W splng? 19:58:05 <elliott_> W /r.t; [ copula. 20:01:51 <oerjan> k 20:03:25 <oerjan> <Phantom_Hoover> Why Tantor? 20:03:30 <oerjan> that's irrelephant. 20:04:51 -!- ais523 has joined. 20:04:52 -!- ais523 has quit (Changing host). 20:04:52 -!- ais523 has joined. 20:05:15 <oerjan> but i see you settled on something more megalomaniac 20:16:53 <oerjan> elliott_: i have this strange hunch that earlier today you failed to recognize a troll - in the original usenet sense of the word... 20:17:12 <elliott_> oerjan: Quite intentional. derrik is a moron, but perhaps not a troll: he has been here for months. 20:17:37 <elliott_> However he's not done anything but pipe up in the same vague nonsense every time, so I think I'll just be annoying until he goes away. 20:17:44 <elliott_> Do my secret plans still work if I tell everyone about them first? :/ 20:18:02 <oerjan> i do not believe the original usenet sense required people to always troll. in fact i think respected community members sometimes did it. 20:18:24 <elliott_> I don't think it's possible to emulate that level of mental tedium. 20:18:35 <oerjan> my memory is somewhat vague, though. 20:18:43 <elliott_> Well, you're right. 20:18:47 <elliott_> I'm 90 percent sure he's Actually That Stupid, though. 20:19:11 <ais523> oerjan: the original phrase was "trolling for newbies" 20:19:24 <ais523> it was done by established community members against new ones 20:19:27 <oerjan> ais523: yeah 20:19:57 <oerjan> ok so not quite the original sense then, i guess 20:21:13 <oerjan> which means elliott_ is probably the greatest troll in this channel :P 20:21:15 <elliott_> oerjan: but no, I was quite aware that it would never become productive ever. 20:21:31 <elliott_> I'm not sure what I was doing, but it was something related to proving a point. 20:21:38 <elliott_> Whatever it was it was amusing. 20:21:45 <oerjan> good, good. 20:22:11 <oerjan> i suspected so, after all you never asked me to ban him ;P 20:22:33 <elliott_> I don't see any need for banning when the entire channel is on someone's back :P 20:26:25 <Ngevd> I may design a REDICULOUSLY COMPLEX INSTRUCTION SET COMPUTER 20:26:32 <Ngevd> [sic] 20:27:14 <oerjan> i thought that was what Uniquode was... :P 20:28:22 <ais523> no, that's Itanium 20:28:41 <Ngevd> Uniquode is more like Befunge 20:30:42 <Ngevd> ReCISC is much lower level than Befunge 20:30:52 <Ngevd> Or indeed Uniquode, which is what I meant to say 20:33:43 <fizzie> Newly diculated. 20:36:53 <pikhq_> There's also the AS/400. 20:49:05 <oerjan> <zzo38> That is what I did, I pushed 9 and the file does say PublicDomain but it still told me it is unknown license type 20:49:36 <oerjan> http://osdir.com/ml/lang.haskell.cabal.devel/2008-02/msg00218.html seems to indicate something like this was fixed years ago? 20:52:10 <tromp> Hi, elliot 20:52:36 * oerjan picks up a t tromp lost 20:53:33 <tromp> sorry; was busy shortening my smallest brainfuck interpreter:( 20:53:47 <oerjan> APOLOGY ACCEPTED 20:54:23 <ais523> tromp: a hint, you can type the first few letters of someone's name then press tab 20:54:27 <ais523> and your client will fill in the rest for you 20:55:03 <tromp> thx for the tip, ais523 21:04:09 <oerjan> <Vorpal> <CakeProphet> can parentheses be considered to have a precedence? <-- if doing a bison/yacc grammar I would probably not handle parens as an operator with a defined associative and precedence... 21:04:53 <oerjan> i think you might need ( to be highest precedence to parse things like a . b ( c ) correctly. 21:05:05 <oerjan> but that might be the default 21:05:54 <oerjan> ) doesn't need one though, since it must be matched with the previous ( regardless 21:06:01 <oerjan> or so i think 21:08:48 -!- elliott_ has quit (Ping timeout: 248 seconds). 21:09:32 <Vorpal> <oerjan> i think you might need ( to be highest precedence to parse things like a . b ( c ) correctly. <-- what sort of grammar is that? 21:09:46 <oerjan> haskellike? 21:09:49 <Vorpal> oh okay 21:10:02 <Vorpal> oerjan, could have been a object oriented member function call too 21:10:12 <Vorpal> a.b(c) 21:10:18 <oerjan> i first put + there but it seemed more logical with a higher-order operator 21:11:39 <Trantor_Hoover> Is Con Air on TV CON AIR IS ON TV GUYS 21:12:04 <oerjan> don't believe him he's a con full of hot air 21:13:07 <Vorpal> oerjan, well it does need a precedence in the language but I was assuming he was using something like yacc or bison, where you normally use something like: %left PLUS MINUS\n%left TIMES DIVIDE or whatever to assign priority of operators. I just said I wouldn't use that method for () 21:13:46 <Vorpal> but rather would do something like term : LPAREN expr RPAREN or such 21:13:50 <oerjan> Vorpal: ok then i guess i just said you could :P 21:13:59 <Trantor_Hoover> Oh my god Chief O'Brien is in this 21:14:13 <oerjan> but of course all precedence can be replaced by splitting token types in principle 21:14:23 <Vorpal> (where expr : expr PLUS EXPR | ... | term 21:14:25 <Vorpal> ) 21:14:34 <Vorpal> err make the second expr lower case 21:14:50 <oerjan> i vaguely recall there might be tricky cases though 21:15:05 <Vorpal> oerjan, and yes. But how does %left in bison and such interact when you have more than one terminal in a production? 21:15:08 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 21:15:20 <Vorpal> Trantor_Hoover, why that nick? 21:15:38 <Trantor_Hoover> Vorpal, because it's really hot here just like on Trantor. 21:15:56 <Vorpal> ah okay 21:16:00 <oerjan> Vorpal: oh. i'm not sure which it chooses but iirc you can give a production an explicit precedence too 21:16:22 <Vorpal> oerjan, oh right, that is true 21:17:07 <Vorpal> oerjan, you invent a pseudo-token and do a %left xyyz or such above, and then you use something like: foo : BAR quux BAZ %prec xyyz { ... } iirc? 21:17:20 <Vorpal> where xyyz is the pseudo-token 21:17:33 <Vorpal> not sure if it needs to be upper case as terminals 21:17:34 <oerjan> that rings a bell. you don't need a pseudo-token if a real one fits, i think. 21:17:36 <Trantor_Hoover> OK so 21:17:38 <Trantor_Hoover> inevitably 21:17:42 <Trantor_Hoover> when it gets to the end 21:17:43 <Vorpal> oerjan, oh that is probably true 21:17:46 <Trantor_Hoover> I will be in hysterics 21:18:04 <Vorpal> oerjan, anyway parens should probably use %nonassoc (or was it %noassoc)? 21:18:11 <Trantor_Hoover> my parents are here 21:18:24 <Trantor_Hoover> help 21:19:56 <oerjan> Vorpal: i don't think it will matter, since all productions involving parens should match them and so will not have an opportunity for ambiguity of ( ... ( ... ( 21:20:12 <Vorpal> oerjan, anyway I still find writing bison style grammars far easier than using parsec. I really would prefer a bison style parser generator for haskell. Especially since that avoids backtracking due to the bottom up nature, while parsec is top-down. 21:20:22 <Vorpal> oerjan, true 21:20:27 <oerjan> Vorpal: it's called happy :P 21:20:36 <Vorpal> oerjan, hm, should try that out 21:20:40 <oerjan> (never used it) 21:21:56 <Vorpal> oerjan, another issue with parsec: left-recursive grammars. Requires extra work than what you need in yacc. 21:22:05 <Vorpal> s/than/compared to/ 21:22:50 <oerjan> yeah a bit 21:24:24 <oerjan> hm i recall someone recently having trouble making parsec's expressionparser stuff work right. 21:24:30 <oerjan> here 21:24:44 -!- Nisstyre has joined. 21:24:51 <Vorpal> oerjan, btw do you happen to know how yacc and bison are able to detect shift/reduce and reduce/reduce conflicts when generating the code (as opposed to during parsing when it is obvious how to do it)? 21:25:42 <ais523> Vorpal: they compile the grammar definition to lookup tables 21:25:52 <ais523> a conflict would require putting two different numbers in the same cell of the lookup table 21:25:56 <Vorpal> aha 21:26:10 <Vorpal> ais523, yet those issues are only warnings. That is strange 21:26:26 <oerjan> Vorpal: reduce/reduce are fatal, aren't they... 21:26:27 <ais523> because they can be sorted out by giving defaults 21:26:31 <Vorpal> oerjan, oh maybe 21:26:36 <Vorpal> shift/reduce are not at least 21:26:39 <ais523> generally, reduce/reduce is really bad and a problem with your grammar unless you expliclty say which is wanted 21:26:48 <ais523> shift/reduce can normally be sorted by using operator precedence 21:26:54 <Vorpal> yeah 21:26:55 <oerjan> but shift/reduce defaults to shift because it's the "greedy" behavior you usually want 21:27:13 <ais523> oerjan: actually, it defaults to the operator of higher precedence reducing first 21:27:27 <ais523> and the default for the same precedence depends on associativity 21:27:28 <oerjan> ais523: um i mean if there is no precedence resolution 21:27:34 <ais523> IIRC the default associativity is to shift first 21:27:55 <Vorpal> shift/reduce defaulting to shift means operators are treated as right associative by default, no? 21:28:14 <oerjan> the haskell report explicitly says that ambiguous syntax is resolved greedily 21:28:40 <ais523> oerjan: so did the CLC-INTERCAL definition, until nobody could figure out what it meant any more 21:28:45 <oerjan> Vorpal: i think so 21:28:46 <ais523> I worked out some of the simpler cases by experiment 21:29:06 <Vorpal> <ais523> oerjan: so did the CLC-INTERCAL definition, until nobody could figure out what it meant any more <-- eh, in the user manual or what? 21:29:15 <ais523> Vorpal: it was mentioned in a readme somewhere, IIRC 21:29:20 <Vorpal> awesome 21:29:47 -!- Patashu has joined. 21:29:51 <Vorpal> ais523, this is like the LR(1) thing in the intercal manual you mentioned before. Really hard to understand unless you wrote an implementation 21:30:16 <ais523> Vorpal: I wrote a testcase and a document about it 21:30:20 <Vorpal> heh 21:30:36 <ais523> it turns out that C-INTERCAL still wasn't doing it right when I started maintaing it, even though there'd been attempted bugfixes of that several times 21:30:46 <Vorpal> ais523, you did LR(inf) right for c-intercal? How? 21:31:35 <ais523> not exactly; the parser works out what sort of spark/ears nesting it's in 21:31:40 <ais523> and lets the lexer know 21:31:52 <Vorpal> heh, how does it do that? 21:31:56 <ais523> so the lexer can then work out whether a ' or " is definitely closing, or whether it might be opening 21:32:29 <ais523> that still doesn't handle every case, but it does handle everything that the INTERCAL-72 manual says you have to be able to handle (presumably because they couldn't figure out how to parse the other cases either) 21:32:31 -!- augur has quit (Remote host closed the connection). 21:33:07 <Vorpal> ais523, hm, I thought {...} stuff in bison was executed after the entire production was matched? So where would you embed this code? 21:33:09 <ais523> anyway, there's an informal agreement to always alternate sparks and ears at different levels of nesting, and then the problem doesn't come up at all 21:33:20 <ais523> Vorpal: in the {...} 21:33:36 <ais523> the lexer pushes opening sparkears onto a stack, the parser pops them again 21:33:41 <Vorpal> hh 21:33:42 <Vorpal> heh* 21:34:20 <Vorpal> ais523, what are the cases it can't handle? 21:34:22 -!- augur has joined. 21:35:40 <ais523> let me dig one up 21:35:49 <Vorpal> thanks 21:36:23 <ais523> here's an example that does work now but used not to, and actually happened in practice: DO .5 <- '?"'#65535~"'?.7$",2SUB.1"'~#21845"'~#1"$#1'~#3 21:36:46 <Vorpal> hm... 21:36:57 <ais523> here's a contrived example that doesn't work even with the current code: DO .1 <- ,3SUB",2SUB.1".2~.3"".4 21:37:10 <Vorpal> heh yeah that looks weird 21:37:24 <ais523> (admittedly, anyone writing that sort of thing is almost certainly trying to deliberately obfuscate their code) 21:37:40 <ais523> a better way to write the same thing is DO .1 <- ,3SUB",2SUB1'.2~.3'".4 21:37:47 <Vorpal> ah 21:37:54 <ais523> where it's completely clear how it nests (and that is accepted) 21:37:55 <Vorpal> what does that code do? 21:38:00 <ais523> nothing particularly useful 21:38:56 <ais523> in C, it becomes something like d1 = c3[c2[1][iselect(d2,d3)]][d4] 21:44:05 <Trantor_Hoover> Colm Meany's American accent is... pretty bad. 21:47:49 <Patashu> Woah, what? This sonic hack for the genesis has Helix Nebula playing by Anamanaguchi in the intro 21:48:02 <Patashu> Someone wrote an mp3 decoder for genesis I guess 21:48:09 <Patashu> http://www.youtube.com/watch?v=hiMeE0vJTnQ 21:48:57 <Trantor_Hoover> Oh, *no*, another Humble Bundle. 21:50:20 <ais523> I wasn't too impressed by the last one 21:50:25 <ais523> or the one before, FWIW 21:50:34 <ais523> the games feel unfinished, short, and many aren't much fun 21:51:15 <ais523> I completed And Yet It Moves (apart from the bonus levels and achievements); I was happy with the difficulty it started with and ended with, but its difficulty curve is too inconsistent to make it all that fun 21:51:22 <ais523> and it got samish after a while 21:51:52 <Trantor_Hoover> This one has Frozen Synapse in it. 21:52:11 <ais523> I know, they emailed me too 21:52:30 <ais523> I was planning to pay more than the £5 I originally paid if the games were good enough 21:52:37 <ais523> but I don't think it's worth more than £5, in retrospect 21:52:38 <ais523> so I won't 21:53:57 <Trantor_Hoover> Frozen Synapse has been universally acclaimed from what I've seen. 21:54:07 <Patashu> frozen synapse owns 21:54:08 <ais523> I've never heard of it, but might look at it 21:54:38 <oerjan> > let op o c a = a $ \x b -> b $ \y -> c $ x `o` y; calc a = a id; num n = ($ n) in calc (op (*)) (op (+)) (num 2) (num 3) (num 4) 21:54:40 <lambdabot> 20 21:54:56 * oerjan cackles evilly 21:55:37 <ais523> RPN Haskell? 21:55:58 <ais523> :t `o c a -> a $ \x b -> b $ \y -> c $ x `o` y 21:55:59 <lambdabot> parse error on input ``' 21:56:02 <ais523> :t \o c a -> a $ \x b -> b $ \y -> c $ x `o` y 21:56:03 <lambdabot> forall b t b1 t1 a b2. (t -> t1 -> a) -> (a -> b2) -> ((t -> ((t1 -> b2) -> b1) -> b1) -> b) -> b 21:56:21 <ais523> hmm, there's more going on there than meets the eye 21:56:31 <oerjan> PN, not RPN 21:56:33 <Deewiant> PN, not RPN 21:56:52 <ais523> oh, right 21:56:55 <oerjan> i was inspired by cakeprophet's log troubles 21:56:56 <ais523> reverse RPN 21:57:13 <oerjan> there might be a way to do it RPN too 21:59:05 * Trantor_Hoover buys on impulse. 22:00:24 <fizzie> Real MP3 decoding on the Genesis/MegaDrive sounds slightly unlikely; it has a 68k-alike at 7.67 MHz. I'm under the impression that even well-optimized MP3 decoding takes around 40 MIPS. Though maybe with parameters low enough, who knows. 22:00:54 <Trantor_Hoover> The bastards. 22:01:26 <Trantor_Hoover> They've made the lowest default payment $20. 22:01:42 <Trantor_Hoover> I'M GIVING YOU TEN DOLLARS DEAL WITH IT 22:01:55 <Madoka-Kaname> @djinn (t -> t1 -> a) -> (a -> b2) -> ((t -> ((t1 -> b2) -> b1) -> b1) -> b) -> b 22:01:55 <lambdabot> f a b c = c (\ d e -> e (\ f -> b (a d f))) 22:02:22 <Patashu> fizzie, you think it might be a wav then? 22:03:27 <fizzie> Well, not exactly a "wav", but something more easily decodable at least. 22:03:58 <fizzie> "Integrated IRC chat" as a game feature sounds a) weird and b) RAS-syndromish. 22:05:35 <oerjan> > let op o (x,(y,s)) c = c (x `o` y, s); calc a = a (); stop s = s; num n s = ($ (n, s)) in calc (num 3) (num 4) (num 2) (op (+)) (op (*)) stop 22:05:36 <lambdabot> (18,()) 22:05:59 <oerjan> oh hm 22:06:07 <oerjan> > let op o (x,(y,s)) c = c (y `o` x, s); calc a = a (); stop s = s; num n s = ($ (n, s)) in calc (num 3) (num 4) (num 2) (op (+)) (op (*)) stop 22:06:08 <lambdabot> (18,()) 22:06:27 <Patashu> aha: 'The PCM music takes up a lot of space, which is why the ROM is 6MB. ' 22:06:29 <Patashu> now, what's PCM 22:06:42 <fizzie> Raw audio, basically. 22:06:47 <Patashu> figures 22:07:07 <fizzie> What you might call a wav, except the .wav file container can contain pretty much anything. 22:07:07 <Patashu> I thought it'd have to be mp3 because whenever I have a wav of a song it's like, 20 megabytes 22:07:13 <Patashu> and there's no way you could fit that much 22:08:58 <fizzie> If it's, say, mono and 22.050 kHz and 8 bits per sample, that's already just one eighth the bytes of "CD quality" (44.1 kHz, 16-bit, stereo) audio. 22:09:29 <fizzie> (I don't think Genesis has more than 1 PCM-enabled channel.) 22:12:31 <Trantor_Hoover> <fizzie> "Integrated IRC chat" as a game feature sounds a) weird and b) RAS-syndromish. 22:12:35 <Trantor_Hoover> Uplink dude. 22:13:39 <Trantor_Hoover> If Frozen Synapse isn't available for 64-bit Linux... 22:15:12 <fizzie> Uplink had an IRC client? I never even noticed. 22:16:28 <Sgeo|web> Will there be an Uplink 2? 22:17:21 <Trantor_Hoover> fizzie, you need to buy it. 22:17:47 <ais523> buy an IRC client? 22:17:49 <ais523> ouch 22:17:58 <Sgeo|web> ais523: in-game money, not real money 22:17:58 <Trantor_Hoover> ais523, it's uplink, piracy is unheard of. 22:17:59 <ais523> there are plenty of good free ones, for Linux at least 22:18:19 <Sgeo|web> Although the game itself costs real money 22:18:41 <Sgeo|web> Am I on ais523's mental ignore again? 22:19:03 <Trantor_Hoover> Want whois? You're damn well paying for it. 22:19:21 <Trantor_Hoover> Lost the file copier? Guess what! 22:19:38 <ais523> Sgeo|web: not mental ignore, just crossed messages 22:22:39 <Sgeo|web> How do you go about losing a file copier? 22:22:56 <Vorpal> fizzie "RAS-syndromish"? 22:22:56 <ais523> rm /bin/cp? 22:23:09 <ais523> Vorpal: RAS syndrome = Redundant Acronym Syndrom syndrome 22:23:17 <ais523> it's a joke originally made by New Scientist, but it caught on 22:23:20 <Vorpal> ah 22:24:06 <Vorpal> fizzie, btw I saw another game with integrated irc client than uplink. Recent too. Trying to remember the name of it. 22:24:17 <Vorpal> tactical simulator kind of thingy iirc 22:24:25 <fizzie> Frozen Synapse? 22:24:29 <Vorpal> fizzie, ah yes 22:24:34 -!- azaq23 has quit (Quit: Leaving.). 22:24:38 <fizzie> It's what I was talking about, not Uplink. 22:24:41 <Vorpal> oh 22:24:52 <fizzie> It's been the topic, thanks to being in a new Bundle. 22:24:59 <Vorpal> oh new bundle!? 22:25:10 <fizzie> Of one game. 22:25:26 <Vorpal> fizzie, what 22:25:46 <fizzie> You could call it a bundloid. 22:25:47 <Trantor_Hoover> "Cameron Poe then reunites with his loving wife and daughter." 22:25:52 <Trantor_Hoover> WP plot synopsis. 22:25:55 <Vorpal> oh there are bonuses 22:27:42 <fizzie> ais523: Another departmental christmas party thing: there was a standard Linux installation, the task was to read a particular file (/etc/motd, I think) by the most "creative" means. And the part that makes it related: all the external-executable commands (such as 'cp') you used were disabled by means of a 'rm' (itself exempt, I think) to up the difficulty and enforce the "creativity". 22:28:12 <ais523> does just "< /etc/motd" in the shell work? 22:28:15 <ais523> let me try that 22:28:27 <ais523> bash: /etc/motd: No such file or directory 22:28:28 <ais523> hmm 22:28:42 <ais523> just "< /etc/passwd" gave no response, anyway 22:28:46 <ais523> so I guess it doesn't actually output it 22:28:51 <Madoka-Kaname> fizzie, can you use gcc? 22:29:18 <ais523> just checks it for existence 22:29:26 <fizzie> ais523: It would just set up a fd for it, not actually read it. Though bash does have a 'read' and all. 22:29:51 <fizzie> Madoka-Kaname: Well, yes, once. Then nobody else can, after. 22:30:23 <Madoka-Kaname> fizzie, write a program that opens /dev/sha, parses the MBT, then parses the partition 22:30:23 <fizzie> I don't recall the solutions, but some were appropriately creative, after the easy ones had been done. 22:30:52 <Madoka-Kaname> Actually. 22:30:55 <fizzie> They might still be on a wall somewhere. 22:31:50 <Madoka-Kaname> Write a program that includes gcc and ln into itself, then on execution, outputs the gcc binary, the ln binary, etc, etc and reads /etc/motd by manually parsing the HD 22:32:30 <Vorpal> bought it 22:32:36 <Vorpal> the bonus games look fun 22:34:02 <Madoka-Kaname> fizzie, are you allowed to create a shar for /? 22:34:11 <Madoka-Kaname> (i.e. cheating) 22:34:31 <fizzie> I already have the frozenbyte bundle, so I'm not sure whether to get this new one. Maybe I should try the demo. 22:34:55 <Vorpal> fizzie, since I lacked the frozenbyte bundle this looked great for me 22:35:03 <fizzie> Madoka-Kaname: This was in christmas 2009, how should I know? I don't think anyone "cheated". 22:35:40 <Trantor_Hoover> Oh god 22:35:41 <Trantor_Hoover> I think 22:35:47 <Trantor_Hoover> I think That Scene is coming up. 22:35:58 <Trantor_Hoover> fizzie, just pay less than $4. 22:35:59 -!- Sgeo|web_ has joined. 22:36:06 <Trantor_Hoover> You'll get only Frozen Synapse. 22:36:13 <Sgeo|web_> Fuck accidentally hitting close 22:36:16 <Sgeo|web_> FUCK IT IN ITS ASS 22:36:30 <Sgeo|web_> Ok, why am I so irritable 22:37:31 <Trantor_Hoover> Were I Madoka-Kaname, I would make some unsettling reference to hormones. 22:37:56 <Madoka-Kaname> I would never do that 22:38:09 -!- Sgeo|web has quit (Ping timeout: 252 seconds). 22:38:14 <Trantor_Hoover> You went through a whole phase of hormones, remember? 22:38:15 <Vorpal> shadowgrounds: survivor is 1.1 GB in download? heh 22:38:18 <Trantor_Hoover> Hmm, wait... 22:38:21 <Vorpal> that is quite large for an indie game 22:38:25 * Madoka-Kaname baps Trantor_Hoover 22:40:23 <Vorpal> this... is going to take a while 22:41:15 <Trantor_Hoover> omaogmogmgomgomogmomgomgom it is thaat sine omgomgomgomgom 22:42:08 -!- hagb4rd has quit (Ping timeout: 248 seconds). 22:43:39 <Vorpal> also the sound track is a larger download than the game for Frozen Synapse? 22:43:40 <Vorpal> eh 22:43:49 <Trantor_Hoover> crying of laughter 22:43:49 <Vorpal> cd quality or something?) 22:43:58 <Vorpal> s/)// 22:44:53 -!- hagb4rd has joined. 22:46:24 * Trantor_Hoover → sleep 22:46:26 -!- Trantor_Hoover has quit (Quit: Leaving). 22:48:11 <Vorpal> fizzie, there still? 22:48:26 <Vorpal> fizzie, I can't get the creation of an account in frozen synapse to work 22:48:29 <Vorpal> :/ 22:48:38 <Vorpal> it just times out 22:52:27 <Sgeo|web_> Love, love, is a (procedurally-generated MMO), love is a doing (procedurally-generated MMO), 22:54:57 <monqy> are you okay? 22:55:34 <oerjan> he is just stating the facts, apparently 22:57:53 -!- myndzi\ has joined. 23:00:00 <Vorpal> there, works now 23:01:11 -!- myndzi has quit (Ping timeout: 245 seconds). 23:04:24 -!- BeholdMyGlory has quit (Remote host closed the connection). 23:06:30 <Madoka-Kaname> > fix (brain Vorpal) 23:06:31 <lambdabot> Not in scope: `brain'Not in scope: data constructor `Vorpal' 23:06:34 <Madoka-Kaname> Damnit. 23:06:52 -!- augur has quit (Remote host closed the connection). 23:14:57 <Sgeo|web_> Thomas Edison Invents Marketing Other People's Ideas 23:17:45 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:41:01 -!- copumpkin has joined. 23:47:20 -!- ais523 has quit (Remote host closed the connection). 23:54:45 -!- augur has joined. 2011-09-29: 00:51:20 <Vorpal> vlc suddenly decided to use a HUGE font for the GUI. WTF 00:53:08 <oerjan> _ _____ _____ _____ _ _ _____ ___ ___ _ _ 00:53:08 <oerjan> / \|_ _|_ _| ____| \ | |_ _|_ _/ _ \| \ | | 00:53:08 <oerjan> / _ \ | | | | | _| | \| | | | | | | | | \| | 00:53:08 <oerjan> / ___ \| | | | | |___| |\ | | | | | |_| | |\ | 00:53:08 <oerjan> /_/ \_\_| |_| |_____|_| \_| |_| |___\___/|_| \_| 00:53:20 <oerjan> like that? 00:56:12 <Vorpal> oh god, deleting vlc preferences didn't help 00:56:21 <Vorpal> oerjan, no like 40 pt 00:56:35 <Vorpal> so not QUITE that large 00:57:31 <oerjan> ...in which we deduce that Vorpal uses < 10 points for irc 01:14:38 <Vorpal> oerjan, I use 9 pt yes 01:16:01 <Vorpal> oh fuck, everything KDE or QT is screwed uo 01:16:02 <Vorpal> up* 01:16:57 <Vorpal> wut 01:17:09 <Vorpal> it is set to 9 pt, but it shows much larger 01:18:11 <Sgeo|web_> "In a strictly object oriented environment like C#/.NET," writes J.D., "there's really no such thing as 'global variables'. Sure, you can create a public class called 'Global' with a bunch of static fields, but the folks looking to (ab)use global variables generally have a hard time making that conceptual leap." 01:18:16 <Sgeo|web_> AHAHAHAHAHA I WISH 01:18:39 * Sgeo|web_ shoots self and then Eps 01:19:19 <Jafet> Today's conceptual leap is tomorrow's bread-and-butter design pattern 01:20:09 <Jafet> And now, I give you a class in Java. 01:20:11 <Jafet> http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html 01:29:00 -!- augur has quit (Remote host closed the connection). 01:37:51 <oerjan> > read $ replicate 100 '(' ++ "42" ++ replicate 100 ')' 01:37:53 <lambdabot> *Exception: Prelude.read: no parse 01:37:57 <oerjan> > read $ replicate 100 '(' ++ "42" ++ replicate 100 ')' :: Int 01:37:59 <lambdabot> 42 01:38:03 <oerjan> fancy 01:38:04 -!- augur has joined. 01:39:25 <oerjan> > read "1e100" :: Integer 01:39:27 <lambdabot> 100000000000000000000000000000000000000000000000000000000000000000000000000... 01:51:15 <Madoka-Kaname> > read "1"++(replace 1000 '0') :: Integer 01:51:16 <lambdabot> Not in scope: `replace' 01:51:20 <Madoka-Kaname> > read "1"++(replicate 1000 '0') :: Integer 01:51:22 <lambdabot> Couldn't match expected type `GHC.Integer.Type.Integer' 01:51:22 <lambdabot> against inf... 01:51:30 <Madoka-Kaname> > read ("1"++(replicate 1000 '0')) :: Integer 01:51:32 <lambdabot> 100000000000000000000000000000000000000000000000000000000000000000000000000... 02:01:51 -!- CakeProphet has joined. 02:01:51 -!- CakeProphet has quit (Changing host). 02:01:51 -!- CakeProphet has joined. 02:06:23 <Gregor> Anybody happen to know of a program for Unix/Linux/whatever that just keeps commands on a queue and runs them? So, if your queue is empty and you try to run a command, it runs immediately, but if it has other commands in it, you have to wait for those to complete? 02:07:55 * Sgeo|web_ would like to get Seaside running on Heroku >.> 02:08:06 <pikhq_> Gregor: That is one of the functionalities of GNU parallel. 02:09:43 <pikhq_> Lessee... Ah, have to combine it with a couple of other things. 02:09:58 <pikhq_> tail -f jobqueue | parallel 02:10:14 <pikhq_> Append to jobqueue to add tasks to the queue. 02:10:33 <pikhq_> e.g. echo 'gunzip foo.gz'>>jobqueue 02:11:03 <Gregor> Ah. But I can implement that in zero seconds :P 02:11:03 <pikhq_> Add -j$N to have it execute from the queue in parallel. 02:11:22 <Gregor> Will that work with a FIFO? 02:11:48 <pikhq_> parallel <your-fifo 02:11:49 <pikhq_> :P 02:12:02 <pikhq_> In case you hadn't noticed, it's reading from a pipe... 02:12:24 <Gregor> I'm very tired X-P 02:13:17 <CakeProphet> one thing Perl got right: having a small embedded language in strings. 02:14:24 <pikhq_> Tcl does, too. It's called Tcl. 02:15:31 <CakeProphet> yes well, it's interesting to note that it's not really certain if Perl string language is a subset of Perl. 02:15:50 <pikhq_> Who said anything about 'subset'? 02:16:06 <CakeProphet> 22:15 < CakeProphet> yes well, it's interesting to note that it's not really certain if Perl string language is a subset of Perl. 02:16:22 <pikhq_> -_- 02:17:20 <CakeProphet> :) 02:17:59 <CakeProphet> I love the discrete number of emotions I can convey. o^-: 02:19:00 <CakeProphet> unless you consider the tone of the message. Well, then it just becomes a difficult question. 02:29:21 <Gregor> pikhq_: Thanks for telling me about parallel; my attempt at writing the same thing (which I had started before you told me) is terrible and I should feel bad for having written it. 02:31:38 <Gregor> pikhq_: Err ... I'm inclined to disagree ... parallel doesn't seem to take commands from stdin ... 02:31:52 <pikhq_> Um. It certainly does. 02:36:52 <Gregor> Um, it certainly doesn't? 02:37:36 <pikhq_> echo 'echo foo'|parallel;# echos "foo" 02:39:26 <Gregor> Hm. Is my parallel not the same as yours >_> 02:39:40 <Gregor> (I eventually realized that what DOES run commands from stdin is sh :P ) 02:39:48 <pikhq_> http://www.gnu.org/software/parallel/ 02:40:23 <pikhq_> It is also ridiculously versatile. 02:40:40 <CakeProphet> hey so why don't most programming languages have a way to ignore warnings from a single line of code? 02:41:24 <CakeProphet> explain this stuff language designing people. 02:42:01 <CakeProphet> \:l./-\.l:/ 02:42:54 <Gregor> pikhq_: Strange, my parallel came from "moreutils" in Debian, and seems entirely unrelated. 02:43:22 -!- MichaelBurge_ has joined. 02:46:43 -!- MichaelBurge has quit (Ping timeout: 252 seconds). 02:46:51 <CakeProphet> also, why does no operating system coming out of the box have a way to silence everything but music, to get rid of annoying sounds (from IMs and shit) 02:46:51 -!- MichaelBurge_ has changed nick to MichaelBurge. 02:47:21 <Vorpal> CakeProphet, irssi makes noise? 02:47:23 <Vorpal> ;P 02:47:33 <Gregor> CakeProphet: My way of doing that is using a USB headset. I only set ALSA_CARD=1 on programs I want to make sound, otherwise they're "silent" :P 02:47:34 <CakeProphet> yeah that's the only way I communicate. 02:47:51 <Vorpal> CakeProphet, anyway that is up to the program. The OS can't know if /usr/bin/foo is a music player or a game, or an IM client... 02:48:25 <Vorpal> Gregor, any idea how to get oss programs to use a specific sound card btw? 02:48:35 <CakeProphet> okay, so why no interface to do such? 02:48:38 <Vorpal> Gregor, system is using alsa 02:48:44 <CakeProphet> I mean, maybe I'm asking a lot. 02:48:52 <Vorpal> CakeProphet, check preferences of your IM client? 02:48:59 <Vorpal> also maybe pulse audio can do so 02:49:04 <Gregor> Vorpal: Uhh, ALSA_CARD=whatever aoss <program>? :P 02:49:26 <Vorpal> Gregor, so what is wrong with kernel OSS emulation? 02:49:27 <Vorpal> :( 02:49:43 <Vorpal> sure, aoss works too 02:49:45 <Vorpal> mostly 02:49:50 <Gregor> Vorpal: The fact that I don't know how to override which ALSA card it goes to, that's what :P 02:50:26 <Vorpal> Gregor, any idea how to use dmix on one sound card but not on another= 02:50:29 <Vorpal> s/=/?/ 02:50:57 <Gregor> Vorpal: I know that if you can explicitly make one program use hw:<whatever> as its ALSA device, it will bypass dmix. 02:51:02 <Vorpal> hm 02:51:12 <Gregor> I don't know how to do that with an environment variable though. 02:51:17 <Vorpal> oh 02:51:26 <Vorpal> Gregor, I don't have dmix set up currently 02:51:32 <Vorpal> but I do want to set it up for one card 02:51:38 <Gregor> Oh 02:51:41 <Gregor> Can't help ya :P 02:51:44 <Vorpal> ah 02:51:49 <Gregor> It's default on my system. 02:52:26 <Vorpal> Gregor, it obviously isn't here as demonstrated by trying to use two sound producing programs at once against the on board sound 02:52:36 <Vorpal> works against the sb live of course 02:55:43 <CakeProphet> 22:15 < CakeProphet> yes well, it's interesting to note that it's not really certain if Perl string language is a subset of Perl. 02:56:17 <CakeProphet> does that make them equivalent or? 02:59:53 <Gregor> pikhq_: Here is my current (BRILLIANT) command queue system: 02:59:55 <Gregor> sh < cmdqueue.fifo 03:00:49 <CakeProphet> also what would be a good string subset for a language to have? 03:01:08 -!- sebbu2 has joined. 03:01:30 -!- sebbu has quit (Ping timeout: 255 seconds). 03:04:10 <CakeProphet> class Iterator i where next : i -> Maybe i 03:04:15 <CakeProphet> +: 03:05:50 <pikhq_> Gregor: Smartass. :P 03:11:11 <CakeProphet> so what if I made an object oriented language with completely unique semantics? 03:11:15 <CakeProphet> what if that became a thing. 03:11:21 <CakeProphet> hypothetical 03:11:24 <CakeProphet> question 03:11:26 <CakeProphet> you know. 03:21:40 -!- CakeProphet has quit (Ping timeout: 252 seconds). 03:36:49 -!- CakeProphet has joined. 03:42:33 <CakeProphet> okay so what if x y -> z could be defined as operator syntax and parsed effectively by a language compiler/interpreter? 03:42:55 <CakeProphet> x y -> z = ... 03:43:52 <oerjan> what's that supposed to mean 03:43:55 <CakeProphet> also use relationship precedence instead of fixed numeric. Essentially you use operators without parentheses in small sublanguages 03:44:09 <CakeProphet> oerjan: -> is the function, it's 3-ary infix 03:44:56 <CakeProphet> think Haskell-like semenatics. 03:44:59 <CakeProphet> and syntax. 03:45:18 <oerjan> well haskell doesn't to 3-ary operators 03:45:22 <CakeProphet> perhaps a dialect, with syntax changes and standard library changes. 03:45:32 <CakeProphet> oerjan: that's correct. this is hypothetical. 03:48:00 <CakeProphet> oerjan: any parsing problems etc? 03:49:22 <oerjan> well it _seems_ to me like you could parse it by combining arguments to highest precedence operators first 03:49:34 <CakeProphet> yes. 03:50:32 <CakeProphet> so what if spaces were valid operator characters for ternary operators, and you can use two operator symbols as a single reserved word. 03:50:55 <oerjan> oh hm a problem maybe 03:51:41 <oerjan> say -> has higher precedence than + and *, which have the usual 03:52:01 <CakeProphet> with the only restriction being that aren't any matching symbols in its precedence tree, which 03:52:43 <oerjan> hm wait no that won't be a problem 03:52:46 <CakeProphet> orders operators in a precedence by relational notation 03:52:59 <CakeProphet> a > b 03:54:03 <CakeProphet> I suppose one way to find out is to attempt to implement it. 03:54:46 <oerjan> i'll point toward agda's mixfix, which i've vaguely heard of, although i'm not sure if it allows just space separation. 03:55:15 <CakeProphet> you would need some compiler-enforced restrictions on relations and operator pairings 03:58:35 -!- MDude has changed nick to MSleep. 04:00:43 <CakeProphet> also consider a dialect of Haskell with a number of ambiguously cased operator symbols. 04:02:50 <CakeProphet> also typeclass operators 04:03:15 <CakeProphet> you guys could call it a parody language even. Perhaps it's also somewhat esoteric. 04:04:43 <CakeProphet> I'm sure there are even more syntax, and hypothetical extensions that could be added onto it. It could be a sort of collaborative effort. 04:16:57 <CakeProphet> maybe you could even define the whole language in terms of infix and circumfix n-ary operators 04:17:11 <CakeProphet> and precedence relationships. 04:35:16 -!- Madoka-Kaname has quit (*.net *.split). 04:35:16 -!- yorick has quit (*.net *.split). 04:35:16 -!- Deewiant has quit (*.net *.split). 04:35:17 -!- lifthrasiir has quit (*.net *.split). 04:36:11 -!- lifthrasiir has joined. 04:37:55 -!- Deewiant has joined. 04:43:48 -!- Madoka-Kaname has joined. 04:43:48 -!- yorick has joined. 04:43:57 -!- yorick has quit (Max SendQ exceeded). 04:44:09 -!- yorick has joined. 04:55:53 <Jafet> Use a genetic algorithm to perturb local fixities until an expression is well-typed. 04:59:07 <CakeProphet> no I'm pretty sure with just a few rules it would parse correctly. 04:59:11 <CakeProphet> and unambiguously 05:03:24 <Madoka-Kaname> @. pl djinn (a->b) -> (c->d) -> (b->e->c) -> (f->e) -> x -> (x -> x -> f) -> (f -> a) -> (e -> y -> z) -> y -> z 05:03:24 <lambdabot> f = const (const (const ((((const . flip id) .) .) . (. (flip =<< flip id)) . (.)))) 05:03:34 <Madoka-Kaname> Yay for total insanity! 05:04:02 <Jafet> @pl \x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 -> x9 x8 x7 x6 x5 x4 x3 x2 x1 x0 05:04:06 <lambdabot> flip (flip . ((flip . ((flip . ((flip . (flip .)) .)) .)) .) . (((((flip .) .) .) .) .) . ((((((flip .) .) .) .) .) .) . (((((((flip .) .) .) .) .) .) .) . flip (flip . (flip .) . ((flip .) .) . ((( 05:04:06 <lambdabot> flip .) .) .) . ((((flip .) .) .) .) . (((((flip .) .) .) .) .) . ((((((flip .) .) .) .) .) .) . flip (flip . (flip .) . ((flip .) .) . (((flip .) .) .) . ((((flip .) .) .) .) . (((((flip .) .) .) .) 05:04:06 <lambdabot> .) . flip (flip . (flip .) . ((flip .) .) . (((flip .) .) .) . ((((flip .) .) .) .) . flip (flip . (flip .) . ((flip .) .) . (((flip .) .) .) . flip (flip . (flip .) . ((flip .) .) . flip (flip . ( 05:04:06 <lambdabot> flip .) . flip (flip . flip id)))))))) 05:04:06 <lambdabot> optimization suspended, use @pl-resume to continue. 05:04:19 <oerjan> Madoka-Kaname: flipping madness 05:05:43 <Madoka-Kaname> @pl \a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 -> a9 b9 a8 b8 a7 v7 a6 b6 a5 b5 a4 b4 a3 b3 a2 b2 a1 b1 a0 b0 05:05:46 <lambdabot> ((((((((((((((((const .) .) .) .) .) .) .) .) .) .) .) .) .) .) .) .) . (((((((((flip .) .) .) .) .) .) .) .) .) . ((((((((((flip .) .) .) .) .) .) .) .) .) .) . (((((((((((flip .) .) .) .) .) .) .) 05:05:46 <lambdabot> .) .) .) .) . ((((((((((((flip .) .) .) .) .) .) .) .) .) .) .) .) . (((((((((((((flip .) .) .) .) .) .) .) .) .) .) .) .) .) . ((((((((((((((flip .) .) .) .) .) .) .) .) .) .) .) .) .) .) . (((((((( 05:05:46 <lambdabot> (((((((flip .) .) .) .) .) .) .) .) .) .) .) .) .) .) .) . ((((((((((((((((flip .) .) .) .) .) .) .) .) .) .) .) .) .) .) .) .) . flip (flip . (flip .) . ((flip .) .) . (((flip .) .) .) . ((((flip .) 05:05:46 <lambdabot> .) .) .) . (((((flip .) .) .) .) .) . ((((((flip .) .) .) .) .) .) . (((((((flip .) .) .) .) .) .) .) . ((((((((flip .) .) .) .) .) .) .) .) . (((((((((flip .) .) .) .) .) .) .) .) .) . (((((((((( 05:05:46 <lambdabot> flip .) .) .) .) .) .) .) .) .) .) . (((((((((((flip .) .) .) .) .) .) .) .) .) .) .) . ((((((((((((flip .) .) .) .) .) .) .) .) .) .) .) .) . (((((((((((((flip .) .) .) .) .) .) .) .) .) .) .) .) .) 05:05:48 <lambdabot> [14 @more lines] 05:05:50 <lambdabot> optimization suspended, use @pl-resume to continue. 05:06:23 <oerjan> @djinn (a->b) -> (c->d) -> (b->e->c) -> (f->e) -> x -> (x -> x -> f) -> (f -> a) -> (e -> y -> z) -> y -> z 05:06:24 <lambdabot> f _ _ _ a b c _ d e = d (a (c b b)) e 05:07:53 <oerjan> thought it looked a bit redundant. 05:08:02 <Madoka-Kaname> djinn (a->b) -> (c->d) -> (b->e->c) -> (f->c->e) -> x -> (x -> x -> f) -> (f -> a) -> (e -> y -> z) -> y -> z 05:08:08 <Madoka-Kaname> @djinn (a->b) -> (c->d) -> (b->e->c) -> (f->c->e) -> x -> (x -> x -> f) -> (f -> a) -> (e -> y -> z) -> y -> z 05:08:08 <lambdabot> -- f cannot be realized. 05:08:22 <Madoka-Kaname> @djinn (a->b) -> (c->d) -> (b->e->c) -> (f->c->e) -> x -> (x -> f) -> (f -> a) -> (e -> y -> z) -> y -> z 05:08:22 <lambdabot> -- f cannot be realized. 05:09:01 <Madoka-Kaname> @djinn (a->b) -> (c->d) -> (b->e->c) -> (f->e) -> x -> (x -> f) -> (f -> a) -> (e -> c -> y -> z) -> y -> z 05:09:01 <lambdabot> f a _ b c d e f g h = g (c (e d)) (b (a (f (e d))) (c (e d))) h 05:09:10 <Madoka-Kaname> @djinn (a->b) -> (c->d) -> (b->e->c) -> (f->e) -> x -> (x -> f) -> (f -> a) -> (e -> c -> d -> y -> z) -> y -> z 05:09:10 <lambdabot> f a b c d e f g h = 05:09:10 <lambdabot> h (d (f e)) (c (a (g (f e))) (d (f e))) (b (c (a (g (f e))) (d (f e)))) 05:09:15 <Madoka-Kaname> @. pl djinn (a->b) -> (c->d) -> (b->e->c) -> (f->e) -> x -> (x -> f) -> (f -> a) -> (e -> c -> d -> y -> z) -> y -> z 05:09:18 <lambdabot> f = ((((const .) .) .) .) . ap ((.) . ap . ((ap . ((ap . ((ap . (flip .)) .)) .) . ap (ap . (ap .) . ((flip .) .) . ((flip id .) .) . (. flip id) . (.))) .) . flip flip ((. flip id) . (.)) . ((.) .) 05:09:19 <lambdabot> . (ap .) . ((ap .) .) . flip ((.) . (.)) . (. (ap id . flip id)) . (.)) (flip ((.) . (.) . (.) . (.)) . flip flip ((. flip id) . (.)) . ((.) .) . (ap .) . ((ap .) .) . flip ((.) . (.)) . (. (ap id . 05:09:19 <lambdabot> flip id)) . (.)) 05:09:19 <lambdabot> optimization suspended, use @pl-resume to continue. 05:09:24 <Madoka-Kaname> @pl-resume 05:09:27 <oerjan> Madoka-Kaname: it's pretty obvious really, c and e cannot be produced without each other in those failing ones 05:09:30 <lambdabot> f = ((((const .) .) .) .) . ap ((.) . ap . ((ap . (liftM2 (ap . (flip .)) .) . ap (ap . ((ap . ((flip . flip id) .)) .) . (. flip id) . (.))) .) . flip flip ((. flip id) . (.)) . (((.) . ap . (ap .)) 05:09:31 <lambdabot> .) . flip ((.) . (.)) . (. (ap id . flip id)) . (.)) (flip ((.) . (.) . (.) . (.)) . flip flip ((. flip id) . (.)) . (((.) . ap . (ap .)) .) . flip ((.) . (.)) . (. (ap id . flip id)) . (.)) 05:09:31 <lambdabot> optimization suspended, use @pl-resume to continue. 05:09:35 <Madoka-Kaname> @pl-resume 05:09:39 <Madoka-Kaname> oerjan, ah. =p 05:09:42 <lambdabot> f = ((((const .) .) .) .) . ap ((.) . ap . ((ap . (liftM2 (liftM2 flip) .) . ap (ap . (liftM2 (flip . flip id) .) . (. flip id) . (.))) .) . flip flip ((. flip id) . (.)) . (((.) . liftM2 ap) .) . 05:09:43 <lambdabot> flip ((.) . (.)) . (. (ap id . flip id)) . (.)) (flip ((.) . (.) . (.) . (.)) . flip flip ((. flip id) . (.)) . (((.) . liftM2 ap) .) . flip ((.) . (.)) . (. (ap id . flip id)) . (.)) 05:12:56 <Madoka-Kaname> @. pl djinn (a -> b -> c) -> (d -> e -> f) -> (c -> f -> g) -> a -> b -> c -> d -> g 05:12:56 <lambdabot> (line 1, column 1): 05:12:56 <lambdabot> unexpected "-" 05:12:56 <lambdabot> expecting white space, "()", natural, identifier, lambda abstraction or expression 05:13:15 <Madoka-Kaname> @. pl djinn (a -> b -> c) -> (d -> e -> f) -> (c -> f -> g) -> a -> b -> d -> e -> g 05:13:16 <lambdabot> f = ((((const .) .) .) .) . (. join) . flip . ((flip . ((flip . ((.) .)) .)) .) . flip ((.) . (.)) 05:13:40 <Madoka-Kaname> @. pl djinn (a -> b -> c) -> (c -> d) -> a -> b -> d 05:13:40 <lambdabot> f = flip ((.) . (.)) 05:14:08 <Madoka-Kaname> @. pl djinn (a -> b -> c -> d) -> (d -> e) -> a -> b -> c -> e 05:14:09 <lambdabot> f = flip ((.) . (.) . (.)) 05:14:32 <Madoka-Kaname> @. pl djinn (a -> b) -> (b -> c) -> (c -> d) -> a -> d 05:14:32 <lambdabot> f = (flip (.) .) . flip (.) 05:14:46 <Madoka-Kaname> @. pl djinn (c -> d) -> (b -> c) -> (a -> b) -> a -> d 05:14:47 <lambdabot> f = (. (.)) . (.) . (.) 05:24:32 -!- esowiki has joined. 05:24:59 -!- esowiki has joined. 05:25:14 -!- esowiki has joined. 05:25:44 -!- esowiki has joined. 05:26:10 -!- esowiki has joined. 05:27:20 -!- esowiki has joined. 05:27:30 -!- esowiki has joined. 05:27:55 -!- esowiki has joined. 05:28:07 -!- esowiki has joined. 05:28:42 -!- esowiki has joined. 05:29:07 -!- esowiki has joined. 05:29:43 -!- esowiki has joined. 05:30:03 -!- esowiki has joined. 05:30:36 -!- esowiki has joined. 05:31:16 -!- esowiki has joined. 05:31:56 -!- esowiki has joined. 05:32:06 -!- esowiki has joined. 05:32:51 -!- esowiki has joined. 05:32:51 -!- glogbot has joined. 05:33:02 <oerjan> oh it's cake 05:33:33 <fizzie> Yes, though I thought yours was just some sort of a variant. 05:33:38 <fizzie> It is now, i guess. 05:34:11 <oerjan> getting only gay slang when i tried to google it sort of gave me a hunch there 05:34:24 -!- Gregor has joined. 05:34:31 <fizzie> There is the "basket case". 05:34:39 <fizzie> Fruitcase, basket cake. 05:34:39 <oerjan> and nutcase 05:34:59 <fizzie> Nutcake. Mix-n-match. 05:35:44 -!- oerjan has quit (Quit: Lost his marblecakes). 05:35:54 <fizzie> 1. crazy, loony, looney, nutcase, weirdo -- (someone deranged and possibly dangerous) 05:35:57 <fizzie> 1. crackpot, crank, nut, nut case, fruitcake, screwball -- (a whimsically eccentric person) 05:36:01 <fizzie> 2. fruitcake -- (a rich cake containing dried fruit and nuts and citrus peel and so on) 05:36:07 <fizzie> One of these does not belong. 05:38:52 -!- esowiki has joined. 05:39:15 -!- esowiki has joined. 05:39:36 -!- esowiki has joined. 05:40:05 -!- esowiki has joined. 05:41:15 -!- esowiki has joined. 05:41:44 -!- esowiki has joined. 05:42:30 -!- esowiki has joined. 05:43:00 -!- esowiki has joined. 05:43:35 -!- esowiki has joined. 05:44:10 -!- esowiki has joined. 05:44:35 -!- esowiki has joined. 05:45:15 -!- esowiki has joined. 05:45:25 -!- esowiki has joined. 05:46:10 -!- esowiki has joined. 05:47:41 -!- esowiki has joined. 05:47:41 -!- glogbot has joined. 05:47:43 -!- HackEgo has joined. 05:48:06 -!- Gregor has joined. 07:41:40 <Sgeo|web_> If big software comparies suddenly become liable for all the bugs in their existing software, the resulting liability lawsuits could bankrupt them. This proposal could destroy the software industry as we know it. There would probably be negative consequences too. 07:41:48 <Sgeo|web_> http://www.schneier.com/blog/archives/2011/09/an_interesting.html 07:57:22 -!- monqy has quit (Quit: hello). 08:23:07 <Sgeo|web_> http://i.imgur.com/j6dZ0.png 08:23:38 <Sgeo|web_> Making a program with those terms, and posting it to Reddit, does not sound like a recipe for success 08:24:14 -!- derdon has joined. 08:31:19 -!- brisingr has joined. 08:42:09 -!- hagb4rd has quit (Ping timeout: 248 seconds). 08:52:48 -!- Madoka-Kaname has quit (Ping timeout: 260 seconds). 09:00:07 -!- hagb4rd has joined. 09:03:35 <Patashu> that seems hard to follow -and- enforce 09:03:47 <Patashu> what does the program do? 09:54:49 <fizzie> "Newsgroups: comp.lang.c,comp.lang.c++,rec.sport.tennis,alt.anagrams" -- quite an... eclectic selection. 10:15:07 -!- pikhq has joined. 10:15:18 -!- pikhq_ has quit (Ping timeout: 255 seconds). 10:15:45 -!- BeholdMyGlory has joined. 10:57:36 -!- Jafet has quit (Quit: Leaving.). 11:36:28 -!- BeholdMyGlory has quit (Remote host closed the connection). 11:54:39 <CakeProphet> convert.cpp:152:12: error: aggregate ‘std::ifstream inp’ has incomplete type and cannot be defined 11:54:42 <CakeProphet> wat 11:55:56 <CakeProphet> ah need to include fstream 11:57:44 -!- GreaseMonkey has quit (Quit: The Other Game). 12:07:02 -!- Madoka-Kaname has joined. 12:07:02 -!- Madoka-Kaname has quit (Changing host). 12:07:02 -!- Madoka-Kaname has joined. 12:08:34 <Patashu> C is great at having weird compiler errors 12:08:36 <Patashu> C++ in particular 12:08:42 <CakeProphet> #0 0x00007ffff7de54da in ?? () from /lib64/ld-linux-x86-64.so.2 12:08:42 <CakeProphet> #1 0x00007ffff7de5fec in ?? () from /lib64/ld-linux-x86-64.so.2 12:08:42 <CakeProphet> #2 0x00007ffff7de9d24 in ?? () from /lib64/ld-linux-x86-64.so.2 12:08:42 <CakeProphet> #3 0x00007ffff7df0795 in ?? () from /lib64/ld-linux-x86-64.so.2 12:08:47 <CakeProphet> #4 0x0000000000401aaf in main () 12:08:49 <Patashu> ?? () 12:08:49 <CakeProphet> best backtrace 12:09:07 <CakeProphet> "well your program entered main, and then... uh.... " 12:09:57 <Vorpal> CakeProphet, what are the good magicka spells you mentioned (iirc it was you?) I can't find it in my logs 12:10:06 <Patashu> You want to make a steam beam iirc 12:10:08 <Vorpal> not sure which day it was 12:10:21 <Patashu> it's like water fire arcane arcane arcane or water fire lightning arcane arcane or water lightning arcane arcane arcane 12:10:23 <Patashu> I forget 12:10:34 <Vorpal> <Patashu> C is great at having weird compiler errors <Patashu> C++ in particular <-- uh? C is neither a subset nor superset of C++ 12:10:51 <Patashu> This is true 12:10:54 <Patashu> But C and C++ are 'like' each other 12:10:59 <Vorpal> C++ is a different language than C, sure quite similar, but still different languages. 12:11:15 <Patashu> When I think of C or C++ I think of the other (and also java) 12:11:26 <Vorpal> eh, java is even more different 12:11:40 <CakeProphet> Vorpal: qfqfasa is good. any combination of (shield and rock) + ( fire or ice or neither) is good 12:11:47 <Vorpal> Patashu, why not C#? 12:12:01 <Vorpal> CakeProphet, hm okay 12:12:16 <CakeProphet> Vorpal: qfsafe + self cast is an immunity shield. Once you're immune to stuff you can then use qerasr + sword cast which pretty much is the best thing ever. 12:12:49 <Patashu> Hmm, apparently magica's magic system got more complex since I last looked 12:12:59 <CakeProphet> as far as I know it's exactly the same. 12:13:08 <Vorpal> CakeProphet, what does qerasr + sword do? 12:13:19 <Patashu> Maybe people are just getting better at exploiting it then 12:13:29 <CakeProphet> make giant mountains of steamy icy electrical arcane death. yes it makes perfect sense. 12:13:37 <Vorpal> oh btw, I just realised witcher 2 2.0 was released today. Never mind, I don't have time for magicka /now/ 12:13:40 <CakeProphet> Patashu: I am a magicka pro dawg. :P 12:14:20 <CakeProphet> Vorpal: no you are missing out on the opportunity to become a great vizard. 12:14:35 <Vorpal> CakeProphet, come on, witcher 2 is like the game of the year IMO 12:15:16 <Vorpal> CakeProphet, Witcher 2 has excellent graphics, especially if you go into advanced and crank everything up a step from the ultra setting. 12:15:26 <Vorpal> (ultra doesn't max out everything) 12:15:50 <Vorpal> (yes my computer can handle that, as long as I turn off supersampling, I get something like 40 FPS if I turn on the supersampling) 12:16:33 <CakeProphet> don't care. not magicka 12:16:45 <Patashu> You know what else isn't magicka? 12:16:45 <Vorpal> CakeProphet, don't you play anything except magicka? 12:16:50 <Patashu> Foood 12:16:50 <Vorpal> Patashu, Hitler? 12:16:54 <Vorpal> oh that too 12:17:04 <CakeProphet> how do you tell g++ to compile with more debugging symbol stuff. 12:17:15 <CakeProphet> Vorpal: yes I was exaggerating a bit. 12:17:16 <Vorpal> CakeProphet, -ggdb3? 12:17:44 <Vorpal> CakeProphet, what did qfqfasa do? 12:18:13 <CakeProphet> oh boy I got a line number this time. 12:18:46 <CakeProphet> Vorpal: steam arcane lightning beam. It's the strongest beam in the game. Also a decent AOE 12:19:02 -!- derdon has quit (Remote host closed the connection). 12:19:19 <CakeProphet> if you take out one steam and put more arcane into it it makes a better AOE because arcane is what increases the radius of the aoe spell. 12:19:42 <Vorpal> ah 12:20:01 <CakeProphet> also in a bind, queing up like 5 water + aoe cast is a decent "get the fuck away from me" spell 12:20:16 <CakeProphet> there's one part where you fight a bunch of other wizards on these small platforms. And it's supposed to be really difficult or whatever. 12:20:24 <Patashu> do you have an autohotkeys program that autocasts the best spells? 12:20:29 <CakeProphet> but you can literally just do water AOEs and knock everyone off in a few seconds. 12:20:32 <CakeProphet> Patashu: no. 12:20:38 <CakeProphet> that is against the spirit of magicka. :P 12:20:38 <Patashu> make one 12:20:39 <Patashu> then speedrun magicka 12:20:45 <Patashu> or just speedrun magicka anyway 12:21:09 <Vorpal> well looks like 2.0 will be out later today, so I guess I'll play some magicka 12:21:18 <Vorpal> or maybe I'll play Trine 12:22:08 <Vorpal> <Patashu> do you have an autohotkeys program that autocasts the best spells? <-- what a good idea 12:22:16 <CakeProphet> that's so bad 12:22:18 <CakeProphet> ruins the game. 12:22:26 <Vorpal> CakeProphet, btw I love the icon on the main menu for online play 12:22:34 <Vorpal> well, image, not really an icon 12:22:39 <Patashu> does changing your hotkey bindings in sc2 to be more efficient ruin sc2? 12:22:47 <Vorpal> sc2? 12:22:48 <CakeProphet> no that's different. 12:22:51 <Patashu> starcraft 2 12:22:58 <CakeProphet> for one it's part of the game I believe. 12:23:10 <Patashu> it is indeed 12:23:10 <CakeProphet> also in magicka you may not always want the same spells. that's boring. 12:23:39 <CakeProphet> certainly there are a few spells that are the strongest but they're not the best for every situation. 12:23:42 <Vorpal> "Tip: Don't drink and drive" XD 12:23:48 <Vorpal> on the loading screen 12:23:53 <CakeProphet> good tip. 12:24:28 <CakeProphet> one spell that's not too powerful but still useful is aqqqq which fires a beam of water. 12:24:29 <Patashu> But surely out of the... 10^8? possible spells not all you'd ever want to use 12:24:32 <CakeProphet> water having the best knockback. 12:25:03 <Vorpal> CakeProphet, qfsafe + self doesn't allow boosting with space? 12:25:21 <CakeProphet> well it's more like 10^5 - opposite element combinations 12:25:23 <CakeProphet> Vorpal: no. 12:25:27 <Vorpal> CakeProphet, why? 12:25:31 <CakeProphet> just recast it occasionally. You don't need it all the time. 12:25:34 <Patashu> Hmm I just realized, you can play magicka with...that peripheral with the ten buttons, I forget what it's called, a nostromo or something 12:25:35 <CakeProphet> it just doesn't. doesn't work that way. 12:25:39 <Vorpal> CakeProphet, also I forgot: how do you cast on the sword? 12:25:40 <CakeProphet> it's not a normal shield it's an immunity shield. 12:25:50 <CakeProphet> shift left click 12:26:06 <CakeProphet> I think. 12:26:11 <Vorpal> CakeProphet, actually seems I cast it on my M60, whatever that means... 12:26:26 <CakeProphet> yes you enchant your sword and then when you use your sword it uses the spell. 12:26:35 <CakeProphet> for an m60 it still works like a normal sword, unfortunately 12:26:39 <CakeProphet> no enchanted bullets. 12:26:54 <Vorpal> sadly 12:27:10 <Vorpal> CakeProphet, btw what is up with the dead moose? 12:27:27 <CakeProphet> I don't recall exactly why they do that but it's part of an achievement to find them all. 12:27:34 <Vorpal> oh 12:27:48 <CakeProphet> my favorite staff is the staff of war, which all the warlocks have. 12:27:55 <CakeProphet> because it doubles your health and increases physical resistance. 12:27:59 <CakeProphet> best thing ever. 12:28:25 <CakeProphet> don't really have a huge preference on swords. 12:29:50 <CakeProphet> Vorpal: oh another really good spell is any combination of cold and earth + aoe cast 12:30:00 <CakeProphet> more earth increases range more cold increases slow duration. 12:30:08 <CakeProphet> gives you plenty of time to do other shit. 12:30:30 <CakeProphet> one combo I use a lot is ddddq aoe and then ddddr + aoe 12:30:41 <CakeProphet> the first one knocks them down and wets and then the second freezes. 12:30:56 <CakeProphet> actually for the second one you can just do rrrrr aoe 12:33:54 <CakeProphet> but yeah I pretty much use all 5 elements always with the exception of heal (because its sometimes faster, but stacking multiple heal elements adds a heal-over-time effect) and normal shield spells. 12:34:18 <CakeProphet> I'm sure I use 4 sometimes out of haste. 12:34:40 <Patashu> aren't there ten elements? 12:34:42 <Patashu> I am le confused 12:35:22 <CakeProphet> yes, ten elements, you can combine 5 into a spell. 12:35:26 <fizzie> "SC2" is an awfully overloaded acronym; I can never guess whether something is about StarCraft 2 as opposed to Star Control 2. 12:35:28 <CakeProphet> some elements don't combine. 12:35:38 <Patashu> I didn't think of star control 2 12:35:45 <Patashu> and oh, -that- five elements 12:35:48 <fizzie> I think of it often. 12:36:19 <CakeProphet> Vorpal: so now that you've learned all of the overpowered spells is the intro insanely easy? 12:37:37 <Vorpal> CakeProphet, I got to the harvidar level 12:37:39 -!- Jafet has joined. 12:37:51 <Vorpal> CakeProphet, but even with those spells I keep dying there 12:38:15 <Vorpal> CakeProphet, so they made no difference 12:38:18 <CakeProphet> er harbidar? what is that. 12:38:20 <CakeProphet> *v 12:38:25 <Vorpal> CakeProphet, the city thingy 12:38:29 <Vorpal> not sure about the spelling 12:38:35 <CakeProphet> oh, lots of goblins and stuff? 12:38:41 <Vorpal> CakeProphet, you got a ride on a cart, just after you got the M60 12:38:51 -!- Ngevd has joined. 12:38:55 <Vorpal> then arrived at a city, were told to wait until tomorrow in an inn 12:39:00 <CakeProphet> ah 12:39:02 <Vorpal> and then battle of hell 12:39:05 <Ngevd> Hello! 12:39:08 <CakeProphet> okay so for the goblin dudes with bombs. 12:39:27 <Vorpal> CakeProphet, they are not the main issue, but carry on. The large enemies is the issue 12:39:28 <fizzie> The här-vilar level. 12:39:34 <CakeProphet> aaaaf is the best. because it chains across goblins and sets them on fire 12:39:39 <CakeProphet> which makes the bomb dudes explode. 12:40:03 -!- erdosjr has joined. 12:40:19 <CakeProphet> for the giant things qfqfasa is probably the best. but until you have an opportunity to use that I'd set up rock barriers 12:40:56 <CakeProphet> note that you can apply elemental effects to the barriers. so edddq will wet enemies and then edddr will freeze them. 12:41:10 <CakeProphet> or edfff will protect you while dealing out damage. 12:41:18 <Vorpal> edfff would do what? 12:41:33 <CakeProphet> create a barrier of rocks that spout fire. 12:41:52 <CakeProphet> more earth increases the durability and duration of the rocks, more fire increases the damage and duration of the fire. 12:42:35 <CakeProphet> ed(anything) is going to create a barrier of rocks. 12:42:53 <CakeProphet> definitely one of the best defensive spells. 12:43:12 <Vorpal> fuck this, *goes playing deus ex hr* 12:43:42 <CakeProphet> YOU'RE JUST A BAD WIZARD OKAY. 12:44:00 <Patashu> YOU'RE A WIZARD HARRY 12:44:12 <CakeProphet> EVERYONE THINKS WIZARDS HAVE IT EASY AND ITS ALL FUN AND GAMES 12:44:16 <CakeProphet> MAGICKA SHOWS THE GRITTY TRUTH. 12:44:38 <Patashu> Gotta make my mind up. Which spell should I cast? 12:44:46 <Patashu> Yes truly plightful 12:44:58 <CakeProphet> you have to worry about stepping in large bodies of waters and making sure you're not on fire after launching a massive explosive fireball. 12:45:08 <CakeProphet> and when you're wet you have to worry about shocking yourself with your own lightning elements. 12:45:29 <CakeProphet> meanwhile hordes of goblins, ogres, and warlocks approach. 12:45:36 <Patashu> I'm pretty sure you could model this using a finite state machine 12:45:55 <Vorpal> CakeProphet, right, whatever 12:45:59 <CakeProphet> lol 12:46:05 <CakeProphet> MAGICKA IS SERIOUS BUSINESS OKAY 12:46:08 <CakeProphet> NO JOKING AROUND. 12:46:34 <fizzie> Everything is serious business these days. 12:46:36 <Vorpal> come on, magicka would be utterly boring without the humour 12:46:54 <CakeProphet> nope. I actually play arena which has absolutely no storyline 12:47:05 <CakeProphet> you're just killing rounds of enemies in an arena. 12:47:05 <Patashu> Does arena get infinitely hard 12:47:18 <CakeProphet> no I think it goes up to round 20 or something like tht. 12:47:22 <CakeProphet> but it does get insanely difficult. 12:47:27 <Vorpal> if there is a game that is NOT serious, it is Magicka 12:47:48 <Vorpal> I prefer a game with a storyline btw 12:47:50 <fizzie> Funny things are the most serious. 12:48:07 <CakeProphet> there's one round where you fight one of the more difficult bosses from the story while also fighting off a usual horde of cannon-wielding ogres and warlocks. 12:48:44 <CakeProphet> and then shortly afterwards 4 yettis run in and attempt to grab you and insta-kill you. 12:48:48 <CakeProphet> as yettis do in that game. 12:49:01 <CakeProphet> (the trick is to set yourself on fire or spam rock walls everywhere) 12:49:10 <Patashu> It ends? Lame 12:49:16 <Patashu> I want to see so many enemies appear it lags the game 12:49:21 <CakeProphet> yes but I've never gotten to the final round. 12:49:32 <CakeProphet> it doesn't follow an equation for how to spawn things 12:49:35 <CakeProphet> each round is different so 12:49:39 <CakeProphet> can't do be infinite like that. 12:49:39 <Patashu> Yeah that's cool 12:49:41 <Patashu> But it could like 12:49:47 <Patashu> Repeat but with 2x as tough the monsters 12:49:48 <Patashu> Or whatever 12:49:52 <CakeProphet> yeah that's possible 12:49:58 <Patashu> But if it's so hard you can't beat it anyway probably not important 12:50:28 <Vorpal> it is like pacman after the final level. All bugging out 12:50:30 <Vorpal> XD 12:50:57 <CakeProphet> I have no idea because I HAVEN'T BEATEN IT. 12:51:01 <CakeProphet> see above. 12:51:03 <CakeProphet> :) 12:51:04 <Patashu> Do any modern games have a kill screen? 12:51:11 <Vorpal> nobody beat pacman for years either 12:51:15 <Vorpal> Patashu, kill screen? 12:51:20 <Patashu> Ala pacman 12:51:28 <Vorpal> Patashu, I never played the original pacman 12:51:33 <CakeProphet> also Magicka: Vietnam is a documentary about the harrowing lives of young vietnam magicians who led the front lines. 12:51:36 <Vorpal> I just heard it from other sources 12:51:39 <Patashu> You were just talking about the kill screen :||| 12:51:47 <Vorpal> Patashu, oh is that what it is kalled? 12:51:51 <Patashu> Yep 12:51:52 <Vorpal> bugging out past last real level 12:51:57 <Patashu> Have you read the pac man dossier btw? 12:51:58 <Patashu> cool stuff 12:51:59 <Vorpal> well, it was a bug, probably not 12:52:07 <Vorpal> <Patashu> Have you read the pac man dossier btw? <-- no what is it? 12:52:22 <CakeProphet> so apparently the issue is with cout << endl; 12:52:26 <CakeProphet> ...but... why? 12:52:28 <Patashu> http://home.comcast.net/~jpittman2/pacman/pacmandossier.html 12:52:39 <Patashu> CakeProphet: Maybe the end of a line is undefined on your operating system 12:52:56 <CakeProphet> uh.... no 12:53:02 <Patashu> I am joking of cours 12:53:04 <Patashu> But what if it was.......... 12:53:05 <fizzie> Patashu: I'm pretty sure I recall hearing about at least one (modern) game that was unwinnable-as-released due to a glitch; though it was then patched. 12:53:31 <Patashu> fizzie: hmm that sort of counts 12:53:42 <CakeProphet> #include <iostream> 12:53:42 <CakeProphet> #include <fstream> 12:53:42 <CakeProphet> #include <cstdio> 12:53:42 <CakeProphet> #include <stack> 12:53:42 <CakeProphet> #include <cstring> 12:53:44 <CakeProphet> #include <cctype> 12:53:47 <CakeProphet> #include <vector> 12:53:47 <fizzie> "A kill screen is a stage or level in a video game (often an arcade game) that stops the player's progress due to a programming error or design oversight. Rather than "ending" in a traditional sense, the game will crash, freeze, or behave so erratically that further play is impossible." 12:53:50 <fizzie> It should count. 12:53:50 <CakeProphet> this is good right? 12:53:57 <CakeProphet> none of this will mess up cout << endl ever right? 12:54:02 <fizzie> No it is NOT GOOD it is not sorted ALPHABETICALLY. 12:54:09 <CakeProphet> ... 12:54:10 <olsner> CakeProphet: not good, looks like C++ 12:54:13 <CakeProphet> ... 12:54:18 <Patashu> you should be using #from <iostream> import endl 12:54:18 <Patashu> obviously 12:54:24 <CakeProphet> ew 12:54:25 <Patashu> what are you, one of them procedural coders? 12:54:47 <fizzie> #include qualified <iostream> as IO 12:54:52 <olsner> Patashu: what are *you*, one of them python coders? 12:54:53 <CakeProphet> I prefer a continuation massive style using pointfree combinators... in C++. 12:54:56 <Vorpal> fizzie, which game was it? 12:55:10 <Patashu> now you're just making stuff up 12:55:12 <CakeProphet> but not pointerfreee bahahahahahasuhduahsd 12:55:35 <CakeProphet> but no really why is cout << endl; an issue 12:55:42 <Patashu> if you take it out 12:55:43 <fizzie> Vorpal: I can't recall. But it was a commercial product. 12:55:45 <Patashu> it doesn't crash? 12:56:52 <CakeProphet> Patashu: now it just crashes on the line after it. 12:56:58 <CakeProphet> which is inp.open(file_name); 12:56:59 <CakeProphet> ... 12:56:59 <Patashu> I am helping 12:57:03 <CakeProphet> WHAT IS HAPPENING. 12:57:07 <Patashu> hmm 12:57:08 <Patashu> what happens 12:57:13 <Patashu> if you add in debugging printing everywhere 12:57:16 <Patashu> does it stop crashing? 12:57:17 <olsner> hmm, I wonder if something like this would work in C++: namespace IO { using std::cout; using std::endl; ... } 12:57:20 <Patashu> I heard about programs doing this 12:57:24 <fizzie> WHAT IS HAPPENING is DIVINE RETROBUTANE for you for not writing "std::cout << std::endl" instead. 12:57:50 <CakeProphet> (gdb) print inp 12:57:51 <CakeProphet> $1 = <incomplete type> 12:57:52 <olsner> also I wonder if "using namespace" in a namespace exports the imported names from that namespace 12:57:57 <CakeProphet> inp is ifstream 12:58:00 <CakeProphet> so this might mean something. 12:58:12 <CakeProphet> cout is also incomplete 12:58:14 <CakeProphet> what does that mean? 12:58:30 <Patashu> are you sure it's just not happening to crash on that line 12:58:34 <Patashu> no matter what you put there? 12:58:36 <fizzie> I wouldn't be surprised if it just meant "nurrr this type is too much for me". 12:58:50 <olsner> if cout is just a reference, I think it doesn't need a complete type 13:00:03 <CakeProphet> Patashu: I added a line that wasn't cout << endl; (it was cout << "test" instead) and the inp.open(file_name) line is still where it stops. 13:00:26 <fizzie> What does "stops" mean, anyway? I hasn't been following. 13:01:05 <CakeProphet> crashes inexplicably, with the following backtrace: 13:01:06 <CakeProphet> #0 0x00007ffff7de54da in ?? () from /lib64/ld-linux-x86-64.so.2 13:01:06 <CakeProphet> #1 0x00007ffff7de5fec in ?? () from /lib64/ld-linux-x86-64.so.2 13:01:06 <CakeProphet> #2 0x00007ffff7de9d24 in ?? () from /lib64/ld-linux-x86-64.so.2 13:01:06 <CakeProphet> #3 0x00007ffff7df0795 in ?? () from /lib64/ld-linux-x86-64.so.2 13:01:08 <CakeProphet> #4 0x0000000000401aaf in main (argc=1, argv=0x7fffffffe748) at convert.cpp:156 13:01:24 <Patashu> take stuff out until it stops crashing 13:01:26 <CakeProphet> on the line: cout << endl; 13:01:42 <CakeProphet> "take stuff out until it stops crashing" you realize taking stuff out will cause other crashes right? 13:02:00 <Patashu> oh noes! 13:02:04 <Patashu> I did not 13:02:41 <CakeProphet> so yeah removing the open causes while (!inp.eof()) to crash it 13:02:51 <Patashu> makes sense 13:03:08 <CakeProphet> I really think it has something to do with my includes. 13:03:12 <CakeProphet> or namespaces or something. 13:03:12 <Patashu> so is the crash in inp or in .open()? 13:03:13 <Patashu> maybe 13:03:29 <Patashu> oh, inp is ifstream 13:03:35 <CakeProphet> technically it's in ?? () of /lib64/ld-linux/x86-64.so.2 13:03:36 <Patashu> is there even a fake ifstream you can import wrongly? 13:04:02 <Patashu> you should comple and run it on a windows box and see if it gives a better stack trace 13:04:08 <CakeProphet> ... 13:04:23 <CakeProphet> do I have to? 13:04:37 <Patashu> naw 13:05:43 <CakeProphet> are you sure there's not a way I can get better debugging output? 13:06:04 <Patashu> what IDE are you using? 13:06:45 <fizzie> "-ggdb" should generate the best information you can get for use with GDB, in theory. 13:06:50 <CakeProphet> Patashu: lol IDE 13:06:55 <CakeProphet> emacs + shell 13:06:58 <Patashu> ic 13:07:29 <fizzie> And 3 is the highest level there. 13:08:10 <CakeProphet> ... 13:08:15 <CakeProphet> AUUUUGH FUCK THIS 13:08:21 -!- MDude has joined. 13:08:29 -!- Madoka-Kaname has quit (*.net *.split). 13:08:30 -!- HackEgo has quit (*.net *.split). 13:08:30 -!- fungot has quit (*.net *.split). 13:08:30 -!- Zuu has quit (*.net *.split). 13:08:49 -!- MSleep has quit (Ping timeout: 248 seconds). 13:08:50 <CakeProphet> I should start doing these assignments like a week early so I have time to deal with stupid compiler output and debugging shit. 13:08:57 <fizzie> But of course it can't generate debug information for anything else than your program. 13:09:40 <fizzie> C++ is not a very nice language to debug, thanks to all that template-generated "invisible" code. 13:10:31 -!- Madoka-Kaname has joined. 13:10:31 -!- HackEgo has joined. 13:10:31 -!- fungot has joined. 13:10:31 -!- Zuu has joined. 13:11:28 <fizzie> And if you have anything on the stack, it's easy to get all kinds of delayed crashes if you stack-mungle over the internals of the ifstream. You could try moving it outside main and seeing what happens. 13:11:35 <CakeProphet> I literally have no idea what to test now. 13:12:02 <CakeProphet> hmmm 13:12:05 <Patashu> Delete it all and start over. If you know what you want to do it should go faster 13:12:09 <Patashu> And you might not make the same invisible mistake 13:12:27 <Ngevd> I don't like this time of day 13:13:18 <CakeProphet> cin >> file_name; 13:13:21 <CakeProphet> is the line before the crash. 13:13:25 <CakeProphet> file_name is char* 13:13:52 <fizzie> That's something that can very easily mungle over the end. How about >>ing into a std::string? 13:14:01 <fizzie> I mean, you've finally got a string type in C++. 13:14:24 <CakeProphet> I didn't see an overload for strings so I didn't think it would work. 13:14:31 <CakeProphet> also ifstream.open takes char * as well 13:14:45 <fizzie> Yeah, well, that's just a .c_str() on the string. 13:14:50 <CakeProphet> hmmm okay. 13:15:05 <fizzie> The fact that the API takes char *s everywhere is yet another thing to dislike, but still. 13:15:19 <CakeProphet> yes it's fairly obnoxious 13:15:45 <Patashu> Woha 13:15:52 <Patashu> w3schools went down just as I was testing some xslt 13:16:17 <fizzie> The overloaded operator>> comes from <string>. 13:16:32 <CakeProphet> I do some more reads into char * later so I might need to fix those as well if that's the real problem. 13:16:35 <CakeProphet> ah okay 13:17:16 <Ngevd> I should try XSLT S and K again 13:17:21 <CakeProphet> yep that was apparently it. 13:17:29 <fizzie> And in fact it's template<typename CharT, typename Traits, typename Alloc> basic_istream<CharT, Traits>& operator>>(basic_istream<CharT, Traits>& stream, basic_string<CharT, Traits, Alloc>& str). 13:17:50 <CakeProphet> now something else is crashing. good. 13:18:00 <fizzie> So that you can apply it to all kinds of non-char streams and non-char strings. 13:18:09 <fizzie> Using non-standard memory allocators. 13:18:16 <fizzie> And different character traits. 13:19:32 <Ngevd> Question! 13:19:41 <Ngevd> Can an XSLT document be applied to itself? 13:20:30 <CakeProphet> fizzie: is there any good replacement for sprintf in C++? 13:20:50 <fizzie> Well, no, if you want "good". 13:20:57 <Patashu> Ngevd: I presume so, xslt is xml 13:21:19 <fizzie> CakeProphet: You can make a string-stream and then use the usual stream formatting type-magic and flobs. 13:21:27 <CakeProphet> fizzie: they sure do like to make using C++'s fancy string class a pain. 13:21:29 <Ngevd> Could have interesting consequences 13:22:48 <fizzie> Using a stringstream is not any worse than iostream-formatted output. 13:23:21 <fizzie> E.g. you have the same problems of someone setting the stream to hex mode or "restoring" it to decimal mode while your code thinks the mode won't change. 13:23:24 <CakeProphet> I'll just use sprintf and convert back to string. 13:23:38 <fizzie> And then you end up with defensive format-setting everywhere, just in case someone has changed it. 13:24:04 <fizzie> I don't think you can even read the current formatting state of a stream anyhow. Though it might be possible. 13:24:28 <CakeProphet> yeah... sprintf is good. 13:26:17 <fizzie> The thing returned by std::string::c_str() is a pointer to somewhere deep inside the string, and will likely be invalid if you touch the string object in any inappropriate (non-const) way. 13:26:33 <fizzie> It's a good way to get dangling pointers and so on. 13:26:34 <Patashu> really? 13:26:35 <Patashu> augh 13:26:41 * Patashu puts pillow over head 13:26:45 <CakeProphet> aaaaaand.... memory leak :P 13:27:01 <fizzie> Well, the alternative would be to return a copy and then leak as a sieve because nobody would free the copies. 13:27:09 <fizzie> Plus spend quite a lot of time copying. 13:28:35 <CakeProphet> fizzie: shouldn't have this problem with things like sprintf though right? 13:28:58 <fizzie> Well, uh, that depends on where you're sprintf'ing to. 13:29:12 <CakeProphet> another char * 13:29:17 <CakeProphet> which is then put in a string and returned. 13:29:24 <fizzie> It's a problematic function too, since it doesn't allocate storage. 13:29:46 <CakeProphet> >_> 13:30:02 <CakeProphet> oh right. 13:30:13 <CakeProphet> I need to specify the size for this string and stuff. 13:30:22 <CakeProphet> maybe I should just use the stringstream stuff. 13:30:57 <fizzie> Something like "char buf[256]; snprintf(buf, 256, "fmt", ...); return std::string(buf);" is safe enough; the string object will store a copy of the string inside it. 13:31:06 <fizzie> If you don't mind a maximum size limit, that is. 13:31:28 <CakeProphet> hmm 13:31:35 <CakeProphet> I might actually just.... 13:31:38 <CakeProphet> construct a string. 13:31:40 <CakeProphet> with += 13:31:41 <CakeProphet> .. 13:31:46 <fizzie> Uh, and of course 'snprintf' was added only in C99, I'm not sure what it's status in <cstdio> is. 13:32:25 <fizzie> std::string::operator+= is just fine, though it only accepts strings, char *s and individual chars. 13:32:36 <fizzie> You need that stringstream if you need to convert some integers or something. 13:32:49 <CakeProphet> no it's all strings. 13:32:56 <CakeProphet> and chars 13:32:57 <CakeProphet> and the like. 13:33:11 <CakeProphet> can I chain them together or do they need to be on one line? 13:33:15 <CakeProphet> er, individual lines. 13:34:28 <CakeProphet> yeah append returns a string& 13:34:31 <CakeProphet> so I can chain them 13:36:03 <fizzie> Yes; but do note that += is right-to-left associative, so if you write s += "foo" += "bar" that's s += ("foo" += "bar") which won't work; but the .append(...).append(...) chain is hokay. 13:36:19 <fizzie> Or I guess (s += "foo") += "bar" but that's butt-ugly. 13:41:12 <Ngevd> Question! 13:42:01 <Ngevd> In XSLT templates, would <xsl:for-each select=./*> do the subelements of the element the template selected? 13:43:19 <Patashu> I don't know because w3schools is down 13:43:40 <Ngevd> So it is! 13:43:57 <Ngevd> I'll assume it does 13:47:31 -!- erdosjr has quit (Quit: Page closed). 13:52:59 -!- BeholdMyGlory has joined. 14:00:42 <Patashu> Ngevd would you like to help me with this xslt (rather html?) problem 14:01:03 <Patashu> With this: http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog_if use this xslt http://pastebin.com/h8wTGXfX and this xml http://pastebin.com/Rv5wDpkm 14:01:10 <Patashu> what it's trying to do is stop the table every third card and start a new one 14:01:14 <Patashu> but it completely breaks and doesn't display anything 14:01:27 <Patashu> BUT if inside the conditional all you do is post text then it'll work fine 14:01:40 <Ngevd> Yeah, but first 14:01:49 -!- Ngevd has changed nick to Taneb|Hovercraft. 14:04:18 -!- tromp has left ("Konversation terminated!"). 14:05:04 -!- Taneb|Hovercraft has changed nick to Ngevd. 14:10:07 -!- Phantom_Hoover has joined. 14:13:20 <Ngevd> Got it, Patashu 14:14:51 <Patashu> What's the fix 14:15:05 <Ngevd> http://pastebin.com/tVvRxmjv 14:15:19 <Ngevd> The problem was that your XML was imbalanced 14:15:44 <Patashu> ... ! 14:16:02 <Patashu> Oh 14:16:07 <Patashu> Possibly he just made a fragment of it poorly 14:16:58 <Patashu> Hmm 14:17:01 <Patashu> So why are all the trues at the top 14:17:09 <Patashu> and not splitting the table 14:18:08 <Ngevd> They are splitting it up for me 14:18:28 <Patashu> What site are you using to test it 14:18:28 -!- CommaChameleon has joined. 14:18:33 <Patashu> Perhaps w3schools' is broken 14:18:40 <Ngevd> w3school's, in Firefox 14:18:49 <Patashu> ... 14:18:51 * Patashu opens firefox 14:18:51 <Ngevd> What's your browser? 14:19:59 <Patashu> Why why why why why 14:20:02 <Patashu> It works in firefox but not in chrome 14:20:06 <Patashu> Why why why why why 14:20:39 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:21:48 <Patashu> Hmmm. It won't let me use an XSLT with unbalanced tags inside of it 14:21:53 <Patashu> But what if I do want to print unbalanced tags? 14:22:21 <Ngevd> Then you are a bad person and you should feel bad 14:22:24 <Patashu> :( 14:23:42 <Patashu> So there's no way to do it? 14:24:15 <Ngevd> Not as far as I am aware 14:24:24 <Patashu> Huh 14:24:43 <Ngevd> Unless you are sneaky and use XSLT to make JavaScript that adds elements UNBALANCEDLY 14:24:55 <Patashu> OoOOooOO 14:24:58 <Patashu> that would be sneaky 14:25:09 <Ngevd> > 30 * 64 * 9 14:25:16 <Patashu> or maybe I could make a value-of that prints out the tag I want? 14:25:19 <Patashu> is that a thing 14:26:07 <Ngevd> I dunno 14:26:21 <Patashu> something like <xsl:value-of select="print(</tr>)"/> except I'm sure it's not called print 14:26:54 -!- elliott has joined. 14:28:01 <Patashu> <xsl:value-of select="substring('</tr>',1)"/> 14:28:07 <Patashu> ?????? 14:28:27 <CakeProphet> xslt? is that kind of like xpath? 14:28:41 <Patashu> it uses xpath 14:28:42 <Ngevd> Oddly, yes 14:29:03 <Patashu> <xsl:value-of select="substring('a',1)"/> works but <xsl:value-of select="substring('</tr>',1)"/> does not 14:29:06 <Patashu> do I need to escape part of it? 14:29:22 <Patashu> it doesn't like '<' 14:29:39 <Patashu> but &lt; is a-ok 14:29:46 <Ngevd> There's a reason for that 14:29:56 <elliott> I think that's XML not XSLT 14:29:58 <Patashu> <xsl:value-of select="substring('&lt;/tr&gt;',1)"/> 14:30:00 <Ngevd> That reason is it's BLOODY XML 14:30:05 <elliott> because 14:30:07 <elliott> <foo bar=">"> 14:30:09 <elliott> isn't ok 14:30:11 <elliott> you need to escape it 14:30:17 <Ngevd> XSLT is a subset of XML 14:30:25 <elliott> technically it's an XML schema 14:30:26 <elliott> I think 14:30:41 <Patashu> Wait 14:30:47 <Patashu> It likes &gt; but not &lt; 14:30:50 <Patashu> Why 14:31:44 <elliott> lol 14:32:00 <Patashu> try &#60; on for size! 14:32:10 <Patashu> darn that doesn't work either 14:32:22 <Patashu> yet, again, &#62; works ok 14:32:35 <Patashu> it's like it really reeally doesn't want me to embed html in html.............. 14:32:39 <Patashu> I wonder why that could be 14:34:24 <Patashu> Wait hmm 14:34:34 <Patashu> I think it's complaining about the -output- being non well formed, not the xml? I don't know 14:35:35 <elliott> Patashu: Why are you matching on that anyway 14:35:43 <elliott> XSLT is structural 14:35:46 <elliott> You can't just match random element tags 14:36:13 <Patashu> Basically my friend wants to output a table for every element in an xml, and that's easy 14:36:22 <Patashu> But he also wants to make it line break every three of these elements 14:36:24 <Patashu> That isn't 14:36:26 <Patashu> I am discovering 14:36:35 <Patashu> Well rather he wants the table to break one line every three elements 14:36:44 <Patashu> Which means unbalanced tags 14:36:52 <elliott> Output a table... so output it as XHTML? 14:36:55 <elliott> Rather than like 14:36:56 <Ngevd> Or just a <br/> 14:36:56 <Patashu> Yeah 14:36:57 <elliott> text in XML 14:36:58 <CommaChameleon> I'm actually here if you need me to explain anything <_< 14:37:07 <elliott> If you really want to do that, CDATA? 14:37:11 <CommaChameleon> Logged in as per your suggestion 14:37:13 <elliott> I'm sure XSLT has stuff for CDATA 14:37:13 <Patashu> Ooo 14:37:16 <elliott> CommaChameleon: sup 14:37:17 <Patashu> Hmmmmm 14:37:18 <elliott> `? welcome 14:37:23 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 14:37:53 <CommaChameleon> I'll briefly explain the motivation behind this; it might help you understand what I'm trying to do. 14:38:13 <CommaChameleon> I'm trying to prototype a card game, and I need to print out some cards on cardstock paper. 14:38:25 <Patashu> Lol 14:38:26 <Patashu> <![CDATA[</tr><tr>]]> works great 14:38:30 <Patashu> Except for one problem....... 14:38:33 <Patashu> It doesn't get parsed ever 14:38:40 <CommaChameleon> I want to put 9 cards on each page. 14:38:44 <Patashu> It worked well. Too well. 14:39:05 <elliott> OK well 14:39:06 <elliott> Patashu 14:39:12 <elliott> I suggest restructuring the program 14:39:15 <elliott> XSLT is functional, as I understand 14:39:17 <elliott> So what you instead want to do 14:39:19 <Patashu> Yep 14:39:20 <elliott> Is to transform a list of cards 14:39:24 <elliott> Into a list of (list of cards) 14:39:27 <elliott> Where each inner list has three elements 14:39:34 <elliott> Then, you can just produce a <tr> for each list in the outer list 14:39:38 <elliott> And not try and do it slapdash like this 14:39:40 <elliott> You can do it structurally 14:39:42 <Patashu> Great, how do you do that 14:39:55 <elliott> Do which part 14:39:57 -!- brisingr has left. 14:39:59 <elliott> Grouping into lists? 14:40:02 <Patashu> Yeah 14:40:04 <elliott> See SICP or whatever :P 14:40:32 <Patashu> XSLT isn't a very good programming language 14:40:46 <elliott> groups [] = []; groups [x] = [[x]]; groups [x,y] = [[x,y]]; groups (x:y:z:xs) = [x,y,z] : groups xs 14:40:56 <elliott> Convert to using "if" on the length rather than pattern matching 14:41:03 <CakeProphet> s.erase(remove_if(s.begin(), s.end(), isspace), s.end()); 14:41:03 <elliott> And whatever the equivalent of car/cdr is instead of that 14:41:05 <elliott> And you're done 14:41:05 <Patashu> Yes this is great, have you used XSLT before 14:41:09 <Ngevd> XSLT IS A PERFECTLY GOOD PROGRAMMING LANGUAGE 14:41:10 <CakeProphet> the best way to strip whitespace in a string in C++, obviously. 14:41:26 <elliott> Patashu: No, but I'm assuming you're asking for help on how to structure it in a way amenable to XSLT's paradigm 14:41:33 <elliott> Rather than asking me how to write your program entirely :P 14:41:34 <Patashu> ...But you haven't used XSLT 14:42:00 <elliott> Well, I wrote a few trivial test things in it once, and I know the general paradigm. 14:42:09 <Patashu> Me to 14:42:12 <elliott> I know that you won't get anywhere trying to generate HTML as text for some reason. 14:42:16 <Patashu> But something as simple as 'form groups of three' is stumping me 14:42:18 <elliott> And I know it's functional, so you will be able to process lists in it 14:42:32 <elliott> Patashu: http://fxsl.sourceforge.net/articles/FuncProg/2.html? 14:42:49 <Patashu> Oh shit 14:42:56 <Patashu> That's hardcode 14:43:08 <elliott> HardcoDe? :p 14:43:15 <Patashu> Oops 14:43:16 <Patashu> Hardcore 14:43:32 <elliott> Patashu: How good is XSLT's plain iteration? You can avoid transforming into groups if you can instead just increment the list index by three each time 14:43:43 <elliott> Then list[i], list[i+1], list[i+2] form the group 14:43:55 <Patashu> Ooh 14:43:56 <Patashu> that's a good idea 14:44:02 <Ngevd> XSLT is declerative, not functional 14:44:03 <Patashu> You can skip it if the position() isn't mod something 14:44:04 <CakeProphet> wow ::isspace is actually a thing. 14:44:25 <elliott> Patashu: You'll need to handle the case when the last or last two in that don't exist because the list is too short, but that should be easy 14:44:25 -!- copumpkin has joined. 14:44:34 <CakeProphet> s.erase(remove_if(s.begin(), s.end(), ::isspace), s.end()); 14:45:36 <CakeProphet> time to see if this works... 14:45:59 <Patashu> Aha 14:46:00 <Patashu> following-siblingSelects all siblings after the current node 14:46:03 <Patashu> so you can do something like 14:46:06 <Patashu> . for this element 14:46:37 <Patashu> following-sibling::[1] for the element after 14:46:38 <Patashu> then [2] 14:47:08 <elliott> Patashu: Right -- but you must do that modulo check. 14:47:13 <elliott> Or you'll have tons of duplication. 14:47:13 <Patashu> Yes 14:48:08 <elliott> People should be banned from commenting on the readability of Haskell in /r/programming. 14:48:15 <elliott> "When I see lines like contains im (Rect x y w h) = all and . map cols . rows $ im, I wish lisp gave some of the parenthesis back." 14:48:26 <elliott> Translation: "I don't know Haskell, but I expect to be able to read Haskell code." 14:48:29 <elliott> "Same here. I'd rather type a bit more and get something I can actually read again later without effort." 14:48:30 <Ngevd> There is no perfectly readable programming language 14:48:38 <Ngevd> Except for English 14:48:45 <elliott> Translation: "I don't know Haskell, but I don't want to write Haskell code, and actually what am I saying here, I am making no sense at all." 14:48:51 <Ngevd> And Constantinople 14:49:40 <Ngevd> And BIT 14:53:00 <CakeProphet> elliott: readability is for chumps 14:53:09 <CakeProphet> gb2 #python 14:53:48 <CakeProphet> There is NO 14:53:50 <CakeProphet> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14:54:05 <CakeProphet> G++:: not warranted to fit any particular purpose. 14:55:36 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:55:51 -!- CommaChameleon has left. 14:56:28 <CakeProphet> gaaaah 14:56:29 <CakeProphet> C++ is awful 14:57:18 <pikhq> elliott: To be fair, the function written there is a type error. 14:57:28 <elliott> It is? 14:57:36 <elliott> Oh 14:57:39 <elliott> No 14:57:40 <elliott> It isn't 14:57:42 <elliott> "contains" is the function name 14:57:44 <pikhq> :t rows 14:57:53 <pikhq> Effing lambdabot. 14:57:57 <elliott> pikhq: There is no standard rows function. 14:58:13 <pikhq> Oh, okay, so it merely looks effing weird. 14:59:05 <pikhq> I have no idea what rows would do to im :: (Rect Int Int Int Int) -> Bool, though. 15:00:52 <Ngevd> What does Rect do? 15:03:27 -!- augur has quit (Remote host closed the connection). 15:04:31 <elliott> pikhq: Uh. 15:04:36 <elliott> pikhq: That is clearly not the type. 15:04:46 <elliott> im is a parameter. 15:04:50 <elliott> Where the hell did you get it was of that type? 15:06:30 <pikhq> Nowhere in particular. 15:07:13 <elliott> pikhq: Then why do you think that is the type of im? 15:07:21 <elliott> im is obviously an image of some kind. 15:08:09 <pikhq> im is written as a function there. 15:08:22 <pikhq> "im (Rect x y w h) = ..." 15:08:30 <elliott> pikhq: "contains im (Rect x y w h)" says you're a moron 15:09:15 <pikhq> The quote as heavily ambiguous if you presume the person saying it is not necessarily using correct English. 15:09:30 -!- ais523 has joined. 15:09:33 <pikhq> It could also very well be "(Rect x y w h) = ..." 15:09:39 <elliott> So you assume the interpretation whereby the code makes no sense and the English makes nos enes, rather than the interpretation whereby both make sense? :P 15:09:58 <pikhq> Never underestimate someone's stupidity. 15:10:38 <pikhq> Especially when they've been quoted to discuss their stupidity. 15:10:48 <Phantom_Hoover> What are you guys doing? 15:11:57 <Ngevd> I'm working on XSLT S and K 15:12:18 <elliott> XSLTK 15:13:39 <Ngevd> Also, why can't the single transferable vote method be more representational than first past the post in my favour? 15:16:19 <elliott> That sentence collapsed around three words before it finished. 15:16:31 <Ngevd> It just needs more commas 15:16:48 <Ngevd> No wait, it is perfectly grammatically correct 15:17:09 <elliott> But it makes no senes. 15:17:11 <elliott> sense. 15:17:14 <Ngevd> It's just nigh-impossible to parse 15:18:27 <Phantom_Hoover> Ngevd, are you asking why STV isn't more representational than FPTP in order that you can win? 15:18:44 <elliott> That makes sense? 15:19:09 <Ngevd> No I was asking why the fact that STV is more representational than FPTP didn't make me win 15:19:27 <Phantom_Hoover> Yeah, that kind of thing. 15:19:40 <elliott> Would you have won in FPTP? :-P 15:19:44 <Ngevd> Probably 15:19:46 <Phantom_Hoover> Ngevd, so you are now Nathan van Doorn, nobody? 15:20:08 <Phantom_Hoover> Wait, that's not news. 15:20:14 <Ngevd> First you have my address 15:20:17 <Ngevd> And then my name 15:20:20 <Phantom_Hoover> (Do I need :P not to sound like a complete prick there.) 15:20:25 <Ngevd> And then my nobodiness! 15:20:38 <Ngevd> What is going on here!? 15:20:43 <Ngevd> And why don't I get the joke? 15:20:49 <elliott> His name is actually Ngevd van Doorn. 15:20:56 <elliott> He's just ashamed because that is the worst name. 15:21:53 <Phantom_Hoover> Ngevd, you are actually a martian. 15:22:06 <Ngevd> A martian with Dutch ancestry 15:36:02 -!- Jafet has quit (Quit: Leaving.). 15:40:40 <cheater> there were some dutch people in the restaurant today 15:40:47 <cheater> they sound so funny 15:41:08 <CakeProphet> hey what's ^X in emacs buffers? 15:41:08 <cheater> half the time they start a sentence with a deep voice and end it with a falsetto 15:43:20 <ais523> CakeProphet: it's a prefix to a huge number of commands 15:43:34 <CakeProphet> right but it's being displayed in my emacs buffer 15:43:36 <ais523> e.g. ^X^X is "swap mark and point", ^X^S is "save" 15:43:41 <ais523> oh, it means literal control-X 15:43:52 <CakeProphet> erm... what character is that? 15:43:55 <ais523> you can type it using C-q C-x 15:43:59 <ais523> and, umm, I don't know 15:44:27 <CakeProphet> can't seem to copypaste it. 15:44:35 <elliott> it's ^X 15:44:40 <elliott> consult your local ascii table 15:44:52 <elliott> ^x = x - '@' 15:44:54 <elliott> I think 15:44:57 <elliott> because ^@ is \0 15:45:09 -!- augur has joined. 15:45:24 <CakeProphet> wat 15:45:28 <elliott> what 15:45:33 <CakeProphet> x - '@'? 15:45:39 <CakeProphet> what does that mean? 15:46:08 <elliott> ^x = chr(ord(x) - ord('@')) 15:46:10 <elliott> happy? 15:46:25 <CakeProphet> yes that's better except what is x now 15:46:28 <CakeProphet> in ^X 15:46:30 <elliott> 'X' 15:46:32 <CakeProphet> okay. 15:46:34 <CakeProphet> ALL IS WELL 15:46:51 <CakeProphet> > chr(ord('X')-ord('@')) 15:46:57 <CakeProphet> >_> 15:47:04 <CakeProphet> guys 15:47:06 <CakeProphet> there's no lambdabot 15:47:34 <CakeProphet> Prelude Data.Char> chr(ord('X')-ord('@')) 15:47:36 <CakeProphet> '\CAN' 15:47:49 <cheater> \HAZ 15:48:41 <CakeProphet> okay so this is obviously just some kind of weird bug in my code then. 15:48:59 <fizzie> ^ord X 15:48:59 <fungot> 88 15:49:00 <CakeProphet> that causes me to accidentally overwrite parts of my stack. 15:49:09 -!- monqy has joined. 15:49:11 <fizzie> Unfortunately it can't subtract the 64 quite as easily. 16:00:06 -!- lambdabot has joined. 16:00:11 <elliott> Who to blame. 16:00:17 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. 16:00:45 <elliott> CakeProphet: Go on. 16:01:10 -!- Ngevd has quit (Quit: Leaving). 16:01:34 <CakeProphet> elliott: you can see my rant last night in the logs. 16:01:43 <elliott> CakeProphet: Rant about what. 16:02:04 <CakeProphet> elliott: Haskell dialecting. 16:02:23 <elliott> Can't you just summarise. 16:03:11 <CakeProphet> well, it was mostly just ideas regarding what to change. In particular the prelude/stdlib could be overhauled, also a number of new extensions could be attended (you could have your pattern synonyms and OCamlModules :P) 16:03:39 <elliott> ML modules, not OCaml modules. 16:03:41 <elliott> What is wrong with the Prelude? 16:03:49 <elliott> Some functions need generalising, but that's all I can think of. 16:03:59 <CakeProphet> also I was thinking of using some like agda mixfix for operators, with the possibility of 3-ary operators as long as the precedence relations follow some rules 16:04:02 <CakeProphet> elliott: yes, that. 16:04:40 <CakeProphet> ++ should be part of Monoid, Category should maybe be in Prelude by default. 16:04:49 <elliott> CakeProphet: It would be easier to go through the process for the next Haskell revision to get the few operators that need to be generalised. 16:04:59 <elliott> Especially since they're trying to increase the frequency of the standards a lot. 16:05:03 <CakeProphet> yes I'm sure it'll happen eventually. 16:05:17 <elliott> CakeProphet: You think creating a new dialect solo will be quicker? 16:05:20 <CakeProphet> no 16:05:23 <CakeProphet> it's not about that 16:05:27 <CakeProphet> that's a trivial thing. 16:05:40 <CakeProphet> the idea is to simply experiment with new syntax/semantics. 16:05:43 <elliott> Mixfix is additional complication; I'd rather remove if/then/else, which is the obvious motivating example for mixfix in Haskell. 16:05:51 <elliott> CakeProphet: You never said anything about that. 16:05:57 <CakeProphet> oh I hadn't even considered if/then/else 16:06:13 <CakeProphet> elliott: be patient sheesh I can't say everything at once. 16:08:09 <CakeProphet> elliott: I was just wondering if it's something you've ever considered. Perhaps there are some things you'd like to experiment with on top of Haskell? 16:08:30 <elliott> I thought you had ideas for semantic changes. 16:12:09 <CakeProphet> no mine were mostly syntax changes. 16:12:53 <CakeProphet> to improve the "Haskell as a roll-your-own DSL maker" aspect 16:13:15 <elliott> What syntactic changes, other than mixfix? 16:13:58 <CakeProphet> well that's the only concrete one I have so far. I was thinking it might be possible to include some sort of macro-like feature, perhaps using TH? I don't know it's not a complete thought. 16:14:23 <CakeProphet> but the mixfix in itself is quite useful. I wonder if you could use spaces as a valid infix symbol as long as some precedence rules were obeyed. 16:14:34 <CakeProphet> a b >- c = ... 16:14:35 <elliott> TH is already macros 16:14:48 <elliott> CakeProphet: Mixfix doesn't let you have two expressions without an intervening operator, certainly not. 16:14:59 <elliott> That would be basically impossibly ambiguous. 16:15:09 <CakeProphet> ah yes it would. 16:15:26 <CakeProphet> unless it were (a b c) (d e f) >- c 16:16:02 <CakeProphet> but that's still ambiguous... 16:17:03 <CakeProphet> I don't think I'm selling this idea very well. :P 16:20:19 <CakeProphet> it could easily turn into a project to make Haskell esoteric. :D 16:21:34 <elliott> You do not seem very sure of what you are doing. 16:22:06 <CakeProphet> elliott: and sure TH is already macros but new syntax-defining features could be allowed. 16:22:12 <CakeProphet> for example, what would stop circumfix operators? 16:22:25 <elliott> There aren't really any brackets left. 16:22:36 <CakeProphet> they don't need to be brackets necessarily. 16:22:46 <elliott> You need characters not used by existing infix operators. 16:22:52 <elliott> Or parsing becomes very, very difficult. 16:22:54 <CakeProphet> truth. 16:23:14 <CakeProphet> I assume by difficult you mean generally undecidable 16:23:19 <CakeProphet> because difficult parsing is no big deal. 16:24:17 <elliott> I don't think you realise how hard parsing Haskell is. 16:24:31 <elliott> Especially 98, which not a single implementation has ever implemented the syntax for correctly. 16:24:41 <CakeProphet> also you can free up some room perhaps by defining some of Haskell's syntax in itself. for instance, immediately with circumfix operators you have: 16:24:44 <CakeProphet> ( x ) = x 16:25:13 <elliott> Hooray, we've added a huge huge mound of syntactic complexity, but now we can define parentheses in Haskell despite this making no difference at all 16:25:33 -!- augur has quit (Remote host closed the connection). 16:25:35 <CakeProphet> FOR THE SHEER JOY OF SUCH 16:25:44 <CakeProphet> conquest is our goal. 16:25:48 <ais523> being able to define parentheses in INTERCAL would actually be useful 16:27:27 <CakeProphet> elliott: also the operator parsing would only have to be unambiguous within precedence trees. So that essentially if you have a ternary operator that uses the simples a and b, the only restriction would be that there can be no other operators that use a and b in the same precedence tree. 16:27:42 <CakeProphet> s/simples/symbols/ :| 16:28:52 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/kv91b/discussion_thread_promising_ftl_neutrino/ 16:29:17 -!- sebbu2 has changed nick to sebbu. 16:29:44 <elliott> Phantom_Hoover: So ais523 wrote a paper? :-P 16:29:59 <Phantom_Hoover> Um... 16:30:08 <ais523> elliott: is that in the same conversation as Phantom_Hoover's link? 16:30:11 <elliott> Clock synchronisation was basically his argument. 16:30:12 <elliott> ais523: Yes. 16:30:39 <elliott> Phantom_Hoover: "He merely points out that, if one were to take all these effects into account, it seems likely they would also somewhere mention going to all the trouble." -- I dunno about this, it seems like the whole "yes we've repeated it ten thousand times and made sure of these results for months so assume we're competent plz" would account for that. 16:31:27 <Phantom_Hoover> elliott, they published their analysis. If they left it out, that's entirely their fault. 16:31:36 <CakeProphet> elliott: also obvious Haskell needs Perl-like string interpolation syntax. 16:31:40 <CakeProphet> okay now I've lost you completely... 16:31:44 <CakeProphet> +ly 16:31:44 <elliott> CakeProphet: Several packages on Hackage provide that 16:31:49 <Phantom_Hoover> "yes we've repeated it ten thousand times and made sure of these results for months so assume we're competent plz" does not cut it in science. 16:32:00 <CakeProphet> elliott: via OverloadedStrings I guess? 16:32:05 <elliott> CakeProphet: TH. 16:32:07 <CakeProphet> ah 16:32:07 <elliott> Phantom_Hoover: They didn't say "HEY GUYS WE'VE PROVED FTL". 16:32:18 <elliott> Phantom_Hoover: They said "So, uhh, guys, this is very worrying". 16:32:29 <ais523> yep, their attitude was about right 16:32:30 -!- Sgeo|web_ has quit (Ping timeout: 252 seconds). 16:32:47 <ais523> it was pretty much "we have these results, they /can't/ be right but we've checked everything we could think of, please someone find the mistake in them or we'll go mad" 16:33:01 <Phantom_Hoover> elliott, yeah and? 16:33:01 <elliott> I dunno, I don't think they claim their paper was SCIENTIFIC FTL PROOF, it seems more like they're trying to start a dialogue to figure out wtf is going on, in which case exhaustively detailing every single precaution seems excessive at that point. 16:33:16 <elliott> Certainly they should reply to this but I don't think they were necessarily wrong or expected to mention it in the original report. 16:33:23 <Phantom_Hoover> Their analysis did not account for any measures taken to counteract these difficulties. 16:33:33 <Phantom_Hoover> Had they done so, they should have written it up. 16:33:51 <Phantom_Hoover> That they did not gives a clear source of the error. 16:34:24 <ais523> elliott: mentioning every single precaution is exactly what they should have done, because if you're asking for help finding a mistake, you should tell people where it isn't 16:34:46 <CakeProphet> I would actually be quite pleased if this eventually led to some overturning of some previous theoretical assumptions. 16:35:15 <elliott> ais523: fair enough 16:35:25 <elliott> Phantom_Hoover: I'm not saying that it shouldn't be pointed out 16:35:38 <elliott> I'm saying that "they didn't talk about this so clearly they didn't account for it" seems wrong. 16:36:15 <CakeProphet> I wonder how one would transmit data via (possibly) ftl neutrinos. 16:36:17 <Phantom_Hoover> elliott, the argument is that they didn't talk about it, and it's a very significant source of potential error, so it's more than probable that their measures taken against it were inadequate. 16:36:28 <elliott> Well, sure. 16:36:33 <Phantom_Hoover> CakeProphet, transmit loads of them, leave a fish tank at the other end. 16:36:48 <elliott> CakeProphet: Binary? 16:37:29 <ais523> elliott: it's surprising how similar the suggestion there is to mine (relativistic effects in moving the clock) 16:38:15 <CakeProphet> elliott: how does one represent 1 and 0? 16:38:28 <Phantom_Hoover> CakeProphet, neutrino vs. no neutrino? 16:38:32 <elliott> CakeProphet: Neutrino with a smiley face on it, neutrino with a frowning face on it? 16:38:47 <ais523> CakeProphet: BEER and SHNITZEL, obviously 16:38:52 <Phantom_Hoover> ais523, well come on, the important thing is that they calculated it. 16:39:21 <elliott> /ban ais523 16:39:29 <CakeProphet> Phantom_Hoover: this would require a standardized speed and assumes everything transmits perfectly and at the right time, is that practical? 16:39:42 <elliott> That's what TCP is for. 16:39:44 <CakeProphet> elliott: this approach sounds promising, however. 16:39:46 <ais523> elliott: I'm fighting the temptation to put Category:Shameful on that 16:40:06 <elliott> (That was at CakeProphet.) 16:40:13 <Phantom_Hoover> CakeProphet, how would you transmit data over a wire, it would require a standardised speed and assume that everything transmitted perfectly. 16:41:12 <CakeProphet> positive = 1, negative = 0, values are seperated by a moment of no voltage. :) 16:41:35 <ais523> CakeProphet: that's bipolar return-to-zero encoding, right? 16:41:50 <CakeProphet> uh, I have no idea what it's called I just improvised it. 16:41:54 <elliott> Your MOM is bipolar. Um, wait. 16:42:08 <ais523> Manchester encoding would work with neutrinos (it encodes 0 as low then high and 1 as high then low), its main issue is that it only gets half the bandwidth of some other schemes 16:43:04 <CakeProphet> Phantom_Hoover: still I see your point that it's possible 16:43:24 -!- augur has joined. 16:45:35 <CakeProphet> but then how do you transfer a chargeless particle across a wire? 16:46:21 <CakeProphet> I suppose you could just launch them into space assuming that's how they even work. 16:46:41 <ais523> CakeProphet: they're neutrinos, they hardly ever interact with anything 16:46:51 <ais523> you just send a mass of neutrinos directly at your neutrino detector 16:46:57 <CakeProphet> ah okay. 16:46:59 <elliott> `addquote <Phantom_Hoover> Guys no don't fly a Jem Hadar ship into Cardassian space to shoot things I played that mission in FreeSpace and it never works. 16:47:01 <HackEgo> 689) <Phantom_Hoover> Guys no don't fly a Jem Hadar ship into Cardassian space to shoot things I played that mission in FreeSpace and it never works. 16:47:07 <ais523> and hope that some of them get picked up 16:48:03 <CakeProphet> so yeah as a form of carrying an interplanetary information network, it's not a bad substrate. I imagine detectors and transmitters are pretty expensive though. 16:48:19 <elliott> Just run a really long copper wire to the moon. 16:48:25 <elliott> (I wonder if that would actually be possible.) 16:49:13 <CakeProphet> uh, maybe with some machinery inbetween. 16:49:26 <CakeProphet> to allow for revolution around the earth.. 16:49:27 <Phantom_Hoover> CakeProphet, you're talking about a system that literally implies time travel. 16:49:56 <Phantom_Hoover> Expense is not a huge concern. 16:50:22 <elliott> Phantom_Hoover: Oh my god I just had a flash vision of the future. 16:50:32 -!- Ngevd has joined. 16:50:37 <Ngevd> Hello! 16:50:49 <Phantom_Hoover> elliott, wow, they'll be really good at aiming them. 16:51:26 <elliott> Phantom_Hoover: The first high-frequency trading firm to use a neutrino connection instead of whatever they use now will become utterly rich. 16:51:38 <elliott> They'll be able to make market decisions before they happen. 16:51:45 <elliott> IT WILL BE THE BEST ECONOMIC COLLAPSE EVER 16:51:50 <CakeProphet> uh how does that work. 16:51:55 <elliott> CakeProphet: AWESOMELY 16:52:25 <Phantom_Hoover> elliott, it's quite involved, though. 16:52:48 <elliott> Phantom_Hoover: They'll just make really really fast specialised chips so that they can actually take advantage of the like zero nanoseconds it'd give them. 16:53:03 <Phantom_Hoover> You need a transceiver moving relative to you. 16:53:22 <elliott> PORTABLE TRADING STATION??? 16:53:22 <CakeProphet> but what if market information is transmitted on neutrinos? the net effect is that you have no advantage in a market that time travels. 16:53:41 <Phantom_Hoover> So you'd have to send a deep space probe at relativistic velocities with a neutrino detector and a high-energy particle accelerator on it. 16:53:41 <elliott> CakeProphet: Dude they got the neutrino thing installed specially. 16:53:49 <elliott> The rest of the system doesn't use it. 16:53:50 <CakeProphet> that doesn't make sense.. 16:53:58 <elliott> CakeProphet discovers that time travel makes no sense. 16:54:00 <Phantom_Hoover> CakeProphet, see what I just said. 16:54:08 <elliott> Phantom_Hoover: That still sounds cool, dude. 16:54:11 -!- Sgeo|web has joined. 16:54:26 <Phantom_Hoover> elliott, sure, but it'd be a while before it could be used for the stock market. 16:54:45 <elliott> Phantom_Hoover: omg what if in the future we have to specially code our networking stacks to work in a manner that respects causality. 16:54:54 <elliott> sleep(60ns); 16:55:19 <Phantom_Hoover> You get shot if you don't. 16:55:23 <CakeProphet> boring. 16:55:30 <CakeProphet> causality is for chumps. 16:55:31 <Ngevd> I don't think time travel happens when you exceed the speed of light 16:56:16 <CakeProphet> neutrino-speed could just be the limit. 16:56:17 <Phantom_Hoover> Yes, it does. 16:56:28 <CakeProphet> and light is just slower. what a loser. 16:56:32 <CakeProphet> stupid light particle. 16:56:53 <Ngevd> All that happens is you get very heavy and go faster than light 16:56:56 * CakeProphet publishes this as a Cakeprophet's theory of neutrino relativity. 16:56:58 <Phantom_Hoover> You fire a superluminal signal to someone moving with an inverse gamma of 0.5 relative to you. 16:57:17 <Phantom_Hoover> Sorry, wait. 16:57:24 <CakeProphet> dude what if everything is neutrinos 16:57:25 <CakeProphet> and like 16:57:27 <Ngevd> So you'll be there before they see you 16:57:29 <Phantom_Hoover> You and a friend pass each others in space. 16:57:29 <CakeProphet> that's how we time travel forward 16:57:37 * CakeProphet is always time travelling. 16:57:39 <Phantom_Hoover> You fire said signal ten seconds after passing each other. 16:58:03 <Phantom_Hoover> Your friend receives it five seconds into their flight. They send a reply. 16:58:09 <CakeProphet> I FEEL THE NEUTRINOS I HAVE THE POWER. 16:58:13 * CakeProphet disappears. 16:58:20 <Phantom_Hoover> The reply arrives 2.5 seconds into your flight. 16:59:55 -!- augur has quit (Remote host closed the connection). 17:00:59 <CakeProphet> Phantom_Hoover: so? 17:01:10 -!- SgeoN1 has quit (Read error: Connection reset by peer). 17:01:23 -!- SgeoN1 has joined. 17:01:44 <Phantom_Hoover> CakeProphet, so you're getting the reply to the original message 7.5 seconds before you sent it. 17:02:32 <CakeProphet> you seem to have just made the assumption that neutrino = time travel 17:02:40 <CakeProphet> in setting up a problem to demonstrate that neutrino = time travel 17:02:45 <CakeProphet> and how that makes no sense. 17:02:51 <ais523> Oracle vs. Google: Oracle are arguing that a leaked internal Google email was made public by Google because you can find it via a Google search 17:02:58 <Phantom_Hoover> CakeProphet, um, how? 17:03:14 <CakeProphet> Phantom_Hoover: by not explaining why the time travel occurs. 17:03:23 <Phantom_Hoover> CakeProphet, that's what I /explained/. 17:03:29 <Sgeo|web> So, those phpMyAdmin login pages are all deliberately public? 17:03:39 <CakeProphet> Phantom_Hoover: ? 17:03:40 <ais523> <Oracle's lawyers> Third, Google waived the privilege by affirmatively publishing the ostensibly privileged information on the google.com search page and directing members of the public to the document’s contents. 17:04:42 <Sgeo|web> Because Google special-cased their search engine when it comes to anything relating to Google. When you type Google into Google, a human hand-tweaked the result. 17:05:04 <Sgeo|web> This way, the Internet won't explode. 17:05:13 <CakeProphet> Phantom_Hoover: picture this from the point of view of someone who doesn't understand physics. :P 17:05:20 <CakeProphet> and then read what you said. 17:05:28 <Phantom_Hoover> CakeProphet, OK, fine. 17:05:38 <Phantom_Hoover> Assume the neutrinos, for sake of calculation, move at 2c. 17:05:45 <CakeProphet> okay 17:06:06 <Phantom_Hoover> I presume you know that time dilation is a perfectly well-established consequence of relativity? 17:06:11 <CakeProphet> yes 17:06:40 <Phantom_Hoover> And that two observers moving at constant speed will each see the other moving slower? 17:07:25 <CakeProphet> erm, no. 17:08:45 <CakeProphet> ah, yes. 17:09:26 <Phantom_Hoover> OK, so you pass each other while moving — wait, neutrino speed is irrelevant here ignore that bit. 17:09:38 <Phantom_Hoover> Just assume that the signal is instant; it's the same anyway. 17:10:33 <CakeProphet> Time for a pretty good time-travel joke:The bartender says "We don't serve faster-than-light particles in here."A neutrino goes into a bar. 17:10:40 <Phantom_Hoover> -_- 17:10:41 <CakeProphet> from wired.com 17:10:49 <CakeProphet> A+ 17:11:17 <elliott> "Linux Guru Hans Reiser Demands New Murder Trial" 17:11:24 <elliott> How... does he expect to win this one 17:18:00 <ais523> hey, we have another BF derivative on the wiki! 17:18:26 <Phantom_Hoover> FFS, the recent changes page is broken *exclusively* for me. 17:18:26 <ais523> seems to be a mix of a bunch of other BF derivs, + atomic semaphores 17:18:39 <Phantom_Hoover> "Requested Range Not Satisfiable 17:18:39 -!- elliott has quit (Read error: Connection reset by peer). 17:18:39 <Phantom_Hoover> None of the range-specifier values in the Range request-header field overlap the current extent of the selected resource" 17:18:40 <ais523> Phantom_Hoover: go into your preferences, toggle the setting of enhanced recent changes 17:18:46 <ais523> ah, hmm, probably not that 17:18:51 -!- elliott has joined. 17:18:56 <elliott> lol batteries 17:19:05 <ais523> it seems that your browser is, umm, asking for entries past the end of the page, or something 17:19:08 <Phantom_Hoover> ais523, I doubt it, given that it remains regardless of whether or not I am logged in. 17:19:42 <elliott> Phantom_Hoover: hapepns a lot 17:19:43 <elliott> append ? 17:19:45 <elliott> to the url 17:19:48 <elliott> i'm assuming esowiki 17:19:54 <elliott> just change the uri and it works 17:20:02 <elliott> (diff) (hist) . . N Brains‎; 17:13 . . (+2,867) . . 24.8.132.122 (Talk) (I wrote an esolang! It sucks....) 17:20:05 * elliott prepares to a gree. 17:20:06 <elliott> agree. 17:20:13 <elliott> Ah yes, a BF derivative. 17:20:22 * tiffany should totally write a classic server 17:20:26 <Ngevd> At least the creator is honest 17:20:46 <Ngevd> tiffany, Minecraft? 17:20:50 <tiffany> yes 17:20:59 <Phantom_Hoover> tiffany, yes, so that all 0 people who still play classic can join in. 17:21:29 <tiffany> it's not something about people playing it, I've just never implemented a protocol before 17:21:36 <Ngevd> elliott, whoever's making the other elliottcraft, how are the elliotcrafts going on? 17:21:36 <tiffany> except for a tiny bit of http in lua 17:21:42 <Phantom_Hoover> "{ if the current cell is not zero, jump past the matching } 17:21:42 <Phantom_Hoover> } if the current cell is zero, jump back to the matching { 17:21:42 <Phantom_Hoover> { if the current cell is not zero, jump past the matching } 17:21:42 <Phantom_Hoover> } if the current cell is zero, jump back to the matching {" 17:21:42 <elliott> ais523: How's Elliottcraft going on 17:21:54 <ais523> it isn't, really, I have too many other things to do 17:21:56 <Phantom_Hoover> This is the actual most shameless addition I've seen in a BF derivative." 17:22:00 <ais523> I think I posted a spec somewhere for the language 17:22:08 <ais523> and then decided I was too lazy to implement it 17:22:49 <elliott> http://esolangs.org/w/index.php?title=Emo&curid=3331&diff=24658&oldid=23606 lol 17:22:51 <elliott> fairly turing complete 17:23:14 <Ngevd> I'm going to express the opinion that Geom isn't Turing-Complete 17:23:23 <Ngevd> Here I go... 17:23:34 <Ngevd> IT IS MY OPINION THAT GEOM IS NOT TURING COMPLETE 17:23:52 <elliott> AAAAAAAAAAAAAAAAAAAAUUUUUUUUUUUUUUUUUUUUUUUUUUUUGH 17:24:36 <Ngevd> Now to edit the wiki 17:25:29 <Phantom_Hoover> elliott, fun fact, half the Norwegian parliament actually did turn up just before I made that Symbol edit. 17:25:36 <elliott> X-D 17:25:38 <elliott> What. 17:26:10 <Phantom_Hoover> Well, 'half' is an exaggeration. 17:26:14 <Phantom_Hoover> There were like ten of them. 17:27:02 <Phantom_Hoover> They were being shown around the school for some reason. 17:27:28 <Ngevd> In... Edinburgh!? 17:27:35 <Phantom_Hoover> I offered to help but apparently the fact that I have talked to a Norwegian on the internet does not qualify me to be the Norwegian ambassador. 17:28:04 <cheater> social fail 17:28:24 <cheater> you should've told them you know where all the lutfisks are hidden 17:29:13 <Vorpal> Phantom_Hoover, why were they there? 17:29:19 <Phantom_Hoover> Vorpal, I don't know. 17:29:33 <Vorpal> oh okay 17:29:37 <Phantom_Hoover> cheater, that would regrettably have made me look like an unfunny idiot. 17:29:55 <cheater> why is that regrettable? 17:30:17 <cheater> also, why shove blame? 17:30:18 <Phantom_Hoover> Because then I'd look like you. 17:30:34 <cheater> i find this hard to believe 17:30:51 <cheater> do you have a neckbeard? 17:31:01 <cheater> (or facial hair) 17:31:35 <elliott> That's your most notable feature? 17:31:41 <Phantom_Hoover> No; I am able to operate a razor. 17:32:05 <cheater> elliott: no, i guess my eye patch 17:32:19 <elliott> Wow, you really have the douchebag look going. 17:33:02 <cheater> why are you calling me names? that's not nice 17:33:14 <Phantom_Hoover> cheater's feelings are hurt elliott :( 17:33:20 <elliott> Phantom_Hoover did it first. Punch him instead. 17:33:21 <Phantom_Hoover> Bullying is bad you are bad. 17:33:47 <elliott> Phantom_Hoover: I'm sorry but I can't jeopardise my year-long campaign to terrorise him and everyone he knows. 17:33:55 <elliott> The stakes are simply too high. 17:34:05 <Phantom_Hoover> elliott, bad bully bad bad 17:34:13 <elliott> I regret everything. 17:34:52 <Phantom_Hoover> Yes now you must kill yourself it is the only option. 17:34:59 <elliott> Why does this always happen to me. 17:35:15 <elliott> I set out to destroy someone's life, then I start feeling guilty and someone tells me I have to kill myself. 17:35:23 <elliott> Reincarnation is the worst when you're a sociopath, let me tell you. 17:35:32 <elliott> You have to start faking social relations ALL OVER AGAIN. 17:36:08 <Ngevd> And then you get mistaken for someone who kicked someone else in the face 17:36:21 <elliott> Yes. 17:36:35 <elliott> I'll have to start actually kicking more people in the face to compensate. 17:36:37 <elliott> Such is my sad, sad life. 17:37:24 <Phantom_Hoover> Ngevd, so elliott did not in fact kick your friend in the face? 17:37:28 <Ngevd> No 17:37:37 <Ngevd> Turns out that was a different Elliott Hird 17:37:38 <elliott> Ngevd: I'm available for face-kicking services if they want the real deal. 17:37:52 <elliott> OK I refuse to believe there is another Elliott Hird in the universe. 17:38:02 <Phantom_Hoover> I... 17:38:04 <Ngevd> There're at least four Nathan van Doorns 17:38:19 <Phantom_Hoover> No, I refuse on absolute terms to believe that there are two Elliott Hirds in Hexham. 17:38:27 <Ngevd> One of them moved away 17:38:41 <elliott> Phantom_Hoover: I think I am literally living inside a film. 17:38:49 <elliott> The plot kicked off with Ngevd coming here. 17:38:59 <Vorpal> Phantom_Hoover, yes that is unlikely. Maybe somewhere else in UK though? 17:39:16 <elliott> Vorpal: Dude the spelling of my first name is like the least conventional. 17:39:18 <fizzie> So our Elliott "Face-Kicker" Hird did not actually kick anyone in the face? 17:39:43 <Phantom_Hoover> Then it turns out that Hexham is the centre of the coming apocalypse, precipitated by a cross-time war waged with neutrinos? 17:39:46 <Ngevd> elliott, it has been conjectured that I am the central character in the real version of the Truman Show 17:39:50 <elliott> foldl f z t = appEndo (getDual (foldMap (Dual . Endo . flip f) t)) z 17:39:52 <elliott> Ah, naturally. 17:39:58 <elliott> Ngevd: But you're boring. 17:40:02 <elliott> I'm a better main character. 17:40:16 * CakeProphet is the best. 17:40:18 <Ngevd> You have a friend deficiency. 17:40:21 <Phantom_Hoover> Ngevd will be a great warrior with his tinfoil lightsabre. 17:40:27 <Ngevd> I, on the other hand, am famous 17:40:42 <Ngevd> Phantom_Hoover, aluminium foil and wrapping paper! 17:41:03 <Phantom_Hoover> (I will use a tinfoil lightépée because sabres are stupid.) 17:41:30 <Ngevd> They're really lighteightthstaffs 17:41:44 <elliott> Lightépée. 17:41:45 <elliott> I... 17:42:06 <elliott> Ngevd: Surely lighteighthstaffs. 17:42:29 <Phantom_Hoover> It's like a lightfoil except more manly. 17:42:41 <Ngevd> They're really lighteightthstaffs [sic] 17:42:42 <fizzie> Lightkatanas Are Just Better. (TVtropes.) 17:44:23 <CakeProphet> lightbardiche is the best. 17:44:56 <Phantom_Hoover> CakeProphet, do you know how to use a bardiche? 17:45:13 <CakeProphet> yes I am a trained expert and medieval revivalist 17:45:26 <Ngevd> I'm more of a bohemian earspoon fan 17:45:37 <Ngevd> A lightbohemian earspoon 17:45:42 <CakeProphet> more into Neutral Milk Hotel myself. 17:45:52 <CakeProphet> lightneutralmilkhotel 17:46:19 <elliott> Bohemian Earspoon. 17:46:25 <elliott> That's a good name for anything. 17:46:26 <Ngevd> It exists! 17:46:48 -!- augur has joined. 17:46:56 <Phantom_Hoover> Ngevd, we know, we have Google. 17:46:59 <CakeProphet> Ngevd: so does Neutral Milk Hotel. 17:47:05 <CakeProphet> but only people with hipster cred know about them. 17:47:43 -!- da_petcu21 has joined. 17:47:48 <elliott> :t mapM_ 17:47:49 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m () 17:47:59 <elliott> CakeProphet: That was the most embarrassing thing you have ever said. 17:48:17 <CakeProphet> elliott: almost as embarassing as looking up the type of mapM_ 17:48:25 <CakeProphet> :t id 17:48:26 <lambdabot> forall a. a -> a 17:48:27 <elliott> CakeProphet: I was checking if it was (a -> m b) or (a -> m ()). 17:48:32 <CakeProphet> UNREASONABLE 17:48:34 <elliott> Which is not at all obvious; I was assuming the latter. 17:48:58 <CakeProphet> THAT MAKES NO SENSEl. 17:49:53 <CakeProphet> elliott: hey some times I'm not serious. 17:50:29 <CakeProphet> the level of meta-irony can escalate infinitely. 17:51:39 <CakeProphet> you guys know what are cool? 17:51:43 -!- elliott_ has joined. 17:51:45 <CakeProphet> violins. 17:51:47 <elliott_> Irony of arbitrary levels is indistinguishable from sincere stupidity. 17:52:00 <Phantom_Hoover> *Sufficiently advanced irony 17:52:08 <elliott_> mapStreamM f s = s >>= \x -> Execute (liftM return (f x)) 17:52:12 <elliott_> ais523: help, I'm really confused 17:52:19 <ais523> elliott_: at what? 17:52:24 <elliott_> ais523: that function I just wrote 17:52:27 <elliott_> :t liftM return 17:52:28 <lambdabot> forall a1 (m :: * -> *) (m1 :: * -> *). (Monad m, Monad m1) => m1 a1 -> m1 (m a1) 17:52:34 <ais523> oh, I doubt I can help 17:52:38 <elliott_> it works fine, it just augh 17:54:32 <CakeProphet> elliott: sincere of indistinguishable levels is arbitrary from stupidity irony. 17:54:52 <elliott_> CakeProphet: What you just said is also indistinguishable from sincere stupidity :P 17:55:20 <CakeProphet> therefore I am an indistinguished master of irony of arbitrary levels. 17:55:45 -!- elliott has quit (Ping timeout: 248 seconds). 17:55:56 <Phantom_Hoover> CakeProphet, how irony would you say you are? 17:56:22 -!- elliott__ has joined. 17:57:24 <CakeProphet> Phantom_Hoover: I am irony of such that I am actually not ironic. 17:57:53 <elliott__> Thing I just typed instead of MonadTrans: MonadTrams. 17:57:56 <elliott__> Phantom_Hoover: What was that newspaper? 17:58:10 <Ngevd> There are a finite number of Befunge-93 programs, what with it being a finite state automaton 17:58:27 <CakeProphet> is there? 17:58:30 <Phantom_Hoover> elliott__, what newspaper? 17:58:36 <elliott__> Trams. 17:58:58 <CakeProphet> Ngevd: there would have to be a certain length of program string that cannot be reached, I would think...? 17:58:58 <Phantom_Hoover> The Edinburgh Evening News? 17:59:10 <Ngevd> 80x25, as per Befunge-93 spec 17:59:14 <CakeProphet> ah okay. 17:59:17 <CakeProphet> then yes. 17:59:23 <elliott__> Phantom_Hoover: Yes. 17:59:51 <CakeProphet> Ngevd: so what's your point? 18:00:10 <Ngevd> I just felt like making this channel on topic for a change 18:00:11 * CakeProphet dons his frumpish shades. 18:00:20 <CakeProphet> I see. 18:00:33 -!- elliott_ has quit (Ping timeout: 248 seconds). 18:00:50 <CakeProphet> Ngevd: is arbitrary language design on topic? 18:01:14 <Phantom_Hoover> "Cops probe as body found in woods" 18:01:14 <Phantom_Hoover> Guys............................ 18:01:25 <CakeProphet> .. 18:01:26 <CakeProphet> lol 18:01:32 <CakeProphet> I wonder what they're probing now. 18:01:43 <Ngevd> Arbitary esoteric programming language design is on topic 18:02:14 <CakeProphet> Ngevd: http://pastebin.com/XEPK27qH 18:02:21 <CakeProphet> an unfinished spec of an unfinished language. 18:02:25 <CakeProphet> not very esoteric I guess... 18:02:37 <Phantom_Hoover> elliott__, here, have a tram story: http://edinburghnews.scotsman.com/news/Tram-system-may-mean-city.6844650.jp 18:02:52 <CakeProphet> once I finish <insert huge list of unfinished and neverending tasks> then I will finish that. 18:03:09 <elliott__> Phantom_Hoover: Damn those trams. 18:03:16 <Phantom_Hoover> Dams. 18:03:16 <elliott__> The Lone Haranguer, 18:03:17 <elliott__> 29/09/2011 12:10:18 18:03:17 <elliott__> Councillor Gordon Mackenzie, the city's transport leader, should have said: "It is important that my mental issues are addressed." 18:03:26 <elliott__> "Aye it aw has tae be managed otherwise we will end up in a traffic jam and no able tae breathe when we gang oot frae a drink. If you live in Leith you get an added bonus all your air will be poisioned twice wance by the polluting cars and lorries and a nuder time by the biodiversity Power Station thats before Seafield get going tae skin you oot. A nice wee haaar in January for aboot 5 days and there will have tae mass evacuations from your £250k+ fl 18:03:26 <elliott__> ats awfy business." 18:03:27 <elliott__> Phantom_Hoover: Um. 18:03:30 <elliott__> Is this how Scots talk. 18:03:38 <Phantom_Hoover> Not in my experience? 18:03:47 <elliott__> Is that guy imitating a Scot or something. 18:04:05 <Ngevd> > 95^2000 18:04:06 <lambdabot> 280033879935519460895212800423715491430640102631470924552793056191124304099... 18:04:13 <Phantom_Hoover> Well um the really obnoxious ones who think that pronunciation and spelling are the same do but I haven't actually /met/ any of them. 18:04:24 <Ngevd> That's how many distinct befunge-93 programs there are 18:04:27 <Phantom_Hoover> "Is this the beginning of the end for Edinburgh. Now that Edinburgh has lost all credibility because of the tram, I would not think for one moment that major investors will give Edinburgh City a first or any look for that matter in future investment. Now the shelf will be laid bare, how do they propose to service the city. Edinburgh was a financial center of excellence, now who in there right mind would set up shop with 18:04:27 <Phantom_Hoover> the CEC parasites at the helm of their Money Vortex. Edinburgh`s Inner City is Dead City, out of town is Thriving and Alive. Just turn west at the City Bypass and with not a tram insight, once you leave the city bypass its FREEDOM in the KINGDOM of SCOTLAND. As the saying goes WEST is BEST. Dump the Duds." 18:04:30 <Phantom_Hoover> Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 18:05:32 <Phantom_Hoover> Hmm, how is Fife a kingdom then? 18:08:31 <CakeProphet> "I like 'em brown, yellow, Puerto Rican and Haitian, 'name is Phife Dawg from the Zulu Nation." 18:08:48 <CakeProphet> --Phife Dawg, from the Zulu Nation 18:19:10 -!- brisingr has joined. 18:24:54 <elliott__> Aww, I think my model is too restricted. :/ 18:25:01 <CakeProphet> I have no fucking clue what is wrong with this program. 18:25:04 <CakeProphet> I hate C++ 18:37:34 <Ngevd> Is it because you associate C++ with your father? 18:37:44 <CakeProphet> Ngevd: http://www.deviantart.com/#/d4b7rdp 18:38:31 <Phantom_Hoover> CakeProphet 18:38:34 <Phantom_Hoover> what have you becoe 18:38:37 <Phantom_Hoover> become 18:39:28 <CakeProphet> I have always been the person that I am. 18:40:05 <CakeProphet> you may associate me with whatever contrived social group you wish, it's probably not accurate. 18:40:41 <Phantom_Hoover> See 18:40:42 <Phantom_Hoover> this 18:40:45 <Phantom_Hoover> is the kind of thing 18:40:52 <Phantom_Hoover> that I am talking about. 18:40:54 <CakeProphet> what? 18:40:55 <CakeProphet> explain. 18:42:26 <CakeProphet> perhaps I keep a collection of bookmarked deviafntart pages 18:42:38 <CakeProphet> to link someone when I don't feel like properly following their comment up. 18:43:37 <CakeProphet> perhaps I don't and it was mere chance. 18:44:04 <CakeProphet> perhaps I surf Deviantart regularly in search for super kawaii Pokemon fanart. 18:45:08 <Phantom_Hoover> The last one. 18:45:25 <elliott__> You bookmarked something apparently posted 19 hours ago? 18:45:27 <elliott__> Fast. 18:46:49 <CakeProphet> yeah dude. 18:47:09 <CakeProphet> Phantom_Hoover: actually it was the second option. 18:47:44 -!- Ngevd has quit (Quit: Doctor Who). 18:48:20 <elliott__> Phantom_Hoover I'm crushed by despair because I can't implement this operation. 18:48:27 <Sgeo|web> Doctor Who's not on now right? 18:48:36 <CakeProphet> elliott__: I'm crushed by despair because my seemingly correct C++ code gives garbage output. 18:48:42 <elliott__> Sgeo|web: Dude you're in a different country. 18:50:09 <Sgeo|web> I get BBC America... 18:50:59 <elliott__> You mean the channel with a completely different schedule to any of the domestic channel and various delays? 18:51:00 <ais523> Ngevd is British, I think 18:51:15 <ais523> and there's no particular reason why BBC America would synchronize to the BBC in the UK 18:51:17 <elliott__> ais523: "I think" -- come on, you can't forget the person who IS ALSO FROM FUCKING HEXHAM 18:51:25 <elliott__> You cannot forget this fact because it is the most shocking fact. 18:51:26 <ais523> elliott__: that doesn't mean he's British, technically speaking 18:51:36 <ais523> just that he was currently in England a few days ago 18:51:43 <elliott__> It was weeks ago 18:51:47 <ais523> that too 18:52:09 <elliott__> Wow, xfce-panel is really unstable on this... Ubuntu beta ;P 18:52:11 <CakeProphet> `word 50 18:52:12 <elliott__> s/;/:/ 18:52:14 <HackEgo> delinndt prebionimiulla che antnevorsan yallir terlidulha inenatioseri ke unly flchris deri herces garieding mel maxallagol dov jthriges yar breezed kudisj raltpassan oomber ego clandpo hymsd dhik pre vo searrer comen hinesordritheddryetheummsqmenters abacan esan irdellan er fwengparobalsperidabse kovskya kwaranive heldictebkoth 18:54:54 <elliott__> Prebionimiulla is good. 18:58:42 -!- esowiki has joined. 19:04:43 -!- esowiki has joined. 19:05:19 -!- esowiki has joined. 19:08:35 -!- glogbot has joined. 19:10:34 -!- lambdabot has quit (Ping timeout: 260 seconds). 19:11:41 -!- Gregor` has joined. 19:11:41 -!- Gregor has quit (Ping timeout: 255 seconds). 19:12:45 -!- HackEgo has quit (Ping timeout: 252 seconds). 19:12:45 -!- HackEgo has joined. 19:13:01 <Vorpal> elliott__, come on you do random strings too 19:13:16 <Vorpal> also what is up with the __? Are you the other elliott hird from Hexham? 19:13:18 <Vorpal> ;P 19:14:24 <elliott__> Yes. 19:16:19 -!- esowiki has joined. 19:17:10 -!- esowiki has joined. 19:18:06 -!- esowiki has joined. 19:18:06 -!- glogbot has joined. 19:24:42 -!- lambdabot has joined. 19:30:45 -!- oerjan has joined. 19:31:41 <elliott__> hi oerjan 19:32:29 <elliott__> hi hi eih ih ihe ihe 19:32:29 <oerjan> ho hoh oh 19:33:26 -!- plycke has joined. 19:34:46 -!- plycke has quit (Excess Flood). 19:34:46 <elliott__> rip plycke 19:34:46 <oerjan> eek another dane 19:34:46 <elliott__> i think its spam bot 19:34:46 <elliott__> or at least 19:34:46 <elliott__> someone came in and exsessed esodesdflooded 19:34:46 <elliott__> before 19:34:46 <elliott__> a while 19:34:46 <elliott__> ago 19:34:46 <oerjan> oh 19:37:41 <Vorpal> heh, witcher 2 2.0 patch is over 750 MB large. 19:37:43 <Phantom_Hoover> Frozen Synapse just segfaulted on me. 19:37:52 <Phantom_Hoover> *sigh* 19:37:59 <Vorpal> Phantom_Hoover, ouch. Frozen Synapse is an awesome game btw. 19:38:02 <Vorpal> and so is Trine IMO 19:38:07 <Phantom_Hoover> I don't know why I even bothered; nothing works on this system. 19:38:14 <Vorpal> Phantom_Hoover, heh. 19:38:46 <elliott__> Phantom_Hoover: Try it again? :-P 19:40:03 <Vorpal> Phantom_Hoover, oh you had intel? Forget trine then. Won't work 19:40:03 <Phantom_Hoover> elliott__, it's on startup. 19:40:03 <elliott__> Phantom_Hoover: You only tried it once? 19:40:03 <Vorpal> Phantom_Hoover, try it two times on startup at least 19:40:03 <Phantom_Hoover> I've tried it three times now. 19:40:03 <elliott__> Try it FIFTY. 19:40:03 <Vorpal> oh 19:40:03 <elliott__> Phantom_Hoover: gdb? 19:40:03 <Vorpal> Phantom_Hoover, what is the backtrace? Anyway report a bug 19:40:03 <elliott__> report a bug <-- lol 19:40:03 <Phantom_Hoover> Program received signal SIGSEGV, Segmentation fault. 19:40:03 <Phantom_Hoover> 0xf69d8936 in glGenLists () from /usr/lib32/libGL.so.1 19:40:03 <elliott__> Phantom_Hoover: bt 19:40:03 <Phantom_Hoover> Great, it's a graphical thing 19:40:03 <Vorpal> ah 19:40:03 <elliott__> bt 19:40:03 <Phantom_Hoover> There goes all hope of it ever working. 19:40:03 <Phantom_Hoover> bt? 19:40:03 <Vorpal> prints backtrace 19:40:03 <elliott__> bt 19:40:03 <Phantom_Hoover> #0 0xf69d8936 in glGenLists () from /usr/lib32/libGL.so.1 19:40:03 <Phantom_Hoover> #1 0x08290166 in Terrain::Terrain() () 19:40:03 <Phantom_Hoover> #2 0x081ebea9 in Encounter::Encounter() () 19:40:03 <Phantom_Hoover> #3 0x08281fc3 in PsychoffManager::PsychoffManager() () 19:40:03 <Phantom_Hoover> #4 0x0828683d in ConcreteClassRep<PsychoffManager>::create() const () 19:40:03 <Phantom_Hoover> #5 0x0819ab00 in SimChunk::initChunkMappings() () 19:40:03 <Phantom_Hoover> #6 0x082190ab in initGame(int, char const**) () 19:40:03 <Phantom_Hoover> #7 0x082192f0 in DemoGame::main(int, char const**) () 19:40:06 <Phantom_Hoover> #8 0x083558e7 in main () 19:40:06 <Vorpal> don't you know any gdb? 19:43:06 -!- esowiki has joined. 19:43:06 -!- glogbot has joined. 19:43:06 -!- glogbackup has left. 19:43:13 <CakeProphet> okay so... in C++ 19:43:23 <CakeProphet> when you declare a variable with default auto storage. 19:43:25 <Vorpal> NOOOO! NOT THE C++! 19:43:26 <elliott__> Vorpal: The most professional techer. 19:43:28 <elliott__> teacher. 19:43:33 <elliott__> Expert in thick adults, distinctions, fruit pickers. 19:43:37 <CakeProphet> and return the result of that variable. 19:43:49 <CakeProphet> is a copy made? 19:43:51 <olsner> the result of a variable? 19:44:06 -!- brisingr has left. 19:44:17 <Vorpal> yes presumably as in executing the bit pattern in the variable in question using some inline asm and jumping 19:44:17 <CakeProphet> olsner: the, contents, if you will. 19:44:30 <Vorpal> (probably not) 19:44:43 <CakeProphet> I'm just TRYING TO FIGURE OUT WHERE THIS GARBAGE IS COMING FROM AUUUGH 19:45:00 <olsner> the garbage comes from your code, obviously :) 19:45:46 <elliott__> CakeProphet: are you like 19:45:46 <Vorpal> CakeProphet, you mean like this: 19:45:49 <Vorpal> int foo = 1; 19:45:50 <elliott__> returning a reference to a local variable 19:45:50 <elliott__> or sth 19:45:52 <Vorpal> return foo; 19:45:52 <elliott__> because that isn ot ok 19:45:53 <elliott__> and if you do 19:45:54 <Vorpal> or what? 19:45:55 <elliott__> Blah foo; 19:45:56 <elliott__> return foo; 19:46:01 <elliott__> and Blah allocates like storage on the stack or whatever 19:46:04 <elliott__> that's also not ok 19:46:20 <CakeProphet> elliott__: that's if you're returning a reference though correct? 19:46:23 <Vorpal> elliott__, that works in C for a struct? 19:46:28 <CakeProphet> not just returning the value. it makes a copy then right? 19:46:36 <elliott__> Vorpal: Because we're talking about C! 19:46:39 <olsner> CakeProphet: Blah, when copied, could have references to other stuff 19:46:51 <olsner> stuff that is about to go *poof* 19:46:53 <Vorpal> elliott__, yes but I would expect it to work for C++ as well in this case 19:47:07 <CakeProphet> olsner: hmmm, okay. 19:47:13 <CakeProphet> I don't think that's the problem here but it might be. 19:47:38 <Vorpal> CakeProphet, what is the class you are trying to return? 19:47:39 <olsner> or rather, about to have nothing at all happen to it until some later random time 19:47:54 <CakeProphet> the only thing I share between functions is strings. So my tree stuff is safe from being deallocated with the stack frame. 19:48:02 <elliott__> Vorpal: C++ has constructors. 19:48:22 <CakeProphet> elliott__ is the best teacher. 19:48:25 <Vorpal> elliott__, hm right, guess you need to invoke a copy constructor or some such mess 19:48:29 <Vorpal> eww 19:50:00 <olsner> I think... if you don't know for sure that you aren't returning references to dead stuff, you probably are 19:50:08 <CakeProphet> I'm not returning references ever. 19:50:16 <elliott__> yes you are 19:50:17 <elliott__> if the class contains one 19:50:34 <CakeProphet> could a string contain a reference to something in one of my stack frames? 19:50:43 <Vorpal> CakeProphet, a std::string? Probably 19:51:11 <CakeProphet> uuuuuugh 19:54:07 -!- esowiki has joined. 19:54:22 -!- esowiki has joined. 19:56:00 -!- esowiki has joined. 19:56:00 -!- glogbot has joined. 19:56:05 <Vorpal> and yes contact them and report the issue. 19:56:08 <Vorpal> You really should 19:56:10 <elliott__> Phantom_Hoover: They'll probably be receptive to forwarding it on and the like. 19:56:14 <Vorpal> I did with an earlier game, and it helped 19:56:15 <elliott__> Easier than going to the developers directly. 19:56:16 <Phantom_Hoover> cheater, the leetspeak really puts across the full force of what you're saying. 19:56:29 <Vorpal> Phantom_Hoover, just ignore him 19:56:35 <elliott__> Never has calling someone a loser been such a self-deprecating remark. 19:56:36 <ais523> elliott__: how OnLive works? basically, it's just a VNC connection to a games console (or PC set up as one) 19:56:41 <cheater> i'm glad we agree on that point Phantom_Hoover 19:56:41 <elliott__> ais523: I know /how/ it works 19:56:42 -!- Zetro has joined. 19:56:52 <ais523> oh, you're just not sure /if/ it works? 19:56:54 <elliott__> ais523: I want to know /how/ it works, because it was pretty conclusively proven to be unworkable before it came out 19:57:00 <Phantom_Hoover> elliott__, hmm, what's their contact email? 19:57:10 <elliott__> and it seems the answer is just (a) yes, it's bad, (b) but connections are fast enough nowadays that it works OK 19:57:17 <Vorpal> ais523, similar, but a bit smarter iirc. Like video compression algorithms selected to work well for games and so on. 19:57:34 -!- Gregor has joined. 19:57:45 <elliott__> Phantom_Hoover: http://www.humblebundle.com/contact 19:58:02 <elliott__> Phantom_Hoover: You might also try getting a twutter and twatting at them, since that account is very active and responds to tweets a lot. 19:58:09 <elliott__> s/tweets/twits/ 19:58:16 <ais523> what does it say about me that I saw "l0z3r" and thought "that's incorrectly spelt because it's a short o"? 19:58:30 <ais523> as in, I'd have expected "l00z3r" or even "l%z3r" 20:00:16 <Vorpal> %? Come on 20:00:16 <ais523> I think I learnt text-speak compression back when it was about saving characters rather than being leet, or understandable 20:00:16 <cheater> l\infz3r 20:00:16 <Vorpal> heh 20:00:16 <elliott__> ais523: Was it /ever/ about that? 20:00:16 <elliott__> Well 20:00:16 <elliott__> It is nowadays thanks to SMS 20:00:16 <ais523> elliott__: yes, back when SMS had only just been invented 20:00:16 <elliott__> But it originates as false posturing bullshit 20:00:16 <Vorpal> elliott__, uh SMS can be multi-message thingies 20:00:16 <elliott__> And is mostly dead nowadays 20:00:16 <elliott__> Vorpal: Costs more, duh 20:00:16 <elliott__> Also longer to type 20:00:16 <ais523> I'm thinking of early by-hand SMS compression schemes 20:00:16 <CakeProphet> corrupted double linked list? 20:00:16 <Vorpal> elliott__, uh, don't you usually get a crapload of free SMS / month? 20:00:16 <CakeProphet> I'm not even using one of those. 20:00:16 <ais523> rather than script kiddie speak 20:00:16 <elliott__> Vorpal: Only on a contract 20:00:16 <Vorpal> CakeProphet, glibc detected? 20:00:16 <elliott__> Which are (a) recent (b) expensive 20:00:16 <CakeProphet> yes 20:00:16 <Vorpal> CakeProphet, that means you messed up glibc's internal state by memory access bugs 20:00:16 <cheater> i.bet.that.ais.wrote.all.his.sms.like.this 20:00:16 <elliott__> CakeProphet: That means one of glibc's malloc structures was corrupted. 20:00:17 <Vorpal> CakeProphet, use valgrind, I told you 20:00:17 <CakeProphet> how does one go about that... 20:00:20 <Vorpal> that will help 20:00:21 <cheater> am.i.right.ais 20:00:21 <elliott__> cheater: Yes, because dots are smaller than spaces. 20:00:23 <Vorpal> CakeProphet, using freed stuff 20:00:24 <ais523> cheater: I did, vacuously (I've never sent a text message) 20:00:28 -!- variable has quit (Excess Flood). 20:00:29 <cheater> hahahahaha 20:00:34 <elliott__> HAHAHAHAHAHAHAHAHA 20:00:39 <CakeProphet> okay so then something is obviously freeing. 20:00:42 <Vorpal> <elliott__> cheater: Yes, because dots are smaller than spaces. <-- not in byte count 20:00:44 <CakeProphet> solution: dynamically allocate everything. 20:00:47 <Vorpal> nor in monospace 20:00:52 <ais523> I have used borrowed mobile phones on occasion, but very rarely and only to make voice calls 20:00:54 <elliott__> Vorpal: Sarcasm does not exist. 20:00:55 <Vorpal> CakeProphet, USE VALGRIND 20:01:00 <CakeProphet> Vorpal: why 20:01:03 <cheater> Vorpal: in many layouts a dot was easier to type than a space. 20:01:21 <ais523> CakeProphet: because valgrind is a tool designed to solve this sort of problem 20:01:29 <Vorpal> CakeProphet, it will tell you WHERE the issue is 20:01:30 <ais523> and thus likely gives more useful results than a tool designed, say, to make tea 20:01:37 <CakeProphet> ..okay 20:01:39 <elliott__> ais523: OTOH, the other tool will give you some tea. 20:01:40 <Vorpal> CakeProphet, seriously, if you have a memory bug just use valgrind. 20:03:17 <elliott__> Just saying 20:07:15 -!- esowiki has joined. 20:08:21 -!- esowiki has joined. 20:08:31 -!- glogbot has joined. 20:08:32 -!- glogbackup has left. 20:09:37 <Vorpal> ais523, true 20:09:37 <CakeProphet> um okay so.... 20:09:37 <ais523> so given that I can't use a debugger, what am I supposed to do? fill valgrind with printf statements? 20:09:37 <CakeProphet> I think I found the problem. 20:10:50 <CakeProphet> I believe when you put a variable declaration inside a for loop, it destructs the previous value upon constructing the next one in the iteration. 20:10:50 -!- Gregor has quit (Remote host closed the connection). 20:10:50 <elliott__> No shit? 20:10:50 <CakeProphet> elliott__: how is that obvious? 20:10:50 <Vorpal> ais523, bisect on secret project to find what change introduced the valgrind breakage? 20:10:50 <ais523> CakeProphet: what do you think the bit before the first ; in the for loop is for 20:10:50 <elliott__> CakeProphet: Because otherwise it'd leak memory like a sieve? 20:10:50 <ais523> Vorpal: probably all of them 20:10:56 <Vorpal> ais523, ah okay 20:11:02 <ais523> the problem is that it needs thousands of lines just to work at all 20:11:08 <Sgeo|web> Sounds like the sort of thing it's easy to make a bug with, then when you see it, you facepalm 20:11:10 <Vorpal> I see 20:11:10 <CakeProphet> elliott__: it would construct values until presumably they are all freed at the end of the call. 20:11:12 <Ngevd> Does anyone know of a Unicode character that looks like a time machine? 20:11:23 <Vorpal> CakeProphet, ... no? 20:11:24 <CakeProphet> elliott__: I would think. not really a "leak" unless you loop forever. 20:12:26 <Vorpal> CakeProphet, looping forever it perfectly valid in C and C++ 20:12:50 <Sgeo|web> Even useful at times 20:13:56 <elliott__> CakeProphet: that's ridiculous 20:13:56 <elliott__> why would it do that? 20:13:56 <elliott__> the old value is garbage 20:13:56 <Sgeo|web> Although, considering the GC infection in my brain, I'd assume that it would be destructed at a random later point in time. 20:13:56 <elliott__> Infection? 20:13:56 <ais523> why would you expect the value to be valid after it's gone out of scope? 20:13:56 <Sgeo|web> elliott__: makes it hard for me to think in terms of C++ 20:13:56 <Sgeo|web> Not that I really know C++ 20:14:07 <ais523> Sgeo|web: /that/'s your biggest problem with C++? 20:15:48 <ais523> feel lucky 20:16:19 <Sgeo|web> ais523: no, just in this context of this conversation 20:16:19 <Sgeo|web> I think I may have used C++ once or twice outside of class 20:16:19 <CakeProphet> ais523: I thought automatic storage lasted until the end of the stack frame. 20:16:19 <CakeProphet> not until it's out of scope. 20:16:19 <CakeProphet> but I assume it treats the declaration as a single location and doesn't magically create more upon further iterations. 20:16:34 -!- GreaseMonkey has joined. 20:16:34 -!- GreaseMonkey has quit (Changing host). 20:16:34 -!- GreaseMonkey has joined. 20:16:41 <ais523> it's got nothing to do with stack frames 20:16:58 <ais523> and everything to do with scope 20:17:10 <elliott__> CakeProphet: how would it free them all at the end if it used the same location for each one? 20:17:24 <CakeProphet> elliott__: it wouldn't use the same location is what I'm saying. 20:18:13 <elliott__> this is ridiculous 20:18:13 <CakeProphet> just the same name. in the code. that isn't the object code. 20:18:40 <CakeProphet> elliott__: it's possible is it not? 20:19:07 <ais523> when something's out of scope, how do you expect to be able to refer to it? 20:19:07 <CakeProphet> just not what C/C++ does. 20:19:07 <ais523> (pointers don't count) 20:19:07 <ais523> (because you explicitly can't use them to do that) 20:19:20 <CakeProphet> ais523: with pointers. 20:19:34 <CakeProphet> because you could if the memory persisted until the end of the stack frame. 20:19:54 -!- lambdabot has joined. 20:19:59 <Ngevd> I think I'll work on Constantinople's successor, Istanbul 20:20:47 <ais523> CakeProphet: <ais523> (pointers don't count) 20:20:47 <Ngevd> Either that or a Nandypants implementation 20:20:47 <ais523> why do you think that stack frames exist? 20:20:47 <CakeProphet> ais523: why do they not count? does C and C++ not have pointers? 20:20:47 <CakeProphet> ??? 20:20:50 <CakeProphet> ais523: explain 20:20:59 <ais523> there was a debate in comp.lang.c about whether C implied that a stack had to exist or not 20:21:06 <ais523> I forget the result, but there was considerable doubt about it 20:21:22 <CakeProphet> fine "persists until the end of the function call" 20:21:31 <CakeProphet> less implementation specific. 20:21:54 <CakeProphet> it's possible. and you could refer to things out of scope via pointers. 20:22:12 <CakeProphet> what is ridiculous about this model then? 20:22:16 <ais523> it'd just give very little benefit, as it'd inherently cause a memory leak whereever you had a loop 20:22:26 <Ngevd> Or possibly something else entirely 20:22:44 <CakeProphet> hmmm, yes 20:22:52 <CakeProphet> I suppose in the most common cases you really don't want that to happen. 20:23:44 <ais523> CakeProphet: also, there's a nonstandard but very commonly existing function that does exactly what you want, called alloca 20:24:12 <ais523> you might want to think about /why/ it's nonstandard 20:24:25 <CakeProphet> because it can cause memory leaks? 20:24:59 <ais523> because it can't be implemented on every system in existence 20:25:07 <ais523> I've worked on systems where the stack was 8 bytes long, they still had C compilers 20:25:22 <ais523> they didn't allow recursion, though, contrary to the standard 20:25:25 <CakeProphet> good thing my professor doesn't have one of those then. 20:25:29 <ais523> because they had to allocate auto storage in globals 20:25:43 <ais523> well, the point is that C is designed to work on that sort of system 20:25:55 <Sgeo|web> What would be the point of persisting it like tha? 20:26:06 <ais523> because you have to put the memory /somewhere/? 20:26:11 <ais523> and you don't have a stack? 20:26:16 -!- Guest35901 has quit (Changing host). 20:26:17 -!- Guest35901 has joined. 20:26:21 <ais523> globals is the next best option, as they're easier to use than heap space 20:26:23 <Sgeo|web> I mean, the way CakeProphet wants 20:26:27 <fizzie> alloca is also a hairy function; it might not be possible to call foo(x, alloca(42), y) because the alloca'd memory would be in the middle of the function arguments. 20:26:29 <ais523> ah 20:26:31 -!- Guest35901 has changed nick to variable. 20:26:38 <ais523> fizzie: that's another good reason, indeed 20:26:47 <CakeProphet> so I can be lazy and not have to free all the stuff I'm making I can just say "hey go away after this call plz" 20:28:12 <elliott__> fizzie: Yikes. 20:28:15 <fizzie> Heh, glibc documentation has *almost* the same example. 20:28:21 <fizzie> "Do not use alloca inside the arguments of a function call--you will get unpredictable results, because the stack space for the alloca would appear on the stack in the middle of the space for the function arguments. An example of what to avoid is foo (x, alloca (4), y)." 20:28:43 <fizzie> They add their silly space after the function name, and use a boring 4 instead of an overused 42, but other than that even the x and y match. 20:29:10 <oerjan> <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/kv91b/discussion_thread_promising_ftl_neutrino/ 20:29:39 <variable> fizzie: they also give an example of what you don't want to do. How many people do you think will see the code and just copy it ? 20:29:40 <variable> :-) 20:29:45 <Phantom_Hoover> variable! 20:29:51 <variable> hello Phantom_Hoover 20:29:56 <fizzie> Another equally funky sharp corner: "Note: If you mix use of alloca and variable-sized arrays within one function, exiting a scope in which a variable-sized array was declared frees all blocks allocated with alloca during the execution of that scope." 20:30:06 <ais523> I know what causes that one 20:30:12 <Vorpal> fizzie, that alloca should work on platforms that pass the arguments in the registers right? 20:30:18 <ais523> it's because VLAs obey scoping rules and alloca doesn't 20:30:23 <oerjan> what. i thought it was obvious that they used GPS for this... 20:30:41 <fizzie> Vorpal: Sounds likely, but not something sensible people would rely on. 20:30:45 <elliott__> oerjan: um is that being denied? 20:30:50 <Vorpal> fizzie, indeed 20:31:28 <oerjan> elliott__: i just don't see how this guy comes up with the idea that they would synchronize the clocks and then separate them. 20:31:28 <pikhq> Of course, alloca is a non-standard extension, so who gives a fuck. :) 20:31:32 <ais523> oerjan: how do you allocate memory with GPS? 20:31:38 <variable> The alloca() function is slightly unsafe because it cannot ensure that the pointer returned points to a valid and usable block of memory 20:31:42 <elliott__> oerjan: um that was agreed upon no? 20:31:45 <elliott__> Phantom_Hoover? 20:31:54 <elliott__> variable: "Slightly" 20:31:54 <variable> is it literally just manipulating %rsp ? 20:31:59 <pikhq> variable: alloca() is slightly unsafe because neither C nor POSIX requires it to exist. 20:31:59 <ais523> variable: nor can malloc() on many modern systems 20:32:00 <Phantom_Hoover> Hello. 20:32:06 <Vorpal> windows supports mounting filesystems to directories but not bind style mounts I guess? 20:32:09 <Phantom_Hoover> variable, yes, it is. 20:32:09 <ais523> pikhq: it has no defined error behaviour 20:32:09 <elliott__> variable: yep 20:32:14 <oerjan> elliott__: i've just read that reddit intro yet 20:32:16 <variable> ais523: *cough* Linux *cough* 20:32:21 <ais523> I /think/ in practice it typically sigsegvs 20:32:32 <ais523> variable: luckily that one's fixable nowadays, you can write 2 to the overcommit control 20:32:32 <pikhq> ais523: It has no defined behavior at all, in fact. 20:32:40 <elliott__> variable: Linux's overcommit behaviour isn't bad because of what it causes malloc()s return to be 20:32:46 <ais523> pikhq: it has a man page, that's some sort of definition 20:32:48 <elliott__> it's bad because how it handles OOM is terrible 20:32:50 <Vorpal> pikhq, another issue with alloca: What about the red zone thingy on x86-64 20:32:54 <Vorpal> how does alloca interact with that 20:33:06 <pikhq> Vorpal: Probably "poorly". 20:33:11 <variable> elliott__: I've seen a Linux system run the OOM killer because it wanted more disk cache ... 20:33:15 <Sgeo|web> Do most prepackaged server thingies disable OOM killer? 20:33:18 <Vorpal> pikhq, but VLAs still work I presume? 20:33:19 <elliott__> variable: I didn't disagree. 20:33:22 <variable> Sgeo|web: hopefully not 20:33:34 <Vorpal> pikhq, anyway, it has to work, or code would crash all the time 20:33:36 <elliott__> variable: Like I said, Linux's overcommit behaviour is unreasonable, but not because of malloc() being able to return an invalid pointer. 20:33:42 <Sgeo|web> Huh? When is Linux's OOM killer thingy good? 20:33:56 <CakeProphet> another issue with alloca might be that it doesn't call a constructor. 20:34:01 <variable> Sgeo|web: without it running out of memory would cause a kernel oops IIRC 20:34:26 <variable> elliott__: true, I didn't disagree 20:34:28 <pikhq> Vorpal: Oh, hrm, it works just fine. The "red zone" is just a fixed area of the stack that the function is able to use for its own temporary data. 20:34:36 <fizzie> Vorpal: I don't see why just incrementing %rsp to snarf some more space on the stack would really matter red-zone-wise; there's still the 128 bytes after it that "other things" won't touch. 20:34:40 <elliott__> variable: right 20:34:59 <CakeProphet> so how could I allocate something with alloca and then initialize it? 20:35:06 <Sgeo|web> I'd rather "running out of memory" cause malloc to return NULL. Are there other circumstances in which memory would attempt to be allocated, and fail, and there be no alternative to a kernel oops, such as the requesting application crashing? 20:35:21 <pikhq> Vorpal: 128 bytes above the "top" of the stack is just space the current function can use as it sees fit without any concern at all. 20:35:29 <oerjan> <elliott__> oerjan: um that was agreed upon no? <-- btw it is impossible from your comment to deduce either what "that" is or who agreed and where. 20:35:35 <elliott__> oerjan: pah :P 20:35:43 <elliott__> I meant that the separation thing was agreed to have happened 20:35:44 <fizzie> CakeProphet: Placement new? (That thing is pretty horrible, but it's what you do when you have a custom memory allocator.) 20:35:48 <elliott__> in discussions here 20:35:56 <fizzie> CakeProphet: There is utterly no way to get the destructors automatically called, though. 20:36:02 <Vorpal> <pikhq> Vorpal: Oh, hrm, it works just fine. The "red zone" is just a fixed area of the stack that the function is able to use for its own temporary data. <-- I know what it is 20:36:16 <Vorpal> pikhq, the issue was the alloca/red zone data interaction possibilities 20:36:19 <Vorpal> that I were considering 20:36:32 <pikhq> It'll do precisely nothing, the function will just need to make sure not to trample on *itself*. 20:36:43 <CakeProphet> fizzie: um how does placement new work. 20:36:54 <pikhq> CakeProphet: You pass new an address. 20:36:54 <Vorpal> pikhq, I guess gcc avoids using the red zone for variables if alloca is used in that function 20:37:09 <pikhq> Vorpal: Probably. 20:37:36 <CakeProphet> pikhq: ah 20:37:45 <fizzie> CakeProphet: Thing* thing = new(place) Thing(); where 'place' is either a void* or an object with an operator new. 20:38:02 <CakeProphet> excellent. let's see how much I break everything. 20:38:05 <CakeProphet> trying to use non-standard things. 20:38:28 <oerjan> <elliott__> I meant that the separation thing was agreed to have happened <-- ok maybe as an extra check. i'd expect GPS to be better and more ongoing, anyway. 20:38:38 <fizzie> Putting C++ objects into alloca() memory sounds like the worst idea, esp. because of the destructors. 20:38:43 <elliott__> oerjan: does gps have even remotely the required accuracy? 20:39:29 <CakeProphet> stack<char> *new_stack = new(alloca(sizeof(stack<char>)))stack<char>; 20:39:33 <CakeProphet> that's some beautiful syntax. 20:39:36 <CakeProphet> especially with no spaces. 20:39:57 <Vorpal> CakeProphet, why the fuck are you doing that 20:40:07 <fizzie> CakeProphet: Oh, you're putting a *STL container* on alloca() memory? That's... uh... what's the polite way to put this? "Rather daring"? 20:40:09 <pikhq> Also essentially indistinguishable from sticking it on the stack. 20:40:18 <CakeProphet> because I love pain. 20:40:18 <pikhq> Y'know, because that's what alloca does. 20:40:21 <fizzie> pikhq: Except it won't be destructed and will therefore leak. 20:40:35 <pikhq> fizzie: Iff it has its own dynamic memory allocation. 20:40:47 <pikhq> ... As is common in C++. 20:40:48 <fizzie> And stack<char> is sort-of likely to. 20:40:53 <elliott__> CakeProphet: Do you really think that will finish your memory problem? 20:41:08 * Sgeo|web has no idea what alloca is 20:41:20 <Sgeo|web> Except, gathering from all this, "a bad idea" 20:41:21 <elliott__> Sgeo|web: increments rsp 20:41:21 <ais523> Sgeo|web: good 20:41:22 <CakeProphet> I'm almost not certain it will. 20:41:24 <Vorpal> CakeProphet, this path you are investigating currently is probably NOT going help you at all 20:41:54 <pikhq> Sgeo|web: "void *alloca(size_t);" is a nonstandard but somewhat common extension. It allocates on the stack 20:42:30 <Sgeo|web> So it will seem to be automatically collected? 20:42:38 <Sgeo|web> From the programmer's point of view? 20:42:38 -!- derdon has joined. 20:42:44 <ais523> no! 20:42:55 <ais523> it'll seem to be freed at the end of the function, from the programmer's point of view 20:43:00 <ais523> this is not nearly the same thing 20:43:11 <Sgeo|web> End of the function, or end of scope? 20:43:17 <pikhq> End of the function. 20:43:20 <Ngevd> Lambdabot has all the MIBBLLII combinators 20:43:26 <Sgeo|web> Ok 20:43:26 <ais523> end of the function 20:43:32 <Sgeo|web> That's a bit weird, but ok. 20:43:48 <CakeProphet> well it would be useful if it called destructors as well. 20:43:52 <CakeProphet> but it's a C function so... yeah. 20:44:15 <CakeProphet> I actually don't care if this program leaks I just want to get it working. 20:44:19 <pikhq> CakeProphet: Not really. You realise that this is pretty close to the behavior of just creating a normal C++ object on the stack, right? 20:44:23 <ais523> Sgeo|web: think of it as "end of the scope is pretty easy to do already" 20:44:39 <fizzie> Yes; for a fixed-size object alloca() is really quite pointless. 20:44:56 <CakeProphet> pikhq: yes except I can't do it within a loop and iteratively allocate on the stack. 20:45:14 <CakeProphet> the normal way 20:45:16 <CakeProphet> as far as I can tell. 20:45:17 <Sgeo|web> It is? I mean, for fixed-size, yes, but what about size known only at runtime, how is that easy to do in scope? 20:45:28 <Sgeo|web> I mean, I guess you could call free() 20:45:42 <CakeProphet> ..? 20:45:43 <pikhq> Sgeo|web: In ISO C, trivial; variable-length arrays. 20:45:53 <oerjan> <elliott__> oerjan: does gps have even remotely the required accuracy? <-- GPS is based on sending radio waves with time encoded. if it didn't have enough accuracy for _time_ it wouldn't have enought accuracy for the distance. 20:46:31 <CakeProphet> uh.... why the fuck does stack::pop call a destructor. 20:46:37 <CakeProphet> why does everything have to be difficult. 20:46:57 <pikhq> Also, isn't GPS time based on literally hooking an atomic clock up to a radio and putting it in orbit? 20:47:06 <CakeProphet> yes, I just popped something from a stack, obviously I don't want to use it anymore. 20:47:07 <Ngevd> > (.)(join (.))(ap (.) (join (.)))(+1)(0) 20:47:09 <lambdabot> 6 20:47:36 <variable> pikhq: not really 20:48:15 <oerjan> *time and position 20:48:17 <CakeProphet> I guess I'll just start using a stack of pointers to get around that. 20:48:19 <variable> oerjan: yeah 20:48:22 <fizzie> CakeProphet: Of course stack has to call the destructor, since it owns the objects in it. If you want to manage that ownership manually, put some pointers into that stack or something. 20:49:07 <oerjan> pikhq: i'm not sure if it literally has an atomic clock, but it's definitely synchronized with them 20:49:53 <CakeProphet> fizzie: that's what I'm doing 20:49:56 <CakeProphet> During startup program terminated with signal SIGSEGV, Segmentation fault. 20:49:57 <CakeProphet> lolwat 20:50:15 <Ngevd> > (flip id)(join (.))(ap (.) (join (.)))(+1)(0) 20:50:33 <pikhq> oerjan: It apparently literally does. 20:51:20 <CakeProphet> I have no stack, awesome. 20:51:28 <CakeProphet> no stack trace to use. 20:52:32 <CakeProphet> maybe my computer is punishing me for being naughty. 20:52:43 <CakeProphet> (though I'm now no longer using alloca) 20:53:03 <CakeProphet> just good old new-and-forget memory management 20:53:27 <Vorpal> pikhq, yes GPS satellites have atomic clocks onboard 20:54:03 <Ngevd> I think lambdabot is dead 20:54:20 <Vorpal> Ngevd, you put a space in front of the > duh 20:54:46 <oerjan> <Ngevd> IT IS MY OPINION THAT GEOM IS NOT TURING COMPLETE 20:54:54 <oerjan> my impression is that it probably is. 20:54:57 <CakeProphet> ==28425== Stack overflow in thread 1: can't grow stack to 0x7fe7b0fc0 20:54:57 <CakeProphet> ==28425== 20:54:58 <CakeProphet> ==28425== Process terminating with default action of signal 11 (SIGSEGV) 20:55:11 <Vorpal> Ngevd, it is flipping obvious in a monospace font, and if you are not using a monospace font for irc: wtf are you doing 20:55:21 <CakeProphet> If you believe this happened as a result of a stack 20:55:21 <CakeProphet> ==28425== overflow in your program's main thread (unlikely but 20:55:22 <CakeProphet> ==28425== possible) 20:55:29 <CakeProphet> .....how would that happen. 20:55:32 <Vorpal> CakeProphet, you are doing so stupid things now I'm just going to ignore it. 20:55:33 <oerjan> provided definitions can be recursive, you have an ordinary stack and a call stack, and can probably implement a tape with those 20:55:36 <Vorpal> :P 20:55:44 <CakeProphet> Vorpal: I stopped using alloca what more do you want? 20:55:53 <Vorpal> CakeProphet, huh what did you do then 20:56:01 <CakeProphet> I am newing and forgetting about it. :P 20:56:06 <oerjan> > "i'm alive!" 20:56:06 <lambdabot> "i'm alive!" 20:56:10 <Vorpal> CakeProphet, well.. there you are 20:56:14 <CakeProphet> because memory leaks are not an issue in this program. 20:56:33 <Vorpal> CakeProphet, Correctness is more important than Simplicity 20:56:58 <CakeProphet> Vorpal: this is a program for a data structure class. I would just like to get it to work for the moment. 20:57:12 <CakeProphet> and right now I am apparently getting a stack overflow except there's no stack? 20:57:29 <CakeProphet> I'm so confused. 20:57:34 <Vorpal> there is the program stack 20:57:39 <Vorpal> there always is 20:57:45 <Vorpal> are you doing recursive calls? 20:58:04 <Ngevd> > (flip id)(join (.))(ap (.) (join (.)))(+1)(0) 20:58:05 <lambdabot> 8 20:58:10 <Ngevd> That's better 20:58:10 <CakeProphet> well I recursively show a tree but that's not the problem I think? 20:58:24 <Vorpal> Ngevd, obviously removing the space in front is better yes 20:58:25 <ais523> stack overflow generally means you did a recursive infinite loop without tailcalling 20:58:33 <ais523> well, with an infinite number of non-tail calls 20:58:33 <Vorpal> CakeProphet, you could have infinite recursion due to a bug 20:58:40 <CakeProphet> Access not within mapped region at address 0x7FE7B0FB8 20:58:41 <CakeProphet> ==28425== at 0x4A2359C: _vgnU_freeres (vg_preloaded.c:58) 20:58:45 <CakeProphet> Vorpal: that would give me a call stack 20:58:57 <CakeProphet> there is literally no call stack in backtrace 20:59:06 <Vorpal> huh 20:59:17 <CakeProphet> oh wait now there is whut 20:59:29 <Ngevd> Goodnight 20:59:30 <CakeProphet> yes okay now it's a stack overflow from my tree :P 20:59:31 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 20:59:37 <CakeProphet> before it was weird things. 21:01:00 <fizzie> Incidentally, if you want a heap-allocated object that gets destroyed as it goes out of scope, auto_ptr is the C++ way. 21:01:28 <fizzie> (It's not until-end-of-function though.) 21:01:34 <CakeProphet> "goes out of scope" how is that different from a regular auto variable? 21:01:46 <Vorpal> CakeProphet, it is on the heap 21:02:18 <CakeProphet> I have many things I want to construct a runtime, there is not a constant number of them. 21:02:28 <Vorpal> yes and? 21:02:33 <Sgeo|web> Is auto_ptr saner than alloca? 21:02:37 <CakeProphet> how would auto_ptr fix that? 21:02:41 <olsner> "auto variable" :) 21:02:52 <CakeProphet> olsner: what's wrong with that usage? 21:03:11 <Vorpal> CakeProphet, when fizzie says "Incidentally" the thing he metions may or may not be directly related to the problem at hand 21:03:35 <CakeProphet> I'm just wondering what tangible difference being on the heap instead of the stack makes. 21:03:43 <elliott__> stack has very limited size. 21:03:47 <elliott__> heap can hold big big big. 21:03:48 <fizzie> You can put e.g. a pointer to a sized-at-runtime array into an auto_ptr. 21:03:54 <elliott__> but lots of containers will allocate on the heap anyway 21:03:57 <elliott__> and just hold some pointers on stack 21:04:07 <elliott__> so it's not noticeable in C++ that the stack is small much 21:04:17 <CakeProphet> ah okay. 21:04:24 * Sgeo|web gets annoyed at thunder 21:04:57 <Vorpal> Sgeo|web, UPS I hope? 21:05:06 <olsner> technically, I think "auto variable" is correct... but I find it a bit weird to specify the auto every time 21:05:23 <fizzie> CakeProphet: It also helps in exception-related memory leaks when you actually want to allocate on heap so that you can later give ownership of the thing to someone else and have it survive your scope. 21:05:28 <olsner> sounds like a throwback to the times when the difference between register and auto variables was actually relevant 21:05:33 <Vorpal> olsner, auto int foo; is certainly valid C if that is what you mean. Probably valid C++ too 21:05:41 <olsner> sure, but the auto is meaningless 21:05:46 <olsner> is my point 21:05:50 <Vorpal> olsner, yes because it is the default 21:05:57 <Vorpal> there is volatile too 21:05:58 <Sgeo|web> Vorpal: no :( 21:06:11 <Vorpal> Sgeo|web, unplug then 21:06:17 <olsner> you can have volatile auto int too 21:06:23 <Sgeo|web> I'd unplug laptop, but this thing loses charge very quickly 21:06:23 <Vorpal> olsner, are you sure? 21:06:25 <Vorpal> okay then 21:06:30 <Vorpal> Sgeo|web, so shut it down? 21:06:34 * Sgeo|web unplugs anyway 21:06:38 <Vorpal> and read a book 21:06:39 <olsner> auto is like register and static, volatile is like const 21:06:43 <CakeProphet> olsner: it makes sense to specify auto variable when we're talking about different ways/places to store variables. 21:06:47 <Vorpal> olsner, right 21:07:51 <Vorpal> olsner, though GCC probably has an extension that assigns auto static volatile register some insane meaning XD 21:07:59 <fizzie> CakeProphet: "Thing* t = new Thing(); t->splurt(); return t;" will leak if Thing::splurt throws an exception; "std::auto_ptr<Thing> t = new Thing(); t->splurt(); return t.release();" will not. 21:08:12 <variable> olsner: volatile has no required meaning though 21:08:13 <Vorpal> sorry, auto static volatile register const 21:08:16 <CakeProphet> fizzie: ah okay. 21:08:23 <variable> compilers _can_ use it but it is completely implementation defined 21:09:02 <Vorpal> variable, wrong. At least for C99 it has a sense for a specific type wrt signals 21:09:06 <olsner> CakeProphet: if you just say variable, I'd say that's always an auto variable unless otherwise stated (e.g. as "static variable") 21:09:08 <CakeProphet> so I could write a compiler that stores volatile variables on floppy disks? and still be standard? 21:09:09 <Vorpal> as far as I remmeber 21:09:25 <olsner> variable: good nick for this discussion 21:09:56 <elliott__> CakeProphet: you could write a compiler that did that for normal variables. 21:10:01 <elliott__> variable: how do youa void getting pinged all the time 21:10:08 <elliott__> s/youa void/you avoid/ 21:10:14 <CakeProphet> elliott__: auto is completely implementation defined then? or is that not what you're saying? 21:10:27 <variable> Vorpal: I wasn't aware it changed in C99 21:10:37 <variable> elliott__: I don't really. I just ignore pings in certain channels 21:10:46 <Vorpal> variable, right, I don't have a copy of C89 so can't checkthere 21:10:48 <fizzie> It's not *completely* implementation-defined for other types than sig_atomic_t either; the standard gives a lot of very vague and unclear text about access to a volatile variable, which doesn't really mean anything concrete. 21:11:06 * Sgeo|web risks his Lubuntu setup in the hopes of being able to do homework 21:11:10 <Vorpal> variable, it is wrt sig_atomic_t 21:11:27 <fizzie> That and signals. 21:11:37 <Sgeo|web> If I use a backport repository designed for 10.04 on 11.04, what's the worst that can happen? 21:11:41 <Vorpal> <elliott__> variable: how do youa void getting pinged all the time <-- same way I survive in #nethack? 21:11:47 <elliott__> Sgeo|web: Terrible things. 21:11:54 * variable reads https://www.securecoding.cert.org/confluence/display/seccode/SIG31-C.+Do+not+access+or+modify+shared+objects+in+signal+handlers 21:11:54 <elliott__> Vorpal: By not joining? 21:12:03 <elliott__> "Vorpal" isn't that common in NetHack. 21:12:08 <elliott__> "variable" is in programming channels. 21:12:16 <Vorpal> elliott__, it happens a lot in #nethack though 21:12:27 <CakeProphet> I apologize for the stupidness. I'm still getting accustomed to C++ 21:12:47 <olsner> Sgeo|web: cthulhu might wake? or whatever it is cthulhu does/will do 21:12:49 <elliott__> Vorpal: Not nearly as much as variable in a programming channel. 21:12:58 <Vorpal> hm true 21:13:07 <elliott__> You should go back to AnMaster it's way easier to make fun of. 21:13:11 <elliott__> Also less derivative. 21:13:28 <Deewiant> elliott__: Disabling pinging for "variable" but not "variable[,:]" should help 21:13:48 <elliott__> Deewiant: I don't think telnet can do that. 21:14:02 <Deewiant> I don't think telnet does pinging at all 21:14:05 <Sgeo|web> telnet can ping you now? 21:14:09 <variable> Sgeo|web: yeap 21:14:31 <olsner> telnet can ping you and eat your children and everything 21:14:39 <CakeProphet> wait what.... 21:14:39 * Sgeo|web goes to download Lucid binaries on Natty 21:14:41 <CakeProphet> my program 21:14:43 <CakeProphet> works 21:14:45 <CakeProphet> correctly? 21:14:58 <CakeProphet> (minus proper memory management...) 21:15:05 <Vorpal> CakeProphet, prove it formally 21:15:06 <variable> CakeProphet: any kmods may not work correctly. Also random binaries may not work (if the ABI changed) 21:15:08 <elliott__> Deewiant: Then that's how variable solves it 21:15:16 <elliott__> variable: Sgeo|web, not CakeProphet 21:15:27 <variable> woops Sgeo|web ^^ 21:15:28 <elliott__> And the problem is more mismatched dependencies... 21:15:45 <CakeProphet> okay so now that it works time to implement proper memory management 21:15:48 <Sgeo|web> Not doing kmods. This is mono stuff 21:15:51 <CakeProphet> which is of course to use alloca 21:16:27 <Deewiant> class (Eq e, Ord e, Read e, Show e, Ord s, Read s, Show s, Monad m) => Entity e s d p m | e -> s, e -> d, e -> p, e -> m where 21:16:30 <Deewiant> Sweet 21:16:32 <elliott__> Deewiant: No 21:16:33 <elliott__> Deewiant: Stop 21:16:40 <Deewiant> elliott__: This isn't mine 21:16:43 <elliott__> Deewiant: Good 21:16:48 <elliott__> I was about to launch into a "you don't want a typeclass" rant 21:16:51 <elliott__> What the hell are you reading 21:16:52 <Deewiant> It's http://hackage.haskell.org/packages/archive/GA/1.0/doc/html/GA.html 21:17:07 <Deewiant> (Via http://www.reddit.com/r/haskell/comments/kvnep/ga10_a_haskell_library_for_working_with_genetic/ ) 21:17:15 <olsner> hmm, shouldn't those fundeps just be e -> s d p m 21:17:20 <olsner> I wonder if there's a difference 21:17:21 <elliott__> Wow, that's awful. 21:17:27 <elliott__> olsner: There isn't 21:17:43 <elliott__> Deewiant: I was going to rewrite it as a data type but it's way too big for me to bother 21:17:53 <Sgeo|web> Thunder stopped 21:18:13 <elliott__> data used to score an entity, e.g. a list of numbers (d) 21:18:14 <fizzie> If you want to spawn an undefined number of objects in a loop, just new them and put the pointers in a container, or alternatively let the container allocate them (though that may end up doing a lot of copy constructor invocation). 21:18:15 * Sgeo|web plugs laptop back in 21:18:17 <elliott__> Why is that even relevant 21:19:17 <CakeProphet> I wonder if my professor knows what alloca does. 21:19:22 <CakeProphet> fizzie: "let the container allocate them" how 21:20:49 <elliott__> http://static.adzerk.net/Advertisers/b4cc0ceaed4342e298cec4ac2158f733.png 21:20:49 <elliott__> What. 21:21:53 <fizzie> CakeProphet: std::vector<Thing> is perfectly capable of managing an arbitrary amount of Things, assuming Thing has the necessary copy constructor, assignment operator, and the third thing I forget. 21:22:07 <CakeProphet> Vorpal: also I can prove that my program is correct formally like so: a) it gives the output my professor wanted when given the professor's test file as input. b) Q.E.D. 21:22:42 <olsner> fizzie: public destructor maybe? 21:23:15 <Vorpal> CakeProphet, XD 21:23:22 <olsner> I've effectively unlearned everything I've ever knew about STL though 21:23:48 <CakeProphet> I've'nt learned copy constructors yet. 21:24:11 <olsner> (that should of course be "I ever knew" or "I've ever known") 21:24:11 <fizzie> What are you generating objects of, anyhow? 21:24:20 <CakeProphet> stacks 21:24:23 <CakeProphet> I have a stack of stacks 21:24:35 <CakeProphet> also later tree nodes. 21:24:37 <CakeProphet> that I put on a stack. 21:24:54 * CakeProphet is converting infix mathematical expressions to postfix to prefix 21:24:56 <olsner> elliott__: I think that's the reaction they want, so that you click the ad in order to find out what it means 21:25:20 <elliott__> olsner: some job bullshit: http://siliconmilkroundabout.com/ 21:25:27 <fizzie> Well, that's a standard type, you can put stacks directly into a vector. But it will copy a lot of stacks, unless you happen to get one of those magical compilers that will optimize all tmeporaries away. 21:26:03 <CakeProphet> fizzie: okay so then the dynamically allocated stacks are freed when the vector is freed 21:26:06 <CakeProphet> ? 21:26:58 <olsner> hmm, so you're really just writing post-order and pre-order traversal of trees? that should be fairly trivial 21:27:25 <CakeProphet> well sort of. 21:27:36 <CakeProphet> I use shunting-yard algorithm to convert to postfix 21:27:43 <CakeProphet> then I build that into an expression tree 21:27:49 <CakeProphet> and then recursively print that as prefix 21:28:01 <CakeProphet> ==28796== LEAK SUMMARY: 21:28:01 <CakeProphet> ==28796== definitely lost: 2,336 bytes in 34 blocks 21:28:02 <CakeProphet> ==28796== indirectly lost: 18,048 bytes in 44 blocks 21:28:02 <elliott__> wow. 21:28:05 <elliott__> that's the worst way imaginable 21:28:05 <fizzie> If you have vector< stack<X> > the vector will own the stacks and will take care of destroying them when the vector is destroyed. 21:30:17 -!- GreaseMonkey has quit (Quit: The Other Game). 21:30:36 <fizzie> In that case though it's probably best to put the stacks directly into the vector when empty, only use references to them and not temporary "stack<X>" objects, and it will still allocate-copy-destroy whole stacks around as the vector grows, probably. 21:30:48 <olsner> "The shunting yard algorithm can also be applied to produce prefix notation (also known as polish notation). To do this one would simply start from the beginning of a string of tokens to be parsed and work backwards, and then reversing the output queue (therefore making the output queue an output stack)." 21:30:55 <olsner> (wikipedia) 21:31:10 -!- sllide has joined. 21:31:20 <elliott__> olsner: No clearly CakeProphet has to parse it into a tree that's so much simpler. 21:31:37 <olsner> "start at the beginning and work backwards" is a curious instruction though 21:32:00 <CakeProphet> "start from the beginning of a string of tokens and work backwards" what? 21:32:03 <CakeProphet> yes. 21:32:18 <olsner> but it's probably obvious if you know how to work the shunting yard 21:32:39 <CakeProphet> elliott__: I don't recall you mentioning that there was a better way when I was talking to you about it earlier. 21:32:47 <elliott__> CakeProphet: Yah, I even implemented it 21:32:52 <elliott__> But then you got impatient and weren't interested 21:33:02 <olsner> but the obvious way is 1. parse tree, 2. print tree 21:33:08 <elliott__> olsner: no it isn't 21:33:12 <olsner> sure it is 21:33:13 <elliott__> well 21:33:13 <elliott__> sure 21:33:16 <elliott__> but it's not what he's doing 21:33:18 <CakeProphet> s/got impatient and weren't interesting/had to go to class/ 21:33:19 <elliott__> he's using shunting yard first for no reason 21:33:51 <CakeProphet> well one reason is that my professor wanted me to "use stacks" 21:34:05 <elliott__> <olsner> "The shunting yard algorithm can also be applied to produce prefix notation (also known as polish notation). To do this one would simply start from the beginning of a string of tokens to be parsed and work backwards, and then reversing the output queue (therefore making the output queue an output stack)." 21:34:06 <CakeProphet> which means use shunting yard 21:34:08 <elliott__> "output queue an output stack" 21:37:24 <olsner> elliott__: I wanted to point out that shunting yard could apparently be used to solve the problem directly instead of just using it to build a tree 21:37:26 <Sgeo|web> iirc, Vala uses reference counting, but has language features intended to help reduce the pain? 21:37:56 <olsner> queues and stacks are irrelevant to me 21:38:02 <CakeProphet> I'm still not clear on what it means from start at the beginning and workbackwards. 21:38:10 <elliott__> olsner: Right, that's what I'm saying 21:38:17 <elliott__> CakeProphet: It means start at the end and work backwards 21:38:18 <elliott__> Obvious typo 21:38:28 <CakeProphet> "obvious" 21:38:50 <elliott__> Yes, obvious 21:38:54 <CakeProphet> elliott__: I am beginning to think that you think almost everything is obvious. 21:39:11 <elliott__> You might just be especially unobservant 21:39:19 <olsner> so you can just reverse the input, run the shunting yard algorithm, then reverse the output? 21:39:22 <elliott__> That's more likely since it paints me in a better light 21:39:29 <elliott__> olsner: or just use a stack instead of a queue for the output 21:39:32 <elliott__> and avoid the translation entirely 21:39:38 <elliott__> and just use a backwards iterator or w/e to avoid reversing the input 21:39:43 <CakeProphet> reversing the output does not make polish notation. 21:39:46 <CakeProphet> okay. 21:39:46 <CakeProphet> yes 21:39:49 <CakeProphet> that is correct. 21:39:53 <olsner> since you're in STL land, you could make a single shunting yard implementation run both backwards and forwards by passing it different iterators for input and output 21:40:03 <CakeProphet> olsner: no thanks. 21:40:08 <CakeProphet> I think I'll just get rid of my tree code. 21:40:13 <CakeProphet> BUT I AM TOTALLY KEEPING ALLOCA MUAHAHAHA 21:40:18 <elliott__> <CakeProphet> reversing the output does not make polish notation. 21:40:23 <elliott__> it does if you process your input backwards too 21:40:28 <CakeProphet> elliott__: ..... -_- 21:40:29 <CakeProphet> see 21:40:30 <CakeProphet> above 21:41:41 <elliott__> http://www.oracle.com/us/corporate/press/503333 21:41:43 <elliott__> good statement 21:41:57 <elliott__> http://www.oracle.com/us/corporate/press/503343 21:42:01 <elliott__> ahahaha why are oracle being great 21:42:04 <elliott__> i don't want to like oracle 21:42:17 <elliott__> ais523: you might enjoy the above 21:42:34 * ais523 looks 21:42:36 <ais523> both of them? 21:42:49 <elliott__> ais523: yep, first first 21:42:51 <elliott__> second... second 21:43:23 <CakeProphet> what I am great apalled that string has no push_front 21:43:27 <ais523> is that, umm, corporate sarcasm? 21:43:29 <ais523> it's not quite sarcasm 21:43:32 <ais523> but it's the same attitude 21:44:10 <Sgeo|web> WHat's the point of Autonomy pretending not to have wanting to be sold to Oracle and Oracle insisting that yes they did 21:44:34 <elliott__> Sgeo|web: What's "the point"? 21:44:49 <elliott__> Autonomy publicly made a misleading statement i.e. that they hadn't been shopped, Oracle corrected them 21:45:27 <Sgeo|web> What's the point of Autonomy making the misleading statement, what did they hope to gain? 21:45:58 <Vorpal> elliott__, why would that guy even deny meeting with Oracle? 21:46:06 <Vorpal> I mean, what does he stand to gain from doing so? 21:46:36 <elliott__> Vorpal: To not be embarrassed by having it in the public sphere that he tried to sell his company to Oracle for too high a price? 21:46:47 <Vorpal> elliott__, ah... 21:47:02 <elliott__> Sgeo|web: And because "Oracle are liars, they lied about us" looks better than "we failed to sell our company to Oracle"? 21:47:14 -!- Sgeo|web has quit (Quit: Page closed). 21:47:18 <SgeoN1> Oh 21:47:20 <Vorpal> hm perhaps 21:47:38 <Vorpal> SgeoN1, why are you using web for irc when it does that stuff all time? 21:47:50 <elliott__> What stuff 21:48:01 <Vorpal> close by mistake. Saw that several times the last few dyas 21:48:02 <Vorpal> days* 21:48:05 <SgeoN1> Also, fuck Chromium for interpreting mouse movement as 'I want to close the tab' all the time 21:48:11 <Vorpal> see 21:48:13 <Vorpal> I told you 21:48:15 <elliott__> It was a mistake? 21:48:18 <Vorpal> SgeoN1, just use xchat or something 21:48:19 <elliott__> Oh 21:48:22 <ais523> SgeoN1: do you have dwell click turned on? 21:48:34 <SgeoN1> I never heard of that until now 21:48:40 <elliott__> ais523: What is it with you and dwell click :P 21:48:50 <ais523> I have dwell click on the mind~ 21:48:56 <ais523> also, I discovered what trailing tilde means 21:48:59 <ais523> when it doesn't mean sarcasm 21:49:02 <olsner> dwell click? 21:49:07 <Vorpal> ais523, what does it mean? 21:49:10 <fizzie> You are dwelling on dwell click. 21:49:10 <elliott__> ais523: that wasn't nearly terrible enough to suffix with ~ 21:49:16 <ais523> unfortunately, I can't figure out how to put it into words, but I'm pretty sure it was appropriate there 21:49:19 <elliott__> Study the master (Madoka-Kaname) 21:49:22 <ais523> it's a sort of... light-heartedness indicator 21:49:28 <Vorpal> ah 21:49:31 <ais523> not "I'm joking" but "this sentence is informal" 21:49:32 <elliott__> Yes but it only applies to terrible things. 21:49:38 <ais523> not where I've seen it be used 21:49:44 <CakeProphet> elliott__: ah another change to the algorithm is that you have to reverse the roles of parentheses. 21:49:45 <Vorpal> elliott__, you need to use it more then 21:50:20 <elliott__> Vorpal: Your MOM [...] 21:50:29 <Vorpal> CakeProphet, anyway you should handle vararg operators with dependant typing or something like that 21:50:49 <CakeProphet> ...no 21:50:52 <Vorpal> YES 21:51:17 <Vorpal> dependent* 21:51:39 <CakeProphet> wow I love how I just wasted like probably 12 hours of my life because I a) didn't go to class when the professor explained how to convert infix to prefix b) didn't read the Wikipedia article on shunting yard thoroughly enough 21:51:51 <ais523> is there such a thing as independent typing? 21:52:25 <Vorpal> CakeProphet, you skipped a class? 21:52:29 <Vorpal> ais523, XD 21:52:29 <Phantom_Hoover> Hmm, what's the severity of a crash on startup? 21:52:39 <fizzie> str.insert(0, 1, 'x') equals the hypothetical str.push_front('x'), though it might not be exactly efficient. 21:52:44 <olsner> Phantom_Hoover: about 3 21:52:47 <ais523> Phantom_Hoover: 5, I'm not sure of the units 21:52:52 <elliott__> Phantom_Hoover: high 21:52:56 <ais523> bleh, ninja'd 21:52:59 <Vorpal> Phantom_Hoover, depends on what you are starting: A train safety system or hello world 21:53:01 <Phantom_Hoover> I like the way you both arrived at the exact same joke. 21:53:04 <Vorpal> the former is much more severe 21:53:06 <elliott__> not critical if it's just your machine 21:53:08 <CakeProphet> Vorpal: yes, it happens. 21:53:13 <Phantom_Hoover> In this case, it's Frozen Synapse. 21:53:14 <Vorpal> CakeProphet, stupid 21:53:19 <elliott__> are you reeportgimg with like bugzilla 21:53:22 <Phantom_Hoover> Yes. 21:53:28 <elliott__> because i'd email instead :P 21:53:31 <CakeProphet> Vorpal: I was skipping class to catch up on projects which I was behind on because I'm also doing freelancing. 21:53:36 <elliott__> link? 21:53:38 <Phantom_Hoover> I did email, they referred me to bugzilla. 21:53:42 <elliott__> heh 21:53:42 <Vorpal> CakeProphet, too much work then, meh 21:53:42 <fizzie> BUGZILLA CRUSHES TOKYO - FILM AT ELEVEN. 21:53:43 <CakeProphet> the point of skipping class was to maintain my grades. 21:53:50 <Vorpal> Phantom_Hoover, so report it there 21:53:51 <elliott__> it will never get fixed Phantom_Hoover 21:53:56 <Phantom_Hoover> :( 21:54:01 <Vorpal> elliott__, shut up, it might 21:54:04 <elliott__> bugzilla is where bugs go to die 21:54:11 <Vorpal> I had a bugs in cogs fixed 21:54:13 <Phantom_Hoover> The poor little bugs. 21:54:13 <ais523> in theory, he paid money for it, so should be able to return it if it didn't work 21:54:16 <ais523> Vorpal: which one? 21:54:18 <elliott__> Vorpal: you stfu, he already was reporting it 21:54:20 <Phantom_Hoover> ais523, :D 21:54:25 <ais523> is it the one where it crashes my GPU and forces a hard reboot? 21:54:37 <Vorpal> ais523, the one that made it crash X11 for me. 21:54:41 <Phantom_Hoover> ais523, is that the same one I have on other things? 21:54:44 <Vorpal> ais523, now it just crashes itself XD 21:54:51 <ais523> Vorpal: hmm, would X subsequently restart? if so, it's not the same as mine 21:54:52 <Vorpal> ais523, I'm on radeon graphics btw 21:55:02 <ais523> Phantom_Hoover: a GPU crash is kind-of obvious, you can't do anything graphical until you hard-reboot 21:55:04 <Vorpal> ais523, it would, I use startx so I had to do that by hand 21:55:12 <ais523> ah, I couldn't even start X after mine 21:55:18 <Phantom_Hoover> ais523, yeah, I have suffered the same fate. 21:55:22 <Vorpal> ais523, it just dumped me into the terminal I ran startx from 21:55:26 <fizzie> I also had a "does not start" bug in And Yet It Moves fixed, but I didn't manage to report it; other people on them forums had already. 21:55:26 <ais523> I'm using Intel graphics 21:55:36 <ais523> AYIM worked fine for me 21:55:47 <CakeProphet> now if I can shorten all of my functions to 15 lines of code I no longer have to write pseudocode for any of them. 21:55:47 <ais523> although it's not an amazing game, and the difficulty curve is annoyingly inconsistent 21:55:50 <Vorpal> AYIM worked fine for me too 21:56:11 <Vorpal> ais523, AYIM is kind of fun though, but yes some parts are utterly hard 21:56:13 <fizzie> The 64-bit AYIM did not work fine for a whole lot of people; but it was fixeded. 21:56:15 <Vorpal> haven't finished it yet 21:56:26 <Vorpal> fizzie, that is the only one that worked for me 21:56:45 <fizzie> Yes, you told me it E_WORKSFORYOU when I was complaining about it not working, before. 21:56:51 <Vorpal> ais523, hammerfight still crashes on loading for me 21:57:00 <ais523> what sort of crash? 21:57:01 <Vorpal> works on intel graphics, but VEEEERY slowly 21:57:02 <oerjan> <CakeProphet> elliott__: ah another change to the algorithm is that you have to reverse the roles of parentheses. <-- also reverse the associativity of operators, i think 21:57:22 <Vorpal> ais523, segfault with varying backtrace, sometimes in libGL, sometimes broken stack 21:57:47 <CakeProphet> oerjan: ah yes that too, it's just not a factor for this project because all operators are left-associative. 21:57:55 <CakeProphet> or it doesn't matter... 21:58:31 <Vorpal> CakeProphet, eh, 2 - 4 - 3 would be 2 4 - 3 - in postfix and uh... not sure what it would be in prefix 21:59:17 <Vorpal> lets see.. - 2 - 4 3? I think? 21:59:22 <Vorpal> yes probably 21:59:33 <elliott__> no 21:59:33 <CakeProphet> well yes 21:59:39 <elliott__> - - two four three 21:59:59 <CakeProphet> I mean to say, associativity of - doesn't come up in any of my test cases. 22:00:14 <oerjan> CakeProphet: if they're all left-associative then when reversing you need to treat them ass right. 22:00:16 <elliott__> CakeProphet: still, fix it 22:00:17 <Vorpal> elliott__, think about the tree, a prefix walk would give you what I gave, no? 22:00:17 <oerjan> *as 22:00:24 <elliott__> Vorpal: you are wrong 22:00:37 <Phantom_Hoover> <Vorpal> ais523, segfault with varying backtrace, sometimes in libGL, sometimes broken stack 22:00:43 <Vorpal> elliott__, pretty sure I'm not given the AST and mental walking of it 22:00:45 <elliott__> - two - four three = two - (four - three) 22:00:54 <Vorpal> oh okay 22:00:54 <Phantom_Hoover> I'm getting segfaults in libGL with FS, as it happens. 22:00:54 <Vorpal> true 22:00:56 <elliott__> = (two - four) + three 22:00:59 <ais523> Vorpal: Hammerfight is incredibly buggy for me, anyway, though it works 22:01:09 <ais523> I keep backup savefiles because it often forgets which weapon/armour I have 22:01:11 <Vorpal> ais523, hm 22:01:18 <Vorpal> ais523, did you get the new bundle btw? 22:01:19 <ais523> and sometimes there are giant explosions that oneshot everything for no obvious reason 22:01:25 <ais523> I haven't yet, I'm not at all sure I want to 22:01:36 <ais523> oh, and there have been several instances of things taking INT_MIN damage 22:01:37 <Vorpal> ais523, you have the frozenbyte bundle already? 22:01:41 <ais523> not to mention crashes 22:01:43 <ais523> Vorpal: I don't 22:01:55 <Vorpal> ais523, INT_MIN? awesome, that gives them like max health? 22:02:01 <ais523> it seems to be capped 22:02:03 <Phantom_Hoover> elliott__, fun fact: I don't think I have had any contact with a human at any point in my attempt to report this. 22:02:07 <ais523> which is lucky, or the game would be unwinnable 22:02:20 <ais523> I've taken INT_MIN damage on my own machine on occasion, too 22:02:28 <Vorpal> ais523, technically not unwinable, just utterly hard 22:02:39 <ais523> well, I'd get bored first 22:02:44 <Vorpal> well yeah 22:03:53 <oerjan> <Phantom_Hoover> I offered to help but apparently the fact that I have talked to a Norwegian on the internet does not qualify me to be the Norwegian ambassador. <-- shocking 22:03:57 <CakeProphet> okay so all arithmetic operators are traditionally left-associative yes? 22:04:11 <Vorpal> CakeProphet, not exponentiation 22:04:14 <CakeProphet> well yes. 22:04:23 <CakeProphet> +-*/% is what I'm concerned with. 22:04:34 <Vorpal> those tend to be left-associative 22:04:37 <CakeProphet> okay good, so that means I can just change <= to < 22:04:45 <CakeProphet> to fix that. 22:04:50 <Phantom_Hoover> oerjan, indeed, I feel you should lodge a complaint. 22:04:51 <oerjan> / is a little tricky i think. traditionally mathematicians try to use genuine vertical layout there 22:05:23 <Phantom_Hoover> * is tricky too, given that I have never ever seen that used for multiplication in proper mathematical writing. 22:05:31 <oerjan> indeed 22:05:48 <CakeProphet> proper mathematical writing is certainly the context. 22:05:51 <Phantom_Hoover> Although it's still left-associative, although it's commutative so it's kind of irrelevant. 22:05:54 <Vorpal> traditionally in programming I assume he meant 22:06:14 <oerjan> so, whatever FORTRAN does :P 22:06:18 <CakeProphet> what? valgrind says that there is a memory leak associated with my alloca call? How can this BE? 22:06:21 <Vorpal> oerjan, :P 22:06:41 <CakeProphet> maybe valgrind just doesn't know how to handle such complex things. 22:06:52 <CakeProphet> non-standard things. 22:07:22 <Vorpal> no that should work 22:07:28 <Vorpal> CakeProphet, what do you alloca() 22:07:33 <Vorpal> some std::foo? 22:07:33 <elliott__> your professor should fail you for using alloca 22:07:41 <CakeProphet> Vorpal: stack<char> yes 22:07:43 <elliott__> and perhaps he will 22:07:52 <oerjan> nah alloca should be an automatic A, it's in the name 22:07:55 <elliott__> fizzie: pikhq: tell him he's an idiot 22:08:02 -!- pikhq has quit (Ping timeout: 248 seconds). 22:08:05 <Vorpal> CakeProphet, that allocates on the heap and will leak since the destructor won't be called 22:08:09 -!- pikhq has joined. 22:08:16 <Vorpal> CakeProphet, so stop being an idiot and just use normal stack allocation 22:08:23 <CakeProphet> Vorpal: where does it allocate on the heap? 22:08:33 <Vorpal> CakeProphet, in std::stack 22:08:34 -!- sllide has quit (Ping timeout: 255 seconds). 22:08:44 <elliott__> i suggest we don't answer his alloca qs] 22:08:45 <CakeProphet> ah okay. 22:08:47 <elliott__> waste of time 22:08:51 <CakeProphet> elliott__: yes too helpful 22:09:07 <CakeProphet> I might actually learn and correct things. 22:09:09 <CakeProphet> bad stuff. 22:09:16 <CakeProphet> best to just call him an idiot and move on. 22:09:35 <elliott__> we helped you 22:09:39 <elliott__> we said 22:09:45 <elliott__> don;t use alloca 22:09:59 <Vorpal> no we didn't. We said "don't" 22:10:24 <CakeProphet> bah now I have to add all of these vector::push_backs 22:10:37 <Vorpal> night → 22:11:02 <CakeProphet> also how could I avoid calling copy constructors? also what is a copy constructor? 22:11:09 <oerjan> <Phantom_Hoover> Then it turns out that Hexham is the centre of the coming apocalypse, precipitated by a cross-time war waged with neutrinos? <-- just find the ham and make it stop hexing. 22:11:36 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 22:12:18 <oerjan> hm wasn't that almost the plot of triangle and robert. 22:12:19 <olsner> CakeProphet: if you don't know what they are, you can't and probably shouldn't avoid them 22:14:26 <CakeProphet> olsner: maybe I should learn and then I can and should avoid them? 22:15:08 <olsner> probably not 22:16:57 <oerjan> <elliott__> Thing I just typed instead of MonadTrans: MonadTrams. <-- best method of transport 22:17:04 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:17:14 <olsner> CakeProphet: you should learn, yes, but that may not necessarily lead to developing either capability or desire to remove them 22:17:18 <olsner> or avoid them 22:17:45 <CakeProphet> well I was told that maintaining a vector of stacks to allow them to be freed at the end of the function call would call a lot of copy constructors 22:17:48 <CakeProphet> which would be Bad(tm) 22:17:56 <CakeProphet> thus, avoiding them is Good(tm) 22:18:51 <olsner> oerjan: extra funny in swedish: trams means (approx.) nonsense 22:19:25 <CakeProphet> I was thinking I could give the vector auto_ptrs but that doesn't really anything I think.. 22:19:31 <CakeProphet> +solve 22:20:15 <olsner> (or drivel) 22:21:18 <CakeProphet> help would using auto_ptr avoid copy constructors? 22:21:40 <CakeProphet> vector<auto_ptr<stack<char>>> toFree; 22:21:45 * Phantom_Hoover → sleep 22:21:47 -!- Phantom_Hoover has quit (Quit: Leaving). 22:21:50 <monqy> watch out with that >>> 22:21:53 <CakeProphet> yes I know. 22:21:58 <monqy> you could hurt someone 22:22:00 <monqy> (yourself) 22:22:11 <olsner> using auto_ptr like that would probably rather lead to other problems :) 22:22:19 <CakeProphet> such as? 22:22:27 <olsner> I dunno, I've never used them 22:22:41 <fizzie> Such as it's not safe to put auto_ptr into an STL container. 22:22:43 <CakeProphet> auto_ptr is basically a pointer except that when they destruct they destruct what they point to. 22:22:50 <CakeProphet> ah 22:23:06 <CakeProphet> fizzie: what might happen as a result? 22:23:13 <olsner> think about that for a while, how many times can you destruct something before it ends up dead? 22:23:18 <fizzie> Crashes and worse. 22:23:19 <CakeProphet> once 22:23:24 <CakeProphet> there is one auto_ptr per stack allocated 22:23:25 <CakeProphet> simple. 22:23:45 <CakeProphet> but apparently STL containers are not safe for a lot of things so... 22:23:53 <fizzie> Yes, but the vector would end up trying to make copies of it. 22:23:56 <CakeProphet> nevermind I'll just call some copy constructors. 22:24:10 <fizzie> Except that only one copy can own the pointed-to object. 22:24:41 <fizzie> It has a thing where assignment also NULLs the "source" auto_ptr, and the container isn't really equipped to cope with tat. 22:24:56 <CakeProphet> this seems like something that might occur commonly... why not have a special free_list data structure of some kind? 22:25:22 <fizzie> Boost has some "smart pointers" that are container-safe, I believe. 22:25:37 <CakeProphet> ah okay. 22:25:57 <CakeProphet> okay so 22:25:57 <fizzie> Anyway, you can just do it the old-fashioned way if you want to store plain pointers. 22:26:05 <CakeProphet> toFree.push_back(*s); 22:26:09 <olsner> CakeProphet: what would that free_list do? 22:26:09 <CakeProphet> toFree now "owns" *s yes? 22:26:24 <fizzie> That would make a copy. 22:26:34 <fizzie> Assuming the assumptions. 22:26:34 <CakeProphet> olsner: be like vector but not envoke copy constructors so that you can efficiently free a list of stuff upon free_lists destruction. 22:26:42 <elliott__> Envoke? 22:26:52 <CakeProphet> fizzie: yes I'm ignoring copy constructors. stoped caring. 22:26:52 <Deewiant> C++11 has std::unique_ptr, std::auto_ptr is deprecated 22:26:56 <CakeProphet> elliott__: yse 22:27:15 <monqy> invoke or evoke make up your mind? 22:27:20 <monqy> or is that the joke 22:27:25 <monqy> utghghghh so complicated 22:27:28 <CakeProphet> monqy: nno 22:27:54 <CakeProphet> yse and nno I c'nat tpey hlep 22:28:01 <fizzie> CakeProphet: If 's' is a stack*, toFree is a vector<stack>, that will make an independent copy of the stack and put that into the vector. It will still be your responsibility to delete s. 22:28:08 <olsner> CakeProphet: what operation do you mean by "free" here, exactly? 22:28:35 <CakeProphet> delete 22:28:40 <CakeProphet> oeprator 22:28:50 <oerjan> http://www.mezzacotta.net/postcard/ :P 22:29:04 <CakeProphet> fizzie: er wait I thought vector could magically delete things for me. 22:29:24 <fizzie> CakeProphet: The vector will delete things it has itself allocated. 22:29:25 <CakeProphet> do I need to maintain vector<stack<char> *> toFree; and then loop through toFree at the end and delete everything? 22:29:40 <CakeProphet> fizzie: I am still really confused as to how vector can allocate things for me. 22:30:45 <olsner> the vector only allocates things for itself, to accomodate the stuff you ask it to copy into it 22:30:56 <olsner> *into itself 22:31:21 <CakeProphet> okay I understand this now, my question is how do I use a vector to manage memory? 22:31:32 <fizzie> CakeProphet: vector< stack<char> > staks; for (...) { staks.push_back(stack<char>()); stack<char>& s = staks.back(); /* use s; it lives in the vector */ } 22:31:50 <CakeProphet> stack<char>()?? 22:31:56 <olsner> meh... understand pointers, then get what vector is doing, read some of the generated assembly code, it will all become apparent in due time :) 22:32:08 <CakeProphet> olsner: step one and two complete 22:32:16 <elliott__> <CakeProphet> stack<char>()?? 22:32:19 <elliott__> Heard of constructors? :p 22:32:30 <CakeProphet> I was under the impression I had to declare variables to do that. 22:32:35 <CakeProphet> but okay. 22:32:38 <CakeProphet> cool. 22:32:39 <olsner> step two doesn't seem to be complete, since it's what we're doing right now afaict 22:32:56 -!- ais523 has quit (Remote host closed the connection). 22:33:06 <CakeProphet> olsner: no I'm learning how to use vectors for a specific task. 22:33:07 <fizzie> Or for (...) { stack<char> s; /* use s, it's temporary right now */ staks.push_back(s); /* will make a copy, but that sounds silly if you only want to free them later */ } 22:33:08 <olsner> also, there are some more steps inbetween, obviously 22:33:11 <CakeProphet> I understand that it makes copies of things. 22:33:54 <fizzie> I don't quite understand why you want these things to live past the loop only to free them. 22:34:57 <CakeProphet> question how is it determined when stack<char>() is destroyed. 22:35:03 <fizzie> Note that you can't have plain pointers into the inside-the-vector objects, because they are liable to move. (If that's why they have to survive.) 22:35:03 <CakeProphet> out in the wild. 22:35:29 <fizzie> The (empty) stack in the push_back argument is a temporary. 22:35:37 <fizzie> It won't live long. 22:35:45 <CakeProphet> how long exactly. 22:36:01 <fizzie> Why should you care? You're not using it. 22:36:09 <CakeProphet> hmmm... okay I believe I understand. 22:36:09 <fizzie> In the optimal case it could be optimized out of existence. 22:36:54 <CakeProphet> it's not that I have things I want to exist outside of a loop. 22:37:05 -!- ais523 has joined. 22:37:06 <CakeProphet> it's that I have things that I want to allocate upon some iterations of the loop 22:37:17 <CakeProphet> maintain their existence throughout the life of the algorithm 22:37:21 <CakeProphet> and then disappear at the end of the function call. 22:37:25 <ais523> hmm, people here were asking for copies of my papers in the past 22:37:32 <ais523> are they still interested? I forget who they were 22:37:36 -!- augur has quit (Remote host closed the connection). 22:37:45 <fizzie> CakeProphet: But how are you referring to the previously allocated things? 22:38:44 <CakeProphet> fizzie: I have a stack of stacks, to handle parentheses. So when you encounter a parentheses it takes the current stack and hides it away inside the stack-stack, then a new stack needs to be allocated for the nested expression. 22:38:52 <CakeProphet> *parenthesis 22:38:58 <fizzie> CakeProphet: I mean, if you have pointers to them, you can't let them live inside a vector, because they will move around. 22:39:22 <CakeProphet> fizzie: ...they will? 22:39:34 <fizzie> Sure, as the vector grows. 22:39:48 <elliott__> I thought CakeProphet understood vectors ;P 22:39:49 <elliott__> :P 22:39:59 <CakeProphet> ...I do 22:40:00 -!- kmc has quit (Quit: Leaving). 22:40:04 <CakeProphet> I wasn't talking about the vector. 22:40:07 <fizzie> If you have a stack of actual stacks, then they will obviously stay alive without any trickery. If you have stacks of pointers to stacks, then it's a problem. 22:40:11 <elliott__> Then why didn't you know vectors move their elements? 22:40:17 <CakeProphet> fizzie: I have the latter. 22:40:20 <CakeProphet> elliott__: I did...? 22:40:27 <elliott__> <CakeProphet> fizzie: ...they will? 22:40:29 <elliott__> You didn't? 22:40:41 <CakeProphet> I was referring to my pointers to stacks. 22:40:45 <CakeProphet> that are stored elsewhere. 22:40:51 <CakeProphet> they will not suddenly point to different things. 22:40:54 <CakeProphet> for some reason 22:41:03 <fizzie> CakeProphet: Those of course will not; that's the whole problem. 22:41:18 <fizzie> CakeProphet: Because the things they point to will go elsewhere. 22:41:23 <CakeProphet> elliott__: you read me misunderstanding a question. 22:42:18 <fizzie> Anyway, at this point it might be simplest you just kept a list of pointers to free, then. And call delete on the contents manually. 22:42:55 <CakeProphet> yes that's what I was thinking. 22:43:11 <olsner> pretty sure you don't need a stack of stacks to handle parens though 22:43:17 <CakeProphet> the reference voodoo is interesting, but, yeah... things move around in the vector. 22:43:23 <CakeProphet> olsner: no you don't 22:43:32 <CakeProphet> I can just put the ( itself on the stack 22:43:52 <CakeProphet> there is always a different way. 22:44:50 <olsner> where is this reference voodoo you speak of btw? 22:44:52 <CakeProphet> I'm just used to GC languages where adding complexity to your data structure doesn't suddenly create a memory management problem. 22:45:13 <elliott__> It doesn't if you don't use pointers. 22:46:26 <CakeProphet> well I use a pointer for my main stack because STL stacks are silly and don't allow me to re-assign the variable they reside in to a new stack. 22:46:54 <CakeProphet> no = operator 22:47:02 <oerjan> <CakeProphet> fizzie: I have a stack of stacks, to handle parentheses. <-- what in the world don't you simply put the parens on the one single stack for... 22:47:33 <CakeProphet> oerjan: because I haven't changed it to do that as I probably will. again I'm used to a GC language where that would simplify things. 22:48:26 <olsner> would a stack of stacks really simplify things in a gc language? 22:48:57 <CakeProphet> actually, I'm tired tired of defending myself. I'm not a perfect programmer. I'm going away for a while. 22:49:26 <CakeProphet> (nor a particularly good one) 22:49:35 * oerjan read that as slower than light stacks are silly 22:50:16 <elliott__> CakeProphet: you mistake questions and doubts about your design as personal remarks. 22:50:18 <fizzie> oerjan: You have neutrinos in your mind, I take it. 22:50:29 <elliott__> it is called trying to help you 22:50:41 <oerjan> fizzie: billions of them, every second 22:51:49 <CakeProphet> elliott__: I just find it mentally taxing. I take them personally, but they are not personal remarks. 22:51:55 <fizzie> I can share the worst infix-to-prefix Scheme code ever written, if it helps. (Unless I already erased it out of shame. I may have. It was... bad.) 22:51:59 <CakeProphet> I have high expectations for myself. And this channel has high expectations for everything. 22:52:17 <elliott__> nobody will care if you don't use a design we suggest, we're just trying to figure out what it is so we can help you 22:53:03 <oerjan> a stack of stacks is equivalent to a single stack with a special marker, as long as you don't move the substacks 22:53:10 <CakeProphet> well I'm switching to a single stack as it completely resolves all memory management issues. 22:53:27 <fizzie> oerjan: A stack is a stack is a stack. 22:53:40 <CakeProphet> I just found using a special marker gross for some reason. 22:53:45 <oerjan> fizzie: wat 22:53:54 <fizzie> oerjan: Stack! 22:54:33 <CakeProphet> elliott__: also I've been working on this for hours so it's been kind of maddening. 22:55:15 <oerjan> somehow this reminds me of that underload number parser i wrote 22:55:20 <CakeProphet> just part of the learning curve I suppose. 22:55:44 <oerjan> in the process of simplifying it, i ended up with an abstract interpreter 22:56:56 <oerjan> i have this hunch from today's iwc that dmm doesn't like sad endings 22:57:15 <elliott__> oerjan: heh 22:57:21 <elliott__> re abstract interpreter 22:57:24 <elliott__> oerjan: I remember that 22:57:27 <elliott__> I might still have the code, even 22:57:30 <elliott__> it was nice 22:57:35 -!- BeholdMyGlory has quit (Remote host closed the connection). 22:59:40 <elliott__> oerjan: so is IWC still heading towards an ending? :P 23:05:49 <oerjan> elliott__: your guess is as good as mine 23:06:25 <fizzie> Cue "Noooooo my guess is BETTER!" 23:06:58 <oerjan> a new top comment on that reddit thread about synchronization seems to claim gps is sufficient: http://www.reddit.com/r/askscience/comments/kv91b/discussion_thread_promising_ftl_neutrino/c2nl7pf 23:07:34 <oerjan> (i just reloaded as i finally got around to actually reading the tab) :P 23:07:38 <elliott__> someone tell ais523 :P 23:07:45 <oerjan> ais523: ^ 23:07:56 * ais523 looks 23:08:04 <ais523> didn't the team themselves say that GPS wasn't sufficient? 23:08:22 <oerjan> by _standard_ methods, yes 23:08:31 <oerjan> but there are ways. 23:08:34 <ais523> ah, OK 23:08:45 <ais523> that would imply that they didn't use GPS because they thought it wasn't sufficient, at least 23:09:09 <elliott__> ais523: click the link :P 23:09:12 <ais523> I did 23:09:18 <elliott__> did you read it? :p 23:09:25 <ais523> I skimmed it 23:09:30 <oerjan> in fact i vaguely recall reading somewhere that the method with time transfer was previously tried, and _not_ sufficient 23:10:24 <oerjan> or maybe it was some other obvious method 23:10:49 <elliott__> ais523: well, it answers your question 23:10:50 <elliott__> well 23:10:52 <elliott__> implied statement thing 23:10:54 <elliott__> i.e. <ais523> that would imply that they didn't use GPS because they thought it wasn't sufficient, at least 23:12:48 <CakeProphet> ==29732== total heap usage: 94 allocs, 94 frees, 21,988 bytes allocated 23:12:49 <CakeProphet> awww yeah 23:13:47 -!- Patashu has joined. 23:14:55 <CakeProphet> memory management is easy when you don't explicitly dynamically allocate anything. 23:17:04 <CakeProphet> okay so what's the best way to die inside a function 23:17:23 <Patashu> make the computer shut down 23:17:32 <Patashu> oh, you meant the most practical? 23:17:43 <elliott__> CakeProphet: abort()? printf + exit? 23:17:51 <CakeProphet> ah, exit, yes. 23:17:55 <fizzie> Throw a type nobody could expect, since the language lets you throw anything. 23:18:08 <CakeProphet> when does one use abort? 23:18:22 <fizzie> E.g. a char* to a string constant is good: throw "ha ha only serious"; 23:18:42 <Patashu> okay, youtube's front page layout changed and I can't see where to get to my subscriptions 23:18:54 <elliott__> Try civil war. 23:18:55 -!- ais523 has quit (Remote host closed the connection). 23:18:55 <CakeProphet> elliott__: when does one use abort over exit in an ideal world? 23:19:04 <elliott__> CakeProphet: When the situation is impossible. 23:19:18 <elliott__> It could e.g. start a debugger, even. 23:19:33 <elliott__> Basically abort() should never be called, so put it in places that can never happen. 23:19:34 <CakeProphet> okay so, for example... when you give a function that determines the precedence of an operator something that isn't an operator? 23:19:44 <elliott__> That should probably be a C++ exception, dude. 23:19:49 <CakeProphet> okay. 23:20:24 <fizzie> C++ has its own thing called terminate() that you can use in places where you would abort(). By default it calls abort(), but you can set a terminate handler. 23:20:27 <elliott__> <fizzie> E.g. a char* to a string constant is good: throw "ha ha only serious"; 23:20:33 <elliott__> fizzie: Isn't that actually fairly common... 23:20:40 <fizzie> elliott__: Sadly, yes. 23:20:42 <CakeProphet> but now what should I throw without putting too much effort into it. 23:21:03 <fizzie> Integer error codes are another thing. 23:21:10 <CakeProphet> throw -1? 23:21:23 <CakeProphet> currently it's return -1 23:21:36 <CakeProphet> you know what 23:21:38 <CakeProphet> this doesn't matter. 23:21:45 <elliott__> I don't think it's The C++ Way to return an error code. 23:21:58 <elliott__> Just "throw null;" (fizzie: That will segfault, right?) 23:22:34 <fizzie> No, it'll throw a null pointer. 23:22:44 <CakeProphet> yes I want to learn the C++ Way. 23:23:03 <CakeProphet> so that I may forever feel pain. -_;; 23:23:12 <CakeProphet> the zen of suffering. 23:23:31 <elliott__> fizzie: Ah wonderful. 23:23:35 <fizzie> You can always just throw a std::runtime_exception if nothing else. 23:23:38 <elliott__> CakeProphet: I know. 23:23:52 <elliott__> { static int foo; throw &foo; } 23:23:59 <elliott__> Then literally nobody can predictably detect it. 23:24:04 <fizzie> Though you get to decide whether to throw it by pointer or by value. 23:24:21 -!- augur has joined. 23:24:34 <CakeProphet> elliott__: you know that I want to learn the zen of suffering? 23:24:42 <CakeProphet> that's, uh, interesting I gues. 23:24:43 <CakeProphet> +s 23:25:08 <elliott__> I meant "I know what to throw". 23:25:16 <CakeProphet> oh okay. 23:25:19 <CakeProphet> .....no 23:25:27 <fizzie> And if you throw by value, you can catch it by reference. 23:25:30 <CakeProphet> I think runtime_exception is good 23:25:43 <CakeProphet> throw runtime_exception("someone has learned the zen of suffering.") 23:25:45 <CakeProphet> ; 23:25:52 <Patashu> so uh. how do I see my subscrptions on youtube. it's showing me a new page with trending stuff instead 23:25:57 <Patashu> and this time there's no button to change it back 23:26:12 <elliott__> fizzie: Can you have static classes? 23:26:26 <elliott__> { static class foo {}; static foo ohno; throw &ohno; } 23:26:30 <elliott__> CakeProphet: Then nobody can even catch it. 23:27:06 <CakeProphet> oh so I need to pointer-ize it? 23:27:10 <fizzie> What sort of? 'static' is so overused. You can't have a inside-a-function class though. 23:27:13 <Patashu> oh nvm it fixed itself 23:27:23 <CakeProphet> oh just use static? 23:27:33 <fizzie> throw runtime_exception("...") is quite fine. 23:27:39 <elliott__> CakeProphet: Dude it was a joke. 23:27:39 <olsner> fizzie: you can't? pretty sure it works in modern compilers 23:27:41 <CakeProphet> is it the C++ Way 23:27:52 <elliott__> fizzie: I just want an exception nobody can even talk about outside the function. 23:27:54 <CakeProphet> elliott__: dude this is text on irc. 23:27:59 <olsner> pretty sure ... but only iirc 23:28:13 <fizzie> olsner: Hmm, well; maybe. I'm not much of a C++er. 23:28:35 <elliott__> Says fizzie "GLfunge" "JITfunge" "Probably something that isn't funge" "fizzie++" fizzie 23:28:54 <fizzie> GLfunge was C. 23:29:04 <CakeProphet> oh and 23:29:06 <olsner> ISTR having to replace code looking somewhat like that after it got exposed to less modern compilers 23:29:10 <CakeProphet> it's runtime_error by the way. My mistake. 23:29:19 <elliott__> fizzie: Oh, it was? 23:29:29 <elliott__> fizzie: Did it use malloc without casting? Maybe it's C++ too :P 23:30:19 <fizzie> CakeProphet: It is the C++ way to throw Thing("args"), and catch-by-reference a Thing&, and have Thing (ultimately) inherit from std::exception; but if you can't b bothered to type a class, runtime_error is a reasonable substitute. 23:30:44 <CakeProphet> oh good. 23:30:49 <fizzie> (It inherits from exception too.) 23:30:53 <CakeProphet> I can't be bothered with something that isn't going to happen. 23:30:59 <elliott__> Would be good if runtime_error DIDN'T inherit from exception. 23:31:10 <CakeProphet> I'm just trying to impress my professor so that maybe she'll forget that it was 3 days late. 23:31:31 <CakeProphet> by being correct (which is probably better than most), good style, etc. 23:31:35 <CakeProphet> but it's probably all for naught. 23:31:57 <CakeProphet> I AM SO BEHIND ON EVERYTHING AAAAAAH 23:32:10 <CakeProphet> thus must be why people do cocaine. 23:32:12 <CakeProphet> *this 23:33:02 <fizzie> elliott__: I suppose the inner class thing might work; but if not, { struct { long double wrong } guess_my_structure = { 42.0 }; throw guess_my_structure; } 23:33:12 <elliott__> fizzie: Prettey. 23:33:17 <CakeProphet> s.erase(remove_if(s.begin(), s.end(), ::isspace), s.end()) 23:33:20 <CakeProphet> okay so the reason this works. 23:33:20 <fizzie> (Plus the missing ;.) 23:33:23 <elliott__> fizzie: Can you catch that with any struct { long double wrong; } got_in;? 23:33:24 <elliott__> Er 23:33:25 <elliott__> m 23:33:30 <elliott__> fizzie: Can you catch that with any struct gotcha { long double wrong; }? 23:33:33 <CakeProphet> is because remove_if is actually shuffle_this_stuff_to_the_back? 23:33:38 <elliott__> Or does it use actual honest-to-god identity equality? 23:33:47 <elliott__> CakeProphet: That sounds questionable. 23:33:56 <CakeProphet> well, the above code is correct... 23:34:00 <CakeProphet> and removes whitespace 23:34:02 <CakeProphet> from the string. 23:34:16 <fizzie> elliott__: I can't remember offhand if identical-definiton structs need to be identical-representation too. 23:34:29 <elliott__> fizzie: Surely the representation is irrelevant in a catch? 23:34:36 <elliott__> I mean, it can't ask whether the representation is right of an arbitrary object. 23:34:48 <CakeProphet> Applies pred to the elements in the range [first,last), and removes those for which it does not return false from the resulting range. The resulting range consists of the elements between first and the iterator returned by the function, which points to the new end of the range. 23:35:01 <fizzie> Oh, right. Yes. I guess it won't catch then. 23:35:04 <fizzie> Maybe. 23:35:33 <fizzie> Guess it depends on the RTTI data that ends in there. 23:35:34 <elliott__> fizzie: I wonder how catch in C++ works. RTTI? 23:35:36 <elliott__> Snap. 23:35:43 <CakeProphet> okay so it doesn't shuffle the whitespace to the back it just defines a new range and the erase is chopping the bounds so to speak. 23:35:47 <CakeProphet> I think. 23:35:59 <fizzie> I was just wondering whether accessing the value would work, assuming it would catch it. 23:35:59 <CakeProphet> the stuff after the end of the range is just garbage. 23:36:32 <fizzie> There is the "common initial subsequence" rule, but theoretically that is only for structs that have ever been part of the same union anywhere. 23:37:03 -!- SimonRC has quit (Ping timeout: 245 seconds). 23:37:59 <CakeProphet> I like how Discrete Math at my university is MATH 1234 23:41:28 <fizzie> You can catch absolutely everything (even anonymous types like that) with catch (...) { /* do something */ } but then you can't access the thrown value in any way. Well, except for re-throwing it. 23:42:40 <CakeProphet> can you unthrow? :P 23:44:04 <fizzie> You can just do nothing, and that'll swallow the exception. 23:44:09 -!- SimonRC has joined. 23:44:28 <olsner> I think he means some kind of retroactive on error resume next 23:44:52 <elliott__> olsner: What an awkward way to describe continuation behaviour. 23:44:54 <CakeProphet> yes, resume from the throw. 23:44:59 <olsner> does VB have resume next? 23:45:03 <Patashu> you mean an enterprisey way! 23:45:04 <Patashu> yes it does 23:45:37 <fizzie> Not portably, but I guess it might be doable on some platforms. 23:45:49 <elliott__> fizzie: You would have to restore the stack. 23:46:01 <elliott__> I guess if you're sure it hasn't been overwritten, which I guess is likely to be true, all you need is the original stack pointer. 23:46:10 <elliott__> And the registers. :/ 23:46:28 <elliott__> Basically you need getcontext before the throw :P 23:47:07 <fizzie> I don't think it's exactly specified how much stack unwinding has been done at the catch block time, only after it. But it could well be impossible. 23:47:15 <fizzie> Remember to never throw anything from a destructor. 23:48:02 <fizzie> (If you throw a thing during the stack-unwinding destructor calls of another exception, the runtime will terminate().) 23:51:08 <elliott__> Heh. 23:53:39 <CakeProphet> C++ makes perfect sense if you think about it. 23:53:47 -!- zzo38 has joined. 23:53:59 <elliott__> no 23:54:16 <CakeProphet> elliott__: okay don't think about it THAT much. 23:54:19 <zzo38> Are you sure? 2011-09-30: 00:00:52 <CakeProphet> C++ has all the bad abstractions you need to circumvent problems you find with its bad abstractions. 00:01:11 <Patashu> nope C++ is the ideal programming language 00:01:13 <Patashu> like manna from heaven 00:01:23 <Patashu> that's why every language must copy it 00:01:45 <CakeProphet> I've never really seen a language that works like C++ 00:01:50 <CakeProphet> so it's not very well-copied. 00:02:00 <zzo38> Patashu: No. You can use different programming language what you do. Such as, you can write a program in C, or whatever 00:03:32 <Patashu> yeah, that's true, it's just the 'look' of C++ that's copied not the semantics 00:20:37 <pikhq> elliott__: @. Log-structed filesystem. Contemplate. 00:21:08 <elliott__> pikhq: I'm not sure what it would buy me, because it's not clear how to do that for arbitrary objects 00:21:19 <elliott__> And I don't ever want to throw away old versions without being asked, so it doesn't help for that 00:21:38 <pikhq> elliott__: The "throw away old versions" thing is a garbage collection pass. 00:21:52 <elliott__> Well, fair enough, but all implementations I know use a fixed-size buffer 00:22:29 <pikhq> Do you ever need to collect the entire heap? No. You need to collect enough to satisfy your next write. 00:24:01 <elliott__> pikhq: Not true; I have to collect the memory heap aggressively to avoid @'s equivalent of swap trhrashing 00:24:52 <pikhq> Yeah, but the disk heap doesn't need anywhere near that level of aggression. 00:25:17 <pikhq> In fact, you desperately want to avoid scanning that. 00:26:39 <elliott__> The question is, where do I start collecting on the disk heap if I need to free up space? 00:26:54 <elliott__> Also open problem: Where do I store the generation info? 00:26:56 <elliott__> And how? 00:27:01 <elliott__> Also: I can't use a copying collector. 00:27:26 <pikhq> Well, obviously; collection would take eons. 00:27:49 <elliott__> More like "you don't have space". 00:28:02 <pikhq> Or you only ever use half the disk. 00:28:04 <pikhq> :) 00:28:06 * oerjan should learn more about _really_ incremental collectors 00:28:21 <oerjan> i assume they exist 00:28:37 <CakeProphet> they must because they're really 00:28:47 <oerjan> obviously. 00:29:17 <elliott__> oerjan: wat 00:29:29 <pikhq> Anyways, stupid concept for a collector: circular log collector. Have two pointers, tail and head. Collect from tail, write to head (as per a standard copying collector). 00:29:40 <pikhq> I have no idea if this is even slightly sane. 00:29:42 <oerjan> well maybe there is some simple reason why they cannot be made 00:29:48 <pikhq> Intuition says "o.O'" 00:30:23 <oerjan> elliott__: i mean essentially a collector which _never_ needs to trace too many objects in one go 00:30:38 <elliott__> Isn't that just an incremental collector :P 00:31:02 <oerjan> i dunno. i might know even less than i thought :P 00:31:23 <oerjan> hm, maybe i'm confusing generational with incremental 00:32:10 <oerjan> as in, generational collectors make things more incremental, but not fully 00:32:16 <oerjan> ghc still has full collections 00:32:58 <elliott__> pikhq: Incidentally, I also need a concurrent garbage collector... 00:33:20 <elliott__> Or at least one that can only pause /some/ tasks (defined as "things that are being scheduled"). 00:33:33 <oerjan> elliott__: anyway you say you cannot use a copying collector, but if using only half of your physical space was the price for other efficiency, why not... 00:33:52 <elliott__> oerjan: So you buy a one terabyte disk and can only use five hundred gigs of it? 00:33:54 <elliott__> That won't be very popular. 00:35:53 <oerjan> elliott__: hm, but for images and videos, say, they won't contain pointers much, so you may not need to allocate double space for them... 00:36:05 * oerjan is hypothesizing wildly here 00:36:19 <elliott__> oerjan: copying collector involves two heaps 00:36:31 <elliott__> when you collect, you simply traverse one heap, copy everything referenced to the other, and start using it 00:36:42 <elliott__> how many pointers there are is irrelevant 00:36:50 <elliott__> (you'd probably have a heap per generation) 00:37:12 <oerjan> elliott__: yes. but you could probably have some objects which don't need to be put on those heaps 00:37:29 <elliott__> you mean objects you don't need to collect? ok :P 00:37:31 <CakeProphet> elliott__: reference counting is the best GC 00:37:46 <oerjan> elliott__: well you might collect them if there are no references to them. 00:37:52 <pikhq> CakeProphet: By "best" you mean "worst", right? 00:38:21 <oerjan> basically, just have a small inode-like thing, that is put on the heaps but the rest of the data isn't. 00:38:30 <elliott__> oerjan: that sounds like refcounting... 00:38:35 <elliott__> oerjan: the whole point with copying GC is that you never explicitly "free" 00:38:38 <CakeProphet> if by "right" you mean "wrong" and by "mean" you mean "don't mean" 00:38:41 <elliott__> you never even _look_ at garbage 00:38:45 <CakeProphet> then yes. 00:38:51 <oerjan> elliott__: oh hm right that may be a problem 00:38:57 <pikhq> CakeProphet: Seriously, reference counting is terrible in nearly every way. 00:38:58 <oerjan> ok 00:39:06 <CakeProphet> pikhq: seriously it's the best dude. 00:39:11 <CakeProphet> what could be simpler. 00:39:55 <oerjan> CakeProphet: reference counting requires everything _other_ than the gc to handle it... 00:40:15 <pikhq> oerjan: There is an issue that, in the model he's dealing with, the disk heap is simply the heap; the RAM is functioning exclusively as a disk cache. 00:40:25 <CakeProphet> elliott__: (...I wonder when they'll catch on) 00:40:30 <pikhq> And, plausibly, the first generation or two of the collector. 00:47:41 -!- Jafet has joined. 00:48:13 <elliott__> so 00:48:32 -!- Sgeo has joined. 00:49:29 <CakeProphet> so 00:49:47 -!- Sgeo has quit (Client Quit). 00:49:52 <elliott__> os 00:50:07 -!- Sgeo has joined. 00:50:24 * Sgeo is now using a half-decent IRC client! 00:51:02 <zzo38> What IRC client? 00:51:07 <Sgeo> XChat 00:51:22 <zzo38> O, it is good to you? Or only half? 00:51:33 <Sgeo> It's better than webchat 00:51:55 <pikhq> Now make it emit valid UTF-8. By default it uses a moronic encoding of "If it can be encoded in Windows-1252, use that, otherwise UTF-8". 00:52:08 <Sgeo> o.O 00:52:53 <oerjan> høw hørrible 00:53:21 <zzo38> They are probably all better than webchat 00:54:01 <zzo38> pikhq: Do you know what configuration setting you need for that? If so, write on here, maybe Sgeo will correct it too 00:54:12 -!- SgeoN1 has quit (Quit: Bye). 00:54:59 <elliott__> oerjan: But seriously, I think an incremental collector is basically just doing a normal collection in discrete pieces 00:56:52 <pikhq> zzo38: Should just be the charset configuration option. 00:56:58 <pikhq> The moronic one is called "IRC". 00:57:49 <zzo38> Now I will try to make up a way of using X- fields in cabal file for preparing printout of the program. 01:00:45 -!- derdon has quit (Remote host closed the connection). 01:01:27 <Sgeo> Is the charset configuration option not in the GUI? 01:02:08 <oerjan> by default it's shown in invisible characters 01:04:22 -!- esowiki has joined. 01:04:40 -!- esowiki has joined. 01:05:39 -!- esowiki has joined. 01:05:39 -!- glogbot has joined. 01:06:46 -!- HackEgo has quit (Ping timeout: 255 seconds). 01:07:25 -!- HackEgo has joined. 01:08:00 <olsner> Sgeo: whether you get lynched for using UTF-8 or for not using it differs between networks and channels ... 01:08:17 <Sgeo> o.O 01:08:42 <Sgeo> ‫Will I get lynched for doing this? 01:08:49 <olsner> but a per-channel setting with a global default is probably a lot more useful than a per-network setting 01:09:09 <zzo38> Sgeo: Did you put something before "W"? 01:09:10 <elliott__> UTF-8 is at least ubiquitous on freenode. 01:09:15 <elliott__> zzo38: "?". 01:09:28 <olsner> the good part about the IRC setting is that you at least don't have to care about what other people have as their encoding 01:09:35 <elliott__> olsner: um it does not affect decoding 01:09:36 <elliott__> only encoding 01:09:38 <Sgeo> elliott__, I have no idea if that came before or after 01:09:44 <elliott__> Before. 01:09:51 <elliott__> If you mean the "?". 01:10:04 <Sgeo> I'm pretty sure I typed it after though 01:10:07 * Sgeo is confused 01:10:45 <Sgeo> The following line will be typed as such: Right-to-left-embedding H e l l o ? 01:10:51 <Sgeo> ‫Hello? 01:10:52 <olsner> elliott__: hmm, maybe it doesn't 01:11:02 <zzo38> Maybe I should change name of package/modules to prevent names being conflicted. I could prefix all names of my package by "zzo38-" and name of my module by "Zzo38." that way it won't conflicted? Is that the way it should be done? "Chaos will result if two distinct packages with the same name are installed on the same system, but there is not yet a mechanism for allocating these names." 01:11:23 <elliott__> Sgeo: yeah that was "?Hello". 01:11:33 <elliott__> zzo38: just use the hierarchical model standard 01:11:34 <CakeProphet> sufficient, but not necessary. 01:11:34 <zzo38> Sgeo: To me, is shown a unknown character before the "W" ("H" that time), overlapping the colon 01:11:36 <elliott__> yours should be Control.Monad.Barrier 01:11:45 <elliott__> s/model/module/ 01:11:53 <elliott__> http://www.haskell.org/haskellwiki/Hierarchical_module_names 01:11:56 <pikhq> olsner: The "IRC" setting reads "fuck up everyone who is not omitting this fucked up guaranteed-to-be-broken 'standard'" 01:12:05 <zzo38> elliott_: OK. But what happen if someone else wants to make up a different barrier monads implementation? 01:12:26 <olsner> pikhq: :) 01:12:39 <pikhq> It fucks up everyone using *either* Windows-1252 or UTF-8. 01:13:05 <pikhq> And the scheme makes EBCDIC look reasonable. 01:13:53 <elliott__> zzo38: Then dependencies sort it out, and the user "ghc-pkg hide"s the one they don't want to use by default. 01:14:01 <zzo38> elliott__: That article does not describe package names, though. How to do with package names? 01:14:10 <elliott__> If a package depends on two packages, that each use a different barrier monad implementation, they're fucked :) 01:14:15 <elliott__> zzo38: Lowercase, dashes to separate, is the standard 01:14:18 <elliott__> So barrier-monad 01:14:27 <elliott__> There's no real namespacing, but it's no big deal in practice 01:14:53 <zzo38> elliott__: But what if someone make a different implementation? It is not a problem with module names because you can hide it, but package names doesn't do that! 01:15:10 <zzo38> OK I can call the module "Control.Monad.Barrier" 01:15:19 <zzo38> It doesn't help with package name though 01:15:56 <elliott__> zzo38: Well, then it breaks. But there's no place to get packages but Hackage, and it wouldn't allow a duplicate name :-) 01:16:59 <zzo38> OK. 01:19:30 -!- Sgeo has quit (Ping timeout: 248 seconds). 01:19:52 -!- Sgeo has joined. 01:21:23 <zzo38> Should I fill in "Build-depends"? 01:22:08 <zzo38> It tell me lack of 'description' and 'maintainer' field cause trouble when distributing the package, but the message about Hackage rejecting the package is removed now. 01:22:25 <elliott__> You must fill in build-depends completely with proper version information or the package will fail to build. 01:22:51 <zzo38> Is there a way to parse the source file and check which packages it uses? 01:22:57 <zzo38> By automatically? 01:24:32 <elliott__> No. 01:24:41 <elliott__> You can see in ghci thought, 01:24:43 <elliott__> ghci Foo 01:24:47 <elliott__> and see which packages it loads 01:24:48 <elliott__> BUT 01:24:52 <elliott__> That includes all the dependencies too 01:24:57 <elliott__> And you should only list packages you use directly in build-depends 01:25:03 <elliott__> It's good though, because you should have to think about the versions you're using 01:25:21 <zzo38> The only one I import directly is the Control.Monad module 01:25:45 <elliott__> Then 01:26:19 <elliott__> build-depends: base == 4.* 01:26:20 <elliott__> should do. 01:26:24 <zzo38> OK 01:27:13 -!- kmc_ has joined. 01:29:37 <zzo38> So, do I put it in a file from the package root Control/Monad/Barrier.lhs is that the correct way to do it? 01:30:23 <elliott__> Sure. You can specify source directories in the cabal file 01:30:35 <elliott__> So if you wanted you could have src/Control/Monad/Barrier.lhs. 01:30:39 -!- Gregor` has joined. 01:30:42 <zzo38> But is that the way to do it if the module is named Control.Monad.Barrier 01:30:43 <elliott__> hi Gregor` 01:31:22 <Gregor`> What the blehhuh 01:31:24 <Gregor`> Nothing was down except for my bouncer >_O 01:31:46 -!- Sgeo has quit (Ping timeout: 248 seconds). 01:32:02 -!- Gregor` has changed nick to Gregor. 01:32:07 -!- Sgeo has joined. 01:32:16 <Gregor> AND some jerk squatted my name :P 01:32:57 <elliott__> lol 01:32:58 -!- kmc_ has changed nick to kmc. 01:32:59 <elliott__> did you ghost him 01:33:04 <Gregor> Hell yeah 01:33:17 <zzo38> I see "hs-source-dirs: directory list (default: .) Root directories for the module hierarchy." So does that mean Control/Monad/Barrier.lhs is correct? Or not? 01:33:23 <elliott__> zzo38: Yes 01:33:25 <elliott__> It's correct 01:33:28 <zzo38> OK thanks 01:34:49 <zzo38> Does it matter the name of the .cabal file or the name of the directory where the .cabal file is stored? 01:36:05 <zzo38> Is this a correct file? http://sprunge.us/XGDP 01:37:40 <elliott__> It should be called <package>.cabal 01:37:44 <elliott__> You have a Setup.lhs, right? 01:37:47 <elliott__> Or .hs 01:37:47 <elliott__> Whatever 01:38:00 <elliott__> You should probably remove the commented out lines :P 01:38:15 <elliott__> Oh, and it should be in your root directory to 01:38:16 <elliott__> too 01:38:36 <zzo38> It created the Setup.hs file by itself 01:38:47 <zzo38> OK now it is called barrier-monad.cabal 01:39:05 <zzo38> It is in the package root. 01:39:17 <zzo38> Does the name of the package root directory matter? 01:39:43 <zzo38> So, the package root now contains files barrier-monad.cabal example.lhs Setup.hs and the directory Control 01:40:02 <zzo38> Is that correct? 01:40:12 <zzo38> Should examples be placed in its own directory? 01:40:53 <elliott__> Doesn't really matter 01:41:07 <zzo38> OK I will leave it how it is. 01:42:05 <zzo38> The "X-Printout-" are not for any existing program yet, so I can change their names or syntax if necessary. Do you have better ideas of their names or format? 01:45:00 <elliott__> dunno 01:47:47 <zzo38> My idea is that "Mode" specifies what mode is used for preparing printout, such as Plain TeX, LaTeX, HTML, or whatever; "Main" means main files (for TeX, it is the file(s) given directly to TeX); "Others" means other file from the package needed to work the printout; and "Require" mean files not in this package that are needed in addition to what Mode/Main/Others specifies. 01:48:06 <zzo38> Would different names for these fields be better, or different syntax of the values of these fields? 01:51:30 -!- Sgeo has quit (Ping timeout: 248 seconds). 01:51:51 -!- Sgeo has joined. 02:03:46 -!- Sgeo has quit (Ping timeout: 248 seconds). 02:04:26 -!- Sgeo has joined. 02:04:50 -!- shachaf has quit (Remote host closed the connection). 02:08:34 -!- yorick has quit (Ping timeout: 276 seconds). 02:12:18 -!- Madoka-Kaname has quit (Ping timeout: 244 seconds). 02:13:07 -!- Madoka-Kaname has joined. 02:13:07 -!- Madoka-Kaname has quit (Changing host). 02:13:07 -!- Madoka-Kaname has joined. 02:13:40 <zzo38> Now what do I do, do I make a file called barrier-monad-0.1.tar.gz of all the files and subdirectories from the package root? 02:16:09 -!- SgeoN1 has joined. 02:16:35 <elliott__> Sure, then upload to Hackage 02:16:45 <SgeoN1> I think XChat keeps getting swapped out of memory or something. Or does it not work like that? 02:18:10 -!- Sgeo has quit (Ping timeout: 248 seconds). 02:18:46 -!- Sgeo has joined. 02:23:11 <zzo38> Oops I require a password. 02:24:43 <elliott__> For what? 02:26:07 <elliott__> zzo38: ? 02:26:24 <zzo38> Oops now I tried with -c and it says "could not extract barrier-monad-0.1 directory from barrier-monad-0.1.tar.gz" OK, I will fix that too 02:26:50 <elliott__> What did you need a password for? 02:27:02 <zzo38> The "cabal upload" ask for password. 02:27:25 <elliott__> zzo38: You need a Hackage account, it's just a matter of sending an email 02:27:48 <zzo38> And then what is password? Do they make up a random password? 02:28:07 <zzo38> Or is that my job? 02:28:57 <elliott__> from the looks of http://hackage.haskell.org/packages/accounts.html they'll assign you a random password 02:29:08 <elliott__> but you can change it 02:30:07 -!- Sgeo has quit (Ping timeout: 260 seconds). 02:30:41 -!- Sgeo has joined. 02:31:05 <SgeoN1> Fuck XChat in the ass 02:31:33 <elliott__> ok 02:31:37 <SgeoN1> Or maybe it's the computer 02:31:49 <monqy> ok 02:32:16 <SgeoN1> Maybe I should use Quassel, with the core elsewhere. 02:32:19 <monqy> ok 02:32:25 <SgeoN1> ok 02:32:56 <elliott__> ok 02:33:54 -!- Sgeo has quit (Client Quit). 02:34:52 <SgeoN1> Quassel should handle disconnects with some grace, right? 02:41:58 <CakeProphet> uh... where is string defined in C++ stdlibn 02:42:11 <CakeProphet> I'm including string..... but it's still having issues. 02:42:58 <CakeProphet> oh nevermind... 02:57:59 <zzo38> Would any barrier monads have instances of MonadPlus or MonadGroup or MonadFix? If so, what would be the restrictions on the front and back type to be able to make such instances? I do not think it can be MonadPlus, because it does not satify the MonadPlus laws. 02:58:42 <zzo38> And MonadZip? 03:09:50 <SgeoN1> What are barrier monads? 03:10:04 <SgeoN1> Is zzo38 doing something awesome? 03:10:24 <SgeoN1> zzo38, are you doing something awesome? 03:11:20 <oerjan> something similar to data Barrier front back t = Any t | Barrier front (back -> Barrier front back t) , iirc 03:12:16 <oerjan> is there a transformer version? it might be likely to inherit MonadPlus from its inner monad 03:12:30 <oerjan> i don't really know much about MonadGroup or MonadZip 03:13:02 <oerjan> (i may or may not have front and back switched) 03:13:12 <zzo38> You have front and back correct. 03:13:31 <zzo38> There is no transformer version. If there can be, how to make transformer version? 03:13:37 <oerjan> lessee 03:14:47 <oerjan> something like data BarrierT front back m t = Any (m t) | Barrier m (front, back -> Barrier front back m t) 03:14:50 <oerjan> er 03:15:04 <oerjan> something like data BarrierT front back m t = AnyT (m t) | BarrierT m (front, back -> BarrierT front back m t) 03:15:18 <oerjan> hm still not right 03:15:25 <oerjan> something like data BarrierT front back m t = AnyT (m t) | BarrierT (m (front, back -> BarrierT front back m t)) 03:15:43 <zzo38> I think you also need parentheses in the final (m t) 03:15:48 <CakeProphet> what's the purpose of the tuple? 03:15:49 <zzo38> Or not. 03:15:54 <zzo38> No, you don't need. 03:15:59 <oerjan> indeed not. 03:16:36 <oerjan> well the tuple is to get out two values from the inner monad, although it might be better to define another data type 03:17:22 <oerjan> and it is not entirely clear to me exactly where the intervening m's should be 03:17:47 <zzo38> Nor to me; that is one reason I did not define the transformer version 03:18:30 <oerjan> hm maybe... 03:18:44 <CakeProphet> well, basically it just needs to work so that when m = Identity it's more or less equivalent to Barrier right? 03:18:58 <zzo38> But I suppose a transformer version could possibly inherit MonadPlus from its inner monad. 03:19:01 <oerjan> data BarrierT front back m t = AnyT t | BarrierT front (back -> m (BarrierT front back m t)) 03:19:30 <oerjan> then you don't need the tuple, although you might want to surround with an m when using it 03:20:19 <oerjan> type BarrierT' front back m t = m (BarrierT front back m t) 03:21:11 <zzo38> OK. So, is that the best way, now? 03:21:12 <oerjan> and which of BarrierT and BarrierT' should be the fundamental one is not entirely clear (except that the fundamental one should be data, not type, for instance reasons) 03:22:06 <elliott__> oerjan: can you do lift with BarrierT? 03:22:07 <elliott__> I am not sure 03:22:12 <zzo38> Is this difficult to figure out perfectly? 03:22:12 <elliott__> you don't have front 03:22:42 <oerjan> oh right, so lift means BarrierT' should be fundamental 03:22:59 <elliott__> unless you have (Monoid front) 03:23:05 <elliott__> in which case you can use mempty 03:23:08 <elliott__> zzo38: do you? 03:23:15 <oerjan> i don't think that's the intention 03:23:17 <elliott__> oerjan: oh uh you can't really do lift with BarrierT' either 03:23:22 <elliott__> can you 03:23:27 <elliott__> oh 03:23:28 <elliott__> AnyT 03:23:28 <elliott__> right 03:23:48 <oerjan> should be just applying liftM AnyT in the right spot 03:24:03 <zzo38> elliott__: Do I what? 03:24:12 <elliott__> have (Monoid front) 03:24:56 <zzo38> elliott__: The front type can be any type, so it might or might not be a monoid. 03:25:27 <elliott__> right 03:26:20 <zzo38> What is this "lift"? 03:27:03 <oerjan> data BarrierT' front back m t = AnyT t | BarrierT' front (back -> BarrierT front back m t); newtype BarrierT front back m t = BarrierT (m (BarrierT' front back m t)) 03:27:11 <oerjan> @src MonadTrans 03:27:11 <lambdabot> Source not found. Sorry. 03:27:13 <elliott__> zzo38: MonadTrans 03:27:15 <oerjan> bah 03:27:42 <elliott__> (you must add to build-depends transformers == 0.2.*) 03:27:49 <CakeProphet> Barrier kind of resembles maybe-or-state to me. 03:27:51 <elliott__> (and import Control.Monad.Trans) 03:28:20 <zzo38> OK, so those are the package and modules. I will look at them 03:29:11 <oerjan> lift x = BarrierT (liftM AnyT x) 03:29:14 <CakeProphet> except there's no rank-2-ness 03:29:25 <oerjan> i think 03:30:04 <elliott__> oerjan: Sounds right 03:30:15 <zzo38> CakeProphet: It does? Well, then that might be some use? Another thing it kind of resembles to me, is the generator functions in Javascript which is why the "yield" function is called "yield". 03:30:41 <oerjan> what about iterators or that kind of stuff 03:30:54 <oerjan> althought they mix other things into it 03:35:52 <zzo38> Iterators? 03:36:03 <oerjan> er, *iteratees 03:36:36 <zzo38> Iteratees? 03:36:43 <elliott__> http://hackage.haskell.org/packages/archive/iterIO/0.2/doc/html/Data-IterIO.html is a good introduction 03:36:52 <elliott__> or http://okmij.org/ftp/Streams.html#iteratee 03:41:11 <zzo38> Yes there is something similar, although it is different 03:41:21 <zzo38> But I can see the similarity. 03:44:58 -!- copumpkin has joined. 03:46:31 -!- HackEgo has quit (Ping timeout: 255 seconds). 03:46:42 -!- HackEgo has joined. 04:08:00 -!- fungot has quit (*.net *.split). 04:08:00 -!- Zuu has quit (*.net *.split). 04:08:01 -!- HackEgo has quit (*.net *.split). 04:08:01 -!- copumpkin has quit (*.net *.split). 04:08:01 -!- Zetro has quit (*.net *.split). 04:08:02 -!- aloril has quit (*.net *.split). 04:08:02 -!- cheater has quit (*.net *.split). 04:08:02 -!- Patashu has quit (*.net *.split). 04:08:03 -!- Deewiant has quit (*.net *.split). 04:08:03 -!- quintopia has quit (*.net *.split). 04:08:03 -!- fizzie has quit (*.net *.split). 04:08:04 -!- yiyus has quit (*.net *.split). 04:08:04 -!- lambdabot has quit (*.net *.split). 04:08:05 -!- MichaelBurge has quit (*.net *.split). 04:08:05 -!- myndzi\ has quit (*.net *.split). 04:08:05 -!- FireFly has quit (*.net *.split). 04:08:05 -!- chickenzilla has quit (*.net *.split). 04:08:05 -!- Madoka-Kaname has quit (*.net *.split). 04:08:06 -!- zzo38 has quit (*.net *.split). 04:08:06 -!- pikhq has quit (*.net *.split). 04:08:06 -!- oerjan has quit (*.net *.split). 04:08:07 -!- Gregor has quit (*.net *.split). 04:08:08 -!- lifthrasiir has quit (*.net *.split). 04:08:08 -!- atehwa has quit (*.net *.split). 04:08:08 -!- coppro has quit (*.net *.split). 04:08:27 <elliott__> help 04:08:29 <elliott__> CakeProphet: help 04:11:25 -!- HackEgo has joined. 04:11:25 -!- copumpkin has joined. 04:11:25 -!- Madoka-Kaname has joined. 04:11:25 -!- Gregor has joined. 04:11:25 -!- zzo38 has joined. 04:11:25 -!- Patashu has joined. 04:11:25 -!- pikhq has joined. 04:11:25 -!- lambdabot has joined. 04:11:25 -!- oerjan has joined. 04:11:25 -!- Zuu has joined. 04:11:25 -!- fungot has joined. 04:11:25 -!- Deewiant has joined. 04:11:25 -!- lifthrasiir has joined. 04:11:25 -!- MichaelBurge has joined. 04:11:25 -!- myndzi\ has joined. 04:11:25 -!- quintopia has joined. 04:11:25 -!- atehwa has joined. 04:11:25 -!- FireFly has joined. 04:11:25 -!- aloril has joined. 04:11:25 -!- cheater has joined. 04:11:25 -!- fizzie has joined. 04:11:25 -!- chickenzilla has joined. 04:11:25 -!- yiyus has joined. 04:11:25 -!- coppro has joined. 04:12:47 -!- Zetro has joined. 04:13:57 -!- GreaseMonkey has joined. 04:23:07 -!- copumpkin has quit (Ping timeout: 276 seconds). 04:29:07 <zzo38> 04:29:36 <zzo38> Now, would there be any such things as cobarrier comonad? 04:32:20 <oerjan> heh 04:32:57 <oerjan> well iirc there should be a way to get one value out of it... 04:33:01 -!- SgeoN1 has quit (Read error: Connection reset by peer). 04:33:19 -!- SgeoN1 has joined. 04:34:21 <oerjan> would CoBarrier f b t = CoAny t | CoBarrier (t,f) (back -> CoBarrier f b t) work? 04:34:39 <oerjan> hm doesn't really seem symmetric to Barrier 04:35:07 <zzo38> Yes you are right, it doesn't seem symmetric to Barrier 04:35:08 <elliott__> Conomad is like, when two nomads go around the desert together. 04:35:14 <elliott__> You say, oh Jeff? He's my conomad. 04:35:26 <elliott__> And some people are silly and say con omad but honestly. 04:35:29 <elliott__> Conomads. Yes. 04:35:38 <oerjan> oh hm maybe the | should dualize to (,) 04:35:43 <elliott__> I bet oerjan wishes he has my analytical mind. 04:36:07 <elliott__> oerjan: w a -> w (w a), get writing 04:36:12 <elliott__> either that or (w a -> b) -> w a -> w b 04:36:14 <elliott__> and it has to be a functor 04:36:25 <elliott__> oh wait 04:36:28 <elliott__> you also need w a -> a 04:36:30 <elliott__> but you have that already 04:36:50 <elliott__> (http://hackage.haskell.org/packages/archive/comonad/1.1.1.1/doc/html/Control-Comonad.html) 04:36:57 <oerjan> would CoBarrier f b t = CoBarrier t (Either f (b -> CoBarrier f b t)) 04:37:17 <elliott__> dunno, define those :P 04:37:29 <zzo38> I did read somewhere that comonads correspond to product types (such as (,)) as monads correspond to sum types (such as Either) 04:37:49 <oerjan> yeah so i tried switching that somehow 04:38:30 <oerjan> CoBarrier f b t = CoBarrier t (Either f (CoBarrier f b t -> b)) 04:40:46 <oerjan> that last one does sort of dualize every piece of it 04:41:30 <elliott__> define the methods :P 04:41:31 <zzo38> I can see that. 04:41:41 <elliott__> i'm not sure you can fmap that 04:41:43 <oerjan> but i don't really understand comonads :P 04:41:46 <elliott__> at all 04:41:50 <elliott__> it must be a proper functor 04:41:56 <elliott__> (yes you can just do it to the single "t" there but that's cheating) 04:42:14 <oerjan> oh right. must have the -> CoBarrier ... then 04:43:43 <oerjan> that's pretty clearly a Functor, anyway 04:44:39 <elliott__> oerjan: I wish we had a typeclass tower up to Monad that had no duplication 04:44:44 <elliott__> like, you can implement fmap with the Applicative methods 04:44:49 <elliott__> and you can implement everything above with the monad methods 04:44:56 <oerjan> everyone wishes that, elliott__ 04:44:59 <elliott__> it would be cool if we had a tower with no duplication at all 04:45:00 <elliott__> oerjan: lol 04:45:07 <elliott__> oerjan: hmm I guess fmap => join provides that 04:45:09 <elliott__> but it's not a very strong tower 04:45:23 <elliott__> um wait no 04:45:26 <elliott__> fmap => (pure, join) provides that 04:47:05 <oerjan> CoBarrier t (Left f) could go to CoBarrier (CoBarrier t (Left f)) (Left f) 04:47:27 <elliott__> duplicate = extend id 04:47:27 <elliott__> fmap (fmap f) . duplicate = duplicate . fmap f 04:47:27 <elliott__> that's the law, if you choose that route :P 04:47:33 <elliott__> extend :: (w a -> b) -> w a -> w b 04:47:35 <elliott__> seems easier because it's just 04:47:37 <elliott__> extend f = fmap f . duplicate 04:47:41 <elliott__> and 04:47:41 <elliott__> duplicate = extend id 04:47:46 * oerjan gives up immediately 04:47:49 <elliott__> oerjan: :D 04:47:50 <elliott__> sorry 04:47:54 <elliott__> what i f i shutted up what THEN 04:48:22 <oerjan> doubtful. as i said i don't understand comonads. 04:48:34 <elliott__> lol 04:50:22 <monqy> i knew about comonads and their laws and what they do but i just today learned why they're amazing 04:50:30 <monqy> and i want to use them everywhere now 04:50:45 <elliott__> monqy: go on 04:50:54 <monqy> i'm bad at articulating things!!! 04:51:03 <monqy> like why i think comonads are amazing 04:51:35 <monqy> oh right it's i figured out what extend is for 04:51:42 <monqy> and then it all made sense 04:51:52 <elliott__> what is it for? 04:52:08 <elliott__> ([a] -> b) -> [a] -> [b]... the question is I guess, how do you decide which groups of a to take... 04:52:23 <elliott__> looks like duplicate = tails is the instance 04:52:30 <elliott__> so it's \f -> map f . tails 04:52:35 <elliott__> > map f (tails [a,b,c]) 04:52:36 <lambdabot> Ambiguous type variable `b' in the constraints: 04:52:36 <lambdabot> `GHC.Show.Show b' 04:52:36 <lambdabot> a... 04:52:39 <elliott__> >:( 04:52:41 <elliott__> > map f (tails [a,b,c]) :: [Expr] 04:52:42 <lambdabot> [f [a,b,c],f [b,c],f [c],f []] 04:52:44 <elliott__> aha 04:52:55 <elliott__> monqy: I still don't get it :) 04:54:08 <oerjan> is [] a comonad? 04:54:11 <monqy> no 04:54:19 <oerjan> that might explain it :P 04:54:26 <monqy> it's an instance of Extend though 04:54:33 <oerjan> oh 04:55:21 <elliott__> it's a coalmostmonad :P 04:55:22 <zzo38> [] cannot be a comonad because there is no extract 04:55:35 <oerjan> oh right 04:55:52 <oerjan> are nonempty lists a comonad, then? 04:56:20 <monqy> yes 04:56:26 <monqy> or uh 04:56:29 <monqy> yes 04:56:45 <monqy> i was looking at the wrong thing when i was checking but then i looked at the right thing and it was there too 04:56:56 <oerjan> both monad and comonad... 04:57:05 <elliott__> monqy: what would codo syntax look like? 04:57:15 <monqy> ????? 04:57:26 <elliott__> foo :: NonEmpty a -> NonEmpty (); foo xs = codo xs' <- xs; map (const ()) xs' 04:57:27 <elliott__> ? :P 04:57:41 <monqy> oh, codo 04:57:42 <elliott__> turns into: extend (\xs' -> map (const () xs') xs 04:57:45 <elliott__> I just invented that 04:59:11 <oerjan> [5] <- x; [1,3] <- y; duplicate [x,y] codo 05:00:04 <elliott__> oerjan: pretty............ 05:00:31 <oerjan> in einen alternativen Universum, it might even make sense 05:00:37 <oerjan> *einem 05:08:13 -!- Vorpal has joined. 05:13:29 <elliott__> `quote in einem 05:13:32 <HackEgo> 27) IN EINEM ALTERNATIVEN UNIVERSUM (WO DIE NAZIS WON): <ehird> So kann ich nur schliessen, dass es falsch ist, oder die Welt ist vollig BONKERS. Gegrusset seist du der Fuhrer Hitler! 05:15:56 <zzo38> Yes, I tried it, there is Extend for lists 05:16:35 -!- copumpkin has joined. 05:18:38 <zzo38> And, codo notation works. If you have RebindableSyntax you can use let { (>>=) = (=>>) } in (do { ... }) 05:19:13 <monqy> a few minutes ago i tried actually using comonads but couldn't think of anything that wasn't just the same as monads, for which i am currently blaming myself 05:19:34 <elliott__> lol 05:21:02 <oerjan> :t (=>>) 05:21:02 <lambdabot> Not in scope: `=>>' 05:21:09 <oerjan> fancy that. 05:21:51 <monqy> Extend w => w a -> (w a -> b) -> w b 05:22:39 <oerjan> is there something similar to >> = 05:22:41 <oerjan> *? 05:22:53 <elliott__> w a -> b -> w b I guess 05:23:09 <elliott__> w >< x = w =>> const x 05:23:28 <oerjan> ok 05:23:37 <monqy> :t (<$) 05:23:38 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a 05:23:41 <monqy> ??? 05:23:49 <elliott__> that too :P 05:24:04 <monqy> puzzling over why ($>) doesn't exist 05:24:24 <zzo38> The let { (>>=) = (=>>) } does not always work, it is not working like do-notation. 05:24:57 <monqy> you need to do more than that to get it to work... 05:26:47 <oerjan> :t flip 05:26:47 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 05:26:56 <oerjan> oh hm 05:27:01 <oerjan> :t (*>) 05:27:02 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b 05:27:24 <elliott__> monqy: hmm can you do "w a -> w b -> w b" with comonads? 05:27:26 <elliott__> I think not 05:27:46 -!- Ngevd has joined. 05:28:03 <elliott__> monqy: but I'm not sure 05:28:12 <Ngevd> Morning! 05:28:19 <elliott__> monqy: oh you can do "w a -> b -> w b" though 05:28:39 <monqy> what does w a -> w b -> w b do 05:28:43 <elliott__> doesn't 05:28:45 <elliott__> codo { w } === w 05:28:45 <elliott__> codo { x <- w; w' } === w =>> \x -> w' 05:28:45 <elliott__> codo { w; w' } === w =>> \_ -> w' 05:28:48 <elliott__> there we are, codo 05:28:58 <elliott__> ... 05:28:59 <elliott__> codo { w } === w 05:28:59 <elliott__> codo { x <- w; w' } === w =>> \x -> codo w' 05:28:59 <elliott__> codo { w; w' } === codo { _ <- w; w' } 05:29:00 <elliott__> tada 05:29:10 <monqy> but it's certainly possible to make things that are w a -> w b -> w b, no? 05:29:13 <elliott__> sure 05:29:15 <monqy> just not the one you were thinking of 05:29:19 <elliott__> monqy: now your goal is... define OI comonad... 05:29:25 <elliott__> where purity ... is really hard 05:29:25 <monqy> oh dear, oi 05:29:29 <elliott__> but side-effects fall out like butter 05:29:49 <oerjan> elliott__: purity is never hard in a comonad 05:29:56 <elliott__> yes it is 05:30:00 <elliott__> (a -> w a) is hard 05:30:11 <oerjan> hm 05:30:15 <monqy> that's why you write the same thing as (w a -> a) 05:30:21 <zzo38> Possibly you can define OI comonad in JavaScript? Is it? 05:30:22 <monqy> comonad zen 05:30:31 <zzo38> But I don't think so in Haskell 05:32:21 <zzo38> I invented Shadow comonad and found this: do { x <- [1,10]; y <- [99,999]; return (x,y); } = [(1,99),(1,999),(10,99),(10,999)] let { (>>=) = (=>>) } in do { x <- Shadow 1 10; y <- Shadow 99 999; (extract x, extract y); } = Shadow (Shadow (1,99) (1,999)) (Shadow (10,99) (10,999)) 05:32:30 <monqy> what is shadow 05:33:16 <zzo38> It is a comonad with a normal value and a shadow value (with the same type) in every computation. 05:33:29 <monqy> shadow value? 05:33:49 <monqy> like a more specialised version of the ((,) a) comonad? 05:33:50 <elliott__> sounds like a tuple 05:33:54 <monqy> yes 05:34:12 <zzo38> monqy: Yes, there is a similarity. 05:36:34 <zzo38> If you have a function f (Shadow x y) = x then (=>> f) switches the normal value (y) with the shadow value (x) 05:36:49 <zzo38> (The value on right is the normal value, same as the ((,) a) comonad) 05:37:35 <zzo38> What is the use of this comonad? 05:38:01 <zzo38> I just made it up because I can, and check the comonad laws are working OK. 05:38:02 <monqy> which one 05:38:20 <zzo38> I mean, what is the use of the Shadow comonad that I just made up a few minutes ago? 05:38:46 -!- oerjan has quit (Quit: Good night). 05:43:49 <Ngevd> BYOB is ridiculously weakly typed 05:45:08 <elliott__> more like b your own b 05:47:20 <Ngevd> That's... what the y and o stand for 05:47:45 <monqy> is this that blocks thing (what's that) 05:48:04 <Ngevd> Yes 05:48:15 -!- Jafet has quit (Quit: Leaving.). 05:49:40 <Ngevd> That's what the second b stands for 05:50:03 <monqy> visual programminglanugage for little kids was it 05:50:11 <Ngevd> WRONG 05:50:16 <Ngevd> BUT CLOSE 05:50:24 <monqy> visual programminglanguage for taneb 05:51:00 <Ngevd> It's a derivative of Scratch (which is visual programming language for little kids) designed to teach people MORE ADVANCED PROGRAMMING FEATURES such as first-class functions 05:51:08 <Ngevd> Or indeed functions 05:51:35 <monqy> =/ 05:51:49 <elliott__> "=/" --monqy 05:52:11 <monqy> i'm inferring the little kids one is teaching little kids how to do things with mutable variables and dumb control structures which is bad!!! 05:52:58 <Ngevd> It's better than scaring them of programming FOREVER with lots of scary text 05:53:10 <monqy> then: don't lots of scary text 05:53:28 <monqy> do it with: pictures and metaphor 05:53:32 <monqy> and simple examples 05:53:34 <monqy> and baby steps 05:54:18 <Ngevd> Scratch is also one of the hardest programming languages to make a mistake on 05:54:25 <monqy> o? 05:54:26 <monqy> h 05:54:28 <elliott__> really? 05:54:32 <elliott__> i'll switch to it then 05:54:34 <elliott__> if it really makes bugs hard 05:54:37 <monqy> I'm SKEPTICAL 05:55:25 <Ngevd> It makes bugs hard AT THE COST OF MAKING ALMOST EVERYTHING HARD 05:55:37 <elliott__> ah. 05:55:40 <fizzie> And $ ./testlm-disk.pl ../twungot/{tokens,model}.bin.irc 5 do it with 05:55:40 <fizzie> do it with syntax-case, to have more fun in life when you're not 05:55:40 <fizzie> do it with c, less so with c++, or plain c. 05:55:40 <fizzie> do it with syntax-rules. could you start it up once. it was probably unworkable... i didn't really think "hang on, i'll explain in a few years" 05:55:44 <fizzie> do it with your own. :( now, i just did 05:55:46 <fizzie> do it with oklopol. computed jumps... the topic. it will make sense? 05:55:58 <Ngevd> Scratch doesn't even have custom functions 05:56:22 -!- elliott__ has set topic: computed jumps... the topic. | Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/. 05:56:37 <Ngevd> Or data structures other than a string, number, or list of strings and numbers 05:57:23 <Ngevd> I once made a brainfuck interpreter in Scratch 05:58:41 <monqy> fizzie: poetry 05:59:15 <elliott__> fizzie: How about "qwerty"? 05:59:33 <fizzie> Esolangers do it with: http://sprunge.us/FBcc 06:00:13 <zzo38> And brainfuck doesn't have any data types either, other than cell type, and also doesn't even have custom functions. 06:00:49 <fizzie> elliott__: qwerty what? 06:00:54 <elliott__> fizzie: Lines starting "qwerty". 06:02:35 <fizzie> qwerty. i see where you are from the pflog0 interface. what point are you trying to load other fingerprints too 06:02:38 <fizzie> qwerty keyboard back in my windows days starts by explaining its name, UNK, 06:02:41 <fizzie> qwerty memorized in 20 different timezones when i'm UNK underwater UNK before diving. but 06:02:44 <fizzie> qwerty, from all nodes that can end a sentence with that then. 06:02:46 <fizzie> qwerty all day at work here. 06:03:08 <fizzie> UNK is what the Perl script calls fnord. 06:03:33 <monqy> my favoiurtes are still the results from plain "do it with" 06:04:18 <elliott__> fizzie: what about... starting with UNK... 06:04:20 <elliott__> starting with UNK UNK UNK... 06:04:25 <monqy> unk unk unk 06:05:24 <fizzie> UNK UNK UNK () 06:05:24 <fizzie> UNK UNK UNK f UNK 06:05:24 <fizzie> UNK UNK UNK UNK UNK UNK +))(if( t UNK d UNK t UNK 06:05:24 <fizzie> UNK UNK UNK 06:05:24 <fizzie> UNK UNK UNK UNK UNK, mutta suurin UNK on syntynyt UNK UNK, 06:05:34 <fizzie> That last bit is in Finnish. 06:05:58 <fizzie> "..., but the largest UNK was born UNK UNK" 06:05:58 <monqy> unk problems 06:06:26 <elliott__> the largest unk was indeed born unk unk. 06:06:33 <monqy> unk 06:07:15 <fizzie> UNK UNK UNK -lgcc_s -lgcc UNK -lm -lpthread -lz -ldl -lgcc_s -lgcc -lc -lgcc_s -lgcc UNK -lm -lpthread -lz -ldl -lgcc_s -lgcc -lc -lgcc_s -lgcc UNK -lm -lpthread -lz -ldl -lgcc_s -lgcc -lc -lgcc_s -lgcc 06:07:19 <fizzie> UNK UNK UNK UNK UNK. ja kun UNK tapahtuu kaikkien UNK, niin UNK UNK. args 06:07:27 <fizzie> Finnish seems popular in thesel 06:07:45 <fizzie> "and when UNK happens with all UNK, then UNK UNK." 06:08:56 <Ngevd> Actually, I once made a Befunge-93 interpreter in Scratch 06:09:03 <zzo38> All functors in Haskell are strong. What if you want to do something else? 06:09:15 <Ngevd> And now I will have breakfast 06:09:21 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 06:14:18 <fizzie> fungot WRYYY can't you do the "starts-with" thing too? 06:14:19 <fungot> fizzie: where did you get my point 06:14:36 <fizzie> fungot: I haven't gotten your point. 06:14:37 <fungot> fizzie: advice for sarahbot") or " in meinen lederhosen" ( plural) or " in meinen lederhosen" ( plural) or " broken" archives. even less chance of getting help. i am puzzled 06:15:13 <fizzie> fungot: I am very puzzled too. You seem to not be making any of the sense. 06:15:29 <fizzie> Oh noes, too much? 06:18:22 <elliott__> fungot. 06:18:23 <fungot> elliott__: gcc ( gcc) 3.4.3 fnord ( red hat fnord) may then result in other rules being fired and so on 06:18:29 <elliott__> Red Hat fnord. 06:20:46 <fizzie> The best fnordstibution there is. 06:21:16 <elliott__> That was a bit contrived, fizzie. 06:21:48 <fizzie> Your MOM was a bit fnordtived. 06:23:03 <elliott__> Yes. 06:41:32 -!- zzo38 has quit (Remote host closed the connection). 07:21:58 -!- copumpkin has quit (Ping timeout: 252 seconds). 07:22:21 -!- copumpkin has joined. 07:50:48 -!- Madoka-Kaname has quit (Read error: Operation timed out). 08:22:37 -!- SimonRC has quit (Ping timeout: 260 seconds). 08:22:37 -!- boily has quit (Ping timeout: 260 seconds). 08:22:37 -!- jix_ has quit (Ping timeout: 260 seconds). 08:24:11 -!- jix has joined. 08:28:43 -!- fungot has quit (*.net *.split). 08:28:43 -!- Zuu has quit (*.net *.split). 08:28:44 -!- aloril has quit (*.net *.split). 08:28:44 -!- cheater has quit (*.net *.split). 08:28:44 -!- Vorpal has quit (*.net *.split). 08:28:44 -!- HackEgo has quit (*.net *.split). 08:28:44 -!- Patashu has quit (*.net *.split). 08:28:44 -!- Deewiant has quit (*.net *.split). 08:28:44 -!- quintopia has quit (*.net *.split). 08:28:45 -!- fizzie has quit (*.net *.split). 08:28:45 -!- yiyus has quit (*.net *.split). 08:28:45 -!- lambdabot has quit (*.net *.split). 08:28:45 -!- MichaelBurge has quit (*.net *.split). 08:28:45 -!- myndzi\ has quit (*.net *.split). 08:28:45 -!- FireFly has quit (*.net *.split). 08:28:46 -!- chickenzilla has quit (*.net *.split). 08:28:46 -!- pikhq has quit (*.net *.split). 08:28:47 -!- Gregor has quit (*.net *.split). 08:28:47 -!- lifthrasiir has quit (*.net *.split). 08:28:47 -!- atehwa has quit (*.net *.split). 08:28:47 -!- coppro has quit (*.net *.split). 08:28:48 -!- variable has quit (*.net *.split). 08:28:50 -!- twice11 has quit (*.net *.split). 08:28:50 -!- da_petcu21 has quit (*.net *.split). 08:28:50 -!- monqy has quit (*.net *.split). 08:28:50 -!- SgeoN1 has quit (*.net *.split). 08:28:51 -!- kmc has quit (*.net *.split). 08:28:51 -!- MDude has quit (*.net *.split). 08:28:51 -!- hagb4rd has quit (*.net *.split). 08:28:51 -!- sebbu has quit (*.net *.split). 08:28:51 -!- Nisstyre has quit (*.net *.split). 08:28:51 -!- tiffany has quit (*.net *.split). 08:28:51 -!- iamcal has quit (*.net *.split). 08:39:55 -!- boily has joined. 08:39:55 -!- shachaf has joined. 08:39:55 -!- Vorpal has joined. 08:39:55 -!- variable has joined. 08:39:55 -!- HackEgo has joined. 08:39:55 -!- Gregor has joined. 08:39:55 -!- Patashu has joined. 08:39:55 -!- pikhq has joined. 08:39:55 -!- lambdabot has joined. 08:39:55 -!- Zuu has joined. 08:39:55 -!- fungot has joined. 08:39:55 -!- Deewiant has joined. 08:39:55 -!- lifthrasiir has joined. 08:39:55 -!- MichaelBurge has joined. 08:39:55 -!- myndzi\ has joined. 08:39:55 -!- quintopia has joined. 08:39:55 -!- atehwa has joined. 08:39:55 -!- FireFly has joined. 08:39:55 -!- aloril has joined. 08:39:55 -!- cheater has joined. 08:39:55 -!- fizzie has joined. 08:39:55 -!- chickenzilla has joined. 08:39:55 -!- yiyus has joined. 08:39:55 -!- coppro has joined. 08:40:21 -!- twice11 has joined. 08:40:38 -!- SgeoN1 has joined. 08:40:38 -!- kmc has joined. 08:40:38 -!- MDude has joined. 08:40:38 -!- hagb4rd has joined. 08:40:38 -!- sebbu has joined. 08:40:38 -!- Nisstyre has joined. 08:40:38 -!- tiffany has joined. 08:40:38 -!- iamcal has joined. 08:40:40 -!- da_petcu21 has joined. 08:40:40 -!- monqy has joined. 08:44:40 -!- BeholdMyGlory has joined. 08:46:22 -!- ais523 has joined. 09:01:32 -!- hagb4rd has quit (Read error: No route to host). 09:15:32 -!- ais523 has quit (Read error: Connection reset by peer). 09:18:03 -!- Madoka-Kaname has joined. 09:19:42 -!- ais523 has joined. 09:32:08 -!- ais523 has quit (Remote host closed the connection). 09:37:30 -!- monqy has quit (Quit: hello). 10:17:04 -!- da_petcu21 has left ("Linkinus - http://linkinus.com"). 10:31:00 -!- hagb4rd has joined. 10:42:20 -!- SimonRC has joined. 10:57:08 -!- GreaseMonkey has quit (Quit: The Other Game). 11:08:18 -!- ais523 has joined. 11:17:21 -!- ais523 has quit (Read error: Connection reset by peer). 11:20:32 -!- ais523 has joined. 11:49:30 -!- Phantom_Hoover has joined. 11:50:10 -!- derdon has joined. 11:56:09 -!- Jafet has joined. 11:58:22 <Phantom_Hoover> "In Deliciae Physico-Mathematicae (a 1636 magazine), German inventor Daniel Schwenter described a pen made from two quills. One quill served as a reservoir for ink inside the other quill." 11:58:24 <Phantom_Hoover> I want one. 12:00:13 <Vorpal> interesting 12:02:52 <fizzie> Sounds very retro. 12:03:25 <Vorpal> well yes, technology wise it has become obsolete 12:04:05 <ais523> 1636 is a bit too old to be retro 12:04:15 <Vorpal> ais523: what is it then? 12:04:20 <Phantom_Hoover> Quillpunk. 12:04:26 <ais523> Phantom_Hoover: heh, I like that description 12:04:26 <Vorpal> :D 12:04:32 <fizzie> re^2tro, then. 12:04:38 <fizzie> 1. retro -- (a fashion reminiscent of the past) 12:04:41 <fizzie> No time limits there. 12:04:57 <cheater> glad you can reminisce that far back 12:05:09 <Phantom_Hoover> fizzie, I like the way that re^2tro takes one more keypress than reretro. 12:05:10 <cheater> at least one of us can 12:05:58 <Phantom_Hoover> http://en.wikipedia.org/wiki/Culture_jamming 12:06:14 <ais523> re^2tro = reetro, anyway, doesn't it 12:06:19 <ais523> it'd have to be (re)^2tro 12:06:23 <Phantom_Hoover> I think this may be the most veiled description of pretentious idiocy ever written. 12:07:23 <fizzie> Phantom_Hoover: That's why it's in Category:Practical jokes. 12:07:35 <Phantom_Hoover> fizzie, OF COURSE 12:11:29 * CakeProphet throws a pie at fizzie's face. 12:11:44 * CakeProphet honks his horn, chuckles in delight, and dashes away. 12:12:13 <fizzie> HONK. 12:12:34 <fizzie> HONK, goes the horn pile. 12:13:31 <Phantom_Hoover> fizzie, remind me, when did you last read Homestuck? 12:13:52 <Phantom_Hoover> (Now would be an excellent time to catch up, since we're all waiting for the end of act 5 flash and it'll be a while.) 12:14:54 <fizzie> A long long time ago. 12:14:57 <fizzie> Maybe a month? 12:15:07 <fizzie> I'll catch up when I up-catch. 12:15:31 <Phantom_Hoover> Well, Hussie's set the EoA progress bar at 56% right now and it took at least a week for it to get there from 35%. 12:15:52 <fizzie> It was doing the "click the panels" separate-things when I last looked at it. 12:16:13 <Phantom_Hoover> That's not terribly far IIRC. 12:17:25 <fizzie> "Below is a SAD NORD" -- I have been following that prequel thing, though. 12:17:50 <Phantom_Hoover> I missed that... 12:18:10 <Phantom_Hoover> OH, right. 12:26:33 -!- pikhq_ has joined. 12:26:52 -!- pikhq has quit (Ping timeout: 256 seconds). 12:28:31 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 12:45:55 -!- tiffany has quit (Ping timeout: 248 seconds). 12:46:52 -!- boily has quit (Ping timeout: 276 seconds). 12:47:59 <Phantom_Hoover> Huh, apparently the clock sync error was overstated. 12:48:31 -!- tiffany has joined. 12:49:30 -!- sllide has joined. 13:01:59 -!- boily has joined. 13:02:20 <Phantom_Hoover> sllide! boily! 13:02:30 <Phantom_Hoover> Madoka-Kaname, you might want to speed up tiffany's autorejoin, BtW. 13:02:33 <sllide> ohi there 13:12:46 -!- yorick has joined. 13:39:54 <fizzie> "Error: unidentified unSocket: 0x7f8393435380: magic FACE1010 != has 0" 13:39:57 <fizzie> Interesting message. 13:42:02 <olsner> not equal to has 0 13:43:17 <fizzie> Apparently my FACE is not good enough for Java. 13:59:28 <CakeProphet> fizzie: your FACE... wait 14:00:05 <CakeProphet> well it's not that your magic FACE isn't good enough 14:00:08 <CakeProphet> it's just that it's 14:00:10 <CakeProphet> not has 0 14:00:25 <CakeProphet> it's has FAT AMERICAN FOOD YOU GREASY SLOB. 14:01:02 <CakeProphet> I wonder what would happen if you design a perfectly good general purpose language. 14:01:27 <CakeProphet> but then gave it terrible and completely non helpful error messages 14:01:44 <CakeProphet> compile error: smells like teen spirit 14:02:30 <CakeProphet> I guess if it were open source someone would eventually get around to removing them... 14:02:48 <CakeProphet> but would people use it regardless? perhaps if it did everything better than everything that currently exists... 14:06:14 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:37:06 * Phantom_Hoover considers that, since garnets have a dodecahedral crystal habit, it is entirely possible to cut one along the cleavage planes to create the single best d12 in existence. 14:37:30 <ais523> Phantom_Hoover: you'd still have to make sure the cleavage planes were equally spaced 14:37:50 <Phantom_Hoover> ais523, well yes, you'd need to make sure it was regular. 14:38:21 <cheater> mmmmm, cleavage 14:38:47 <Phantom_Hoover> Hmm, wait, WP doesn't actually give any cleavage for garnet. 14:39:41 <Phantom_Hoover> "Garnets do not show cleavage, so when they fracture under stress, sharp irregular pieces are formed." 14:39:46 <Phantom_Hoover> Garnets are very modest. 14:43:16 <Phantom_Hoover> *But* it's probably possible to get naturally-formed garnets which are sufficiently perfect for dice purposes. 14:43:42 -!- Jafet has quit (Quit: Leaving.). 14:48:16 <CakeProphet> Phantom_Hoover: not likely I would say. 14:50:09 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Andradite-Mali.jpg 14:50:11 <Phantom_Hoover> Sure about that? 14:50:26 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Grossular-ww51a.jpg 14:52:20 <CakeProphet> eh still not ideal. 14:52:58 <CakeProphet> I'm sure you could find one though 14:59:03 <CakeProphet> >:> 15:20:40 -!- Ngevd has joined. 15:21:17 <Phantom_Hoover> "I seriously pondered adding wenches to the list. But this isn't that sort of comic." 15:21:23 <Ngevd> Hello! 15:21:29 -!- copumpkin has joined. 15:21:47 <Phantom_Hoover> Ngevd, a 12-sided die made of a single garnet crystal: best thing? 15:22:09 <Phantom_Hoover> (For over-the-top bestness, make it out of pyrope and invent a Homestuck tabletop game.) 15:22:25 <Ngevd> Only if the pips are sapphire 15:22:54 <ais523> it doesn't need any pips at all 15:23:02 <ais523> just have it as a die that's blank on every side 15:23:20 <ais523> (I actually have a set of those, including a 12-sider; I tend to deliberately roll them by accident from time to time to mystify and amuse people) 15:23:27 <Phantom_Hoover> A crystal with natural formations that look like numbers. 15:23:46 <Phantom_Hoover> Or indeed natural formations that don't look like numbers. 15:25:04 <Phantom_Hoover> "No, look, that white vein is parallel to the edge! That makes it a seven!" "No, the black spot is in the corner! It's a three!" 15:31:07 <cheater> http://dl.dropbox.com/u/37707/Untitled.png 15:32:35 <Ngevd> Useful advise: Haskell.com isn't actually about Haskell 15:35:57 -!- pikhq_ has quit (Ping timeout: 244 seconds). 15:36:00 -!- pikhq has joined. 15:36:08 <Phantom_Hoover> Ngevd, *advice 15:36:18 <Ngevd> Not when it's a verb 15:38:20 <tswett> There, I wrote a Subleq processor in Verilog. 15:38:33 <tswett> It probably doesn't work, because I don't actually know Verilog very well. 15:42:38 <CakeProphet> http://www.haskell.org/haskellwiki/Numeric_Prelude 15:42:40 <CakeProphet> interesting 15:43:56 <Phantom_Hoover> Ngevd, incidentally, how old is Elliott 'Facekicker' Hird? 15:44:12 <Ngevd> 15-17 15:44:20 <Phantom_Hoover> Hmm. 15:44:22 <Ngevd> Probably 16 or seventeen 15:44:25 <CakeProphet> 16 15:44:36 <Phantom_Hoover> Aha, so he could well be our elliott__ from a year in the future? 15:44:55 <Ngevd> He was 9-10 when the kicking happened 15:44:56 <Phantom_Hoover> Sent back in time to kick your friend in the face because her face is like Sarah Connor? 15:45:02 <Phantom_Hoover> Hmm. 15:45:05 <Phantom_Hoover> A clone, perhaps? 15:45:12 <Ngevd> A son? 15:45:21 <Phantom_Hoover> elliott__'s evil twin brother? 15:45:27 <tswett> Next, I suppose I'll add a transport-triggered coprocessor. Because implementing a right shift using only subtraction is... really inefficient. 15:45:32 <Ngevd> Nah, that's me 15:45:39 <Phantom_Hoover> He has two. 15:45:39 <Ngevd> Except I'm the good one 15:45:56 <Ngevd> So... I'm elliott__'s good triplet? 15:45:59 <Phantom_Hoover> Yes. 15:47:34 * Phantom_Hoover wonders if he's actually incredibly lethargic and irritable and just hasn't noticed because he doesn't like coffee. 15:47:54 <Phantom_Hoover> Maybe if I have some I'll turn into, like, Jesus Einstein. 15:47:57 <Phantom_Hoover> Or Albert Christ. 15:47:59 <Ngevd> ...I don't like coffee! 15:48:01 <Ngevd> My god! 15:48:38 <ais523> tswett: reminds me of trying to implement a 64-bit multiplication efficiently with only 8-bit increment and decrement 15:48:42 <Phantom_Hoover> Ngevd, well yes but as we know you're elliott__'s good triplet so you're nice anyway and good is dumb so it never stood out. 15:48:47 <ais523> in the end I gave up, it's doable but I didn't want to put in the effort 15:48:58 <Ngevd> Aww. 15:49:01 <Phantom_Hoover> ais523, TRY SOME COFFEE 15:49:19 <Ngevd> Is elliott__ the neutral one or the evil one? 15:49:27 <Phantom_Hoover> Ngevd, maybe Facekicker is an evil genius and he's the one behind the neutrinopocalypse. 15:49:39 <Ngevd> The hexamopocalypse 15:49:50 <Phantom_Hoover> Ngevd, the evil one, but Facekicker is the really evil one. 15:49:55 <Phantom_Hoover> You're neutral. 15:51:02 <Ngevd> Lawful or Chaotic? 15:51:13 <Phantom_Hoover> Lawful. 15:51:14 -!- sllide has quit (Read error: Connection reset by peer). 15:51:20 <Ngevd> Ooh good 15:51:26 <Phantom_Hoover> You were in that youth parliament thing nobody cares about, after all. 15:52:27 <Ngevd> So... elliott__ is chaotic evil and 'Facekicker' Hird is neutral evil? 15:53:07 <cheater> are you Righteous Evil 15:53:17 <Ngevd> I'm lawful neutral 15:55:51 * CakeProphet is chaotic good. 15:59:19 <tswett> I must say, I prefer esoteric programming languages that can emulate random access machines without a time penalty. 16:00:02 <tswett> With BF, if you frequently need to access one thing that's at the beginning of memory and another that's at the end, you will die. 16:00:23 <Ngevd> Unless memory wraps around 16:01:49 <olsner> if you're in the middle of memory, wrapping doesn't help a bit 16:04:51 -!- SgeoN1 has quit (Read error: Connection reset by peer). 16:05:07 -!- SgeoN1 has joined. 16:05:08 -!- SgeoN1 has quit (Remote host closed the connection). 16:07:03 <CakeProphet> well a BF /compiler/ can emulate random access, sure. 16:07:16 -!- monqy has joined. 16:07:55 -!- zzo38 has joined. 16:12:23 <ais523> so could an optimising interp 16:12:49 -!- azaq23 has joined. 16:13:01 -!- azaq23 has quit (Max SendQ exceeded). 16:14:50 <tswett> So, this processor currently uses 60 lines of code. Let's say one logic element is needed per line of code. This one really cheap FPGA seems to have 25,000 logic elements. So it ought to be able to hold... about 400 processors. 16:14:59 -!- MDude has quit (Ping timeout: 248 seconds). 16:15:27 -!- SgeoN1 has joined. 16:16:58 <tswett> Let's say the clock runs at 625 MHz. The processor executes an instruction every two or three cycles. So that means we should be able to execute... eighty billion instructions per second. 16:19:35 <Ngevd> My clever three cell brainfuck to lambdabot flavour haskell translator's initial tape is made up of consts, flips, ids, and brackets 16:20:06 <CakeProphet> "three cell brainfuck to lambdabot flavour haskell translator" ???????? 16:20:15 <Ngevd> Yes 16:20:36 <CakeProphet> but that's 4 things in 3 cells. 16:21:08 <Ngevd> three cell is a compound adjective referring to brainfuck rather than the translator 16:21:44 <Ngevd> lambdabot flavour refers to the haskell available through lambdabot 16:21:57 <CakeProphet> so the tralsnator is also brainfuck but with functions>? 16:22:02 <CakeProphet> 3reqw3r[-oo3rw33333][[][ 16:22:13 <Ngevd> It translates brainfuck to haskell 16:22:29 <Ngevd> WITHOUT IO 16:22:31 <CakeProphet> yes I understand that much. 16:22:42 <Ngevd> The translator is written in Python 16:22:48 <Ngevd> Just to annoy everyone 16:22:58 <CakeProphet> i'M JUST CONFUSED ABOUT "the initial tape is made up of consts, flips, ids, and brackets" 16:23:42 <Ngevd> It's a pretty literal translation 16:24:06 <tswett> How can a BF tape contain consts, flips, and ids? 16:24:12 <Ngevd> flip (flip id (const id)) (flip (flip id (const id)) (const id)) works out as a three cell church list filled with church zeroes 16:24:36 <CakeProphet> but you can't do any folds right? 16:24:42 <CakeProphet> brainfuck doesn't work like that. 16:26:02 <Ngevd> I'm only using consts, flips, ids, joins, aps, (.)s, and brackets 16:26:20 <CakeProphet> and a church list folds things over itself.. yes? 16:26:31 <Ngevd> It's a bit like a linked list 16:27:26 <CakeProphet> oh nevermind I was thinking of the church list that's defined by its right fold function 16:28:43 <CakeProphet> cons = \h t c n. c h (t c n) 16:29:03 <CakeProphet> nil = \c n. n aka false 16:29:50 <Ngevd> + translates as ap ((.) ((.) flip (flip id))((.) (ap (.))(flip id const)))(flip id(const id)) 16:29:58 <Ngevd> Obfuscated haskell ftw 16:30:21 <CakeProphet> so you're basically translating brainfuck into lambda calculus 16:30:27 <Ngevd> CLOSE 16:30:31 <CakeProphet> or SKI 16:30:33 <Ngevd> Combinatory logic 16:30:38 <Ngevd> BCKWSI 16:30:43 <CakeProphet> yes 16:30:43 <Ngevd> Like MIBBLLII 16:30:53 <Ngevd> Which is the long term aim 16:31:29 <CakeProphet> I don't know if the fold-list would work for brainfuck 16:31:46 <Ngevd> Remind me, what exactly is a fold list? 16:31:51 <zzo38> Can you do like Lazy K, having it translate into the IO monad, from a church encoding? 16:31:59 <CakeProphet> well that's not the technical name for it. 16:32:14 <CakeProphet> Ngevd: http://en.wikipedia.org/wiki/Church_encoding#Higher-order_function 16:35:00 <CakeProphet> it would be kind of cumbersome because bf isn't very foldy 16:39:31 <zzo38> I have a NSF music titled "Un5th Symphony" 16:53:01 <Ngevd> + is S(B(BC(CI))(\t.B(SB)(CIK)t))(CI(KI)) 16:53:11 <Ngevd> Whoops, wrong one 16:53:38 <Ngevd> + is S(B(BC(CI))(B(SB)(CIK)))(CI(KI)) 16:53:46 <Ngevd> - is S(B(BC(CI))(B(C(BC(B(BC)(C(BC(B(BB)(CB(B(B(CI))(CI)))))K)))I)(CIK)))(CI(KI)) 16:53:49 <Ngevd> Spot the difference 16:57:30 -!- derrik has joined. 17:01:26 <Ngevd> > is S(B(BC(CI))(B(CIK)(CI(KI))))(S(B(BC(CI))(B(CI(KI))(CI(KI))))(CIK)) 17:01:27 <lambdabot> Not in scope: `is'Not in scope: data constructor `S'Not in scope: data cons... 17:01:35 <Ngevd> Okay, < is S(B(BC(CI))(B(CIK)(CI(KI))))(S(B(BC(CI))(B(CI(KI))(CI(KI))))(CIK)) 17:01:43 <Ngevd> Either's good 17:02:13 -!- Ngevd has changed nick to Taneb|Hovercraft. 17:02:22 <elliott__> hi 17:03:27 <Taneb|Hovercraft> Oh, this is no good 17:03:43 -!- Taneb|Hovercraft has quit (Quit: I CANNAE TAKE IT ANY MORE </scots>). 17:03:55 <monqy> bye 17:04:29 <elliott__> <Phantom_Hoover> Quillpunk. 17:04:32 <elliott__> Phantom_Hoover: I love you. 17:04:33 <zzo38> http://sprunge.us/NXXi 17:05:44 <elliott__> <Phantom_Hoover> Huh, apparently the clock sync error was overstated. 17:05:45 <elliott__> Yaaaaaaaaay. 17:06:46 <zzo38> I wrote the http://sprunge.us/NXXi it is document about my idea related to specifying preparing printouts of literate Haskell program in a Cabal package. Read it please make opinion/suggestion/question/complain 17:13:53 <zzo38> If you use LaTeX or ConTeXt or XeTeX or whatever, or even things I have not listed, you can write those sections that I did not write. 17:15:21 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/kwjks/assuming_that_highenergy_neutrinos_are/ 17:15:34 <Phantom_Hoover> 4 downvotes. 17:15:46 <Phantom_Hoover> I... don't see why. 17:16:00 <elliott__> Phantom_Hoover: Surely by now you know that the up/downvote totals are heavily fudged. 17:16:14 <Phantom_Hoover> elliott__, but the margin is the same, no? 17:16:24 <elliott__> Phantom_Hoover: It's probably more like one upvote, one downvote, man. 17:16:33 <elliott__> There, I upvoted it. 17:16:38 <elliott__> Both the up and downvote counts went up. 17:16:40 <elliott__> Totally fudged. 17:17:28 <zzo38> Did you read document about X-Printout- fields in Cabal? 17:17:42 <Phantom_Hoover> elliott__, sure, but the margin is still -3. 17:18:05 <elliott__> Phantom_Hoover: I'll get someone else to upvote it when they're online. :p 17:18:14 <zzo38> Is there anything you see wrong with my file? 17:18:24 <elliott__> Phantom_Hoover: Did you check nobody had submitted anything similra before? 17:18:27 <elliott__> There's 17:18:28 <elliott__> How could you violate causality with FTL neutrinos? (self.askscience) 17:18:28 <elliott__> submitted 2 days ago by AllUZombies 17:18:28 <elliott__> 2 commentssharesavehidereport 17:18:38 <elliott__> http://www.reddit.com/r/askscience/comments/ktd14/how_could_you_violate_causality_with_ftl_neutrinos/ 17:18:42 <CakeProphet> elliott__: https://plus.google.com/117832052760789742441/about _HI IM A BIG DUDE FOR BIG PEOPLE_ 17:18:53 <zzo38> Actually I already found one thing wrong and I corrected it by adding "The files listed in this field are not included in the Cabal package." in the section about X-Printout-Require field, to clarify that. 17:18:58 <elliott__> CakeProphet: Yes you are like the last person to comment on that. 17:19:09 <CakeProphet> elliott__: last? 17:19:13 <CakeProphet> well, obviously 17:19:25 <CakeProphet> elliott__: you are the last person to mention that I commented on it. 17:19:44 * elliott__ wonders how to delete a Google+ account. 17:19:56 <CakeProphet> hack it 17:19:58 <CakeProphet> put porn on it. 17:20:04 <Phantom_Hoover> elliott__, that question's different, though. 17:20:10 <elliott__> CakeProphet: I could just change my name to "ehird .". 17:20:12 <zzo38> Google doesn't want you do delete anything. 17:20:13 <Phantom_Hoover> I'm asking how you'd actually set up apparatus to do it. 17:20:23 <elliott__> Phantom_Hoover: Lots of rockets. 17:20:32 <CakeProphet> elliott__: oh so that's yours? 17:20:38 <Phantom_Hoover> The Urist McElliott method. 17:20:51 <elliott__> CakeProphet: Yes, obviously. 17:21:08 <CakeProphet> elliott__: it could have been another elliott hird that is an egg that vanquished time. 17:21:26 <elliott__> CakeProphet: I was /born/ in an egg that vanquished time, you philistine. 17:21:59 <CakeProphet> elliott__: you want to be Google+ friendz? 17:22:09 <elliott__> CakeProphet: I want nothing less. 17:24:58 <zzo38> Is there such thing as fax gopher client? 17:25:26 <CakeProphet> elliott__: :( 17:25:43 <elliott__> CakeProphet: Have hope: It could be just because of my objection to Google+. 17:26:05 <Phantom_Hoover> elliott__, what objection? 17:26:18 -!- Ngevd has joined. 17:26:57 <elliott__> Phantom_Hoover: (a) Google know more than they should about the social graph as it is, they don't need us explicitly TELLING them about it; (b) their names policy is completely unacceptable and this is a big deal. 17:27:18 <Ngevd> I think I have defined enough to make a Iterated Collatz Function to MIBBLLII translation 17:27:28 <zzo38> elliott__: Exactly. As I said. Google doesn't want you to delete anything. 17:27:43 <Ngevd> Thanks to oerjan's recent Iterated Collatz Function to brainfuck translation 17:28:39 <Phantom_Hoover> elliott__, what is it? 17:28:45 <elliott__> Phantom_Hoover: What is what? 17:28:50 <Phantom_Hoover> Their names policy. 17:28:55 <Ngevd> An esolanger from Hexham, but that's not important 17:29:21 <Phantom_Hoover> UCAS apparently needs me to tell it that I'm a UK national about five times. 17:29:32 <elliott__> Phantom_Hoover: "You must use your full legal name -- which we assume includes a surname, because there are no people with legal names without surnames -- exclusively, and if you do not completely follow this, or if you follow it but we think your name looks weird, we will ban you." 17:29:44 <elliott__> (Amusingly, tons of Google employees were found to be using names violating this policy.) 17:30:13 <zzo38> What if someone has same name as someone else? 17:30:28 <Ngevd> Then my friend gets kicked in the face 17:30:30 <Ngevd> IN THE PAST 17:30:54 <monqy> do you want ngevds friend to be kicked in the face in the past??? 17:30:59 <monqy> having the same name as someone else: its bad 17:31:41 <CakeProphet> should I a) buy showtime and watch the new season of Dexter as it airs b) wait for Hulu/torrent/internets 17:32:40 <Ngevd> c. 17:32:44 <Ngevd> Definitely c 17:33:04 <zzo38> No! g. Definitely g 17:35:32 -!- Ngevd has changed nick to Taneb|Hovercraft. 17:35:48 <CakeProphet> c) act out a deep-seated serial killer fantasy, influenced by its glorification in the series. 17:36:51 <CakeProphet> g) write dope hip hop lyrics to convey realistic yet positive messages to today's youth 17:38:20 -!- ive has joined. 17:45:39 <Gregor> What happened to d, e, f? 17:46:18 <CakeProphet> Gregor: I killed them, overtaken by hedonistic bloodlust. 17:46:27 <Gregor> Oh dear. 17:47:44 <CakeProphet> h) take a night on the town, sampling fine cigars, causing pandamonia in numerous strip clubs, and discovering a taste for black tar heroin. 17:54:14 <cheater> Phantom_Hoover: ucas is fucking annoying. 17:55:15 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 17:55:38 <CakeProphet> United Canadian and American States? 17:56:02 -!- Phantom_Hoover has joined. 17:56:22 <Phantom_Hoover> This is the actual most obnoxious low-battery routine. 17:56:37 <CakeProphet> (fictional country in the shadowrun universe) 17:56:41 <Phantom_Hoover> Without warning, it hibernates the computer and cocks it up so that I have to hard reboot. 17:57:22 <CakeProphet> interestingly enough one of the presidents of UCAS was a dragon. 17:57:27 <CakeProphet> first dragon president. 17:57:41 <Phantom_Hoover> 17:54:14: <cheater> Phantom_Hoover: ucas is fucking annoying. 17:57:54 <Phantom_Hoover> Well I can't imagine they designed it with toddlers in mind. 17:58:39 <cheater> are you sure? 17:58:49 <cheater> i think that's exactly who it was designed for 18:00:48 -!- zzo38 has quit (Remote host closed the connection). 18:08:27 -!- MSleep has joined. 18:15:17 -!- derrik has left. 18:15:23 -!- MDude has joined. 18:17:38 -!- MSleep has quit (Ping timeout: 260 seconds). 18:23:20 <Taneb|Hovercraft> Hello! 18:23:28 -!- Taneb|Hovercraft has changed nick to Ngevd. 18:24:45 <CakeProphet> wsrfwreweyg 18:24:49 <CakeProphet> 18:52:45 <CakeProphet> playing music likes to freeze everything on my computer for some reason. 18:52:56 <Ngevd> Playing music 18:52:59 <Ngevd> Hmm 18:53:01 <Ngevd> That's an idea 18:56:13 <CakeProphet> Due to a (now resolved) DNS issue, some Wikimedia sites, including Wikipedia, may be unreachable for the next hour or so. If it doesn't work for you, try again a bit later. 18:56:18 <CakeProphet> the world will be in ruins shortly 18:56:27 <Phantom_Hoover> Oh dear god. 18:56:44 <CakeProphet> HALP HOW DID I KNOW STUFF NOW? 18:56:45 <Ngevd> And it's time we saw a miracle 18:56:54 <Ngevd> Come on it's time fore something miracle 18:57:00 <Ngevd> To pull us through 18:57:12 <Ngevd> Oh how I have missed you Matt Bellamy's voice 18:57:23 <Phantom_Hoover> MoThErFuCkIn MiRaClEs 18:57:30 <cheater> how do they work? 18:57:37 <cheater> i don't know! 18:57:37 <Phantom_Hoover> Wow, that looks terrible in Libertine. 18:57:49 <CakeProphet> http://webcache.googleusercontent.com/search?q=cache:5fWK0DkuNE8J:en.wikipedia.org/wiki/Cache+wikipedia+cache&cd=1&hl=en&ct=clnk&gl=us 18:58:17 <elliott__> CakeProphet: It's like you're IN THEMATRIXE............E......... 18:59:58 <CakeProphet> yes i see the code am than best ever was. 19:01:12 <CakeProphet> I want a computer with a cache cache. 19:01:23 <CakeProphet> to cache previous cache states. 19:01:34 <Phantom_Hoover> So CakeProphet polish up your keyboard and open emacs hard / 'cos hell's broke loose in #esoteric and the devil writes the code 19:01:36 <CakeProphet> this is in no way equivalent to having just a really large cache. 19:01:42 <Phantom_Hoover> This is not going to end well. 19:01:45 <ais523> happy australian mailman mailing list memberships reminder day! 19:01:53 <CakeProphet> Phantom_Hoover: okay I am now starting at emacs. 19:02:36 <Phantom_Hoover> If you win you get this shiny keyboard made of... spode? / but if you lose the devil gets your... mode? 19:02:43 <CakeProphet> .. 19:02:52 <CakeProphet> can I give him perl-mode because it's bad? 19:02:56 <CakeProphet> and keep cperl? 19:03:02 <Phantom_Hoover> Yes. 19:03:09 <CakeProphet> challenge accepted. 19:03:18 <Phantom_Hoover> The devil is not an Emacs connoisseur. 19:03:38 <Phantom_Hoover> I have been very happy since I worked out how to spell connoisseur without needing to look it up. 19:04:10 <CakeProphet> committee is an annoying word to type 19:04:16 <CakeProphet> I remember I had typing classes and they would use that one a lot 19:04:19 <elliott__> <Phantom_Hoover> So CakeProphet polish up your keyboard and open emacs hard / 'cos hell's broke loose in #esoteric and the devil writes the code 19:04:20 <CakeProphet> probably because they hate us. 19:04:21 <elliott__> Phantom_Hoover: no stop. 19:04:31 <elliott__> <Phantom_Hoover> I have been very happy since I worked out how to spell connoisseur without needing to look it up. 19:04:46 <elliott__> Phantom_Hoover: One day I will be able to spell bureaucrat without lookgi it up-- OMFG I JUST DID 19:04:55 <Phantom_Hoover> Damn French. 19:04:56 <elliott__> Wait can I do aficionado now too. No I can't. 19:05:20 <Phantom_Hoover> Aficionado is correct. 19:05:31 <Ngevd> I introduced a friend to the concept of Hilbert's Grand Hotel today 19:05:43 <Ngevd> To explain convergence 19:05:51 <elliott__> Phantom_Hoover: Yes but I used my spell chequer. 19:05:53 <Phantom_Hoover> Convergence? 19:05:59 <elliott__> It was like aficianado before that. 19:06:01 <Ngevd> Of a series 19:06:23 <Phantom_Hoover> Ngevd, oh man, you're reminding me of that time I tried to convince my chemistry teacher that no, space would not fill up if we dumped nuclear waste into it. 19:06:49 <Ngevd> Did you tell him/her about Hilbert's Grand Hotel? 19:06:58 <Ngevd> Oh god I can just imagine that now 19:07:00 <CakeProphet> how to solve landfill problems: space catapult 19:07:03 <elliott__> Phantom_Hoover: To be fair, nuclear waste is pretty big. 19:07:04 <elliott__> PRETTY BIG. 19:07:10 <CakeProphet> also, a useful weapon against incoming asteroids and space aliens. 19:07:16 <Ngevd> "Do you think Mr Hilbert would let us put Nuclear Waste in some of his rooms?" 19:07:17 <CakeProphet> hurl our mounds of garbage at them. 19:07:30 <Phantom_Hoover> Someone quipped that we were hardly going to run out since it's expanding on the time, whereupon she said "if space is expanding what's it expanding into YOU CAN'T EXPLAIN THAT" "yes I can" "SHUT UP PH NO YOU DON'T" 19:07:42 <Phantom_Hoover> Well OK she didn't call me PH but otherwise it's accurate. 19:07:50 <elliott__> Phantom_Hoover: Can you get people to start calling you PH irl. 19:07:57 <Phantom_Hoover> no 19:07:58 <elliott__> I kind of need you to do that for my mental stability. 19:08:01 <elliott__> No you don't understand 19:08:06 <elliott__> I literally think your real name is Phantom Hoover 19:08:09 <CakeProphet> elliott__: space can only handle so many PRETTY BIG things. 19:08:16 <elliott__> It is irreversibly ingrained into my mind 19:08:22 <Phantom_Hoover> elliott__, I thought you thought my real name was something else. 19:08:34 <elliott__> Phantom_Hoover: Yes I figured out your real name but I don't really know that as your real name. 19:08:42 <CakeProphet> this is similar to how I think Gregor is actually Roger G. 19:08:45 <CakeProphet> I think it's a fair point to bring up 19:08:47 <CakeProphet> often 19:08:48 <elliott__> INTELLECTUALLY that's your real name but my brain would never respond with anything other than Phantom Hoover in response to a snap query as to what your real name is. 19:08:51 <CakeProphet> that this is what I think. 19:09:03 <elliott__> ais523: happy that, btw 19:09:05 <Ngevd> Sometimes I think my name is Taneb 19:09:13 <Ngevd> It's a bit weird 19:09:19 -!- CakeProphet has changed nick to tehporPekaC. 19:09:22 * tehporPekaC evolves. 19:09:29 <ais523> elliott__: it took me almost 10 seconds to expand the pronoun there 19:09:32 <Phantom_Hoover> "Hello, I'm Taneb." "Nathan... what?" 19:09:57 <elliott__> Ngevd: Your real name should be Taneb, too. 19:09:59 <elliott__> Just Taneb. 19:10:09 <ais523> I don't think I've introduced myself as ais523 to anyone in real life yet 19:10:11 <Phantom_Hoover> elliott__, he couldn't have a Google+ account then. 19:10:14 <Ngevd> "Taneb, too. 19:10:15 <ais523> I /have/ introduced myself as callforjudgement to people, though 19:10:19 <Ngevd> Just Taneb."? 19:10:30 <elliott__> Phantom_Hoover: Well OK he needs to change his legal name to "Taneb ." 19:10:31 <ais523> 'tis easier to pronounce, and it's the name they knew me by already 19:10:34 <tehporPekaC> my name is unknown to anyone in the universe. 19:10:38 <elliott__> ais523: haha, how did that happen? 19:10:48 <Phantom_Hoover> I have mentally referred to myself as Phantom_Hoover, though. 19:10:51 <ais523> Pokémon VGC 19:10:56 <elliott__> Phantom_Hoover: With the underscore? 19:11:04 <ais523> I even named the player on the cartridge CFJ for consistency 19:11:20 <elliott__> CFJ would be a pretty good set of initials to have. 19:11:23 -!- Ngevd has changed nick to Taneb|Hovercraft. 19:11:26 <elliott__> cfj would be a good Unix account name, in turn. 19:11:28 <Phantom_Hoover> elliott__, no, that's just because a tab completion is a terrible thing to waste. 19:11:47 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 19:12:10 <elliott__> ais523: actually your name causes my brain-talking engine real difficulty, because even aye eye ess is a bit of a pain to pronounce 19:12:24 <ais523> yep 19:12:26 -!- ais523 has changed nick to callforjudgement. 19:12:28 <callforjudgement> is this better? 19:12:36 <elliott__> not really, it doesn't look like you at all 19:12:40 <callforjudgement> heh 19:12:46 <callforjudgement> calling myself ais523 would be weird in some places 19:12:53 <callforjudgement> this nick's a newer one, but possibly a better one 19:12:56 <tehporPekaC> elliott__: are you a big dude? 19:13:02 -!- elliott__ has changed nick to cfj. 19:13:07 <cfj> holy shit, this isn't registered 19:13:09 -!- Vorpal has joined. 19:13:16 <Phantom_Hoover> callforjudgement, WHAT IS YOUR MIDDLE NAME TELL ME DAMMIT 19:13:18 <tehporPekaC> cfj: are you a big dude? 19:13:21 <Phantom_Hoover> TELL ME OR I KILL VORPAL 19:13:23 <callforjudgement> Phantom_Hoover: for 19:13:27 -!- cfj has quit (Changing host). 19:13:27 -!- cfj has joined. 19:13:34 <cfj> yay, this nick is now mine 19:13:36 <cfj> callforjudgement: let us confuse together 19:13:41 <Vorpal> <Phantom_Hoover> TELL ME OR I KILL VORPAL <-- ? 19:13:46 <tehporPekaC> cfj: are you a big dude??? 19:13:49 <Vorpal> oh cfj 19:13:56 <Vorpal> wait, cfj? callforjudgement? 19:14:00 <Phantom_Hoover> callforjudgement, Alex For Smith, abbreviated Alex I. Smith. 19:14:01 <Vorpal> same buy? 19:14:02 <cfj> Phantom_Hoover: Ibiza. 19:14:09 <cfj> Alex Ibiza Smith. 19:14:12 <Vorpal> hm 19:14:16 <tehporPekaC> Vorpal using sound skills of deduction. 19:14:19 <callforjudgement> Vorpal: cfj is elliott pretending to be me 19:14:20 <Vorpal> nope 19:14:24 <cfj> callforjudgement: no I'm not 19:14:27 <Vorpal> callforjudgement, right and you are ais 19:14:28 <cfj> I'm elliott pretending to be me 19:14:30 <tehporPekaC> Vorpal: 15:13 -!- cfj [~elliott@unaffiliated/elliott] has joined #esoteric 19:14:45 <callforjudgement> Vorpal: callforjudgement is my actual nick, though 19:14:46 <tehporPekaC> cfj: nice act. 19:14:53 <callforjudgement> it's in my email address, for one thing 19:14:57 <Vorpal> tehporPekaC, I saw a bit later, I missed where callforjudgement changed his nick 19:14:58 <cfj> tehporPekaC: Dude, I never left the channel, that's just the hostname crap. 19:15:07 <Phantom_Hoover> callforjudgement, what is it dammit 19:15:07 <cfj> callforjudgement: FSVO your email address 19:15:15 -!- Phantom_Hoover has changed nick to jfc. 19:15:16 <callforjudgement> well, I have more than one 19:15:20 <callforjudgement> the other one has ais523 in it 19:15:20 -!- jfc has changed nick to ph. 19:15:21 <cfj> Just fucking cidding? 19:15:24 <cfj> NO 19:15:25 <cfj> IT MUST BE 19:15:26 <cfj> UPPERCASE 19:15:28 <cfj> "PH" 19:15:31 -!- ph has changed nick to PH. 19:15:32 <tehporPekaC> cfj: oh okay. How was I supposed to know then? :P 19:15:35 <Vorpal> cfj, "just for cider" 19:15:40 <cfj> tehporPekaC: because it gives it in the quit message 19:15:47 <PH> -NickServ- Registered : Jul 23 14:38:30 2002 (9 years, 10 weeks, 1 day, 04:37:20 ago) 19:15:47 <PH> -NickServ- Last seen : (about 0 weeks ago) 19:15:49 <PH> Dammit. 19:16:01 <cfj> That's a long time to use a nick. 19:16:06 -!- tehporPekaC has changed nick to sidebrun. 19:16:07 -!- PH has changed nick to dmm. 19:16:15 -!- dmm has changed nick to Prince_Charles. 19:16:22 <sidebrun> quick everyone use a different nick 19:16:22 -!- Taneb|Hovercraft has changed nick to Ngevd. 19:16:25 <sidebrun> and then when someone else enters 19:16:28 <sidebrun> they will be so confused. 19:16:36 <sidebrun> also change username real name etc 19:16:37 <Ngevd> cfj, I always pronounce ais a bit like ace 19:16:41 <sidebrun> can I un-vhost? 19:16:46 <cfj> Someone can use my nick for a bit if they want. 19:16:50 <cfj> sidebrun: /ns logout 19:17:01 <cfj> My nick being elliott. 19:17:12 <Vorpal> sidebrun, by reconnecting and not identifying, that is all as far as I know 19:17:17 <cfj> Vorpal: Dude, /ns logout. 19:17:20 <Vorpal> oh okay 19:17:26 <sidebrun> cfj: dudddidueududude 19:19:08 <Ngevd> Now that I'm Ngevd here, the only places where I go with any frequency with the same username are the IWC forums and Twitter 19:19:17 <callforjudgement> this is confusing enough that I had to /whois Vorpal to make sure it was the right Vorpal 19:19:59 <Ngevd> I only changed my nick as I do by standard 19:20:04 <Ngevd> I am Ngevd most of the time 19:20:19 <Ngevd> Taneb when Ngevd is not available, and when there is an event at #darths 19:20:24 <cfj> "Once built, we can dynamically load the resulting dylib into LLVMs opt tool using the -load option, and then use the new -ghc-aa flag to tell LLVM to use our alias analyser as a complement to the default one. Unfortunately, due to an infelicity in LLVM, we have to specify -ghc-aa in between every single optimisation pass if we want to be sure that it is used. So the final command line to opt, including al 19:20:24 <cfj> l passes done by the standard -O2 optimisation level, and the -loop-reduce strength-reduction pass, needs to look something like this: 19:20:24 <cfj> opt -load GHCAliasAnalysis.dylib -S -no-aa -tbaa -basicaa -ghc-aa \ 19:20:25 <cfj> -globalopt -ghc-aa -ghc-aa -ipsccp -ghc-aa -deadargelim -ghc-aa -instcombine -ghc-aa -simplifycfg \ 19:20:27 <cfj> -ghc-aa -basiccg -ghc-aa -prune-eh -ghc-aa -inline -ghc-aa -functionattrs -ghc-aa -scalarrepl-ssa \ 19:20:29 <cfj> -ghc-aa -domtree -ghc-aa -early-cse -ghc-aa -simplify-libcalls -ghc-aa -lazy-value-info -ghc-aa \ 19:20:31 <cfj> -jump-threading -ghc-aa -correlated-propagation -ghc-aa -simplifycfg -ghc-aa -instcombine -ghc-aa \ 19:20:33 <cfj> -tailcallelim -ghc-aa -simplifycfg -ghc-aa -reassociate -ghc-aa -domtree -ghc-aa -loops -ghc-aa \ 19:20:34 <Ngevd> Taneb|Hovercraft when I am either here or not here 19:20:35 <cfj> -loop-simplify -ghc-aa -lcssa -ghc-aa -loop-rotate -ghc-aa -licm -ghc-aa -lcssa -ghc-aa -loop-unswitch \ 19:20:37 <cfj> -ghc-aa -instcombine -ghc-aa -scalar-evolution -ghc-aa -loop-simplify -ghc-aa -lcssa -ghc-aa -indvars \ 19:20:39 <cfj> -ghc-aa -loop-idiom -ghc-aa -loop-deletion -ghc-aa -loop-unroll -ghc-aa -memdep -ghc-aa -gvn -ghc-aa \ 19:20:41 <cfj> -memdep -ghc-aa -memcpyopt -ghc-aa -sccp -ghc-aa -instcombine -ghc-aa -lazy-value-info -ghc-aa \ 19:20:41 <Ngevd> Taneb|Kindle when I am on a Kindle 19:20:43 <cfj> -jump-threading -ghc-aa -correlated-propagation -ghc-aa -domtree -ghc-aa -memdep -ghc-aa -dse \ 19:20:45 <cfj> -ghc-aa -adce -ghc-aa -simplifycfg -ghc-aa -instcombine -ghc-aa -strip-dead-prototypes -ghc-aa \ 19:20:47 <cfj> -constmerge -loop-reduce" 19:20:49 <cfj> ugh 19:20:51 <cfj> why did that have to be pre-linewrapped 19:22:11 -!- callforjudgement has changed nick to ais523. 19:22:19 -!- sidebrun has changed nick to Kallisti. 19:22:36 <cfj> ais523: lame 19:22:49 <ais523> people in a different channel were shouting at me 19:22:49 <Kallisti> nooooooo 19:22:51 <Kallisti> already taken. 19:22:56 <ais523> they don't like seeing me as anything but ais523 19:23:15 <cfj> #nethack? 19:24:34 <Ngevd> Learn You A Haskell has a sentence "Use this if you are French." 19:24:45 <cfj> "We can't implement this scheme in LLVM. We resort to post processing the assembly it produces." 19:24:46 -!- Kallisti has changed nick to CakeProphet. 19:24:48 <Vorpal> cfj, that was a LOT of flags, several duplicate ones too? 19:24:48 <cfj> oh come on 19:24:57 <cfj> Vorpal: did you _read_ the paragraph before the flags? 19:25:30 <cfj> Prince_Charles: How much did you pay for the latest Bundle. 19:25:30 <Vorpal> cfj, ah no, it scrolled out of the window due to the length of the paste XD 19:25:34 <cfj> Vorpal: lol 19:26:06 <CakeProphet> NickServ(NickServ@services.)- Access flag(s) +voOtsriRfAF in #anon 19:26:06 <CakeProphet> wat 19:26:10 <CakeProphet> I don't think I've ever been in that channel 19:26:25 <CakeProphet> NickServ(NickServ@services.)- Access flag(s) +A in #omgwtf 19:26:29 <CakeProphet> wat 19:26:31 -!- Prince_Charles has changed nick to elliott. 19:26:42 <elliott> Aaaaaaaand... 19:26:48 -!- elliott has quit (Disconnected by services). 19:26:51 <cfj> finally 19:26:54 <Vorpal> CakeProphet, huh? 19:27:10 -!- elliott has joined. 19:27:11 <cfj> eagerly awaiting <PH> -_- 19:27:11 <CakeProphet> output from /ns infochans 19:27:13 -!- elliott has quit (Disconnected by services). 19:27:22 <cfj> looooooooool 19:27:25 <Vorpal> CakeProphet, says invalid command for me 19:27:38 -!- Prince_Charles has joined. 19:27:42 <Prince_Charles> cfj, ___ 19:27:44 <cfj> /ns ghost Prince_Charles 19:27:45 <Vorpal> CakeProphet, what was the actual command you used? 19:27:50 <Prince_Charles> (That's an all-caps -_-.) 19:27:54 <cfj> Prince_Charles: X-D 19:28:11 <cfj> Prince_Charles: But srsly, 19:28:14 <cfj> <cfj> Prince_Charles: How much did you pay for the latest Bundle. 19:28:17 <CakeProphet> Vorpal: er listchans 19:28:20 <Vorpal> ah 19:28:34 <Prince_Charles> cfj, $10. 19:28:43 <Vorpal> hm... nothing unexpected there for me, a few channels I remember but haven't been in for ages, that is about it 19:28:47 <Prince_Charles> Unless the Frozenbyte stuff is good and works, $10 wasted. 19:28:47 <cfj> Prince_Charles: I'll pay $10.01. 19:29:00 <CakeProphet> Vorpal: maybe my memory is just bad :P 19:29:06 <Prince_Charles> cfj, no don't do it it'll work for you and I will sad. 19:29:08 <Vorpal> Prince_Charles, the frozen byte stuff won't work on intel graphics 19:29:26 <cfj> Prince_Charles: Dude, do what I told you to: Get a Twitter and bother @bundle about it. 19:29:27 <Prince_Charles> OK 19:29:28 <Vorpal> known issue as listed on some page there 19:29:40 <Vorpal> cfj, AND report it to bugzilla 19:29:53 <cfj> Vorpal: He already fucking did, like I said last time, that won't help in a billion years. 19:29:59 <Vorpal> hm 19:30:06 <Vorpal> so twitter then, sounds like a good plan 19:30:21 <Prince_Charles> Vorpal, I have had literally no human response thus far. 19:30:31 <cfj> Prince_Charles: Was that OK re: Twitter? 19:30:31 <Vorpal> Prince_Charles, anyway Trine is amazing, but requires non-intel graphics 19:30:37 <Prince_Charles> I doubt I will get one if I throw it into the vast bug pool of Twitter. 19:30:50 <cfj> Because it really is the best strategy, if you see the rate of responses to people on http://twitter.com/#!/humble. 19:31:00 <cfj> Prince_Charles: Dude, if you ping @humble they'll see it. 19:31:06 <Prince_Charles> cfj, I'm going to try the Frozenbyte stuff to get an empirical proof that I paid for a package of software which doesn't work. 19:31:11 <Prince_Charles> cfj, I meant Bugzilla. 19:31:18 <Prince_Charles> Blame my lower brain functions. 19:31:46 <Vorpal> wtf is Trauma? a new game heh 19:32:07 <Vorpal> oh well will download it once I'm back on my desktop 19:33:23 <CakeProphet> ...I apparently have op privs on a channel called #anon 19:33:26 <CakeProphet> I wonder when that happened. 19:33:35 <CakeProphet> no one's in it but it's registered still. 19:33:49 <Vorpal> CakeProphet, who registered it? Who else have access in it? 19:34:00 <CakeProphet> ChanServ(ChanServ@services.)- Founder : CakeProphet 19:34:02 <CakeProphet> apparently I did :P 19:34:08 <Vorpal> XD 19:34:13 <fizzie> I think I saw a Trauma review somewhere recently. 19:34:26 <CakeProphet> 3 years ago. 19:34:32 <Vorpal> fizzie, any good? 19:34:39 <Vorpal> CakeProphet, dig up your irc logs from back then 19:34:45 <CakeProphet> "my irc logs" ha 19:34:49 <Vorpal> CakeProphet, ? 19:34:51 <CakeProphet> I don't have those. 19:34:53 <Vorpal> oh 19:35:01 <Vorpal> then wonder forever 19:35:28 <fizzie> Vorpal: Well, uh... "different", I believe. The reviewer liked it. 19:36:39 <Vorpal> fizzie, different like for example Bastion, Braid or that black and white game I forgot the name of currently 19:36:41 <Vorpal> ? 19:37:03 <CakeProphet> I believe you're thinking of the game Black and White 19:37:30 <Vorpal> no not that one 19:37:54 <Vorpal> a recent game, that was made in black and white and some shades of gray 19:37:57 <Vorpal> puzzle game 19:38:44 <Deewiant> LIMBO? 19:38:48 <fizzie> Vorpal: It's more of a story/interactive/thing than a game, I think. But I haven't played it. 19:39:00 <Vorpal> Deewiant, yes, thanks 19:39:03 <Vorpal> fizzie, right 19:39:17 <cfj> fizzie: Prince_Charles: Vorpal: So the Bundles have made over $6.510 million in total now. 19:39:36 <cfj> (Wikipedia figures + a day old or so total of the current Bundle, but it had doubled from the previous value in, like, hours, so it'll be way more now.) 19:39:39 <Vorpal> cfj, quite impressive 19:39:43 <CakeProphet> this game is puzzle game that is black and white, but I doubt it's what you're thinking of: http://www.flasharcade.com/arcade-games/play/shift-game.html 19:39:47 <quintopia> none from me though. i just sit and suffer when people tell me how awesome they are. 19:39:56 <cfj> Vorpal: Bit more than "quite". 19:39:58 <Vorpal> CakeProphet, see above, Limbo 19:40:17 <CakeProphet> oh 19:40:26 <cfj> It's good to finally have some proof that traditional distribution models are completely inefficient. 19:40:44 <Vorpal> cfj, how much has this bundle made? 19:40:53 <cfj> quintopia: Context? 19:40:57 <Vorpal> due to the more than average thing it seems to be climbing VEEERY slowly up 19:41:04 <fizzie> Vorpal: $480,779.60 now. 19:41:10 <Vorpal> heh 19:41:25 <cfj> Vorpal: Well... it went from $200,000 to $400,000 in hours. 19:41:41 <cfj> I don't know why the more than average thing would make it go slower; it was present in previous Bundles too. 19:42:03 <cfj> Anyway, there's twelve days left, so I suspect it'll make more than the Frozenbyte bundle. 19:42:11 <Vorpal> cfj, it wasn't introduced right at the start last time 19:42:13 <cfj> I guess: one to two million. 19:42:36 <cfj> Probably less than two million but c'mon, it's only been up a few days and it's half way to what the Frozenbyte bundle got. 19:42:41 -!- ais523 has quit (Remote host closed the connection). 19:42:43 <cfj> fizzie: "TRAUMA is a unique photographic experience by game designer Krystian Majewski. Dive into the mind of a traumatized young woman to learn and understand." 19:42:48 <cfj> Oh no, it's one of those Art Games. 19:42:55 <Vorpal> cfj, don't like art games? 19:43:09 <cfj> Vorpal: Sure I do, but come on, look at their site: http://www.traumagame.com/ 19:43:12 <Vorpal> cfj, see it not so much as a game as an experience 19:43:17 <cfj> It looks like a site for a pretentious novel. 19:43:18 <Vorpal> cfj, interesting 19:43:20 <cfj> Vorpal: also did you really just say that. 19:43:24 <fizzie> cfj: Says one commentator: "Trauma is an overpriced collection of panoramic photos with grossly shallow gameplay, wedged into a pretentious shell of a story." 19:43:27 <Vorpal> cfj, no I didn't 19:43:35 <Vorpal> cfj, the irc client is lying to you 19:43:44 -!- CakeProphet has quit (Quit: leaving). 19:43:45 <cfj> Vorpal: Good because I would have to drive to Birmingham, wrestle control of ais' IRC client from him, and ban you. 19:43:51 <cfj> fizzie: http://www.traumagame.com/pics/screenshot02.jpg. Art. 19:44:05 -!- CakeProphet has joined. 19:44:05 -!- CakeProphet has quit (Changing host). 19:44:06 -!- CakeProphet has joined. 19:44:14 <CakeProphet> weweeeee 19:44:16 <fizzie> "Clicking on certain areas of each photo shifts the perspective, while drawing symbols learned from collectable Polaroids allows the player to examine or manipulate objects. The imagery is often striking: a building bends and collapses as if made of thin rubber; a wall is sucked into an imaginary plughole; a blurry figure suddenly shatters into tiny fragments." 19:44:17 <fizzie> Art. 19:44:27 <cfj> Ah yes, Polaroids. 19:44:27 <Vorpal> cfj, anyway, I suggest you play that weird PS3 game that came out recently (or was it demoed? I don't remember). Journey I think it was called. 19:44:30 <cfj> The defining mark of art. 19:44:31 <Vorpal> looked VERY much like art 19:44:54 <cfj> http://en.wikipedia.org/wiki/Journey_(2012_video_game)? Looks like it's coming out next year. 19:45:09 <cfj> "In Journey, the player takes the role of a robed figure in a desert. The game features no map or instructions, only a large mountain in the distance that the player journeys toward.[2] While traveling the player can encounter other players, one at a time, if they are playing online. Players cannot speak to each other, but can help each other in their journey or not as they wish.[3] Players met online will 19:45:09 <cfj> not be identified with a username and voice or text communication will not be possible with the other player." 19:45:10 <Vorpal> cfj, guess I saw it demoed at a video from E3 then 19:45:12 <cfj> This... is a game? 19:45:28 <cfj> There is literally no gameplay, it's like Second Life but without social interaction or customisation. So it's like... Zeroth Life. 19:45:43 <cfj> "Hidden areas will contain tapestries and other clues as to the events leading up to the game, the story of which has not yet been announced." 19:45:48 <cfj> I sure hope they just forgot to mention the gameplay part. 19:45:54 <Prince_Charles> cfj, it looks interesting, TbH. 19:46:05 <fizzie> The gameplay: take one foot, put it in front of the other. 19:46:14 <Vorpal> cfj, I'm not sure. Let me link to a quite humorous video review of the preview of it (not yogscast, but next best thing) 19:46:16 <cfj> Prince_Charles: Sure, but I'll wait for the reviews to come in before buying it. And also buying a playstation three I guess. :p 19:46:34 <Prince_Charles> cfj, I think it's basically a puzzle platformer with a lot of walking. 19:46:40 <Vorpal> cfj, Prince_Charles: https://www.youtube.com/watch?v=IFvbrk6UA84 19:46:41 <fizzie> "The only way players can communicate audibly with each other is with a wordless shout." Right. 19:46:44 <cfj> Wolfram Launches Computable Document Format (CDF): Bring Documents to Life with the Power of Computation 19:46:45 <cfj> oh no 19:46:52 <cfj> fizzie: Morse. 19:46:52 <Prince_Charles> Oh jesus 19:47:01 <fizzie> What, you can go and be all "AAAAAAA!" to others, but that's it? 19:47:09 <Vorpal> fizzie, just watch https://www.youtube.com/watch?v=IFvbrk6UA84 19:47:10 <cheater> cfj: it sounds like those early 90s games where just being able to walk in 2.5D was amazing 19:47:14 <Vorpal> it will explain nothing 19:47:27 -!- cfj has changed nick to elliott. 19:47:31 <elliott> Think I'm done with that nick. 19:47:31 <Vorpal> well maybe a bit. Quite a nice art style to the game. 19:47:37 <fizzie> Vorpal: Can I watch it without sounds? 19:47:46 <elliott> fizzie: You'll miss the aaaas. 19:47:50 <Vorpal> fizzie, no 19:47:52 <fizzie> Oh yes, it has the transcribe-audio button. 19:47:54 <Vorpal> fizzie, it is commented 19:47:56 <elliott> fizzie: Oh dear. 19:48:02 <Vorpal> fizzie, no idea how well that will work 19:48:08 <elliott> Vorpal: Terribly. 19:48:10 <Vorpal> elliott, ah 19:48:11 <fizzie> Certainly it will work well: it always does. 19:48:12 <elliott> It's a comic relief button. 19:48:18 <Vorpal> ... 19:48:22 <Vorpal> elliott, right 19:48:30 <fizzie> "cattle are still listed here here i cannot expertise thousand uh... eleven" 19:48:30 <elliott> Vorpal: Ooh that jump was nice. 19:48:32 <fizzie> Good start. 19:48:44 <Vorpal> fizzie, definitely NOT the right thing 19:48:56 -!- Ngevd has quit (Quit: Leaving). 19:48:57 <elliott> OMG you rae made of cloth. 19:48:57 <CakeProphet> dude you guys 19:48:58 <elliott> That is the best. 19:49:05 <elliott> Prince_Charles: I am sorry but I am cloth now. 19:49:06 <CakeProphet> what if there were a Harvest Moon MMO 19:49:16 <CakeProphet> and you could SIMULATE FARMING IN A SMALL TOWN with peopel. 19:49:28 <Prince_Charles> elliott, it was mentioned in the SA Homestuck thread as basically being WV: The Game. 19:49:37 <fizzie> Vorpal: "flower uh... got rave reviews a vote seville truck figure out what exactly it" 19:49:40 <Vorpal> Prince_Charles, hahah 19:49:43 <elliott> Prince_Charles: WV isn't: made of cloth. 19:49:55 <Vorpal> fizzie, flower was another game mentioned, that is about it 19:49:55 <Prince_Charles> elliott, HOW DO WE KNOW 19:50:03 <elliott> Prince_Charles: CARAPACES ARE NOT CLOTH 19:50:06 <elliott> THEY ARE HARD AND BLACK 19:50:16 <fizzie> Vorpal: "still it's a flower in the sense that it's more experienced the nanny" 19:50:21 <Vorpal> fizzie, no 19:50:22 <Vorpal> just no 19:50:24 <elliott> `addquote <fizzie> Vorpal: "still it's a flower in the sense that it's more experienced the nanny" 19:50:29 <HackEgo> 690) <fizzie> Vorpal: "still it's a flower in the sense that it's more experienced the nanny" 19:50:31 -!- itidus20 has joined. 19:50:46 <MDude> Journey seem slike it'll be pretty atmospheric, with some not-bad puzzles. 19:50:53 <Prince_Charles> elliott, WHAT IF IT'S JUST REALLY HARD CLOTH 19:50:58 <elliott> I do like the idea of, like, a single-player game that just happens to be MMO'd up. 19:51:07 <CakeProphet> elliott: see: demon's souls 19:51:07 <elliott> It's like the Network Headache of game concepts. 19:51:14 <CakeProphet> elliott: sort of 19:51:16 <elliott> CakeProphet: Sorry no Network Headache is DEFINITELY the better prior art here. 19:51:21 <fizzie> Vorpal: "talk to somebody father usage roaring in the south" 19:51:32 <CakeProphet> elliott: demon's souls is the best though. 19:51:52 <Vorpal> fizzie, dude watch it later with sound on 19:51:53 <CakeProphet> best console game anyways. 19:52:45 <fizzie> Based on the video there's in fact some gameplay too. 19:53:34 <CakeProphet> what makes demon's souls different from most games is that it's actually /difficult/ 19:54:01 <elliott> Prince_Charles: Where do they put on the Mayoral Sash. 19:54:06 <Vorpal> CakeProphet, hm there are other difficult games. Plenty of them. 19:54:14 <Prince_Charles> elliott, that's what the scarf is. 19:54:16 <CakeProphet> Vorpal: yes that's true. 19:54:33 <Vorpal> CakeProphet: Dwarf Fortress, Nethack, ARMA, Red Orchestra to mention a few 19:54:44 <CakeProphet> Vorpal: plenty is not most though. LEARN 2 AMBIGUOUS QUANTIFIER 19:54:48 <Prince_Charles> Vorpal, dude, DF is not all that hard. 19:54:52 <Prince_Charles> Even without danger rooms. 19:55:04 <Vorpal> Prince_Charles, hm true. nethack is however hard 19:55:11 <itidus20> CakeProphet: my old chat friend liked a 2d side scroller game i made once cos frankly it was insanely difficult 19:55:19 <monqy> I've heard reports of nethack being easy 19:55:25 <monqy> can't trust anyone!! 19:55:27 <CakeProphet> demon's souls pretty much absolutely rapes you when you fail. 19:55:53 -!- oerjan has joined. 19:56:12 <itidus20> CakeProphet: imagine like, double dragon, except where an individual enemy has several minutes worth of hitpoints 19:56:15 <CakeProphet> but allows you to make up for it. basically you lose all of the xp you haven't used when you die, and you can get back by reaching the place where you died. 19:56:22 <CakeProphet> but if you die again then you lose all of those points. 19:56:25 <Prince_Charles> monqy, I think it's easy if you're good at it. 19:56:25 <fizzie> Vorpal: Final conclusions: "steria mileage may vary severely got to be extremely treat by audit" 19:56:42 <itidus20> well this comment im making doesn't paint a good picture.. there werent that many enemies in it 19:56:49 <CakeProphet> Prince_Charles: this is kind of like how Magicka is an easy game 19:56:53 <CakeProphet> but then people say it's really difficult 19:56:57 <CakeProphet> this is because they're bad at it. 19:57:00 <Vorpal> fizzie, .... no 19:57:11 <elliott> Prince_Charles: NetHack is more annoying than difficult, though I'm totally biased as I'm terrible at it. 19:57:12 <Vorpal> fizzie, dude watch the video with sound 19:57:25 <fizzie> Vorpal: Naaaah, the captions were good enough. 19:57:25 <elliott> Prince_Charles: Ask ais about how Crawl is even moreso. :p 19:57:43 <Prince_Charles> elliott, is this continued bitterness over your lost save. 19:57:44 <Vorpal> fizzie, ... totally inaccurate however 19:57:46 <CakeProphet> dude what if 19:57:48 <elliott> Prince_Charles: Definitely. 19:57:49 <CakeProphet> Magicka df combo 19:57:53 <elliott> Aw, Journey has a separate single player mode? :/ 19:57:59 -!- kwertii has joined. 19:58:04 <elliott> It should just always have every other player there and you can't do anything about it. 19:58:23 <Prince_Charles> CakeProphet, Toady did say that he didn't want D&D style cheap magic. 19:58:30 <Vorpal> Prince_Charles, most games are easy when you are good at them... In fact most things in life are. 19:58:39 <CakeProphet> you build a fortress while also fending off huge waves of enemies by combining elements to form spells. 19:58:49 <CakeProphet> Prince_Charles: yes I agree that would be bad. 19:58:52 <itidus20> my old 2d game is named either runch or turbo fight.... and its hard 19:59:03 <Vorpal> CakeProphet, ouch 19:59:06 <elliott> `addquote <itidus20> my old 2d game is named either runch or turbo fight.... and its hard 19:59:08 <HackEgo> 691) <itidus20> my old 2d game is named either runch or turbo fight.... and its hard 19:59:14 <Prince_Charles> CakeProphet, he has said that if he implements it it'll basically only be an artefact status modifier or something similar. 19:59:22 <itidus20> i have a video of a scene or 2 of it 19:59:46 <CakeProphet> Vorpal: I like the idea of having an element system where the environment carries elements, and then to use magic you have to harness elements from your environment or something. 19:59:54 <CakeProphet> not necessarily in df just generally 19:59:58 <Vorpal> heh 19:59:58 <CakeProphet> some complex generated world. 20:00:03 <itidus20> this http://www.youtube.com/watch?v=qp3tRxe59sQ 20:00:18 <elliott> itidus20: this is beautiful. 20:00:25 <Vorpal> CakeProphet, btw worst game idea ever: Grand Theft Auto Augmented Reality Edition. 20:00:29 <elliott> Prince_Charles: Dude watch that. 20:00:34 <elliott> Vorpal: Um what that is the best idea I have ever heard. 20:00:41 <Vorpal> elliott, XD 20:00:50 <elliott> I'm not kidding that would literally be the most fun. 20:00:50 <Prince_Charles> oh my god 20:01:03 <CakeProphet> duuude fighting on trains 20:01:06 <itidus20> i wish i had the motivation and inspiration now that i had when i made that game (and video) 20:01:21 <Vorpal> elliott, it would be terminally dangerous 20:01:31 <elliott> Vorpal: OK by AR I basically interpreted you as meaning VR. 20:01:37 <Vorpal> elliott, no I meant AR 20:01:46 <CakeProphet> elliott: why does watching this remind me of SBAHJ 20:01:52 <Vorpal> elliott, VR is actually a good idea 20:01:54 <Vorpal> AR is... not 20:01:57 <elliott> Vorpal: sorry I am too distracted by the awesomeness of VR Grand Theft Auto. 20:02:15 <Vorpal> elliott, is grand theft auto IV worth playing? 20:02:20 <elliott> Dunno. 20:02:23 <CakeProphet> Vorpal: it's not bad. 20:02:34 <CakeProphet> gets old quickly unless I guess you actually do the story stuff 20:02:35 <elliott> I tend to just watch people play GTA games in lieu of actually playing them. 20:02:36 <CakeProphet> but I never did tha. 20:02:38 <Prince_Charles> http://www.youtube.com/watch?v=lyhCuTUvUJw&feature=channel_video_title 20:02:40 <Prince_Charles> itidus20, is this you 20:02:53 <itidus20> oh crap >.< (checks) 20:03:04 <itidus20> i should have thought about this 20:03:34 <Vorpal> elliott, heh 20:03:48 <Prince_Charles> itidus20, no you are better than SgeoN1 by far. 20:03:55 <Vorpal> CakeProphet, don't you have to do a few story missions first at least? 20:03:56 <cheater> hmm 20:04:03 <itidus20> i was in a strange mood when i made that video 20:04:03 <CakeProphet> Vorpal: not with cheat codes. 20:04:07 <CakeProphet> Vorpal: well, maybe. 20:04:11 <CakeProphet> I dunno I don't own it. 20:04:13 <itidus20> my hair is longer now :D 20:04:37 <Vorpal> CakeProphet, and when did not owning games ever stop players playing them... 20:05:01 <CakeProphet> Vorpal: playing from the beginning to figure out whether or not you need story missions before you can just mindlessly drive around with cheat codes and kill everything etc 20:05:03 <Vorpal> elliott, anyway GTA AR, is it bad? (As opposed to GTA VR which would be awesome) 20:05:03 <Prince_Charles> itidus20, I can say with certainty that you look far more dignified than SgeoN1 as well. 20:05:26 <itidus20> in hindsight i didnt sound nearly as loud as i hoped with that video 20:05:29 <Vorpal> CakeProphet, as far as I understood you need to complete at least two missions to be able to use cheat codes 20:05:33 * CakeProphet is the most digitalnitary. 20:05:46 <Vorpal> since you use your in game phone to enter them and get that at the end of mission 2. 20:05:51 <CakeProphet> ah 20:06:31 <CakeProphet> Vorpal: do you own a PS3? 20:06:34 <CakeProphet> or emulator or some weirdness. 20:06:37 <Vorpal> CakeProphet, it was released for PC 20:06:40 <Vorpal> as well 20:06:49 <Vorpal> CakeProphet, but no I don't own a PS3 20:06:55 <Vorpal> I do own a very awesome PC though 20:06:56 <CakeProphet> Vorpal: well no I was going to suggest playing demon's souls which I think is ps3 exclusive. 20:07:03 <CakeProphet> in fact I think it came with some models? 20:07:10 <Vorpal> CakeProphet, I don't own any console in fact 20:07:44 <elliott> I should probably get a console one of these days since I doubt the Linux gaming scene is going to be overly huge any time soon. 20:08:10 <Vorpal> elliott, dual booting is easy enough 20:08:20 <Vorpal> use an old disk for windows 20:08:22 <CakeProphet> elliott: yes play Magicka on Windows. 20:08:32 <elliott> Vorpal: Yes, but then I have to deal with Windows, and hardware incompatibilities. 20:08:33 <fizzie> Also there seems to be a new bundle out every day nowadays! 20:08:34 * CakeProphet got Windows 7 for free from his school. 20:08:45 <elliott> Consoles nicely sidestep those. 20:08:54 <elliott> And also come with a better controller. :p 20:08:57 <Vorpal> elliott, if you have a proper PC instead of a flimsy laptop thingy you could just insert another SATA disk and install windows on that 20:09:02 <CakeProphet> elliott: 1) get ps3 b) play demon's souls 20:09:07 <elliott> Vorpal: FSVO flimsy 20:09:23 <CakeProphet> iii.) profit 20:09:23 <elliott> I'd like to see you break a single moulded piece of aluminium 20:09:31 <Vorpal> elliott, fair enough 20:09:36 <Vorpal> elliott, cramped laptop 20:09:36 <elliott> CakeProphet: But PS3s are ugly. 20:09:39 <Vorpal> you can't argue with that 20:09:50 <CakeProphet> elliott: this is what I think about most when I'm playing video games. 20:09:53 <elliott> Compare PS2s, which are wonderful and flat and rectangular. 20:09:59 <CakeProphet> "wow that computer box is an eyesore" 20:10:05 <elliott> CakeProphet: Dude the PS3 has like the ugliest curve I have ever seen. 20:10:13 <itidus20> my slim ps2 has an official vertical stand 20:10:23 <Vorpal> elliott, I have space for like 7 x 3.5" disks in my desktop. + 4 x 5.whatever" 20:10:33 <CakeProphet> elliott: okay find get exbawks and supprot vondoes 20:10:53 <Vorpal> oh wait, 8 3.5", one of them has front side access (floppy, card reader or whatever) 20:10:57 <elliott> Hmm, it looks like they made the PS3 less ugly. 20:11:03 <fizzie> The PS3 controller (DualShock 3) plugs into a regular computer just fine, then you get a real controller. (All the other drawbacks still apply.) 20:11:06 <Vorpal> elliott, the last version can't run linux iirc 20:11:07 <elliott> Can we stop for a moment to admire the DualShock controllers again? They are like the best controllers. 20:11:10 <itidus20> elliott: man i can't tell you how rare those vertical ps2 stands are in the stores 20:11:13 <elliott> Vorpal: A thing which I care about to no end. 20:11:20 <Vorpal> elliott, :/ 20:11:45 <elliott> Vorpal: I'm not inclined to give Sony money because of their practices, but I don't really care about running a low-spec pointless unsupported buggy Linux machine. 20:11:45 <CakeProphet> a ps2linux is fine. 20:11:46 <Prince_Charles> <elliott> I'd like to see you break a single moulded piece of aluminium 20:11:52 <Prince_Charles> Aluminium isn't too strong? 20:11:54 <Vorpal> elliott, I prefer the original xbox controllers. Because of their nice size. They were kind of nice to hold compared to the small controllers of most other consoles 20:11:55 <elliott> Prince_Charles: With your bare hands. 20:12:04 <elliott> Prince_Charles: Or, say, OK, you can have a four storey drop. 20:12:10 <elliott> That should be enough to destroy most laptops easily. 20:12:12 <CakeProphet> honestly I like xbox 360 controllers the best. 20:12:19 <CakeProphet> but ps2/ps3 is fine. 20:12:21 <Prince_Charles> <elliott> CakeProphet: But PS3s are ugly. 20:12:31 <Prince_Charles> But they have such a progressive attitude towards DRM! 20:12:45 <itidus20> I think playstation1 was the ultimate console, at least by the time I owned one they actually worked without breaking down 20:12:53 <elliott> PlayStation or psone 20:13:03 <elliott> The PS One is the weirdest thing. 20:13:23 <itidus20> it has some of the best games ever made 20:13:24 <fizzie> I prefer the N64 controller, it's the only one that has place for my third hand. 20:13:31 <CakeProphet> http://en.wikipedia.org/wiki/Dark_Souls now this thing is out which is like a kind of sequel to demon's souls 20:13:34 <CakeProphet> I bet it's awesome. 20:13:39 <CakeProphet> er will be out soon 20:13:39 <elliott> `addquote <fizzie> I prefer the N64 controller, it's the only one that has place for my third hand. 20:13:41 <HackEgo> 692) <fizzie> I prefer the N64 controller, it's the only one that has place for my third hand. 20:13:55 <elliott> I suppose I might buy one of them Xboxes. 20:13:56 <elliott> Xboxen,. 20:14:01 <elliott> s/,././ 20:14:03 <CakeProphet> no ps3 play demon's souls 20:14:07 <elliott> http://upload.wikimedia.org/wikipedia/commons/1/17/Xbox_360_S.png 20:14:08 <CakeProphet> xbox 360 is for chumps. 20:14:12 <elliott> What compelled them to pre-crumple the front? 20:14:12 <itidus20> the ps1/n64/saturn era was basically the renaissance of gaming.... 20:14:13 <elliott> Like 20:14:18 <elliott> Do they hire someone to punch a dent in the new Xboxen 20:14:22 <elliott> Before sending them ou to stores 20:14:23 <itidus20> that was the best time to be a gamer, im glad i was a part of it 20:14:25 <elliott> out 20:14:27 <elliott> Is that their design strategy 20:14:33 <elliott> Prince_Charles tell me that doesn't look like someone punched it hard 20:14:33 <Prince_Charles> elliott, so that they'd be more resistant to kicks when they broke. 20:14:51 <elliott> OK I cannot buy a console that ugly I am sorry it just is beyond me. 20:14:57 <Prince_Charles> They're pre-kicked so all the kickedness is used up. 20:14:58 <elliott> What's the best non-crumpled console. 20:15:01 <elliott> Prince_Charles: X-D 20:15:05 <itidus20> CakeProphet: fighting on trains is either a reference to final fantasy 6 or drunken master 2 20:15:13 <CakeProphet> elliott: maybe the design helps with overheating which was a problem with earlier cases. 20:15:18 <elliott> itidus20: Two of the greatest games of all time. 20:15:25 <elliott> CakeProphet: Making things more cramped cools them? 20:15:33 <elliott> Seventh generation video game consoles 20:15:33 <elliott> PlayStation 3 · Wii · Xbox 360 · Zeebo 20:15:35 <itidus20> urmm.. the second was technically a non-interactive kung fu film 20:15:35 <CakeProphet> the bottom looks wider to me than the original. 20:15:36 <elliott> What the FUCK is a Zeebo? 20:15:49 <itidus20> elliott: ohh... video time o.o 20:15:58 <Prince_Charles> elliott, hey, a dent increases the surface area to volume ratio. 20:15:59 <Vorpal> elliott, yes, less space for the heat to build up in obviously 20:16:04 <CakeProphet> also notice the huge vent 20:16:06 <elliott> OK a Zeebo looks like something which causes drama in the revision history to [[Template:Seventh generation game consoles]]. 20:16:14 <CakeProphet> that is not present on other models. 20:16:44 <elliott> Zeebo sucks cock, does it real mexican. Zeebo will not work with our advanced internets why don't we just leave them in south amelica whele they berong!!! 20:16:44 <elliott> DOWN WITH ZEEBO! DOWN WITH ZEEBO! DOWN WITH ZEEBO! Mr. Briney: ROAAAAARRR ZEEBO! Okay, srsly, ffs, keep the gd zeebo off 7th gen console list thingy. That is all. (A) —Preceding unsigned comment added by 98.24.202.197 (talk) 05:51, 1 July 2009 (UTC) 20:17:02 <elliott> Convincing arguments: 20:17:02 <elliott> [[ 20:17:02 <elliott> It really doesn't matter. It's staying off the template. —Preceding unsigned comment added by 211.28.152.244 (talk) 06:02, 7 July 2009 (UTC) 20:17:02 <elliott> And with that kind of talk and continued vandalism warnings, you will wind up with your IP banned. --Marty Goldberg (talk) 18:46, 7 July 2009 (UTC) 20:17:02 <elliott> I.. really don't care, sorry. —Preceding unsigned comment added by 211.28.152.244 (talk) 00:30, 8 July 2009 (UTC) 20:17:05 <elliott> ]] 20:18:38 <itidus20> http://www.youtube.com/watch?v=mMFngT6Ie2c -- this is the sort of shit i used to get inspiration from when making fighting games 20:19:22 <itidus20> maybe one day i will get inspired again 20:19:27 <Vorpal> what is the fun in fighting games, they just seem so booooring 20:19:30 <CakeProphet> smash bros brawl = best fighting game 20:19:32 <Vorpal> (no offence meant) 20:19:40 <itidus20> Vorpal: exactly... 20:19:44 <elliott> fizzie: Can you use a PS2/3 controller with an Xbox 360? :p 20:19:50 <CakeProphet> no brawl is in no way boring. 20:20:09 <monqy> is CakeProphet being serious i can';t tell 20:20:24 <CakeProphet> no I legitimately enjoy that game. 20:20:25 <itidus20> Vorpal: that video is fight scenes from one of my favorite films :D 20:20:38 <pikhq> elliott: I'm pretty sure USB HID devices don't normally work on the 360. 20:20:53 <itidus20> but the voices are dubbed strangely 20:20:55 <fizzie> Incidentally, I recently played a bit that free Trackmania version; was browsing the Steam store. It is very obnoxious: it's all "you must invite a buddy to unlock this track" "you must challenge a friend via file to unlock this track" "you must have a buddy in your buddy list to unlock this track" "you must talk to a friend about Trackmania to unlock this track". 20:20:56 <pikhq> (unlike the PS3) 20:20:59 <elliott> pikhq: But the Xbox controller is so ugley. 20:21:03 <Vorpal> itidus20, no sound atm. But it looks utterly silly 20:21:04 <elliott> And uneeoergoengorengomic. 20:21:09 <itidus20> hahahha 20:21:13 <fizzie> It's discrimination against us friendless people is what it is. 20:21:32 <CakeProphet> elliott: xbox 360 controller is quite ergonomic though. 20:21:47 <itidus20> dragon ball manga was inspired by this movie too 20:21:55 <elliott> CakeProphet: Dude, I am a member of the cult of DualShock superiority. 20:21:59 <Vorpal> fizzie, is trackmania a good game though? It is about non-dirty racing isn't it? 20:22:10 <CakeProphet> elliott: no I agree it's a good controller as well 20:22:10 <elliott> Hmm, Fez is coming to Xbox. 20:22:12 <Vorpal> as in, no powerups or weapons or such 20:22:13 <elliott> So that's a point in Xbox's favour. 20:22:23 <Vorpal> elliott, Fez being=? 20:22:23 <CakeProphet> but the 360 control is quite comfy. 20:22:25 <Vorpal> s/=// 20:22:34 <elliott> Vorpal: http://gamevideos.1up.com/video/id/17594 20:22:36 <elliott> That thing. 20:22:45 <elliott> It's supposedly coming out next year, after being in development since like forever. 20:22:58 <Vorpal> hm 20:22:58 <elliott> But at least they actually have new gameplay footage out recently so I guess it's not entirely vapourware. 20:23:04 <itidus20> a painting is a physical object complete in and of itself 20:23:07 <elliott> Vorpal: Stick with it for a few minutes before dismissing it 20:23:12 <Vorpal> elliott, no flash 20:23:13 <elliott> It takes a little while to reveal why it's interesting :P 20:23:18 <elliott> Vorpal: Your loss 20:23:22 <Vorpal> elliott, *shrug* 20:23:29 <itidus20> a painting consists of 2 components. the canvas and the paint 20:23:32 <fizzie> Vorpal: Well, yes, it's about non-dirty racing; but it's very cartoonish. Actually it reminds me of Stunts (except modernized) a little bit. (Not too much.) 20:23:53 <fizzie> Lots of loops and long jumps and that sort of things. 20:23:57 <itidus20> an arcade game is a physical object complete in and of itself. it consists of hardware and software. 20:23:57 <Vorpal> fizzie, I saw a video of trackmania 2, looked quite photorealistic, even if the tracks didn't 20:24:11 <Vorpal> had loops and such 20:24:27 <Prince_Charles> oerjan, ping. 20:24:28 <fizzie> I don't really know about how the versions go; the current free one is "Trackmania Nations Forever" or something. 20:24:31 <CakeProphet> monqy: why is smash bros not awesome? 20:24:38 <Vorpal> fizzie, I see 20:24:43 <fizzie> I tried it out back before they added the "Forever" into it. 20:24:43 <Prince_Charles> monqy is stupid and wrong end of. 20:24:53 <itidus20> i think in the long run, the idea of games built specifically for a specific piece of hardware will become fashionable again 20:24:56 <elliott> monqy never said it wasn't awesome did he 20:24:56 <Vorpal> heh 20:25:03 <CakeProphet> he asked if I was joking 20:25:03 <Prince_Charles> He'd better not have. 20:25:04 <fizzie> But they have a for-money Trackmania United, and something called Trackmania Canyon is advertised at the end of each session. 20:25:06 <CakeProphet> after I talked about it being awesome. 20:25:13 <Vorpal> fizzie, the forever part is a track with an infinite loop 20:25:21 <CakeProphet> which sort of implies that he might not like it. 20:25:26 <Vorpal> fizzie, I think I saw a video of Trackmania 2 Canyon? Hm. 20:25:29 <itidus20> like you will have master game developers who craft each game as an individual unit 20:25:40 <Prince_Charles> CakeProphet, he might be one of those poor deluded souls who prefer Melee. 20:25:45 <itidus20> not as a product to be manufactured 20:26:04 <fizzie> Vorpal: Oh yes; it looks very much more realistic. 20:26:10 <Prince_Charles> OK so 20:26:16 <Prince_Charles> Can we all just concur 20:26:16 <Vorpal> fizzie, newer game, not strange 20:26:17 <CakeProphet> Prince_Charles: melee was the shit back in the day, but... brawl feels more balanced to me, and the physics are awesome. 20:26:24 <fizzie> Vorpal: http://www.destructoid.com/elephant/ul/81863-trackmania-forever.jpg is what the old one looks like. 20:26:30 <Prince_Charles> That either Brawl or Melee is the best. 20:26:31 <elliott> fizzie: Please tell me you have been waiting impatiently for Fez for like a billion years too. 20:26:35 <Prince_Charles> CakeProphet, oh yeah, I prefer Brawl. 20:26:37 <elliott> Prince_Charles: GUESS WHAT I'VE NEVER PLAYED 20:26:38 <Vorpal> fizzie, ah 20:26:42 <fizzie> Vorpal: It's all in this "stadium"-style environment. 20:26:51 <Vorpal> fizzie, ah 20:27:03 <Vorpal> fizzie, the canyon one is... wait for it... in a canyon! 20:27:12 <fizzie> http://www.tweetmmo.com/wp-content/gallery/trackmania-nations-forever/trackmania-5.jpg <- another very illustrative bit. 20:27:16 <Prince_Charles> CakeProphet, for one thing, airdodging isn't as cruel. 20:27:20 <CakeProphet> Prince_Charles: my best character on brawl: Ness 20:27:24 <Prince_Charles> elliott, buy brawl omg we can have a party. 20:27:28 <CakeProphet> Prince_Charles: yes airdodging is awesome this is why I'm good with NEss. 20:27:39 <Prince_Charles> CakeProphet, I prefer Marth because come on swords. 20:27:41 <Vorpal> Prince_Charles, don't you mean Mario Party? 20:28:06 <fizzie> Hmm, Steam wants to sell me Dungeon Siege 3 for 50% off. 20:28:14 <Vorpal> fizzie, never heard of that game 20:28:15 <Prince_Charles> Vorpal, haven't played that 20:28:22 -!- zzo38 has joined. 20:28:22 <Vorpal> Prince_Charles, good for you 20:28:29 <CakeProphet> Prince_Charles: I'm just best with Ness. I have a lot of characters I enjoy playing 20:28:31 <fizzie> Vorpal: It's by SQUARE ENIX, but I think it's a bit more "action" than "RPG". 20:28:33 <CakeProphet> Marth isn't one of them though. 20:28:38 <Vorpal> fizzie, oh. 20:28:49 <zzo38> All functors in Haskell are strong. Does this have anything doing with cartesian closed? 20:28:50 <CakeProphet> Prince_Charles: I'm pretty good with Ike actually. he's not a great character though. 20:28:54 <Prince_Charles> CakeProphet, Marth is great because it's so easy. 20:28:54 <Vorpal> fizzie, what is Square Enix doing? NOT doing RPGs? Wtf. 20:29:10 <fizzie> Vorpal: It's the third already; it's not a new thing. 20:29:13 <Prince_Charles> All of his attacks consist of "swing sword at person adjacent". 20:29:14 <Vorpal> fizzie, heh 20:29:15 <CakeProphet> Prince_Charles: he's pretty much the opposite of Ness. Ness = good in the air. Marth = good on the ground. 20:29:21 <fizzie> Vorpal: Based on images it looks like a glitzy Diablo. 20:29:27 <Prince_Charles> CakeProphet, Marth is pretty good in the air, actually. 20:29:31 <Vorpal> fizzie, oh god 20:29:43 <Vorpal> fizzie, btw I love some of the Square Enix SNES games. Mario RPG for example. 20:29:45 <Prince_Charles> His attacks are all short range but they're pretty damn good, particularly his down one. 20:29:58 <Vorpal> (yes, Square Enix made that, not Nintendo) 20:30:00 <Prince_Charles> I haven't actually played in ages, really. 20:30:09 <CakeProphet> Prince_Charles: as far as characters like Marth I kind of prefer Rob because he has ridiculous ground reach + projectile + air mobility 20:30:39 <oerjan> Prince_Charles: pong 20:30:48 <elliott> <Vorpal> Prince_Charles, don't you mean Mario Party? 20:30:51 <fizzie> Vorpal: Apparently of the sieges, III is the first one that's published by SQUARE ENIX, though. 20:30:52 <elliott> Mario Party is like War: The Game. 20:30:57 <Prince_Charles> oerjan, what the hell is the topology in Surface Madk screwed it up so badly I don't even. 20:31:01 <CakeProphet> elliott: dude what if there were online Risk 20:31:06 <CakeProphet> elliott: we could all play Risk. 20:31:11 <Vorpal> fizzie, heh 20:31:15 <Prince_Charles> CakeProphet, ROB is pretty cool, although that's a given. 20:31:18 <zzo38> CakeProphet: There is, on X-Bit, which is now defunct, however. 20:31:33 <zzo38> But it did have a Risk game (it was not called Risk though, but the rules are the same). 20:31:41 <CakeProphet> zzo38: same map 20:31:43 <CakeProphet> the map is important. 20:31:45 <fizzie> Vorpal: Seems that Obsidian wrote the game, and Square bought the franchise, or something like that. 20:31:47 <zzo38> Yes, same map. 20:31:48 <CakeProphet> er, that was a question. 20:32:21 <Vorpal> fizzie, heh 20:32:22 <CakeProphet> Prince_Charles: for a while I played as Ganondorf because he's the worst character in tournament rankings. 20:32:37 <zzo38> It was a Synchronet BBS, so there might be other Synchronet BBSes with the same game, possibly. 20:32:38 <CakeProphet> and would beat experienced players with him. 20:32:48 <Prince_Charles> CakeProphet, well yeah, but tournament rankings are completely orthogonal to mere mortal play. 20:33:01 <CakeProphet> right, that was the conclusion I was testing. 20:33:20 <Prince_Charles> Consider that in Melee the tournament rankings were basically dictated by a couple of very tricky strategies. 20:33:31 <CakeProphet> not quite as much in Brawl but there are a few. 20:33:42 <CakeProphet> mainly involving stupid grab combos. 20:33:51 <Vorpal> fizzie, hm or was Mario RPG a Square game? Prior to merger? 20:33:57 <Vorpal> oh yes, it was 20:34:12 <oerjan> Prince_Charles: hm do i recall correctly that it's a square grid where on the north and south edges you switch to another column 20:34:15 <oerjan> ? 20:34:20 <zzo38> If I make a telnet service in my computer, it will also have accounts and I might allow users to add their own programs using a virtual machine. 20:34:30 <Vorpal> fizzie, Chrono Trigger, Secret of Mana, the good final fantasy. Square was awesome 20:34:37 <CakeProphet> I usually deal with people who grab a lot by jumping around a lot. In fact, hopping is my primary means of transportation when I'm playing Ness. I hop everywhere. 20:34:52 <Prince_Charles> oerjan, east and west wrap the obvious way, but north and south wrap to themselves in a way which is probably best just to look up. 20:35:04 <fizzie> Vorpal: I played Legend of the Seven Stars a very small bit. 20:35:06 <itidus20> ff4 was good.. the trouble was that i never would have figured that game out without the strategy guide 20:35:08 <Prince_Charles> CakeProphet, grabs are just these things that are there to me. 20:35:24 <Vorpal> fizzie, ah 20:35:37 <Vorpal> ^style ct 20:35:37 <fungot> Selected style: ct (Chrono Trigger game script) 20:35:39 <elliott> Prince_Charles: we have interwiki. 20:35:41 <Vorpal> fungot, Square 20:35:42 <fungot> Vorpal: you! take! we find! 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:35:59 <SgeoN1> What's wrong with how I look? 20:36:02 <itidus20> Vorpal: i got to the final battle in secret of mana (i think) and lost miserably 20:36:08 <CakeProphet> Prince_Charles: er, just there? 20:36:09 <itidus20> that was basically that 20:36:16 <Vorpal> itidus20, it wasn't that hard once you knew what you were doing 20:36:24 <Vorpal> itidus20, anyway just reload the last save 20:36:25 <elliott> Prince_Charles: also, you violated strong wiki policy. 20:36:25 <itidus20> its a dragon right? 20:36:29 <Prince_Charles> elliott, hm? 20:36:35 <elliott> Prince_Charles: Hm to which part? 20:36:40 <Vorpal> itidus20, no, a Mana Beast. But yes looks like a dragon kind of 20:36:42 <Prince_Charles> Strong wiki policy. 20:36:53 <itidus20> vorpal.. ahahah.. the rental store i rented that game from is now out of business 20:37:06 <itidus20> no.. reloading last save is well beyond the realms of possibility 20:37:09 <elliott> Prince_Charles: You must not hide the "User:" from user page links. 20:37:09 <Vorpal> heh 20:37:16 <Prince_Charles> elliott, how strange. 20:37:17 * elliott fixes. 20:37:45 <itidus20> i do have zsnes and a secret of mana rom though 20:37:50 <CakeProphet> Prince_Charles: I do think the tournament rankings reflect fairly accurate on the inherent imbalance in characters. Maybe not the exact a numerical ordering, but the "tiers" are pretty accurate. 20:37:53 <Vorpal> itidus20, keep the girl buffing the hero's sword (and healing and so on) and have him hit the beast, and have the spirit cast offensive spells. You need a few of those faire nuts that resupply your mana 20:37:55 <elliott> 43 - 0 = 20:37:57 <elliott> Prince_Charles: The best spam protection. 20:38:04 <Vorpal> fairy nuts* 20:38:10 <Vorpal> itidus20, forgot what buffs were best 20:38:14 <CakeProphet> Prince_Charles: Ganondorf is probably defininitely the worst character to play as. 20:38:14 <itidus20> Vorpal: and i played it with my brother... we enjoyed it 20:38:22 <Vorpal> itidus20, hm 20:38:29 <Prince_Charles> CakeProphet, I like the way he has a sword and never uses it. 20:38:42 <itidus20> 3 would be nice.. but i doubt many people can actually gather 3 people around a game for that long 20:38:48 <Prince_Charles> (Swords are the key to victory, this is a true fact.) 20:39:00 <CakeProphet> my strategy with Ganondorf is to rely on a well-timed warlock bunch or up-tilt... 20:39:12 <CakeProphet> and in the interim try to not die, with offensive focused on tilts. 20:39:17 <zzo38> He who lives by the sword, dies by the gun. 20:39:30 <CakeProphet> s/bunch/punch/ 20:39:35 <Prince_Charles> zzo38, assuming someone else said that first. 20:39:55 <itidus20> Vorpal: yeah it was good bonding time 20:39:56 <zzo38> Prince_Charles: Maybe someone did. I don't know. 20:40:04 <Vorpal> itidus20, mhm 20:40:12 <zzo38> But probably someone did. 20:40:13 <elliott> Prince_Charles: He who lives by the pointy stick, dies by the pointy stick. 20:40:19 <elliott> The moral is pointy sticks hurt. 20:40:33 <Prince_Charles> *pointéd 20:40:50 <elliott> lol, BerliOS is shutting down 20:41:36 <Deewiant> Lol-worthy? 20:41:42 <Prince_Charles> ISTR that Oolite was hosted on BerliOS. 20:41:54 <elliott> Deewiant: A bunch of 'em seem to be shutting down lately 20:41:59 <elliott> What was it last time, SunSITE? 20:42:07 <CakeProphet> Prince_Charles: I wonder what they were thinking when they designed Meta Knight. 20:42:09 <elliott> Something like hat 20:42:10 <elliott> that 20:42:21 <Prince_Charles> CakeProphet, they were thinking about what Kirby would be like if AWESOME. 20:43:01 <elliott> Prince_Charles: Excuse me Kirby is the most awesome. 20:43:45 <zzo38> I made the change one byte of ROM data of Kirby Dreamland 1 for GameBoy in order to correct the scoring (it works regardless of extra mode and configuration mode), because the normal scoring is really badly designed. 20:44:03 <Prince_Charles> elliott, sorry but Meta Knight is awesomer still. 20:44:12 <elliott> Prince_Charles: OK no they are in positions of equal awesomeness. 20:44:31 <CakeProphet> Prince_Charles: many of his attacks have literally milliseconds of lag. 20:44:32 <elliott> Prince_Charles: He is trying way too hard OK. 20:44:33 <zzo38> But which is awesomer in terms of scoring? Possibly not. 20:44:47 <Prince_Charles> CakeProphet, yes, I know. 20:44:55 <CakeProphet> Prince_Charles: and he has a sword 20:44:58 <CakeProphet> so obviously he wins. 20:44:58 <Prince_Charles> His downtilt is just insane. 20:45:13 <elliott> OK stop it you guys are oppressing people like me with no friends. 20:45:26 <Prince_Charles> elliott, Brawl has online play. 20:45:40 <zzo38> Do you believe the scoring is too bad the normal way of that game? 20:45:42 <elliott> Prince_Charles: I DON'T HAVE FRIENDSHIP INTERNET 20:45:44 <CakeProphet> ...but it's laggy and terrible. 20:45:48 <CakeProphet> don't play it online 20:45:50 <CakeProphet> play it with friends. 20:45:57 <elliott> Yeah I can't imagine it'd work well online but OK LOOK THAT INVOLVES ME HAVING FRIENDS 20:45:58 <zzo38> I corrected it by changing an instruction from DEC to AND 20:46:00 <elliott> Wait I will kidnap Prince_Charles. 20:46:01 <Prince_Charles> OK OK Brawl party in Hexham y/n 20:46:04 <elliott> And force him to play SSB with me. 20:46:17 <Prince_Charles> No second B? 20:46:36 <elliott> Prince_Charles: IM NOT CLEVER OK 20:46:41 <CakeProphet> As far as Brawl players go, you'll find I'm simply the best there is. 20:46:42 <elliott> HOW MANY BS ARE EVEN ??// 20:47:26 <CakeProphet> the main issue with Brawl online is that Wii networking tends to suck for some reason. 20:47:31 <Prince_Charles> CakeProphet, yes, this is why you aren't invited. 20:47:48 <zzo38> When I was playing the game, all player decide random character for each individual game and play time mode. 20:47:55 <CakeProphet> time mode is lame. 20:47:56 <zzo38> Three minutes. 20:48:06 <CakeProphet> 5 stock is the best. 20:50:03 <zzo38> When I played Mario Party game, I always used my own scoring rule instead of the one built-in. The money is your base score (fu), and each star doubles (han). 20:52:50 <zzo38> My opinion is that many people do not know a lot of things about game design which is why I wrote an article about it in my gopher; and then people can agree/disagree/complain. 20:53:16 <elliott> If only anyone used gopher. 20:53:55 <zzo38> It is possible to view on HTTP too, but some features are omitted on the HTTP version, such as the ability to send comments. 20:53:59 * CakeProphet feels he would be a fairly good game designer. 20:54:05 <CakeProphet> afterall I did invent portal chess. :> 20:54:16 <zzo38> CakeProphet: Then please make up some game. 20:54:25 <zzo38> You can invent chess game. Can you invent card game? 20:54:37 <CakeProphet> well, not really a fan of those. 20:54:45 <CakeProphet> I could make a bitchin' text-based game. :) 20:54:52 <monqy> bitchin eh 20:55:00 <CakeProphet> monqy: yeah dawg 20:55:03 <zzo38> OK please make up some text-based game 20:55:30 <CakeProphet> IS PORTAL CHESS (MY MAGNUM OPUS) NOT ENOUGH? 20:55:59 <CakeProphet> can't I just make the best chess variant and then retire? 20:56:20 <zzo38> You can if you want to, but I think you can invented other thing too if you can 20:57:29 <elliott> Gregor: Why do people like Trac. 20:58:57 <CakeProphet> elliott: why do people like Java? 20:59:02 <CakeProphet> they exist. 20:59:32 <CakeProphet> "java is good" gets more hits than "java is bad" QED 20:59:54 <CakeProphet> Things that make programming in Java a joy as compared to C++: 20:59:55 <CakeProphet> 1. Inner classes and anonymous classes are cool. C++ doesn't have them, and that sucks big time. (Actually, I'd prefer anonymous functions, as most of the things I write in-place are implementations of one-function interfaces like Runnable.) 21:00:03 <CakeProphet> best argument. 21:01:05 <CakeProphet> Here are the things that make me curse Java designers on a daily basis: 21:01:07 <CakeProphet> 1. No support for types with value semantics. I frequently use iterators in my designs. And when I send an iterator into a function, I want to send a copy, not the iterator that I still own and want to use. 21:01:13 <CakeProphet> this person is bad. 21:01:17 <CakeProphet> I don't like them. 21:03:09 <elliott> value semantics 21:03:10 <elliott> is it qwe 21:03:18 <CakeProphet> qwe? 21:03:24 <elliott> qwe 21:03:38 <elliott> I like how monqy hasn't talked since asking CakeProphet if he was joking. 21:03:38 <CakeProphet> I don't know what that is. 21:03:58 <monqy> hi 21:04:04 <monqy> i've been looking someplace else 21:04:09 <elliott> monqy: ar eyou anti-smasehte brhrothieorngs 21:04:18 <monqy> i'm not a fighting games fan 21:04:26 <elliott> more like 21:04:29 <elliott> gighgting fames gan 21:04:34 <monqy> sure 21:04:39 <CakeProphet> SSB: the least fighting game like fighting game. 21:04:56 <CakeProphet> also the best fighting game. 21:04:58 <oerjan> Prince_Charles: cutting and rearrangement suggests Surface topology is a Klein bottle. 21:05:07 <elliott> oerjan: omg.... 21:05:13 <Prince_Charles> Right. 21:05:15 <zzo38> The fighting game I prefer is the card game Yomi 21:05:18 <elliott> beautiful... 21:05:21 <elliott> `addquote <zzo38> The fighting game I prefer is the card game Yomi 21:05:23 <HackEgo> 693) <zzo38> The fighting game I prefer is the card game Yomi 21:06:27 <Prince_Charles> Given an infinitely large memory and instruction sphere, Surface is [[Turing-complete]] because it is possible to reproduce any [[brainfuck]] code. 21:06:30 <Prince_Charles> infini 21:06:34 <Prince_Charles> Pfffffffffffffffffffffffffft 21:06:35 <elliott> tely large 21:06:37 <elliott> klein bottle 21:06:49 <elliott> Prince_Charles: In fairness infinite spheres are like the best. 21:06:58 <CakeProphet> Is it even possible to be Turing complete without infinite memory? 21:07:01 <Prince_Charles> I like the way that he explicitly states mapping conditions 21:07:07 <Prince_Charles> and then allows for it to be infinite 21:07:11 <Prince_Charles> er, *wrapping 21:07:16 <elliott> Prince_Charles: To be fair, so does Funge. 21:07:53 <CakeProphet> I am trying to think of how to emulate a Turing machine without infinite memory and....... 21:07:59 <CakeProphet> nope. 21:08:02 <monqy> whats memory 21:08:06 <elliott> CakeProphet: dude. 21:08:22 <CakeProphet> udueddd 21:08:48 <Vorpal> wtf the lagginess of this game. (GTA IV). It stutters BADLY. And I have high end hardware. Wtf 21:09:01 <CakeProphet> I'm guessing you either have a really long explanation or you're just shocked and can't type. 21:09:08 <CakeProphet> or you're searching for something. 21:09:38 <oerjan> CakeProphet: *unbounded memory 21:09:53 <CakeProphet> can you clarify the difference? 21:10:05 <Prince_Charles> <CakeProphet> I am trying to think of how to emulate a Turing machine without infinite memory and....... 21:10:13 <Prince_Charles> Define 'infinite memory'. 21:10:15 <oerjan> a TM never used infinite memory at any given step 21:10:20 <oerjan> *uses 21:10:29 <zzo38> Yomi card is played each player has a deck of fifty-six cards, two of which are removed before the game starts (one of the removed cards is a rule quick reference card, the other specifies starting HP and global effects). 21:10:33 <Prince_Charles> There need to be an infinite number of possible states of the entire system for it to be TC. 21:10:37 <CakeProphet> still the memory it has available to it is unbounded... which is pretty much infinite right? 21:10:48 <zzo38> There are ten decks to choose from. 21:11:04 <oerjan> CakeProphet: it doesn't need to be allocated up front though, which sometimes matters. 21:11:43 <CakeProphet> either way I'm thinking of the same thing I just used a different possibly less accurate word. I don't think it's possible to be equivalent to unbounded memory in bounded memory. 21:11:48 <monqy> whats 21:11:49 <monqy> memory 21:11:52 <CakeProphet> oerjan: ah yes I suppose so. 21:12:02 <CakeProphet> monqy: can't remember. 21:12:12 <elliott> Prince_Charles is ignore me because 21:12:12 <zzo38> It is possible in bounded memory of the memory cell values are unbounded. 21:12:13 <elliott> he is 21:12:14 <elliott> evil 21:12:38 <CakeProphet> zzo38: ah yes. 21:12:49 <CakeProphet> but that just seems like a different kind of unbounded memory, perhaps. 21:13:06 <CakeProphet> hmmm, so then... 21:13:07 <zzo38> I think Prince_Charles is same as Phantom_Hoover because they even have same username and same host cloak 21:13:15 <elliott> Oh thanks for the info 21:13:23 <CakeProphet> I could emulate brainfuck with three bignum cells, or something? 21:13:28 <Prince_Charles> zzo38, genius detective. 21:14:19 <oerjan> CakeProphet: bounded memory means, with the usual intuition, that your machine can only pass through a finite number of states, which means its halting problem can always be decided by another machine. 21:14:34 <Prince_Charles> For his next trick, he will find Lord Lucan and show that he was responsible for the Mary Celeste. 21:14:52 <zzo38> CakeProphet: Probably you can; you could have the boolean cells, you divide one in half and double the other adding the remainder of the other division 21:15:09 <CakeProphet> oerjan: couldn't I grow memory infinitely though? or am I misunderstanding "states" 21:15:46 <CakeProphet> er 21:15:49 <CakeProphet> nevermind 21:15:57 <CakeProphet> misread bounded as unbounded. :P 21:16:20 <CakeProphet> zzo38: ah that's neat. 21:17:17 <CakeProphet> oerjan: how does a machine go about deciding the halting problem for a bounded memory machine? 21:18:32 <CakeProphet> also doesn't that imply that all real world machines have a decidable halting problem, since all real world machines have bounded memory? 21:19:30 <zzo38> I think you can check by checking duplicate states 21:19:38 <zzo38> Since there is a finite number of states 21:19:52 <zzo38> So it require more memory than you have, to be able to do so. 21:20:10 <CakeProphet> ah okay. 21:20:22 <CakeProphet> that makes perfect sense.. 21:20:54 <oerjan> CakeProphet: yes. just emulate it for one more than the maximal number of steps, it must either repeat a state or halt. 21:21:23 <oerjan> for real world machines this can still take eons of time. 21:21:26 <CakeProphet> assuming that the machine can't statelessly insert a truly random bit of information in its memory 21:22:14 <oerjan> CakeProphet: randomness only changes things by degrees, actually - your emulator can test _all_ possibilities. 21:22:32 <CakeProphet> ah 21:22:54 <CakeProphet> if one of the possibilities terminates then the probability would increase towards 1 over time... right? 21:22:57 <CakeProphet> er 21:22:59 <CakeProphet> yes. 21:23:25 <CakeProphet> assuming that the randomness is repeated... 21:23:43 <CakeProphet> er no nevermind. 21:23:58 <oerjan> CakeProphet: you can make all the probabilistic transitions into a large matrix and calculate its eigenvalue. it's the same as the proposed new scoring for bfjoust, really :P 21:24:06 <elliott> FSVO new 21:24:16 <oerjan> well, or close to it. 21:24:38 <elliott> "Given an infinitely large memory and instruction bottle" 21:24:39 <elliott> :D 21:24:39 <elliott> Prince_Charles: :D 21:24:40 <oerjan> but same matrix theory. 21:24:49 <elliott> infinitely large memory and instrution bottle 21:26:17 <CakeProphet> monqy: http://en.wikipedia.org/wiki/Computer_data_storage 21:26:55 <oerjan> *maximal eigenvalue and its eigenvector 21:27:36 <oerjan> hm some of the same rare complications as for bfjoust might happen. but they're all solvable with a little more trickiness. 21:27:53 <monqy> CakeProphet: thanks 21:29:42 <oerjan> <elliott__> Phantom_Hoover: Can you get people to start calling you PH irl. <-- also, start wearing a cape. 21:31:37 <Prince_Charles> <elliott> Prince_Charles: :D 21:31:44 <Prince_Charles> I was about to be like what but then I realised. 21:32:34 <oerjan> <tehporPekaC> my name is unknown to anyone in the universe. <-- sure, mr. Adam Polite. 21:38:24 <oerjan> <cfj> "We can't implement this scheme in LLVM. We resort to post processing the assembly it produces." <-- the Evil Mangler has moved on? 21:38:44 <Prince_Charles> http://www.reddit.com/r/askscience/comments/kwjks/assuming_that_highenergy_neutrinos_are/ 21:39:00 <Prince_Charles> Jesus christ I want to punch this guy. 21:39:04 <elliott> oerjan: it's now Haskell code apparently ;P 21:39:09 <elliott> s/;P/:P/ 21:39:30 <elliott> Prince_Charles: I downvoted him. :p 21:39:57 <Prince_Charles> elliott, yes, good minion, soon we will control the past with neutrinos. 21:40:09 <Prince_Charles> ONLY NGEVD CAN STOP ME NOW AND I FENCE BETTER THAN HIM 21:40:14 <elliott> Prince_Charles: You're about to get upvoted a billion times, thanks to future magic. 21:40:34 <elliott> Prince_Charles: Oh my god we must never build an FTL neutrino receiver because as soon as we do it'll open the floodgates to the future nagging us. 21:40:36 <Prince_Charles> yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay 21:40:49 <elliott> "Why haven't you come up with the obvious solution to global warming yet??? Haha, suckers!" 21:40:57 <elliott> "Guys, you should really start working on jetpacks one of these days; you're running out of time." 21:41:11 <Prince_Charles> We tell them to shut up, then they tell us that they're not going to shut up by turning the power up a billion times. 21:41:19 <Prince_Charles> Eventually, someone shoots the neutrino reflector. 21:41:29 <elliott> "Hey I think you should impeach Obama and elect Ron Paul --EVERYONE EVER FROM THE FUTURE [message sent by unauthorised account RonPaul'sCryonicallyRevivedZombieGhostSkeleton3012]" 21:43:06 <oerjan> Prince_Charles: assuming relativity still holds, breaking causality would require two neutrino producers, one of which is bundled with a detector, and which are moving at relativistic speed wrt each other. 21:43:41 <Prince_Charles> oerjan, actually, I think you could do it with only one. 21:43:49 <elliott> oerjan: Assuming relativity still holds WHILE IT'S BEING COMPLETELY VIOLATED :P 21:44:28 <Prince_Charles> Use light for the outward leg, lulling causality into a false sense of security, then WHAM, neutrinos had hit you ten minutes ago. 21:44:39 <Prince_Charles> s/you/it/ 21:44:47 <oerjan> Prince_Charles: no, i don't think so. with just one, there would be no way to cause something to move backwards in its reference frame. 21:45:24 <Prince_Charles> It was based only on suspicion; I'll need to actually work it out. 21:45:32 <oerjan> and if there is any reference frame in which nothing goes backwards in time, causality isn't violated. 21:45:37 <Prince_Charles> One moment please. 21:46:52 <elliott> Prince_Charles: OK we need to know what you came up with, pls hurry up five seconds ago. 21:48:04 <oerjan> elliott: by "relativity still holds" i mean that all (sub-light) inertial reference frames still have equivalent physics 21:48:38 <Prince_Charles> Dammit Alpha let me solve this. 21:48:43 <oerjan> this is still consistent with tachyons as long as you ignore causality 21:49:02 <Prince_Charles> Aha. 21:49:09 * CakeProphet ignores causality on a daily basis. 21:49:47 <Prince_Charles> OK so a Lorentz factor of 2 requires a velocity of .86c note to self. 21:50:20 <Vorpal> I'm running this game from a god damn SSD yet I still get what seems to be loading lag spikes. WTH 21:50:37 <Prince_Charles> Dammit I should be able to calculate time taken for overtaking. 21:50:58 <CakeProphet> Vorpal discovers that GTA IV has terrible lag. 21:51:23 <Vorpal> CakeProphet, it is unplayably bad.... 21:51:38 <Vorpal> CakeProphet, as in impossible to drive. You get a lag spike ever second or so 21:51:41 <Vorpal> CakeProphet, wtf 21:51:49 <Vorpal> CakeProphet, is there any world around? 21:52:04 <elliott> Vorpal: You sure did buy GTA IV quickly in the like five seconds after CakeProphet told you it was good. 21:52:11 <Prince_Charles> Oh duh, classical relative velocity 21:52:12 <Vorpal> elliott, who said buy. 21:52:19 <Vorpal> elliott, I'm trying it out before. 21:52:20 <CakeProphet> elliott: I never mentioned it was good. 21:52:26 <elliott> Vorpal: This is an IRC channel full of legitimacy. 21:52:34 <Vorpal> elliott, and well if it is like this: I'm going to uninstall it. Unplayable 21:52:36 <CakeProphet> just that it wasn;t bad. I think. 21:52:55 <Vorpal> I have a Core i7 with a high end Radeon GPU, And I'm running from an SSD. How can I get this kind of performance... 21:53:27 <CakeProphet> you should really just play magicka because it's better. 21:54:20 <Vorpal> CakeProphet, ... 21:54:48 <Prince_Charles> OK yeah this doesn't violate causality dammit. 21:54:50 <elliott> what's the piracy scene like for playstation vs xbox 21:54:50 <Vorpal> CakeProphet, I want some driving that is in an RPG or sandbox and that isn't just pickup trucks (that rules out Dead Island) 21:54:55 <elliott> ???? 21:55:08 <Prince_Charles> so sad 21:55:11 <CakeProphet> GTA IV is not RPG-like as San Andres was. 21:55:19 <elliott> Prince_Charles: OK what if 21:55:23 <elliott> Prince_Charles: you made causality 21:55:25 <elliott> out of 21:55:25 <MDude> Dragon Quest Auto 21:55:27 <elliott> sdlkg 21:55:39 <elliott> MDude: Ahahaha. 21:55:44 <CakeProphet> elliott: what if you just ruled out time travel as unpossible 21:55:49 <elliott> Pokemon Theft Auto. 21:55:49 <CakeProphet> tthenwhwwt? 21:55:58 <monqy> adgjkngd 21:55:59 <elliott> CakeProphet: Then how do you explain the neutrinos 21:56:02 <Vorpal> <CakeProphet> GTA IV is not RPG-like as San Andres was. <-- RPG OR SANDBOX I said 21:56:07 <CakeProphet> elliott: differently :P 21:56:07 <Vorpal> it is sandbox 21:56:14 <elliott> CakeProphet: Are they going faster than light or not 21:56:19 <CakeProphet> I assume they are. 21:56:23 <oerjan> :t atanh 21:56:24 <lambdabot> forall a. (Floating a) => a -> a 21:56:29 <CakeProphet> since we measured them as faster. 21:56:38 <oerjan> nice... 21:56:49 <elliott> Prince_Charles: Did you ever manage to explain to CakeProphet why FTL → time travel. 21:57:01 <oerjan> > atanh (tanh (1/2) + tanh (1/2)) 21:57:02 <lambdabot> 1.617318958453862 21:57:08 <oerjan> oops 21:57:14 <oerjan> > tanh (atanh (1/2) + atanh (1/2)) 21:57:15 <lambdabot> 0.8 21:57:36 <CakeProphet> are you sure there's not another plausible explanation? Maybe time dilation is different when you're going FTL 21:57:42 <oerjan> > atanh (1.000025) 21:57:42 <lambdabot> NaN 21:57:48 <elliott> CakeProphet: That... 21:57:57 <elliott> Prince_Charles: YOU GET TO TALK TO CAKEPROPHET SO LUCKY A+++ 21:58:01 <Prince_Charles> CakeProphet, well, since I have the numbers handy. 21:58:15 <oerjan> CakeProphet: that does not matter. we are only looking at the time dilation wrt ordinary sublight frames 21:58:25 <oerjan> which are _observing_ the neutrinos 21:58:27 <Prince_Charles> You're travelling at 0.86c relative to your friend, meaning that you see time moving half as fast for them. 21:59:19 <oerjan> > atanh (1.000025) :: Complex Double 21:59:20 <lambdabot> 5.6448972067895955 :+ (-1.5707963267948966) 21:59:36 <oerjan> eek 21:59:52 <Prince_Charles> 10 seconds in, you send a signal travelling at 2c to them, so they receive the signal after 7.6s from your perspective. 22:00:06 * oerjan smells branch selection problems 22:00:28 <Prince_Charles> Since you see them moving half as fast, you will see their receiver flash after 7.6/2=3.8s. 22:00:48 <elliott> Prince_Charles: I'm unconvinced CakeProphet is paying attention. 22:00:54 <Prince_Charles> I don't even care. 22:01:00 <CakeProphet> totally am. 22:01:18 <Prince_Charles> Their receiver therefore flashes 8.8s into their flight. 22:01:50 <CakeProphet> basically I'm not making a concrete argument of any kind, other than that since we've measured something that seems to contradict our theories and possibly violates causality. 22:01:58 <CakeProphet> maybe this is an indication that something is in need of revision? 22:02:17 -!- DH____ has joined. 22:02:35 <Prince_Charles> They repeat this, and as the system is symmetric between you and them, they see the exact same effect: your receiver flashes earlier into your trip than they were when they fired it. 22:02:59 <Prince_Charles> You therefore receive the reply to a signal sent 10s in less than 8.8s in. 22:03:00 <oerjan> > tanh (atanh (1.000025) + atanh (1/2)) :: Complex Double 22:03:01 <lambdabot> 1.0000083332638894 :+ (-1.0205347470509298e-21) 22:03:09 <Prince_Charles> I assume you see the paradox here. 22:03:10 <oerjan> hm seems to work 22:03:17 <CakeProphet> Prince_Charles: so what if time dilation starts going backards once you go FTL. :> 22:03:26 <CakeProphet> yes I see it. 22:03:59 <Prince_Charles> I think it's because Lorentz transforms allow spacelike geodesics to move forwards or back in time with impunity for different observers, which screws things up, by my knowledge of relativity is far less solid than I'd like. 22:04:04 <Prince_Charles> CakeProphet, doesn't matter. 22:04:36 <Prince_Charles> All that matters is that a signal fired in your reference frame can effect a change at a velocity greater than c. 22:05:30 <oerjan> Prince_Charles: sounds right to me 22:06:40 <Prince_Charles> OK r/AskScience idiot doesn't seem to realise that I was asking how causality violations could be empirically detected and has been acting snottily to me because he thinks he can show me up as a fool. 22:07:42 <oerjan> it occurs to me that the tanh / atanh method does not tell whether the time direction has been reversed 22:08:08 <Prince_Charles> Stop flaunting the fact that you get to know more relativity than me I am very bitter. 22:08:23 <elliott> Prince_Charles: I'll probably flamewar with him if he keeps talking because I like flamewars. 22:08:34 * CakeProphet is the best at flamewars. 22:08:41 <Prince_Charles> oerjan, I'm the biggest fan of hyperbolic geometry ever! 22:09:04 <Prince_Charles> elliott, godspeed. 22:09:37 <elliott> I've got your back friend. 22:17:27 <oerjan> oh hm... 22:17:52 -!- Behold has joined. 22:18:38 -!- DH____ has quit (Read error: Connection reset by peer). 22:18:41 -!- DHeadshot has joined. 22:18:43 <oerjan> > tanh (atanh (1.000025) + atanh (-1.000025)) :: Complex Double 22:18:44 <lambdabot> (-1.0338396805309458e-12) :+ 0.0 22:18:51 <oerjan> > tanh (atanh (1.000025) - atanh (-1.000025)) :: Complex Double 22:18:51 <lambdabot> 0.9999999996875079 :+ 7.653854787386644e-26 22:20:00 -!- BeholdMyGlory has quit (Ping timeout: 240 seconds). 22:20:05 <oerjan> > tanh (atanh (1.000025) + atanh (-0.9999999997)) :: Complex Double 22:20:06 <lambdabot> (-1.0000240005899963) :+ (-2.9392598432279782e-21) 22:21:20 <elliott> Vorpal: fizzie: Oi, I need zlib help. 22:21:21 <oerjan> Prince_Charles: my guess is that 0.9999999997 c is then the approximate speed needed for a neutrino producer that sends a neutrino backwards in time at 1.000024 c 22:21:47 <elliott> I really like the idea that we have to throw away relativity just for a tiny tiny tiny fraction FTL. 22:22:08 <Prince_Charles> oerjan, you're working with standard relativistic energy, yes? 22:22:09 <oerjan> assuming 1.000025 c is the speed they go from a producer at 0 c 22:22:27 <oerjan> Prince_Charles: i'm just using velocity addition and the tanh trick 22:23:19 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> 0.9999999997 -- more conventional formula 22:23:19 <lambdabot> 1.0000000000000038 22:23:23 <oerjan> eek 22:23:27 <oerjan> hm 22:23:36 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> (-0.9999999997) -- more conventional formula 22:23:37 <lambdabot> -1.000024000591981 22:23:51 -!- BeholdMyGlory has joined. 22:23:59 <elliott> withDeflateInput :: Deflate -> ByteString -> (IO (Maybe ByteString) -> IO a) -> IO a 22:24:01 <elliott> oerjan: the worst api :( 22:24:47 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> (-0.99) -- try something smaller... 22:24:48 <lambdabot> 1.0049873436755818 22:25:17 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> (-0.9999) -- try something smaller... 22:25:18 <lambdabot> 1.6666111129612653 22:25:23 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> (-0.99999) -- try something smaller... 22:25:24 <lambdabot> -2.333372222851394 22:25:31 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> (-0.99995) -- try something smaller... 22:25:32 <lambdabot> 2.9998500074916556 22:25:37 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> (-0.99997) -- try something smaller... 22:25:37 <lambdabot> 10.998350247481781 22:25:57 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> (-0.99998) -- try something smaller... 22:25:58 <lambdabot> -9.000900090016856 22:26:07 <oerjan> > let u <+> v = (u+v)/(1+u*v) in 1.000025 <+> (-0.999975) -- try something smaller... 22:26:08 <lambdabot> 79999.97916991221 22:26:49 <oerjan> something like that to give arbitrary high neutrino speed 22:27:00 <elliott> that big 22:28:17 <CakeProphet> elliott: no the worst api is: hahahaha :: (() -> ()) -> () 22:28:25 <monqy> ok 22:28:35 <oerjan> well the experimental speed is quite a tiny excess above c, so it stands to reason that magnifying that would need near-c relative velocity 22:29:47 -!- Behold has quit (Remote host closed the connection). 22:29:55 <CakeProphet> you know what's awesome about my location 22:30:07 <CakeProphet> we have this semi-fast-food chain called Zaxby's 22:30:11 <CakeProphet> that's amazing. 22:30:12 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:30:31 <elliott> So unique it has 500 locations. 22:30:50 <CakeProphet> s/location/region of the united state/ 22:31:23 <CakeProphet> one of the few redeeming qualities of living the southeastern US 22:31:44 <CakeProphet> +in 22:36:41 <CakeProphet> also if I ever leave Georgia there will be NO CHICK-FIL-A WHYYYYY 22:36:50 <CakeProphet> why do we have all of the best chicken-based food chains. 22:36:56 <Prince_Charles> OTOH, you won't be in Georgia any more. 22:37:37 <CakeProphet> you'll never understand the joys of well-made fried chicken. 22:37:51 <CakeProphet> not with that attitude. 22:38:37 <CakeProphet> As of September 2011, Chick-fil-A has 1,583 restaurants in 39 states and the District of Columbia, and is focusing on the Midwest and southern California.[ 22:38:43 <CakeProphet> oh nevermind their online store locator is just weird. 22:40:15 <CakeProphet> http://en.wikipedia.org/wiki/Chick-fil-A#Religious_and_political_views 22:40:16 <CakeProphet> lol 22:40:24 <CakeProphet> I find that heading funny. 22:40:49 <CakeProphet> (Chick-fil-a is a strong proponent of Christianity.) 22:40:56 <CakeProphet> "S. Truett Cathy is a devout Southern Baptist who has taught Sunday School since 19xx" 22:40:59 <Prince_Charles> Whodathunkit? 22:41:02 <CakeProphet> 19xx, best year. 22:41:47 <CakeProphet> Prince_Charles: oh well... I was considering the irony of the fast food chain LITERALLY practicing a faith 22:41:50 <CakeProphet> like... as an entity. 22:42:00 <CakeProphet> but okay you can interpret the normal way too that's fine. 22:43:34 <elliott> I think that it is important to note that, in December of 2010, the SPLC officially named AFA and FRC as hate groups. CFA affiliates with both of those organizations. —Preceding unsigned comment added by 72.28.148.50 (talk) 01:06, 5 January 2011 (UTC) 22:43:35 <elliott> The SPLC is nothing more than a highly-partisan, left-wing group that uses name calling as its weapon of choice against individuals and organizations that don't tow the PC line. They deliberately put mainstream groups with rather innocuous agendas in the same category as the KKK and neo-Nazis. "Hate group" in their little world is any group that opposes their hard-line leftist agenda. That an organizat 22:43:35 <elliott> ion like this calls anybody "hateful" is not noteworthy. --AntigrandiosËTalk 14:55, 6 September 2011 (UTC) 22:44:33 <fizzie> What zlib what? (I'm almost slep.) 22:45:37 <CakeProphet> elliott: I haven't really figured out what's bad about an agenda of tolerance. Can you explain? 22:45:58 <elliott> fizzie: I a-fixed it. You should-a: come and see the Bugs Memorial Test Server. 22:46:00 <elliott> CakeProphet: r u srs 22:46:06 <CakeProphet> hold on while I look up these acronyms. 22:46:32 <CakeProphet> southern poverty law center? :P 22:46:45 <fizzie> I don't a computer I slep, sorry. 22:46:57 <elliott> fizzie: You a bet. 22:47:00 <elliott> bad. 22:49:27 <CakeProphet> :^-: 22:49:58 <CakeProphet> %>$ 22:50:13 * CakeProphet is practicing for the worst emoticon championship. 22:50:21 <monqy> ok 22:52:29 <Prince_Charles> CakeProphet, you're up against some pretty stiff competition, although tiffany does lack that certain je ne sans I don't remember what the phrase is actually. 22:52:51 <tiffany> ..? 22:53:49 <monqy> o~o 22:53:59 <CakeProphet> [-F 22:54:09 <monqy> i'm glad my face isn't ..? 22:54:13 <monqy> that would probably hurt 22:54:46 <monqy> %>$ too 22:54:56 <monqy> i'd be dead 22:55:07 <CakeProphet> ") 22:55:36 <tiffany> o.o 22:55:38 <oerjan> @|< 22:55:38 <lambdabot> Maybe you meant: . ? @ bf do ft id pl rc v wn 22:55:52 <CakeProphet> oerjan: stick figure 22:55:54 <CakeProphet> with a big head. 22:56:01 <oerjan> correct 22:56:10 <CakeProphet> &_& 22:56:11 <oerjan> the elephant man, to be precise 22:56:34 <monqy> tiffany: come on, you can do better than that 22:56:50 <CakeProphet> #_# pretty much any two symbols and an _ can look like a face to me. except the brackety ones. 22:57:15 <elliott> (_) 22:57:18 <monqy> )_) 22:57:25 <elliott> )_( 22:57:31 <CakeProphet> !_! %_% *_* $_$ :_: '_' '_" 22:57:36 <tiffany> |_| 22:57:50 <monqy> cakeprophet_cakeprophet 22:58:02 <tiffany> t_t 22:58:02 <CakeProphet> best emoticon in the world 22:58:09 <CakeProphet> monqy loses championshiwep 22:58:13 <tiffany> t(-_-t) 22:58:37 <CakeProphet> ?_! 22:58:37 <lambdabot> Maybe you meant: . ? @ bf do ft id pl rc v wn 22:58:59 <MDude> {_{ 22:59:16 <CakeProphet> ._. ,_. ;-; 22:59:19 <MDude> }_{ 22:59:30 <CakeProphet> `_` ~_~ 22:59:32 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: _`: not found 22:59:34 <Gregor> <Prince_Charles> CakeProphet, you're up against some pretty stiff competition, although tiffany does lack that certain je ne sans I don't remember what the phrase is actually. // So you could say the phrase is something of a ... je ne sais quoi? X-P 22:59:44 <Prince_Charles> Yes. 22:59:49 <CakeProphet> ___ 23:00:01 <monqy> good phrase 23:00:06 <monqy> I need to remember it 23:00:31 <CakeProphet> elliott: see: someone admiring a french expression. 23:00:45 -!- boily has quit (Quit: WeeChat 0.3.5). 23:01:09 <MDude> - _ -_- 23:01:24 <MDude> 0 23:01:48 <MDude> 3 23:02:22 <MDude> _-_ 23:02:46 <CakeProphet> http://wurstcaptures.untergrund.net/music/?oneliner=100*sin(t)&rate=44100]100*sin(t) 23:02:49 <CakeProphet> beautiful music. 23:03:06 <CakeProphet> excuse me: http://wurstcaptures.untergrund.net/music/?oneliner=100*sin(t)&rate=44100 23:03:23 <elliott> http://www.bemmu.com/music/index.html is better 23:04:05 <CakeProphet> >> is bitshift I guess? 23:09:38 <CakeProphet> elliott: huh I gave my link the same input as one from your site and it sounds completely different. 23:09:53 <CakeProphet> sin(t/30) * ((t>>6|t>>4)&63&t>>2) + tan(t/30)/40 23:09:53 <elliott> sample rate? 23:10:01 <CakeProphet> 44k 23:10:25 <CakeProphet> what's the sr of bemmu.com? it doesn't specify. 23:11:15 <CakeProphet> ah it's 8000 23:11:22 <CakeProphet> or close 23:11:28 <CakeProphet> it gives a similar sound when I select 8000 23:12:04 <elliott> it is, see the video 23:12:18 <elliott> that one you linked is just some lame derivative of http://www.bemmu.com/music/index.html with pointless sample rate selection :p 23:12:37 <CakeProphet> you guys want to start an EXPERIMENTAL PORGRAMIN BAND? 23:12:45 <elliott> no 23:13:26 <CakeProphet> this video is pretty neato 23:13:42 <CakeProphet> bitshift is neato. 23:21:14 <Gregor> Bitch ift. 23:22:06 -!- copumpkin has joined. 23:22:37 <olsner> haha, Gregor make funny 23:23:35 <MDude> Tzec beat me to making a geometry based language ebcause I am lazy. 23:23:42 <MDude> *because 23:23:59 <CakeProphet> t*(t>>sin(t/31)+t>>14) * 100 is good 23:27:10 -!- ive has quit (Ping timeout: 244 seconds). 23:30:41 <Prince_Charles> MDude, one-up him, make a general geometry-based language. 23:32:49 * CakeProphet should make a programming language whose programs are weather forecast data. 23:33:23 <oerjan> "general"? 23:35:39 <oerjan> CakeProphet: it's going to take the world by storm 23:36:04 <Prince_Charles> Dammit wiki let me see recent changes. 23:36:32 <elliott> Prince_Charles: append ? 23:37:17 <oerjan> why would that be necessary... 23:37:40 <elliott> chrome 23:37:42 <elliott> some bug in something 23:38:43 <Prince_Charles> Ah, I need to ask it /if/ there have been recent changes. 23:39:04 <oerjan> >_> 23:39:13 * Prince_Charles → sleep 23:39:15 <monqy> Brains? Are people still making brainfuck derivatives..... 23:39:15 -!- Prince_Charles has quit (Quit: Leaving). 23:39:59 <oerjan> brainfuck 3000 23:41:22 <MDude> I wonder if there's enough commands made for direvatives to make one that uses no commands from the original and stull be turing complete. 23:41:35 <elliott> definitely 23:41:42 <elliott> there are huge ones with like direct duplicates of brainfuck as different commands 23:42:04 <MDude> Not the commands as in the caracters. 23:42:19 <MDude> They'd need ot work a bit differently too. 23:43:10 <MDude> For instance, Brainscramble gives you three stacks, and there's one that gives you a grid of bits. 23:43:46 <elliott> heh 23:43:59 <elliott> I think almost certainly 23:44:16 -!- Patashu has joined. 23:44:23 <MDude> The hard part is going though all of them, since many aren't properly categorized. 23:44:29 <oerjan> brainfuck minus brainfuck 23:59:52 -!- kwertii has quit (Quit: kwertii).