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 wow. if javascript throws an exception and nothing catches it, it silently dies? 00:29:44 I think something must catch it, although it might be the system that does so 00:30:53 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 so your question is, if javascript throws and exception and no one catches it, does it make a sound? 00:31:25 *an 00:32:26 i've only heard this question for certain simple data structures, but i think it's unresolved even for those 00:32:29 Patashu: yes javascript is the best thing to debug ever. 00:34:33 last night I had to debug a javascript error 00:35:08 a for loop was ending before the first cycle even finished 00:35:13 and I had no idea what was causing it to stop 00:35:54 that would make an awesome movie 00:36:08 debugging javascript? 00:36:27 i dunno, everything sounds so grandiose atm 00:36:36 a movie about debugging javascript... 00:36:43 2 hours of staring at stacks and variables 00:36:52 and setting breakpoints 00:36:53 i keep imagining stuff in a trailer voice with explosions in the background 00:37:05 IN A WORLD... 00:37:09 WITH NO EXCEPTION HANDLIGN 00:37:35 A WORLD... 00:37:38 * Sgeo wonders how one would go about debugging assembly 00:37:40 WHERE PROGRAMS DON'T DO WHAT YOU WANT THEM TO 00:38:15 ONE MAN... 00:38:17 MUST FIX HIS CODE 00:38:18 ONCE AND FOR ALL 00:38:38 james matrix is just as simple programmer... unaware that one uncaught exception... would change his life forever 00:39:31 '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 *THOOM* 00:40:57 oklopol: grandiose? are you perhaps on acid? 00:41:58 "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 CakeProphet: i'm on acid on life 00:44:48 "this bug is impossi" 00:44:51 fuck 00:45:31 'monads' 00:45:41 "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 LOL 00:46:47 james matrix might just be the coolest character i ever invented just now 00:48:26 see also sequel where james matrix uses induction to prove a theorem with no simple combinatorial proof 00:55:15 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 hmm, you should mix in the "stand back! I know regular expressions" from xkcd too 00:55:43 yes, because there are other movies 00:56:17 -!- Vorpal has quit (Ping timeout: 260 seconds). 00:56:19 at one point they use a global variable 01:05:32 tv series are not very realistic i find 01:07:27 I would pay to watch that film! 01:09:13 of course you would, it would be awesome 01:18:04 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 (I put in #haskell channel but they don't know, and they are supposed to know!) 01:19:32 oops 01:25:35 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 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 what are they supposed to do other than which makeL makeR = id 01:29:23 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 This part works: class Which w l r t | w t -> l r where { which :: l -> r -> w -> t; }; 01:29:47 what does it say 01:30:18 monqy: Other than their instance definitions it is only supposed to do following the which makeL makeR = id laws. 01:30:26 oh 01:30:42 which = const; makeL = id; makeR = undefined 01:30:48 which = id; makeL = id; makeR = id 01:31:02 which = flip const; makeL = undefined; makeR = id 01:31:08 Even though I typed in the definition of makeL and makeR it still doesn't works 01:31:40 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 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 why do you even want this 01:32:58 it looks overcomplicated and useless 01:34:15 What is this things called in category theory? 01:35:04 also: isn't t always going to be something like a -> a since it can be the identity function 01:36:03 No, it isn't going to always be. Notice types of "maybe" function; the "t" isn't that type. 01:36:59 oh i didn't notice the w there 01:37:09 oops 01:37:14 so uh 01:37:17 how would you use this 01:38:54 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 How many things do you know about category theory, though? 01:42:06 not much 01:42:26 I wish I knew more but 01:45:27 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 With the Maybe monad, the (which makeL) which is (maybe Nothing) is same as (=<<) 01:52:17 instance? Which (a, b) (a -> a') (b -> b') (a', b') where makeL = id; makeR = id; which = (Control.Arrow.***) 01:52:26 That follows with the Either monad as well 01:53:11 oh I forgot the t in there 01:53:18 monqy: I don't know about arrow 01:53:24 instance? Which (a, b) (a -> a') (b -> b') (a', b') (a', b') where makeL = id; makeR = id; which = (Control.Arrow.***) 01:53:27 there 01:53:58 what arrow 01:54:00 The Which class only has four parameters, not five? 01:54:06 oops 01:54:09 I didn't forget about it 01:54:12 I forgot I remembered it 01:54:20 instance? Which (a, b) (a -> a') (b -> b') (a', b') where makeL = id; makeR = id; which = (Control.Arrow.***) 01:54:23 there 01:54:32 and what's this about arrow? 01:55:00 That I don't know about Control.Arrow very well 01:55:14 But I can try to see if it can work 01:55:17 it uses (***) for the function instance: f *** g = \ (a, b) -> (f a, g b) 01:58:11 monqy: Yes, that does in fact work. On pair types, it seems that is correct. 02:04:08 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 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 what are the errors? 02:06:44 moo 02:06:45 Ambiguity errors 02:06:59 like what 02:07:06 and corresponding to which implementation attempt 02:07:48 All implementation attempts, but the errors are still different 02:08:17 I mean specifically what is the code you tried and what was the error printout 02:08:33 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 C++ ?? 02:10:02 Rugxulo: What about C++? 02:10:30 Rugxulo: haskell. 02:10:39 -!- azaq23 has quit (Quit: Leaving.). 02:10:51 with multiparameter typeclasses and functional dependencies and friends 02:11:53 -!- Rugxulo has quit (Quit: Rugxulo). 02:12:16 what were the class, instance, and error, in full? 02:12:33 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 Ambiguous type variables `t0', `w0', `r0' in the constraint: (WhichMake w0 t0 r0) arising from a use of `makeL' 02:14:31 How to make not ambiguous? 02:15:20 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 really they should be in the same class?? 02:15:49 * Sgeo looks for a WebTV simulator 02:16:29 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 what were the class, instance, and ambiguity error, in full? 02:17:50 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 ok that makes sense 02:21:21 makeL is of type l and in the instance l is t 02:21:53 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 if you want anything fancier I'm afraid you;ll have to using crazy generic programming tricks?? like syb and friends?? 02:25:44 How do you do that? 02:26:14 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 well you won't be able to get around it 02:26:37 -!- itidus20 has quit (Ping timeout: 246 seconds). 02:27:10 I mean 02:27:43 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 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 unless you made it so there could only be one instance for any w, l, or r, I think? 02:29:49 I don't know enough about fundep syntax to construct that though, if it's even possible 02:49:38 Is it mathematically possible in category theory, though? 02:53:25 -!- hagb4rd has joined. 02:58:07 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 gpus' main advantage is that they are largely parallel, or am I mistaken? 02:59:16 I'd imagine any algorithm reliant on brute-forcing would benefit from parallelization 02:59:28 -!- itidus20 has joined. 03:04:40 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 Actually it works if I use "which makeL makeR ::" instead of putting :: at the end. Why does it require that? 03:13:52 zzo38 03:14:44 -!- augur_ has joined. 03:15:05 -!- augur has quit (Read error: Connection reset by peer). 03:15:51 zzo38: http://hpaste.org/51221 03:16:48 hmm, not quite ideal though 03:16:56 phone 03:20:23 -!- ive has quit (Quit: leaving). 03:21:00 -!- augur_ has quit (Remote host closed the connection). 03:21:22 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 I will try loading that program into my computer 03:22:43 it doesn't quite work because which left right doesn't work out nicely 03:23:29 Yes you are correct, it doesn't work 03:24:04 it does work for other things though 03:24:16 λ> which 5 (+1) Nothing 03:24:16 5 03:24:17 -!- hagb4rd has quit (Ping timeout: 260 seconds). 03:24:50 Yes that works. Even my program it also worked that way too. 03:28:33 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 the issue is telling it about type functions 03:29:56 So, why doesn't "which left right" work with your program? I don't completely understand 03:30:12 ask for the type of which left right in mine 03:30:36 note how it has a bunch of type variables in the constraints that don't show up in the type itself 03:30:40 I bet I could do this in 7.4 03:32:15 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 yep 03:32:52 those a1 and a2 variables don't show up in the actual type 03:33:43 -!- augur has joined. 03:35:34 anyway, I think the general thing you're looking for 03:35:37 is an eliminator 03:35:43 it's not a CT term 03:35:51 but it's a representation of ADTs 03:36:17 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 they might 03:36:33 not sure 03:54:03 OK. Can you tell me more about what "eliminator" is? 03:56:00 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 OK, yes that make sense 04:09:41 you typically won't get a typeclass for it 04:09:51 just because it depends on how many constructors you have 04:09:59 all your examples have two constructors so it works 04:10:40 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 hmm, not sure pairs even work 04:11:13 but yeah, it could be a statement that your type has two constructors 04:11:50 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 But someone has mentioned a way to do it: which = (Control.Arrow.***); left = id; right = id; not a real eliminator though. 04:13:03 hm, yeah, probably not 04:13:13 :t uncurry 04:13:13 forall a b c. (a -> b -> c) -> (a, b) -> c 04:13:24 that's the real (non-dependent) eliminator for pairs 04:13:42 But I suppose it violate the law if you also assume the return type must be allowed to be anything. 04:13:58 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 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 Swappable? 04:20:56 Hmm, as in, all constructors have the same type? 04:21:09 ^^easy way to describe my intuition about that 04:21:20 Although it was more "They all look the same" 04:22:20 Which means it can be swapped by "which right left", like how "which left right" is identity. 04:22:54 I have no idea what which is 04:23:01 Wait 04:23:19 My definition of "swappable" doesn't fit what my intuition says about Either 04:24:57 So the "Bool" type can be swapped to "Bool" itself, and "Either a b" is swapped to "Either b a" 04:37:01 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 ? 04:37:31 I suppose that does it. 04:37:40 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 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 How to make it recognize it match? 04:50:39 > () 04:50:39 () 04:59:50 Is Choose.hs wrong or is GHC wrong? 04:59:59 Or am I wrong? 05:00:14 the answer is yes 05:00:50 (d) all of the above 05:06:21 -!- zzo38 has quit (Remote host closed the connection). 05:29:30 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 Hello! 06:55:20 I'm on my brother's laptop 06:55:37 McAfee SiteAdvisor doesn't seem to like esoteric.voxelperfect.net 06:56:18 ah! our archnemesis mcafee is at it again! 06:56:39 Taneb: what in particular does it dislike? 06:56:45 and does it have the same issue with esolangs.org? 06:58:19 Doesn't say and no 06:58:29 how bizarre 06:58:59 "McAfee TrustedSource web reputation analysis found potential security risks with this site. Use with extreme caution." 06:59:56 "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 I continue to maintain that it's bizarre 07:00:06 I think it's a problem with Voxelperfect 07:01:04 No, wait, it isn't 07:04:37 MYSTERIOUS 07:05:39 maybe it has something to do with what other websites say about the site 07:05:58 thats what i would expect "web reputation analysis" to do 07:07:59 It is a shame that Carnage Heart didn't do very well 07:08:25 It's essentially befunge as a turn based strategy 07:08:27 For PS1 07:08:34 Bye 07:08:35 -!- Taneb has quit. 07:08:39 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 You know what I've never understood 07:44:22 no. 07:44:23 In HQ9+, does + cause any output? 07:44:46 The first of those questions was rhetorical 07:44:58 i think usually it has no visible effect. perhaps it might overflow and give an error message that way. 07:45:31 (this is of course the joke) 07:48:42 it changes write-only memory in an irreversible way 07:48:58 this operation isn't expected to do anything user-visible, as far as I know, nor be distinguishable from a NOP 07:49:16 however, all my HQ9+ impls do have an accumulator that's incremented upon calling + 07:50:49 I don't have any HQ9++ impls because I haven't quite figured out what ++ does 07:51:28 It creates a new instance of the generic superclass 07:51:44 oh, as in new Object() in Java? 07:51:48 (can you even do that in Java?) 07:51:59 Yeah, and dunno, never used Java 07:55:12 I believe you can create instances of Object in Java, though they're perhaps not terribly useful. 07:56:22 they have monitors, at least, so you could use them as mutexes 07:56:29 although making a separate mutex isn't very javaish 08:01:05 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 Is there a better way in Haskell to get the nth element of a list than "last (take n list)" 08:12:34 getting the nth element of a list isn't particularly efficient, although last+take seems even less so 08:12:40 > "yeah there is" !! 5 08:12:41 't' 08:13:00 Ooh 08:14:04 Taneb: it is sort of deprecated to use it, since it traverses the list, and also it may error 08:14:32 I don't think it's possible to get the nth element /without/ traversing the list 08:15:00 well true, but it is recommended you don't use it when iterating over a list otherwise 08:15:27 oerjan: I don't think it's "deprecated". 08:15:38 shachaf: well not technically... 08:15:55 oerjan: definitely, an indexwise list traversal is a bad idea in any language 08:16:01 It's just not recommended, like most partial functions and most functions that index into a list. 08:16:03 (whereas an indexwise array traversal is fine) 08:17:32 another idiom when you _don't_ want it to fail is to say take 1 (drop n list) 08:17:46 that gives either an empty list, or a list with just one element 08:18:04 or you can pattern match on drop n list directly 08:18:25 Or some sort of safeIndex function. 08:18:34 i also hear there's a "safeprelude" package which includes lots of such things 08:18:46 (name may or may not be right) 08:18:54 @hackage safe 08:18:54 http://hackage.haskell.org/package/safe 08:19:14 It's still not recommende to index into a list if you can avoid it. :-) 08:19:25 Do you people like bugs? 08:19:27 http://www.youtube.com/watch?v=M1nsOKBgmOs 08:20:34 > 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 [1,4,9,16,25] 08:21:04 @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 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 NO FUN NOT PASTING SO WE CAN TEAR IT TO PIECES, I MEAN SUGGEST IMPROVEMENTS 08:51:29 http://pastebin.com/LwaXg4UK 08:53:02 eek 08:53:12 I told you it was shoddy 08:53:56 "(==) a b" is a rather strange way of saying "a == b". 08:54:07 Oddly, I prefer it that way 08:54:21 That's odd. 08:54:25 But not consistently 08:56:45 > flip replicateM "+-<>.[]" =<< [0..] 08:56:47 ["","+","-","<",">",".","[","]","++","+-","+<","+>","+.","+[","+]","-+","--... 08:56:55 * oerjan cackles evilly 08:57:28 BEHOLD THE POWER OF THE LIST MONAD 08:58:08 One monad to rule them all, and in the darkness bind them. 08:59:41 Taneb: i see you did not heed our warning not to index lists rampantly in is_valid :P 09:00:04 but of course avoiding it needs a different algorithm 09:00:11 I disheeded most vigorously 09:00:46 Also in to_string in gen_bfj 09:00:56 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 I can do that 09:01:28 As far as algorithms go, that's not very different. 09:01:57 Also makes for a nicer stopping than the guard-agaist-length thing. 09:02:07 oh wait i _is_ that. 09:02:14 no wait 09:02:24 j is that 09:02:33 I think i is that 09:02:56 yep. so instead of p and i, let the argument be equivalent to drop i p 09:03:18 then all you need to do is test the start of the list passed 09:03:45 *drop (i-1) p 09:03:55 haskell is usually 0-indexed 09:04:40 last (take ...) is an interesting way of indexing 09:04:51 It was intuitive to me 09:04:57 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 I'm working in your suggestions as we speak 09:05:24 -!- Phantom_Hoover has joined. 09:05:43 and once that is done, it should be possible to convert a lot of guards to pattern matches 09:06:17 all except the j < 0 one, i think 09:06:57 this all is a bit weird to me actually 09:07:33 monqy: it looks like a rather numeric/array inspired algorithm, so it needs some tweaking to be idiomatic haskell (understatement :P) 09:07:41 heheheh 09:08:17 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 It's largely based on an incomplete version in Python, which may go siome way to explain the stupidity 09:08:39 ah. 09:09:15 > 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 [True,False,False] 09:10:13 Couldn't you replace "\p -> isValid p 0" with "flip isValid 0"? 09:10:38 Taneb: (`isValid` 0) >:) 09:11:04 Or even that 09:11:07 (also yes, those are equivalent) 09:11:13 Sure, sure; though I think you'd rather have isValid take just a string, and use an isValid' internally or something. 09:11:36 brb, sponsoring someone 09:11:45 that is also a common idiom yes 09:12:43 Taneb: also as fizzie implies CamelCase is standard for haskell 09:13:45 since before the word was invented, afaik 09:14:40 > let valid_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` ((++) <$> valid_things <*> valid_things) in valid_things 09:14:41 ["+","++","[+]","+++","-","+[+]","[++]","++++",">","+-","[[+]]","++[+]","<"... 09:15:56 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 Back 09:16:19 is my method any good 09:16:26 I'm probably missing something 09:16:47 > map (flip (showIntAtBase 7 ("+-<>.[]" !!)) "") [0..] 09:16:49 ["+","-","<",">",".","[","]","-+","--","-<","->","-.","-[","-]","<+","<-","... 09:17:01 seeing as how I started from nothing, not bothering to interpret taneb's thing 09:18:06 monqy: you seem not to have empty loops or strings 09:18:13 ah right 09:18:14 easily fixed 09:18:35 > let valid_things = "" `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` ((++) <$> valid_things <*> valid_things) in valid_things 09:18:35 Couldn't match expected type `GHC.Types.Char' 09:18:36 against inferred type... 09:18:37 otherwise, i'm not sure i can read that code :P 09:18:38 oops 09:18:47 > let valid_things = [""] `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` ((++) <$> valid_things <*> valid_things) in valid_things 09:18:48 ["","","[]","","+","[]","[]","","-","+","[[]]","[]",">","[]","[]","","<","-... 09:18:51 (YOU GO TOO FAR) 09:18:53 oops oops oops 09:19:06 I'm concatenating empty things :( 09:19:27 it's not too far at all 09:20:02 the worst part is `interleave` instead of ++ because I wanted to mix things up 09:20:44 hm 09:21:00 :t interleave 09:21:01 forall (m :: * -> *) a. (MonadLogic m) => m a -> m a -> m a 09:21:03 > let valid_things = [""] `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` (filter (not . null) $ (++) <$> valid_things <*> valid_things) in valid_things 09:21:06 mueval-core: Time limit exceeded 09:21:08 ah that one again 09:21:08 oops 09:22:12 > let valid_things = [""] `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` (filter (not . null) . ((++) <$> valid_things <*> valid_things)) in valid_things 09:22:13 Couldn't match expected type `GHC.Types.Char' 09:22:13 against inferred type... 09:22:17 :( 09:22:21 ah right now i understand the gist 09:22:24 oh right 09:22:26 uhghh 09:22:30 -!- jakki has left. 09:22:33 how do I do this nicely 09:23:03 http://pastebin.com/rX9yqkLY 09:23:42 Okay, in my text editor the =s in is_valid' were all lined up nicely 09:23:44 > let valid_things = [""] `interleave` (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things) `interleave` ((++) <$> valid_things <*> valid_things $ filter (not . null)) in valid_things 09:23:44 Couldn't match expected type `a -> a1' 09:23:44 against inferred type `[[GHC... 09:23:46 monqy: what about (++) <$> "+-><" <*> valid_things ? 09:23:48 oops oops 09:24:02 -!- ais523 has quit (Remote host closed the connection). 09:24:11 oerjan: then [things] won't end on the left hand side of a concatenated valid thing? 09:24:17 monqy: i mean, don't try to have valid_things combined with itself 09:24:29 ah, so duplicate that part too? 09:24:58 (++) <$> ("+-><" `interleave` thatLoopPart) <*> valid_things 09:25:06 will that work 09:25:49 if you do fmap pure on the "+-><", I'd imagine so 09:26:17 How does one do comments in Haskell? 09:26:22 -- 09:26:29 {-...-} for multiline 09:26:55 monqy: oh right. 09:27:33 > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = safe_things `interleave` ((++) <$> safe_things <*> safe_things) in valid_things 09:27:34 ["+","++","[+]","+[+]","-","+-","[++]","+[++]",">","+>","[[+]]","+[[+]]","<... 09:27:44 oops I forgot the [""] 09:27:52 http://pastebin.com/DdV53DSb 09:27:59 > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = safe_things `interleave` [""] `interleave` ((++) <$> safe_things <*> safe_things) in valid_things 09:28:01 ["+","++","","+[+]","[+]","+-","-","+[++]","[++]","+>",">","+[]","[]","+<",... 09:28:05 there 09:28:50 Hang on a minute! 09:28:59 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 It actually doesn't 09:30:05 You can try it and see 09:30:18 > let safe_things = (pure <$> "+-><") ++ ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] ++ safe_things ++ ((++) <$> safe_things <*> safe_things) in valid_things 09:30:19 ["","+","-",">","<","[]","[+]","[-]","[>]","[<]","[[]]","[[+]]","[[-]]","[[... 09:30:41 yeah it never gets to the concatenation that way :( interleave is much better 09:30:46 monqy: erm i think you want (++) <$> safe_things <*> valid_things 09:31:08 hmm 09:31:20 but then it will concatenate things with the empty string :( 09:31:35 is there any way to fix it 09:32:18 monqy: um that is not a problem 09:32:35 duplicates? 09:32:42 just drop safe_things ++ itself 09:32:49 ah right 09:33:06 > 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 ["","-","<",">",".","[","]","+-","--","<-",">-",".-","[-","]-","+<","-<","<... 09:33:31 > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] `interleave` ((++) <$> safe_things <*> valid_things) in valid_things 09:33:32 ["","+","++","+++","++++","+++++","++++++","+++++++","++++++++","+++++++++"... 09:33:37 oops I messed up 09:33:44 I think there is an entirely different way of doing this 09:33:45 or did i 09:34:15 > 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 False 09:34:24 Taneb: it never produces "++" 09:34:42 > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = [""] `interleave` ((++) <$> valid_things <*> safe_things) in valid_things 09:34:44 ["","+","[]","-","[+]",">","[[]]","<","[-]","[[+]]","[>]","[[[]]]","[<]","[... 09:34:47 It doesn't like + at the end 09:34:48 that's better 09:35:17 > let safe_things = (pure <$> "+-><") `interleave` ((('[' :) . (++ "]")) <$> valid_things); valid_things = ((++) <$> valid_things <*> safe_things) `interleave` [""] in valid_things 09:35:20 mueval-core: Time limit exceeded 09:35:31 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 Considert that any valid, non-null BFJoust program must be of one of the three following formats: 09:35:59 One of "+", "-", "<", ">", and "." 09:36:07 Taneb: generating them based on those formats is what I've been doing 09:36:22 A valid BFJoust program surrounded by "[" and "]" 09:36:36 And a concatenation of two valid BFJoust programs 09:36:38 > 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 mueval-core: Time limit exceeded 09:36:46 oh wait oops 09:36:48 wrong one 09:37:02 oerjan: Any idea how to get the missing programs into it? 09:37:04 > 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 ["","+","[]","-","[+]",">","[[]]","<","[-]","[[+]]","[>]","[[[]]]","[<]","[... 09:37:25 Taneb: well generate it some other way than converting from a number... 09:37:56 monqy, how is your thing going? 09:38:06 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 I'll dissect it: 09:38:29 `interleave` is basically ++ but it mixes things up so you get some stuff from both sides mixed in 09:38:33 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: interleave`: not found 09:39:04 safe_things is the list of all things that don't need concatenation 09:39:20 (pure <$> "+-><") is ["+", "-", ">", "<"] 09:39:48 ((('[' :) . (++ "]")) puts [ on left and ] on right 09:40:13 and the <$> valid things makes it map onto all valid programs 09:40:17 I don't think you'll ever get, for instance, [+][-] 09:40:22 you'll get that 09:41:09 monqy: program = empty | command program, where command is your safe_things 09:41:17 valid_things is the null program or a valid program concatenated with a non-null non-concatenated program 09:42:14 monqy: so, valid_things = empty | safe_things valid_things 09:42:43 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 Taneb: oh right <$> is an alias for fmap, if you didn't already know 09:44:11 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 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 s/might/does/ 09:44:25 oh no 09:44:41 you need an interleaving variant of it. 09:45:11 i vaguely recall there was an interleaving bind variant last that MonadLogic module came up here 09:45:12 as in use a version of liftM2 derived from >>- rather than <$> and <*> ? 09:45:16 :t (>>-) 09:45:18 forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b 09:45:20 that one 09:45:25 yeah 09:45:48 MonadLogic is of course way overkill for this :P 09:46:36 Taneb: even my replicateM one-liner above may be overkill for a beginner. a list comprehension might be the thing... 09:47:16 although it _is_ sort of equivalent... 09:47:57 > 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 Precedence parsing error 09:47:58 cannot mix `Control.Monad.Logic.Class.>>-' [i... 09:48:02 oops 09:48:41 double oops 09:49:06 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 > 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 I've just thought of something that fits my psychology for fixing my program 09:49:35 ["","+","++","[]","+++","-","+[]","[+]","[]+",">","+-","[++]","++[]","<","+... 09:49:41 oerjan: all better? 09:49:45 the trick iirc is to use digits 1..7 instead of 0..6 09:50:10 monqy: hopefully :P 09:51:49 -!- nooga has quit (Ping timeout: 260 seconds). 09:52:03 Taneb: your is_valid' looks pretty idiomatic now, anyhow 09:52:26 Now to work on gen_bfj 09:52:38 Taneb: oh wait no it doesn't quite 09:52:56 What's wrong! 09:53:03 > 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 is_valid' p@('[':_) i = is_valid' (tail p) (i+1) 09:53:04 "+-" 09:53:06 should be 09:53:26 is_valid' ('[':r) i = is_valid' r (i+1) 09:53:40 Ooh, that's clever 09:53:50 never use tail if you can just match :) 09:54:16 clever/idiomatic 09:54:23 also a lot more intuitive to me?? idk 09:54:43 Intuitivity is relative 09:55:03 I thought last (take n xs) was intuitive to get the nth element of xs 09:55:16 there's a function for that it's called (!!) 09:55:40 oerjan: Is this base thing... bijective notation? 09:55:43 also if I was doing it in your style I'd probably do head (drop ...) 09:55:48 Taneb: last (take n xs) will do strange things if your list is neither empty nor length >= n 09:56:10 Taneb: well bijective to strings of digits, afair 09:56:35 http://en.wikipedia.org/wiki/Bijective_numeration 09:56:53 ah yes that was it 09:59:06 Taneb: i think all you need is to subtract 1 from n before the rest if it's non-zero 10:03:53 http://pastebin.com/1HvF9w2s 10:05:00 -!- Vorpal has joined. 10:05:04 for to_string, instead of checking if n == 0 you could do pattern matching 10:05:15 to_string 0 = ""; to_string n = ... 10:10:50 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 oh wait no I messed it up 10:11:20 oops 10:12:51 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 it's pretty much exactly the same as what you wrote, just shorter. 10:16:05 -!- nooga has joined. 10:17:21 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 ']' -> subtract 1 /n _ -> id }) /n 0 /n "[]" 10:17:44 oops 10:17:53 should have type checked what I wrote.... 10:17:54 monqy: you have to do a check that the level never goes negative 10:18:06 oh I forgot about that 10:18:24 easy enough to fix 10:18:29 will do 10:18:47 In my program, "[[[]]]" is number 31129 10:19:04 Taneb: when you see "No instance for (Num (... -> ...))" it usually means you have given a function too few arguments 10:19:26 so ghc is trying to find out how to treat a function as a number 10:20:34 that applies to other classes than Num as well 10:23:52 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 it got a bit ugly 10:24:13 > 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 Not in scope: `foldrM' 10:24:22 it's in Data.Foldable 10:24:35 :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b 10:24:47 I am trying to avoid monads, mainly because I haven't learnt them yet 10:24:51 oh 10:25:58 it's just the maybe monad it's simple 10:26:10 famous last words 10:26:14 hehehe 10:27:23 maybe False (== 0) = (== Just 0), methinks :P 10:27:50 that works too 10:28:37 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 btw it is possible to construct a parenthesis matching Monoid :) 10:29:36 but having to make a monoid instance means no 1liners!!! 10:29:44 sadly so 10:33:13 -!- nooga has quit (Ping timeout: 259 seconds). 10:46:28 " moo" <<< moo 10:46:38 moo 10:49:39 -!- zzo38 has joined. 10:50:49 -!- FireFly has joined. 10:53:29 " 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 you can create instances of object to synchronize on 10:54:31 that's useful 10:59:32 oerjan: do you know how fast you can make that numbers in binary vs bf programs bijection? 11:00:19 no 11:00:22 enumerating is kind of trivial 11:01:19 well, you'd think it would be approximately proportional to the size of the final number 11:01:48 final number? 11:01:57 ...the result 11:02:38 but as i recall a naive encoding tended to give very large numbers for some bf programs 11:03:19 (because one direction of deep nesting got exponential overhead) 11:03:27 err right, all my thinking goes into typing since i switched to dvorak just now 11:04:08 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 yeah that was my initial observation too 11:05:02 why to dvorak, and not to colemak? 11:05:06 I think you made a poor decision 11:05:49 typematrix doesn't sell it yet 11:06:02 you don't need a special kb to type in dvorak or colemak 11:06:11 there are programs to change automatically for windows, mac and linux 11:06:31 And you can get a packet of stickers to put on the keyboard itself 11:06:35 if you want 11:06:38 or you can have it on scren 11:06:57 i mean a skin for it. so i figured i'll learn this first 11:08:16 because i do have a skin for dvorak 11:08:23 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 the keyboard itself is blank 11:09:12 http://upload.wikimedia.org/wikipedia/commons/9/9e/Kinesis-Contoured_Keyboard_Classic-2.jpg is it something like this 11:10:37 l is the only obvious mistake in dvorak imo 11:13:45 ahaha, http://www.flickr.com/photos/sermoa/5421634445/ 11:14:22 so i have a hunch they'll make a skin soon 11:15:28 seems to work 11:15:55 typity typity is fun to colemak 11:17:59 anyway i'm gonna learn all of them anyway, order is prolly irrelevant 11:31:27 so i set my layolt to colemak for some fun 11:32:26 (that took a long time to type) 11:34:21 -!- nooga has joined. 11:34:27 which one do you normally use 11:35:42 qwerty; haven't bothered changeng 11:37:03 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 because that was the main problem anyway 11:38:30 slanted rows? ah, yes, those. 11:38:45 or columns 11:40:39 i never really got used to it 11:41:00 because it made no sense 11:43:03 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 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 (that took forever) 11:44:33 colemak is qwerty familiar? what a horrible idea 11:45:00 yeah 11:45:46 zzo38: what's the point? 11:45:48 QWERTY was invented to prevent type from jamming, but that isn't important for computers. 11:45:49 why not just make a perfect layout :/ 11:46:28 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 is it just a common misconception that that's just a common misconception 11:48:04 that took me over a minute to type :P 11:48:38 zzo38: apparently also made such that "typewriter" is on the top row, according to the colemak site 11:48:45 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 monqy: I did know "typewriter" is on the top row, but as far as I know that is coincidence 11:49:12 what 11:50:03 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 i've never heard anyone refute that it was a design goal 11:50:25 the misconception is so common that a correct conception would be nothing short of treason 11:51:22 but everyone nowadays says qwerty never had other goals 11:51:43 -!- Taneb has quit (Quit: Goodbye). 11:51:49 that that jamming thing is bs 11:52:11 it's related to illuminati 11:52:17 let's ask wp 11:52:40 home of the current truth 11:54:20 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 then the bible will contain instructions to build a nuclear powered ufo 11:55:24 itidus20: I doubt it. But even if it is true, which version of the Bible do you mean, anyways? 11:55:27 wp refutes it :D 11:55:35 zzo38: all of them >:-) 11:55:47 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 All of them in English, or all of them that use the same alphabet as English? 11:56:18 how can facts be this hard to keep consistent 11:57:01 monqy: i have all three integrated in my kb 11:57:27 oh? 11:57:55 i have a dvorak mode light even 11:57:57 zzo38: its just the ideas other people have conditioned me with. 11:58:53 colemak i didn't know about, i just found http://www.flickr.com/photos/sermoa/5421634445/ 11:59:58 (rebinding in things like xmonad and vim (unless i switch to emacs or something as well)) 12:00:17 itidus20, that the Bible, if you swap letters like that, literally cotains everything there is to know? 12:01:11 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 well well well 12:02:24 also i should figure out how to get back to qwerty 12:02:57 * oklopol presses fn and dvorak key 12:03:30 and finds he already forgot how qwerty works 12:04:11 setxkbmap us -variant qwerty did not work so i have to find the real name 12:04:16 i don't really care about speed, all i care about is annoying my brain by making it learn new stuff 12:04:58 my reasoning as well 12:08:47 i should have found my previous settings before switching :( 12:09:12 i bet you wish you had a dvorak button 12:09:22 yes 12:09:32 did i mention i have a dvorak button 12:09:38 yes 12:09:41 okay 12:09:43 just making sure 12:09:48 see i have a dvorak button 12:10:27 also nicely aligned keys :( 12:10:40 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 yes, i love this thingie 12:10:52 everything makes sense now 12:10:55 ah, leaving out the -variant thing seemed to work 12:11:09 time to set up the switchy button 12:11:14 Maybe I should also make an improvement of the Metamind class; the one in the book is too weak. 12:11:16 I will make a dvorak button too 12:11:26 that way I will have a dvorak button 12:11:27 -!- Taneb has joined. 12:12:11 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 finnish has more symbols 12:12:36 but i don't type that much finnish 12:12:41 Then I can understand why you need the multi layouts 12:13:00 multi layouts are just for fun 12:13:05 i mean 12:13:10 qwerty and dvorak 12:13:22 but i have to change the language of the kb occasionally 12:13:35 ofc there's a button on it in the taskbar so it's not that hard 12:13:36 I hardly type any Japanese stuff; when I do, the Character Map is good enough 12:13:50 maybe I will make my own keyboard layout 12:14:04 optimize it with a GENETIC ALGORITHM 12:14:08 my keyboard layout will have 0 where 1 is 12:14:10 and 1 where 2 is 12:14:17 and 2 where 3 is etc 12:14:28 Which can also be done in case of accented letters 12:14:30 and you write in hexadecimal 12:14:32 And 9 where 0 is or - is? 12:14:49 Taneb: the idea is to get 0 on the left of 1 rather than the right of 9 12:15:05 You described it backwards then 12:15:12 I think the Linux console allows you to type hexadecimal on the numeric pad 12:15:17 No wait, I confused myself 12:15:27 Taneb: I could also move 0 to ` if relearning the numbers is too much but I doubt it will be 12:16:01 i still haven't learned the numbers... 12:16:46 my keyboard layout will use capslock for something perhaps backspace like colemak 12:16:49 I liked that 12:17:15 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 where do you have capslock tho 12:17:31 it's very important 12:17:35 capslock is on the left of a 12:17:41 yeah 12:17:46 but where do you put it 12:17:51 oh 12:17:55 I can live without capslock 12:17:59 wow 12:18:04 The button does both? 12:18:11 hhehe 12:18:18 I can also switch to qwerty then capslock then switch back 12:18:19 can you live without oxygen? 12:18:32 I can turn into an elf 12:18:51 I do know of a few keyboards that have the "rubout" key to left of "A" 12:18:53 yes, but you still can't live without capslock, so 12:19:20 the perfect place for backspace is see typematrix.com 12:20:21 ah, yes 12:20:34 I should get one of those 12:21:09 a few of these keys are weird but this is okay because I can rebind them 12:21:19 i just love it, can't see myself ever buying a slanted one 12:21:21 Does anyone still make the loud IBM PC keyboard, but using modern scancodes? 12:21:40 again i mean 12:21:41 loud keyboards are cute 12:21:58 yeah i should prolly rebing some, like the calculator key, wtf :D 12:22:33 I have a calculator key too 12:22:52 do you also have a tetris key 12:22:53 it's lonely and circular 12:22:55 my keyboard is awful 12:22:58 no tetris 12:23:20 weirdest shaped key is capslock 12:23:24 I wonder what they were thinking 12:24:24 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 so there's this part sticking up to normal key elevation and the rest is in stupidland 12:24:57 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 it's taller than other keys? 12:25:11 same height but part of it is shorter than the other keys 12:25:21 it's like an island 12:25:38 The only thing I dislike about the loud IBM PC keyboard is the lack of keyboard indicator LEDs. 12:25:40 the point is you can find it fast when you need to rage 12:25:56 I just hold shift 12:26:19 capslock is for when things think it's acceptable to invert case 12:26:21 i can't type as fast when holding shift 12:26:35 I'M PRETTY GOOD AT TYPING WITH SHIFT HELD DOWN, BUT MAYBE IT IS BECAUSE I TYPE WEIRDLY 12:26:52 I DO PRETTY STANDARD TOUCH TYPING NOW THAT IT MAKES SENSE 12:27:03 IT DIDN'T MAKE ANY SENSE WITH THE SLANTED COLUMNS, BUT NOW IT TOTALLY DOES 12:27:09 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 well it looks nicer 12:27:38 this is for sissies 12:28:15 (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 8 working days time 12:40:23 Wednesday week 12:40:34 05:39:58 < monqy> trying out my dvorak and colemak keys 12:40:34 05:40:35 < monqy> they work 12:40:40 accidentally in the wrong chanel originalyl 12:40:47 (sorry -minecraft) 12:40:56 (It's okay) 12:41:11 now I can forget I have these keys 12:43:26 yes 12:44:12 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 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 wanted poster 13:16:58 luckily they are not that common 13:17:17 children are such retards 13:17:28 at least i was 13:21:15 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 Are you just talking to yourself oko. 13:22:11 ...You leant a foreign language in kindergarten? 13:22:22 Silly Taneb. 13:22:23 english is not a foreign language 13:22:28 English isn't a foreign language. 13:22:35 Finnish is 13:22:40 no it's not 13:22:42 in here 13:22:53 oklopol, yes it is, it's foreign. 13:23:00 I'll change what I said 13:23:08 The basic classification is that everything that isn't English is foreign. 13:23:08 You knew two languages in Kindergarten? 13:24:15 well i knew some english and some swedish, i doubt i was at a conversation level 13:25:29 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 But I don't remember too well 13:26:05 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 but that's different, i was learning english as a foreign language (i certainly considered it foreign back then) 13:29:07 Man, I wish I learnt Finnish or something when I was that young 13:30:02 i spent most of my time programming or playing games, i suppose the latter was my main source of english 13:30:16 Hang on... how old were you then 13:30:36 i'm talking about my kindergarten days so about 6 13:30:46 6... 13:30:51 I was thinking about 4 13:30:58 Which was when I was in Kindergarten 13:31:25 i was in a less official daycare thing back then 13:32:15 My house from back then has since been demolished 13:32:45 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 and that i wanted to bring my teddy bear there but apparently 4yo is too old for that shit 13:33:17 I can't actually remember being six 13:33:37 ...That's odd 13:33:39 i can because i was only one year in what i'd call kindergarten 13:33:51 and that was my sixth 13:34:05 Hang on, I think I can remember titbits 13:34:13 boobits 13:34:13 Not very interesting ones 13:34:21 Mainly me being an idiot 13:35:07 oh and then i drew these cartoons where girls from the kindergarten would... wait let's not go into that 13:36:11 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 damn i was awesome back then, what went wrong i wonder 13:39:00 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 the adults found this slightly hilarious 13:41:16 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 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 i was not playing myself ofc 13:43:20 First grade you was a dick 13:43:28 i was such a psychopath, they almost put me in this "special school" 13:44:53 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 i don't get how i wasn't put to sleep or something :D 13:46:38 and how the fuck did i have like 10 friends 13:46:51 kids are retarded 13:48:04 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 kids can't die 13:49:20 -!- nooga has quit (Ping timeout: 260 seconds). 13:52:02 Someone I know got run over by a car. 13:52:18 you mean just now, or a kid 13:52:30 2 ish years ago 13:52:37 He experienced quantum immortality 13:52:40 but you mean a kid 13:52:52 He would have been 14 13:52:57 Maybe 15 13:53:02 that's not a kid 13:53:05 that's an adult 13:53:16 It's a transitionary phase 13:53:23 well true 13:53:41 by kid i mean sub-12 usually 13:54:06 God, do I remember sub-12? 13:54:19 i read my first c++ book when i was 11 13:54:33 and i still remember c++ so 13:54:33 13 13:54:43 And I have no clue about C++ 13:54:47 I remember the nasty things I did when I was 13 13:54:57 Other than output is cout >> "string" 13:55:01 it was also prolly the first book over 600 pages i read 13:55:07 no it's not 13:55:08 Taneb, it's << 13:55:14 See! 13:55:14 but close enough 13:55:28 I don't have that great memory, at all 13:55:35 i don't think i was a dick anymore at 13 13:56:11 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 that's not where you buy bread man 14:01:15 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 When I was little, I was a nice, if niave idiot 14:02:25 Now I'm a cruel but pacifistic idiot who knows some stuff 14:02:39 i was a devout preacher of atheism from the age of 5 till it became cool 14:04:22 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 I despise violence, but I'm practically a sociopath 14:05:31 that's how i feel as well 14:05:54 well i certainly have all kinds of feelings, but i can just shut them up if i like 14:06:40 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 or went to do math 14:14:11 math is the one Americanism that really bugs me 14:14:13 actually that doesn't sound weird at all, i guess you'd have to be there 14:14:15 I don't know why 14:14:59 the only americanisms that bug me are the units 14:15:16 and numbers ofc 14:15:52 thousand, 1-llion, 2-llion, 3-llion, 4-llion, ... vs 1-llion, 2-llion, 3-llion, 4-llion, ... 14:16:05 maybe illion would'be 14:16:11 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 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 was that just a part of the game? 15:00:55 sounds very cool 15:01:23 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 wow... sounds like a vast game 15:01:55 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 And then you just have to try them until one works. 15:05:48 I forget the other details and how to find this game now, however. 15:09:09 I just made combinartory logic in BYOB 15:09:29 A modification of a graphical language aimed at children 15:09:39 That is, the graphical language is aimed at children 15:09:56 The modification is aimed at children who want more advanced features 15:10:18 Such as first-class functions 15:10:23 Procedures 15:10:29 Lists-of-lists 15:20:47 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 It would also include one kind of user-definable pure function which does not reverse. 15:35:19 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 It could do encryption too rather than only compression. 15:36:38 hi zzo38 how are you doing? 15:36:40 How many kinds of reversible flow control do you know? 15:36:47 cheater: OK 15:36:53 that's fine 15:37:00 what is new with you? 15:39:03 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 A game developer can derive a great deal of benefit from a custom made virtual machine. 15:42:17 I wish I could really say why... 15:43:53 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 for example.. (here he goes) 15:44:58 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 an arcade game virtual machine could contain coin and credit counters 15:45:25 oops ^embody 15:45:34 Game controllers similar to NES/Famicom could be connected to the extension ports. 15:45:35 "contain" is such peasant speak 15:46:31 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 is omegacom-1 your own invention? 15:47:36 (Usually using the Inform programming language, although some use Forth, Lisp, C, or assembly language.) 15:47:39 itidus20: Yes. 15:47:49 that explains it not being on google 15:48:43 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 and "another world" had some kind of vm which was talked about in a gdc (game develop conference) post mortem 15:51:16 zzo38: so i like to think my statement shows how much insight i am gathering about these things :D 15:51:35 if there is any global state to the game... that global state is to be embodied in the virtual machine an arcade game virtual machine could contain coin and credit counters 15:52:13 and hence a text game vm would contain/embody text i/o 15:52:47 i am quite proud of this minor insight, perhaps it is obvious 15:52:49 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 itidus20: Well, it is good thanks you write these things anyways 15:53:30 zzo38: i have tried dreaming up some ultra simple systems 15:54:04 there was one which consisted of i think just 2 line segments 15:54:11 or may have been 4.. i forget 15:54:47 and thats all it can do.. display 2 line segments 15:55:08 -!- MSleep has changed nick to MDude. 15:55:27 not actually implemented 15:55:49 another i thought about is using a 32bit integer as a 4x8x1 display 15:56:15 i liked the idea that a screenshot of such a display is just a single number 15:56:42 i think i prefered the 6x5 resolution instead 15:56:53 Screenshots of any display are just a single number. Just bigger numbers. 15:58:14 heheh 15:58:25 bravo 15:59:11 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 hmm 16:00:04 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 8x8x8? 16:00:32 maybe you only need a subset of ascii 16:00:46 but i guess its no big deal 16:00:50 itidus20: It is using the printable subset. 16:00:59 :P 16:01:00 (Codes 0x20 to 0x7E) 16:01:25 in order to make more games with your system its probably best to use 8bits them 16:01:57 well, i look at a chessboard and i imagine scrolling 16:02:07 itidus20: Yes; but this was 7-bit codes. 16:02:35 i have imagined the poor humans who have to shift the pieces one row this way or that way 16:02:54 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 uh.. im not sure if i am making sense.. 16:03:52 suppose there is a 9x9 virtual chessboard 16:04:03 You could use uppercase for white pieces and lowercase for black pieces; this is common in ASCII chess diagrams. 16:04:06 you could lay out the pieces on the board according to the camera 16:05:40 "RkBQKBkR" >> "kBQKBkR " 16:05:51 "RkBQKBkR" << " RkBQKBk" 16:06:00 well that would be 10x10 16:06:19 2 extra imaginary columns 16:06:22 empty 16:07:04 FIDE chess uses 8x8 though. You could have RNBQKBNR PPPPPPPP .:.:.:.: :.:.:.:. .:.:.:.: :.:.:.:. pppppppp rnbqkbnr 16:07:12 its a ridiculous idea of mine as you need to store the actual state of the board somewhere 16:08:23 but at least in a sparsely populated board a DM could use a chessboard to show hte player where he is 16:08:47 in a boring chesslike landscape 16:11:20 ah im going on a boring tangent 16:11:26 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 your pokemon thing is much better 16:12:03 Yes. The pokemon thing. Attack names and item names are up to five letters long (they can have digits too). 16:13:14 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 Actually I think I could use only seven buttons, not eight. 16:13:35 For everything. 16:14:15 so yeah, for me the VM would do as much as possible natively as a kind of bios really 16:14:25 That means A is SHIFT, B is ITEM, and C is SURRENDER. 16:15:01 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 (SURRENDER is like "RUN" for wild battles, and "immediately get blacked out automatically" for trainer battles.) 16:15:43 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 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 Attacks indicate at first ^v<> for which direction to push, next five for attack name, and last two for remaining PP. 16:22:26 basically considering that any interpreted instructions are likely slower, you don't want people implementing anything technical in vm code 16:25:39 hmm 16:27:04 -!- derdon has joined. 16:32:01 -!- elliott has joined. 16:33:50 21:01:23: hey, channel, want something to rage at? http://www.reddit.com/r/programming/comments/k9cbj/trollscript_an_esoteric_dialect_of_brainfuck/ 16:33:54 we saw ages ago :P 16:34:13 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 21:43:22: ais523, my faith in /r/programming is vastly increased by the fact that they hated it too. 16:34:37 Phantom_Hoover: they probably aren't too fond of esolangs in general :P 16:35:21 the how many'th brainfuck dialect is that? 16:35:29 twice11: 9 billionth 16:35:44 Still not aleph-0? fine then... 16:36:35 Make aleph-0 dialects if you want to. 16:36:41 no please don't 16:36:57 "Bitcoin Forum: Password hashes may have been leaked" 16:37:05 l o l 16:37:13 bitcoin PRO CRYPTOGRAPHERS 16:37:47 how is cryptography related to IT security? The hashes *have* to be stored somewhere. 16:38:03 elliott, well true, but their reasons for hating it were exactly the right ones. 16:38:03 `quote 16:38:05 70) oohhh ha heh and what are your other characteristics? oh, many, madbrain but it's hardly worth it to go on with listing that list here 16:38:26 twice11: In my fanfiction, they were using crypt() to store their Unix passwords, and that's how the attacker got in. 16:38:47 `quote 16:38:49 642) 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 wat 16:39:00 -!- Phantom_Hoover has joined. 16:39:02 wat 16:39:13 elliott, so wait, you knew and you didn't tell me? 16:39:31 Phantom_Hoover: Knew what? 16:39:34 Trollscript? 16:39:37 It was talked about in here 16:39:42 It's not my fault you don't logread 16:39:46 I'm the premier world expert on hating BF derivatives and substitutions! 16:39:54 bad web forums typically use MD5 hashes, albeit sometimes unhashed. Better forum products use salted SHA1... 16:40:23 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 twice11: It's SMF, which I think is "meant" to be decent, but... well, PHP coders. 16:41:12 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 Hello! 16:55:52 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 I'm going to try my hand at BytePusher 16:56:21 Taneb: Try doing what with it, specifically? 16:56:32 I really don't know 16:56:34 handing it 16:56:46 Learn about it? Write an implementation? Write a program to run in BytePusher? 16:56:54 All three 16:56:58 Simultaneously 16:57:50 im reading DM's piet samples page. its truely amazing what has been accomplished with it i think 16:57:53 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 s/make tat/make that/ 16:58:13 Former, I have no idea 16:58:21 Latter, probably gedit 16:58:41 Not actually sure what format BytePusher likes 16:58:53 No, I mean which programming language. Such as C, Python, PUSHEM, hex editor, ... 16:58:53 it's binary 16:59:19 zzo38: hex editor 16:59:23 Or you could also write your own assembler or programming language to compile into it 17:00:05 I could write a tool to translate ASCII representation of Hex into Hex... in BRAINFUCK 17:00:22 elliott, hi there. Played any Magicka? Quite a fun game. 17:01:00 What is the program counter initially? 17:01:05 nope 17:01:33 Oh wait, I've figured it out 17:01:34 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 That's tricky 17:01:49 But surprisingly logical 17:02:21 I wrote this BytePusher program: http://zzo38computer.cjb.net/prog/BytePusher/Munching_Squares.pushem 17:03:23 elliott, have you seen the Yogscast Magicka videos 17:03:26 The binary of the program is: http://zzo38computer.cjb.net/prog/BytePusher/Munching_Squares.BytePusher 17:03:27 They are the best. 17:03:57 -!- Lymee has joined. 17:04:36 I also wrote a BytePusher implementation (the first one available public, but not the first one written) in CWEB. 17:04:54 Phantom_Hoover: No I am so behind on my yagsoccost. 17:05:02 Yoghurt. 17:07:03 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 All three of them are C programs, two using Allegro and one using SDL. 17:08:45 If you make a hardware implementation, you can post that too. 17:12:00 enhanced cweb is c? 17:14:05 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 lots of things compile to c 17:15:19 10:24:47: I am trying to avoid monads, mainly because I haven't learnt them yet 17:15:44 I think I'm getting closer to monads 17:15:47 Taneb: monads aren't A Thing to avoid, they're just two functions that a lot of types happen to implement 17:16:02 please, stop thinking like that, WAY too much importance is put on monads by people who don't know Haskel 17:16:16 it's like "I'm avoiding because I don't know it yet" 17:16:20 Taneb: You should read the guide "You could have invented monads yourself, and you most likely already have", in my oppinion. 17:16:23 you just learn things whenever they become convenient to use 17:16:41 twice11: do we really need a monad tutorial war? :p 17:16:50 I'm working through lyah 17:17:42 I'm not entering a war. I'm not fighting other monad tutorials. 17:18:43 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 twice11: I am! 17:18:54 Nuclear waste or DIE. 17:19:12 Neither @r nor @s ! are needed for tangling though. You might get error message but it will compile correctly anyways. 17:19:42 Ask the japanese guys: Nuclear waste *and* die! 17:20:08 "@s TeX !" means to not index anything defined using @s before this point 17:21:56 These things are what I meant when I said it is a C code. 17:21:58 12:19:20: the perfect place for backspace is see typematrix.com 17:21:59 12:20:21: ah, yes 17:21:59 12:20:34: I should get one of those 17:22:08 unfortunately they're scissor-switch. 17:22:13 you can buy non-slanted keyboards with decent switches, though. 17:29:04 what's scissor switch 17:30:04 or what's the problem with it 17:30:23 It's not buckling spring, I guess. 17:31:04 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 oklopol: scissor switch = laptop-style keys 17:31:24 better than rubber dome but 17:31:29 twice11: buckling spring is overrated 17:31:36 yes, i know 17:31:38 i mean, unless you have pneumatic fingers it's not very comfortable 17:31:51 oklopol: get one of these http://upload.wikimedia.org/wikipedia/en/8/8c/Kinesis-keyboard.jpg :P 17:32:00 i think they have dvorak switches too but who cares you can do that in software 17:32:31 much nicer if it's in the kb tho 17:32:39 but umm that's a bit ugly 17:32:47 they come in black :D 17:32:49 So if rubber dots are out, buckling spring is overrated, and scissor switch is also "unfortunately", what would you recommend? Microswitch? 17:32:55 let's see 17:33:08 twice11: standard mechanical switch? 17:33:40 this is certainly nicer than the usual type of keyboard in touch 17:33:41 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 That's mostly is what you call microswitch, if the keyboard is smaller than your desk, isn't it? 17:33:49 no slanted rows though :P 17:33:57 twice11: Who the hell buys a keyboard smaller than their desk? 17:34:04 I just kind of roll from one key to another. 17:34:07 It's like a bouncy castle. 17:34:10 well i wouldn't call that pretty nor ugly 17:34:18 whereas my typematrix is just plain fucking sexy 17:34:29 Get a Datahand, Datahands are awesome. 17:34:40 http://desktopped.s3.amazonaws.com/wp-content/uploads/2009/09/datahand-keyboard.jpg 17:34:56 oh that thing, i have certainly considered that 17:34:57 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 but it costs like a million right 17:35:22 they stopped producing them... maybe they started again 17:35:25 "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 i think its like a thousand bucks though 17:35:39 Professional II-USB Mouse 17:35:39 $995.00 17:35:39 Buy Now 17:35:42 less :D 17:35:52 yeah not really feeling like spending another thousand right away 17:36:03 another? :p 17:36:16 well a third one within 30 days 17:36:40 twice11: Topres are kind of cool but that's really just a combination of switches. 17:36:50 come on, is there anything more important than keyboards? 17:37:05 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 no 17:37:15 elliott, what? $995 for a MOUSE? 17:37:15 I think velvet is involved somewhere, but that might just be my imagination. 17:37:15 what 17:37:22 twice11: This isn't exactly the channel for important things. 17:37:28 Vorpal: No, a typing and pointing device. 17:37:34 http://desktopped.s3.amazonaws.com/wp-content/uploads/2009/09/datahand-keyboard.jpg 17:37:41 It uses MAGNETS. 17:37:51 how does it, erm, work? 17:37:59 there was a 3d mouse that was 400 17:38:02 it certainly looks futuristic though 17:38:06 You put your hands in those little dimple things, and push up/down/left/right/downwards to type. 17:38:12 They use really light magnets or something. 17:38:14 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 There's also a pointing thing, I think that's where the thumbs go, but I dunno how it works. 17:38:36 twice11: those two other things were my first real computer in years 17:38:37 twice11: Oh, I misread the line. 17:38:38 elliott, wow. Is it any good? 17:38:44 including a keyboard 17:38:46 I thought you were complaining about all this unimportant keyboard talk. :p 17:39:23 I wouldn't spend 1k on a keyboard. 17:39:26 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 I think some users use foot pedals for ctrl and alt. 17:39:41 elliott, so not for C coding? 17:39:43 or gaming 17:39:43 if i had an extra thousand, i would buy all the keyboards. 17:39:56 Vorpal: I meant a _lot_ of punctuation. 17:40:05 elliott, oh, mkry? 17:40:07 Like if your job was to write comic expletives all day. 17:40:25 But I haven't really hard anything bad about them apart from, you know, the price. :p 17:40:35 http://elitekeyboards.com/images/topre_keysw.png 17:40:37 This is how topres work. 17:40:51 The springs look cool: http://scalable.com/conversation/wp-content/uploads/2010/02/topre.jpg 17:40:54 elliott, with work I meant more like, how do you use them 17:41:03 yes kind of 17:41:10 Vorpal: You put your hands in those little dimple things, and push up/down/left/right/downwards to type. 17:41:10 They use really light magnets or something. 17:41:19 DataHand =/= Topre, I'm talking about two things at once. 17:41:24 elliott, yeah, right, but shift? and so on 17:41:33 emacs might be painful with it too 17:41:42 Not with foot pedals it wouldn't. 17:41:50 http://www.atpm.com/7.05/images/dh-right-wells.jpg 17:41:55 This bigger image of a datahand might answer your questions. 17:42:11 hm yeah 17:42:15 what does NAS stand for? 17:42:20 nfc 17:43:19 separately moving my fingers in all four directions sounds a bit strainy, but maybe it's actually nice enough 17:43:30 Vorpal: It's related to the numeric mode, or something. 17:43:35 ah 17:43:37 I gather the switches are very light. 17:43:43 Hey, fizzie probably knows more about them than me. :p 17:43:46 (I was taking a peek at the http://www.datahand.com/pdfs/ProIIUserGuide.pdf ) 17:43:47 I can imagine it would have to be 17:43:49 At least he answered that ONE QU- oh. 17:44:00 fizzie the human search engine 17:44:23 elliott, anyway, have you played Magicka? 17:44:23 Numbers And Symbols, maybe? 17:45:08 Vorpal: I answered that. 17:45:13 (The answer is no.) 17:45:16 Should I? 17:45:25 elliott, well maybe. It is quite fun. 17:46:08 elliott, it is however yet another indie game from Sweden 17:46:25 God I hate Swedes. 17:47:03 The DataHand® System plugs into all personal computers (ATs and newer) 17:47:03 and compatibles, without the need for additional hardware or software. The 17:47:03 following computers are also supported: 17:47:03 · Apple Macintosh, with an adapter for the Apple Desktop Bus (ADB) or 17:47:03 Universal Serial Bus (USB) 17:47:04 · Hewlett Packard X-Terminal 17:47:06 · IBM PS/2 17:47:06 elliott, why? The voice acting is funny, it is in some invented language with English and Swedish phrases mixed in. 17:47:08 · IBM RS6000 17:47:10 · IBM 3270 mainframes 17:47:12 · NCD 101 X-Terminal 17:47:14 · Silicon Graphics’ Indy and Indigo II (currently being tested) 17:47:16 · SUN (usable type-5 keyboard using SUN’s interface converter) 17:47:18 Heh. 17:47:20 Vorpal: FUUUUUCK SWEEEEEEEEEEDES 17:47:28 "Utilyzing" -- this manual's spelling sure is OPTOMIZED. 17:47:44 elliott, that is quite a list of weird and obsolete connectors 17:48:11 I mean no one really cares about anything but USB these days.l 17:49:03 it's an old product 17:49:08 thus the amusingness 17:49:11 ah 17:49:40 i found a nice(but fairly long) quote 17:50:09 '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 ssions. 17:50:14 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 makes us more alive than the others.'" 18:06:48 -!- Taneb has quit (Read error: Connection reset by peer). 18:07:32 elliott: Do you have any specific reason to prefer the atomic waste tutorial? 18:08:16 twice11: I don't believe there is a real atomic waste tutorial, just a gag. 18:08:28 There is. 18:08:35 Wow. 18:08:44 It even is one of the "classical" tutorials. 18:08:59 http://en.wikibooks.org/w/index.php?title=Haskell/Understanding_monads&oldid=933545 18:09:06 I'm kind of glad I know less about monad tutorials than I thought. 18:09:31 http://www.haskell.org/haskellwiki/Monad_tutorials_timeline is more than you ever wanted to know 18:09:37 Yeah, I just found that. 18:10:02 "The most recommended Haskell tutorial ever." I wonder if LYAH has overtaken that yet. 18:10:45 I didn't read monad tutorials since years. 18:11:05 Maybe I should read the lyah one to know what's currently "in". 18:12:20 I think it's just a chapter on them in the context of a larger tutorial. 18:12:25 Certainly it comes after applicative functors, which is nice. 18:12:34 Yes. Also linked from that timeline. 18:12:41 * Sgeo vaguely remembers the atomic waste tutorial 18:13:13 And maybe I should read the "applicative functors" tutorial more urgently than the monad tutorial. 18:13:19 I like the monadsplosion in 2006. 18:13:34 Suddenly EVERYONE was asking what a monad was. 18:13:44 -!- nooga has joined. 18:13:51 ("was"; we revised the definition in two thousand and twelve to include Applicative as a superclass.) 18:14:26 "This delightful "tutorial" presents monads as monsters which devour values, use them to feed other monsters and regurgitate them when slain." 18:14:49 "There's a monster in my Haskell"? 18:14:59 (OK, admit, read that title some hours ago) 18:15:30 When the moon hits your eye like a big pizza pie, that's a monad. 18:15:55 OK that was brilliant I need recognition for tat. 18:15:56 that. 18:16:02 * Sgeo clap 18:16:30 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 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 Phantom_Hoover: Sort of a monadic human centipede. 18:41:21 why are happy languages like c# and c++11 veering towards lambda :-? 18:41:38 "Happy" languages? 18:41:47 C# has had lambdas for years. 18:41:51 yeah 18:41:56 What does happy language mean 18:41:58 but why 18:42:11 What does happy language mean 18:42:26 I can only assume that "happy" is a euphemism for "terrible" here 18:42:32 haha. 18:42:34 `addquote Phantom_Hoover: Sort of a monadic human centipede. 18:42:36 649) Phantom_Hoover: Sort of a monadic human centipede. 18:43:27 oh nevermind wiki answered 18:43:30 itidus20: because every language which doesn't have lambda feels arbitrarily restricted. 18:43:42 big post here sadly 18:43:46 "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 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 "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 16:36:35: Make aleph-0 dialects if you want to. 18:46:11 16:36:41: no please don't 18:46:20 shouldn't be too hard. 18:47:00 maybe 5 is not an expression 18:47:11 itidus20: What does happy language mean 18:47:11 brainfuck-n: like brainfuck, except > means go right n steps instead of 1. q.e.d. 18:47:25 oerjan: nooooooooo 18:47:26 I can only assume that "happy" is a euphemism for "terrible" here 18:48:30 happy basically means 'mostly' imperative 18:48:30 -!- sebbu2 has joined. 18:48:39 How's that related to happiness 18:48:45 Those two languages are mostly OOP 18:48:50 Not procedural 18:48:52 Though they are imperative 18:49:15 -!- sebbu has quit (Ping timeout: 252 seconds). 18:49:51 maybe if i actually understood any of this stuff i might change my mind 18:51:12 i understand only one thing 18:51:13 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 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 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 i considered making a cpu which implements haskell_without_monads machine 18:53:05 -!- cheater has joined. 18:53:14 So it's Haskell, but without one arbitrary typeclass that can be defined identically by any user? 18:53:25 it doesn't actually have any instuctions i think 18:53:48 itidus20: It doesn't need monads, as long as there is something representing system access 18:53:50 its like a blank dictionary entry 18:54:27 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 (Or even something else; monads are not required.) 18:55:40 the cpu only exists if there is something for it to do 18:55:59 shrugs 18:57:30 -!- ais523 has joined. 18:58:15 Phantom_Hoover: you can now hate me infinitely much, yay 18:58:45 Yay? 18:58:59 IT IS AN OPPORTUNITY 18:59:20 oerjan, YOU ARE SCUM DIE DIE DIE 18:59:33 waaaaaaaah 19:00:27 is it best to understand any lambda expression as a machine? 19:00:52 no 19:00:54 as a bird 19:00:59 by machine i mean (input|process|output) 19:01:11 oops no thats not what i mean 19:02:08 sorry the regular expression is too tough to figure out 19:02:34 It doesn't have to be a regular expression 19:03:08 by machine i mean, a combination of inputs, processes and outputs which have at least one input, process or output 19:03:26 expression = /\ variable expression | ( expression expression ) | variable 19:03:53 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 i dont know how to say this as a regex 19:04:11 -!- azaq231 has joined. 19:04:13 OK 19:04:34 just an arbitrary definition.. 19:04:41 for the scope of what i am trying to say 19:05:16 itidus20: i don't think lambda expressions really distinguish process from output 19:05:43 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 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 ok like for example.. can i construct a lambda expression which represents an adding machine? 19:07:25 itidus20: lambda expressions have no notion of "time". 19:07:29 then plug in 2 inputs and an output 19:08:43 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 a function might be of the type: output (input1, input2) 19:11:26 z = f(x,y) 19:12:10 z = f(x,y) = x + y 19:12:15 that trips me right out 19:13:34 you would have to graph it in 3 dimensions 19:14:51 -!- Taneb has joined. 19:14:57 Hello! 19:16:52 (0,0,0) (0,1,1) (1,0,1) (1,1,2) 19:17:34 f = uncurry (+) 19:17:39 itidus20: addition in lambda calculus using church numerals is (haskell syntax): \m -> \n -> \f -> \x -> m f (n f x) 19:17:49 im confusing myself 19:17:56 is addition a curve in 3d space? 19:18:00 or \m n f x -> m f (n f x) even short 19:18:07 itidus20: a surface 19:18:36 is it flat? 19:18:46 z = x + y is a plane, so flat yes 19:19:17 *+er 19:19:47 and what if you warp that plane in 4d? haha 19:20:04 Is there a function existing in Haskell having that definition already? 19:20:16 itidus20: i find it mind-boggling that this boggles your mind 19:20:17 (I mean the addition of church numerals) 19:20:40 oerjan: everything boggles your mind when you try to invent everything from scratch rather than learning 19:20:49 @pl \m n f x -> m f (n f x) 19:20:49 liftM2 (.) 19:21:03 OK 19:21:12 zzo38: well that's pretty short if not a named function 19:21:46 Of course you can name it if you want to, and make a library using that 19:22:27 Possibly with a symbol name so that you can use it as an operator 19:22:37 nevermind... i am only lost in confusion 19:22:39 itidus20: that 3d/4d stuff is afaict pretty basic calculus + analytic geometry 19:23:04 or linear algebra, take your pick, they both give perspective 19:23:49 22:41:55: 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 22:41:58: *well 19:23:49 i find this pertinent 19:24:09 im only confusing myself :P 19:24:31 yes, that is indeed how you learn things 19:24:45 I think multiplication would then be (.) and power is (flip id) 19:24:51 well reinventing stuff yourself is fun, but you need enough skill at the underlying level 19:24:52 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 i wonder what Also is like as a thinker 19:25:35 zzo38: yes. 19:28:06 @pl \m f x -> m f (f x) 19:28:07 ((.) =<<) 19:28:15 @pl \m f x -> f (m f x) 19:28:16 ap (.) 19:28:26 increment. 19:29:25 decrement is left as an exercise for the reader *runs away* 19:30:04 ap :( 19:30:09 ((.) ) is not nicer though :P 19:30:31 well i stopped worrying and started trying to deal with anxiety that abstract ideas gives me 19:30:47 ?pl \m n f x -> m (n f) x 19:30:47 (.) 19:30:52 oerjan: whoaaaaaaaaaaaaaahhhhhhhhhhh 19:30:58 it's just like underload :DDDDDDDDDddddddddddd 19:31:10 elliott: zzo38 already mentioned that 19:31:24 and i nearly mentioned underload as response, so yeah 19:31:37 ?pl \m n -> n (\n f x -> m (n f) x) 1 19:31:37 flip flip 1 . flip id . const . (. join id) 19:31:40 NO 19:31:42 EXPONENTIATION SHOULD BE PRETTY 19:31:45 WHY WONLT; YOU PBE PRETTY 19:31:56 now we just need to find how that relates to underload function calls :P 19:32:17 ?pl \n f x -> n (\g h -> h (g f)) (\u -> x) (\u -> u) 19:32:17 flip flip id . (flip .) . flip flip const . ((.) .) . (. ((flip id .) . flip id)) 19:32:21 ?pl \n f x -> n (\g h -> h (g f)) (const x) id 19:32:22 flip flip id . (flip .) . flip flip const . ((.) .) . (. ((flip id .) . flip id)) 19:32:24 :( 19:32:31 oh wait that's just predecessor 19:32:34 time for SUBTRACT 19:32:44 ?p\m n -> (n (\n f x -> n (\g h -> h (g f)) (const x) id)) m 19:32:44 (line 1, column 3): 19:32:44 unexpected ">" or "-" 19:32:44 expecting variable, "(", operator or end of input 19:32:52 ?p\m n -> (n (\n f x -> n (\g h -> h (g f)) (const x) id) m 19:32:52 (line 1, column 3): 19:32:52 unexpected ">" or "-" 19:32:52 expecting variable, "(", operator or end of input 19:32:56 ?p\m n -> n (\n f x -> n (\g h -> h (g f)) (const x) id) m 19:32:57 (line 1, column 3): 19:32:57 unexpected ">" or "-" 19:32:57 expecting variable, "(", operator or end of input 19:33:00 ?pl \m n -> n (\n f x -> n (\g h -> h (g f)) (const x) id) m 19:33:01 flip ($ const (flip flip id . (. const) . ap id ((flip id .) . flip id))) 19:33:04 oerjan:SO BEAUTIFUL 19:33:22 ?pl \n -> n (const const) (flip const) 19:33:22 flip ($ const const) (const id) 19:33:24 heh 19:37:07 WHY WONLT; YOU PBE PRETTY 19:37:22 -!- kmc has joined. 19:38:42 @pl \m n f x -> n m f x 19:38:42 flip id 19:38:46 as zzo38 said 19:39:39 also i suspect most of this is mentioned on madore's unlambda page 19:39:40 oh is that exponentiation? 19:39:45 someone fix the wikipedia article to have the nicer :( 19:40:42 :t \n f x -> n (\g h -> h (g f)) (\u -> x) (\u -> u) 19:40:43 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 Yes, (flip id) is exponentiation; which is I already describe it. And (.) is multiplication 19:41:46 elliott: is that decrement from wikipedia too? 19:41:50 oerjan: yes 19:42:15 anyone there/ 19:42:18 ? 19:42:22 no 19:42:30 what's your favourite esolang? 19:42:35 brainfuck? intercal? underload? 19:42:41 saptarshi7sinha? :) 19:42:49 fuck! 19:42:52 i guess! 19:43:04 is that like brainfuck without the brains? 19:43:23 :) 19:43:25 ais523: hm, sounds like another derivative in the making 19:43:43 fuck is brainfuck but without the [] 19:43:56 oerjan: there's already fuckfuck, which is just a swap of commands for swearwords 19:43:57 elliott: hey stop precisely reading my mind 19:43:59 yeh..slangs do have a lot of derivatives! 19:44:00 elliott: a bit like deadfish, then? 19:44:13 -!- saptarshi7sinha has left. 19:44:18 there we go 19:44:30 my new method for driving away the mislead works perfectly 19:44:49 and /probably/ wouldn't drive away anyone who was in the right place 19:44:51 ais523: bf without [] still would require many memory cells 19:45:22 elliott: let me guess, the indian-sounding name made you suspicious too? 19:45:32 oh right 19:46:09 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 oerjan: well maybe. but that's horrible :P 19:46:24 except the 7 might indicate a chinese tone. but mandaring has only 4. cantonese has more, and also more final consonants 19:46:25 "anyone there/" was what made me decide to try it 19:46:32 *mandarin 19:46:38 s/horrible/awful/ 19:47:02 The upper bound of the required tape length in "fuck" seems to be much easier to determine than in brainfuck. 19:47:38 constant-time, even :P 19:47:42 does anyone here know if saptarshi7sinha means something in cantonese? 19:47:49 twice11: Well, yes. Brainfuck without [] you can easily determine of course 19:48:07 elliott: Only if you have a constant time length operation. 19:48:20 So yes for files. No for programs received from a TCP stream. 19:48:31 hm is on twitter 19:49:01 twice11: oh hm right 19:49:13 ...twitter claims i don't have javascript enabled and refuses to load :( 19:50:00 twice11, that isn't true for files. Consider /dev/ttyS0 for example 19:50:14 Vorpal: That's a *device*. 19:50:19 "yes for regular files", I think is what twice11 meant 19:50:28 oerjan: what IE are you on nowadays? :P 19:50:29 twice11, it is a file. You meant a "regular file or block device" I presume 19:50:36 ais523, you forgot block devices there 19:50:48 pretty sure there is an ioctl for them 19:50:49 actually, I'd call the device 4,6 and say that /dev/ttyS0 is just a pointer to it 19:51:06 elliott: 8, the highest which works on XP afaik 19:51:14 /dev/ttyS0 is a name for the device. 19:51:23 ais523, you actually do call it "device 4,6" normally?... 19:51:25 just as two hard links are two names for the same file. 19:51:44 twice11, point is, it is a file. which happen to be a name for a device. 19:52:00 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 I'd more likely call it "the serial console" 19:52:12 right 19:52:27 define: file 19:52:42 oerjan, XP is pretty much dead. 19:52:46 sure it is still used. 19:52:47 no it isn't 19:52:48 just dead 19:52:51 XP has a massive userbase 19:53:12 Including, at current, me 19:53:22 Microsoft can't kill something by deciding they don't care about it any more 19:53:38 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 AHAHAHA 19:53:43 elliott, well they are not supporting IE 9 on it. Nor any directx after version 9c iirc. 19:53:47 Wikipedia citing W3Schools for OS census information 19:54:00 someone remove that who isn't a faceless anon :P 19:54:30 elliott, yeah, wouldn't alexa be a better source for this... 19:54:51 not really 19:54:56 but W3Schools is the worst possible source 19:54:59 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 elliott: what overtook it? 7? 19:55:06 or Vista? 19:55:33 Vorpal: skewed data: most visitors are interested in web developement 19:55:39 I am quite confident that the relation is 7 > XP > Vista 19:55:39 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 ah yeah 19:55:47 and deluding people into thinking that W3C supports it 19:55:54 (W3C have asked them to change their name several times) 19:55:56 elliott, ah 19:56:38 elliott, so what is a good source for OS census info? 19:56:40 elliott: the theory is that only Microsoft have accurate statistics of Linux adoption 19:56:44 Vorpal: I don't know 19:56:53 google I guess, not sure if they make anything public about that 19:57:01 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 and they have the most accurate details on Windows adoption (including pirated Windows) 19:57:38 Vorpal: Google would be weighted in favour of lower stats for IE users, so lower stats for Windows users 19:57:44 saptarshi sinha is definitely indian, anyway 19:57:45 hm true 19:57:47 as it's the default search engine in most major browsers, but not in IE 19:57:57 Facebook, maybe? 19:57:59 ais523, what about average of several sites? Google, MSN and so on 19:58:18 Taneb, I don't use facebook for example. I know many people who dont 19:58:19 Taneb: or perhaps DoubleClick 19:58:20 don't* 19:58:33 Vorpal: Facebook's a good example because its Like buttons are all over the place 19:58:35 does anyone know how to uncommit the latest commit on git? 19:58:39 so it has accuratish statistics for half the web 19:58:43 I haven't pushed it anywhere 19:58:45 -!- sebbu2 has changed nick to sebbu. 19:58:46 so I'd like to just obliterate it 19:58:57 elliott: also clear working tree? 19:59:00 elliott: you can obliterate via git rebase -i HEAD~2 19:59:09 twice11: indeed, I've copied out the relevant file 19:59:13 and deleting the line describing the commit from the resulting list 19:59:20 ais523: thanks 19:59:25 to reset everything to the state before the last commit: 19:59:26 protocol.pl: needs merge 19:59:26 Working tree is dirty 19:59:27 oh come on 19:59:31 git reset --hard HEAD 19:59:32 do I have to commit my merge and then obliterate that too? :P 19:59:33 git reset --hard HEAD^ 19:59:34 sorry 19:59:35 twice11: right 19:59:39 ais523, hm, does facebook provide OS census info though? 19:59:47 there we go 19:59:48 only a site which actually provides it would be interesting 19:59:51 Vorpal: I don't know; I'm talking about who has the info, rather than who provides it 20:00:30 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 thanks 20:01:03 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 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 Yes, "git rebase -i" is quite cool. 20:01:32 ais523: incidentally, I think modifying history is perfectly possible in sg 20:01:34 heh, git commit --amend? I'll have to remember that 20:01:45 git commit --amend is useful for changing the commit message :P 20:01:49 elliott: so do I, but isn't it best done via history modification patches? 20:01:51 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 ais523: haha 20:02:06 ais523: that's perverse 20:02:31 elliott: that way, it'd avoid the problems that modifying history normally causes to a VCS 20:02:42 (in particular, you'd get conflicts between the old and new version otherwise, I think, in sg) 20:02:42 ais523: and also remove the point 20:02:57 modifying history obviously doesn't work post-push 20:03:00 well, the point isn't to conceal the history, but to make it look neater, right? 20:03:08 if modifying history should work at all, it should be done post-push 20:03:13 *it should work post-push too 20:03:28 what if someone pulls from you just after you accidentally commit half a patch? 20:03:33 personally, I think it should simply be another layer 20:03:54 fizzie, so more windows xp than windows 7... heh 20:04:35 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 I see 20:05:58 is vista behind both or beating both? 20:06:26 Behind both in all the lines of the table, unless I missaw. 20:06:47 (~11% vs. 30+% in the median numbers.) 20:06:54 ouch 20:07:13 Why would you want to use Windows 7 beta, when there is Windows 7 final? 20:07:18 I wonder if the final end of XP support will actually drive down Windows adoption 20:07:38 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 (unless Apple get their act together again; I doubt Gnome will in time, perhaps KDE will) 20:07:59 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 nah, Android is the Windows of smartphones 20:08:16 ais523: xfce? 20:08:19 lowest-common-denominator, and often programmed quite badly 20:08:27 ais523, so android is bad? 20:08:37 ais523: While Apple is the Apple of smartphones. 20:08:38 twice11: Linux is pretty small market-share-wise as it is, and xfce is a pretty small fraction of /that/ 20:08:45 so I'd say xfce use is statistically insignificant 20:08:48 fizzie: yes, I'll agree with that 20:08:50 Vorpal: I'm wary of it 20:09:03 ais523, oh? 20:09:05 I don't hear "Linux-based" and immediately think "good" like Slashdot or Groklaw seem to 20:09:16 Android is basically a race to the bottom 20:09:22 hm 20:09:30 ais523, surely there are some good android products? 20:09:34 lots of applications available, most of which are really bad 20:09:36 some of which are good 20:09:38 just like Windows 20:09:58 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 lots of bad and some good apps: Isn't that typical for any high-market-share system with open application development? 20:10:29 oh and linux have a massive dominance for servers it seems. 20:10:31 ais523: most iPhone apps are terrible too, mind you 20:10:33 twice11: I think so 20:10:53 Oh, twice11 isn't tswett 20:10:57 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 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 hm 20:11:23 ais523, but the OS itself? 20:11:27 whereas Linux corresponds to Moblin or something 20:11:41 the OS itself, in Android, is mostly a reimplemented language very close to Java 20:11:52 But also for Linux, there are a lot of bad application in the interwebs and some good ones... 20:11:54 so close that Oracle sued them over it 20:12:22 It isn't Java? I know it's not the standard Java VM, but 20:12:24 twice11: bad Linux programs rarely reach the depths of badness that bad Windows programs reach 20:12:33 bad Linux programs tend to merely not work 20:12:40 bad Windows programs can do all sorts of absurd things 20:13:01 presumably because the really bad programmers typically haven't heard of Linux and couldn't get Visual Studio running on it 20:13:07 Don't get me started on trying to work with LibreOffice (which OTOH is x-platfrom, not linux only) 20:13:13 so linux have a huge dominance on publicly accessible servers, and a near total dominance on HPC. hm 20:13:29 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 and heh, mainframes are mostly IBM system z 20:13:43 (who the hell still uses mainframes?) 20:13:51 * Sgeo now wants an IBM System Z emulator 20:14:01 `addquote 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 companies doing what mainframes are good at: very very large quantities of easy work 20:14:03 650) When the moon hits your eye like a big pizza pie, that's a monad. 20:14:05 ^^not true 20:14:25 I think a mainframe is what you want if you have ten billion additions that need doing 20:14:59 heh 20:15:09 ais523, wouldn't a cluster of cheap PCs work better? 20:15:37 If there is something mathematically correct in category theory and is also computable, is it supposed to be representable in Haskell? 20:17:27 the standard mainframe applications are things like processing payrolls for an entire company or taxes for an entire country 20:18:59 awk 'gsub(/./,"&\n")' | awk '/>/&&++p>r{r++}/ ais523, ah 20:19:26 -!- azaq231 has left ("Leaving."). 20:19:31 there's probably some way to do that with a cluster and distributed database 20:19:33 ais523, payrolls for a company doesn't sound like a hard problem. 20:19:40 but doing it on a mainframe is probably simpler 20:19:43 Vorpal: I mean a really really big company 20:19:48 -!- azaq23 has joined. 20:19:48 taxes for an entire country perhaps 20:19:55 ais523, such as IBM or Microsoft? yeah 20:19:59 not really hard still 20:20:29 that's the point, what mainframes are best at isn't /hard/ 20:20:29 I realised I have no clue about the size of companies outside IT 20:20:35 it's just really large in scale 20:21:10 ais523, again, cheap cluster sounds saner. Well, maybe not for reliability 20:21:14 can someone fire every OS developer? 20:21:15 that could be a reason 20:21:17 thanks 20:21:24 elliott, what for 20:21:41 Vorpal: making IO ridiculously slow for no benefit 20:21:53 elliott, thinking of Synthesis? 20:21:56 elliott: what sort of IO specifically? 20:22:25 (note: you are not using @ so you are allowed to use traditional OS concepts in your answer) 20:22:43 Vorpal: Synthesis solves the problem, but in a much too difficult manner 20:22:48 it's not very maintainable 20:22:50 elliott, right 20:22:54 ais523: mostly network, but file IO too 20:22:56 that is true 20:23:01 the overhead of kernel<->userspace transition is the cause 20:23:03 elliott, what about pipes? 20:23:10 Vorpal: probably those too 20:23:11 all IO, really 20:23:21 vmsplice()? 20:23:24 heh 20:23:34 elliott: aha, I see, the problem's that reading from a network socket requires too many context switches 20:23:37 okay that is kind of cheating 20:23:46 but anyway, Synthesis takes the route of heavily optimising user<->kernelspace communication/switches 20:23:50 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 it's much simpler just to run everything in kernelspace 20:23:54 elliott, I guess Inferno wouldn't have this problem? 20:23:56 (cough @ cough) 20:24:10 I don't know how Inferno works, but it presumably inherits the host OS' underlying IO 20:24:25 elliott, well it can run natively iirc 20:24:28 not just hosted 20:24:38 ais523: anyway, if you eliminate the distinction, then all the fancy hacks Linux has for fast IO are completely unnecessary 20:24:55 you don't need syscalls that do a lot, because you can just compose the operations in the obvious way 20:24:56 elliott, so lisp machine and DOS do it right? 20:25:05 I actually don't get why a call to kernelspace needs a context switch 20:25:09 a switch between processes does 20:25:13 I don't know much about Lisp machine's security... DOS is way too different to a modern system to compare 20:25:21 ais523: hardware ring bullshit, I believe 20:25:24 but to the kernel and back, I don't see why it would 20:25:37 whoever invented rings: I hope you feel bad 20:25:47 elliott, multics 20:25:48 elliott: oh, I was assuming that most of the overhead of a context switch was in doing things like copying registers 20:25:51 that is where rings come from 20:25:54 Vorpal: oh, really? 20:25:57 scratch that, don't feel bad 20:25:59 I like Multics 20:26:06 Vorpal: wait, Multics invented /hardware/ rings? 20:26:11 elliott, pretty sure that is where rings first showed up. At least Multics had 7 rings 20:26:11 they used existing computers, dude 20:26:17 I'm talking about hardware ring 20:26:17 s 20:26:20 hm 20:26:50 elliott, not sure then, but multics made heavy use of them I know. Would need checking for where they were invented. 20:27:18 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 ais523: in fact, even select/epoll are obsolete 20:28:27 in favour of what? 20:28:36 (don't say pselect/ppoll) 20:28:47 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 blocking-read just translates to "call/cc (\k -> install k as handler for 'when data comes in'); yield" 20:29:22 well 20:29:36 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 you get the idea 20:29:52 because you can literally just hook into the kernel's IO multiplexing 20:29:54 yep 20:29:58 ais523, wait, wtf is "ppoll"? 20:30:11 I still don't get how Red Hot Chilli Peppers rhyme "wall" and "bra" 20:30:15 the /concept/ of select, etc., is a useful one for programming, it just doesn't have to be a primitive 20:30:28 Vorpal: a syscall that does much the same as pselect but with a different interface 20:30:33 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 ais523, ... why 20:30:45 I'm not sure select is that useful; threads are much nicer 20:30:48 because select is limited in how many FDs it can handle 20:30:50 (threads aren't nice, but they're nicer than select) 20:30:57 ais523, okay why select at all then 20:31:01 or pselect 20:31:05 elliott: select is perfect for writing an event loop 20:31:29 doing that with threads can be messy 20:31:33 ais523: yep, but event loops are performance hacks 20:31:59 eh 20:32:02 ais523: the right level of abstraction is: callbacks, and then a continuation-based blocking interface on top of that 20:32:03 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 pikhq_, true 20:32:22 elliott: well, the two are obviously equivalent 20:32:22 the beauty of continuations rather than just e.g. for (;;); until the callback trips a variable saying "it's done", 20:32:25 (though, given that, you can easily do optimal IO if you feel like it) 20:32:30 is that the thread can die in-between 20:32:34 so it's 0-cost to block 20:32:41 and as efficient as possible 20:35:07 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 bleh, what's up with Windows' famous backward compatibility? 20:35:35 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 how will I run my old 16-bit applications now? 20:35:47 ais523, well 16- bit won't work in long mode. Blame AMD for that. 20:35:48 it's ridiculous! 20:35:59 it is specified in the ISA. 20:36:09 ais523: large IO buffers are another thing that is completely useless, btw 20:36:11 s/- /-/ 20:36:22 I forget what buffer size Synthesis was using to completely outperform everything else, but it was something like sixteen bytes 20:36:25 elliott, not really, what about DMA? 20:36:33 as opposed to the kilobytes we use nowadays because of the kernelspace overhead 20:36:50 Vorpal: well, that's a lower-level kind of buffering 20:36:51 elliott, writing an entire sector to disk might be a better idea 20:37:00 especially for SSD 20:37:08 elliott, still it needs to be done 20:37:12 sure, that's abstracted in @ though 20:37:16 elliott: mmap() doesn't seem to run into the problems you talk about, unless the page faults cause timeconsuming context switches 20:37:40 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 and is basically as efficient as possible 20:37:54 ais523, mmap is limited in that it won't work on char devices 20:38:06 and it performs implicit buffering on the page level 20:38:18 I wonder how the CPU talks to the soundcard these days? 20:38:27 elliott, DMA probably 20:38:33 elliott: it's going to be either in/out or DMA at the lowest level 20:38:44 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 (Probably buffered underneath because of DMA, but eh, that's not the kind of buffers we see in stdio these days.) 20:39:12 (Or in the kernel.) 20:39:17 elliott, likely DMA considering how much data must be passed for, for example, 5.1 48 kHz sound 20:39:23 in/out just wouldn't cut it 20:39:50 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 a curses-alike would be useful if, say, streaming textish data across a network 20:40:09 elliott, anyway, video: DMA too. 20:40:21 well kind of 20:40:45 ais523: streaming textish data across a network? 20:40:51 why not just send a description of the widgets? 20:40:55 I mean screen-oriented textish 20:41:05 ais523: "curses-alike is useful if you have a VT"? 20:41:06 no shit 20:41:14 elliott, what about when logging into remote systems 20:41:21 Vorpal: with what method? 20:41:24 say I want to play NetHack on @ 20:41:26 ssh for example 20:41:46 elliott, anyway it is more efficient to send larger TCP packages than small ones. Best is matching MTU of course 20:41:59 ais523: if you want to play NetHack with the original UI, of course you need a VT 20:42:06 elliott, so there buffering is good when transferring bulk data 20:42:11 ais523: otherwise, look at nethack-el 20:42:18 you just send the same kind of data structures across the network 20:42:27 (note: I don't know exactly how nethack-el sends things) 20:42:31 well, I'm saying that that updating sort of data sensibly requires buffering 20:42:33 elliott: in lisp, obviously 20:42:39 or well, as a sequence of sexps 20:42:39 -!- Taneb has quit (Read error: Connection reset by peer). 20:42:39 ais523: no? 20:42:41 it sends sexps 20:42:45 but I don't know how it sends the _map_ 20:42:49 which is what's important 20:42:56 it doesn't send the map 20:43:00 it sends map update instructions 20:43:00 Vorpal: Didn't 7 have some sort of a VM-based (built on Virtual PC) backwards schmombatility "XP mode" thingie? 20:43:02 also as sexps 20:43:05 ais523: anyway, I don't see why it requires buffering at all; nethack screens don't change much each frame 20:43:09 you can just send a diff 20:43:15 fizzie, think so. 20:43:15 elliott: it needs buffering to calculate the diff 20:43:19 aka map update structures 20:43:19 that's what I was trying to get at all along 20:43:20 ais523: what? 20:43:40 elliott: because you're often overwriting a square with itself in NetHack 20:43:43 and that shouldn't show up in the diff 20:43:47 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 elliott, what about network buffering as I mentioned above? 20:44:46 elliott, you want to buffer up to MTU if the data isn't time critical. 20:45:15 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 so I stopped trying to clarify and started ignoring your examples of buffering instead 20:45:29 elliott, well this one is relevant to the application layer 20:45:39 network buffering is an implementation detail of the network driver 20:45:47 elliott: because you're often overwriting a square with itself in NetHack ;; how is this relevant to buffering? 20:45:56 Vorpal: Yes, I think it's a separate download. I'm not sure my Ultimate Seven here has it installed either. 20:46:01 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 elliott: because you need to remember what was there before 20:46:20 ais523, indeed, and that might change over a session too, for different parts of the data. 20:46:23 to know whether to send the diff or not 20:46:24 ais523: that's not buffering... 20:46:31 ais523: that's caching 20:46:40 hmm, OK, perhaps you have different definitions to me 20:46:41 that has nothing to do with stdio buffering or anything 20:46:48 I'd say it's the opposite of caching 20:46:52 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 Vorpal: Yes, I think it's a separate download. I'm not sure my Ultimate Seven here has it installed either. 20:46:58 fizzie: it's Ultimate-only 20:46:59 fizzie, you have ultimate? heh 20:47:00 fair enough 20:47:03 Why does Haskell not allow infixr 10? 20:47:10 zzo38: because that's function application 20:47:11 elliott: "Windows XP Mode is available free of charge to users of Windows 7 Professional, Enterprise, and Ultimate.[30]" 20:47:16 fizzie: Oh, hunh. 20:47:22 O, that's why. 20:47:49 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 heh 20:48:19 Actually I picked the "N" variant. 20:48:21 fizzie, ultimate isn't available here. Only pro, no other version. 20:48:26 fizzie, N? 20:48:42 It's the "no media player" thingie they were obligamated to make for some reason or another. 20:48:47 heh 20:48:55 Then turned out something quite essential needed the "media functionality package", so I had to install it after all. 20:49:06 fizzie, anyway, I went for ultimate with visual studio. Not that I use visual studio much. But hey why not 20:49:15 (Turns out it wasn't just the media player application, it was other components too.) 20:50:07 "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 the only reason to use visual studio would be windows C# development. For everything else there are better solutions. 20:50:17 The description made it sound like it'd just lack a bit of bloat. 20:50:27 I've already forgotten what it exactly was that it was lacking. 20:50:39 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 one of the courses I'm teaching this year is in common-subset-of-OCaml-and-F# 20:51:10 Sgeo, I have never used F# nor do I have any opinion on it. 20:51:16 that is, polyglot levels of common subset 20:51:19 I'm not sure how large it i 20:51:21 *is 20:51:26 ais523, heh... 20:51:31 probably unusably small 20:51:40 ais523, so why that subset then... 20:51:42 0? I mean, OCaml has ;; to end things and iirc, F# doesn't? 20:52:06 you don't actually need any ;;s in a program, it's a separator 20:52:19 ais523, why, is this some sort of eso-course? 20:52:22 programs are typically definition ;; main 20:52:27 Vorpal: no, it's a basic CS concepts course 20:52:41 and the lecturer thinks it doesn't need anything beyond function calls and pattern matching 20:52:44 ais523, still, a stupid subset 20:53:07 hmm, I'd prefer elliott's opinion here before concluding it's definitely stupid 20:53:22 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 ais523, how viable would an INTERCAL/C polyglot be? 20:54:16 ais523: ? 20:54:38 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 ais523: you asked me that before 20:55:03 ah right; but I can't remember the answer 20:55:12 one of the courses I'm teaching this year is in common-subset-of-OCaml-and-F# 20:55:14 augh 20:55:19 ais523: well I was asking for context 20:55:29 I thought it was about your weird ultra-portability thing 20:55:33 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 but teaching it to innocent children???? 20:55:42 elliott: it's not up to me what I teach 20:55:56 the "GNU C99 and assembler and one lecture on C++" was not a good idea either 20:56:30 haha 20:56:38 hey, does anyone know if you can merge just /one/ commit into another branch on git? 20:56:48 I accidentally committed something to a quite-diverged development branch rather than master 20:56:53 and I'd like to avoid just applying the diff again, that's gross 20:56:56 elliott: that operation isn't meaningful in git 20:57:07 ais523: no, but I thought there might be some porcelain for it 20:57:09 you can do git cherrypick, but that just automates applying the diff again 20:57:14 sigh 20:57:38 elliott@katia:~/Code/mcmap$ git diff 8f6f820~ 8f6f820 | git apply 20:57:40 that should do it, right? 20:57:44 IIRC, this was my example of the simplest thing you couldn't do in git 20:57:48 heh 20:57:48 I don't know what git apply does 20:57:56 NAME 20:57:56 git-apply - Apply a patch to files and/or to the index 20:57:59 applies a git-diff :P 20:58:06 The cherry-pick interface isn't so bad either. 20:58:07 seems about right 20:58:07 error: patch failed: world.c:941 20:58:08 error: world.c: patch does not apply 20:58:08 ah good 20:58:11 I thought it was about your weird ultra-portability thing <-- hm, what thing? 20:58:17 it, um, what 20:58:19 secret project? 20:58:27 secret project is not ultra-portable 20:58:29 ah 20:58:34 oh, it's already on that branch 20:58:35 as you might have guessed from my questions about Linux kernel internals 20:58:36 how did that happen? 20:58:37 oh, hmm 20:58:38 so different project then 20:58:44 never mind, I know what happened 20:58:53 it says I pushed that to the wrong branch because I was pushing the merge of it 20:58:56 as well as some other stuff 20:59:00 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 ais523, so what is that ultra-portability thing 21:06:09 I don't know 21:06:16 ask elliott, it's him who claimed it existed 21:06:25 right 21:06:28 elliott, what is it? 21:06:34 Vorpal: mu 21:11:04 elliott, what was/is that ultra portable thing you mentioned 21:11:49 Vorpal: you misread 21:13:04 -!- nooga has quit (Ping timeout: 258 seconds). 21:22:44 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 (||) = flip $ flip which $ right 21:23:28 -!- DHeadshot has joined. 21:23:58 (&&) = flip $ which left 21:24:02 not = which right left 21:26:23 -!- DH____ has quit (Ping timeout: 260 seconds). 21:26:47 you should use (f . g $ x) rather than (f $ g $ x) 21:27:09 OK 21:27:25 (indeed many Haskellers would like to see $ become infixl) 21:27:34 OK 21:27:38 (so that you can say (f $ really long argument $ really long argument) to apply a function with two arguments) 21:27:40 I understand you 21:27:53 elliott: I like $'s current associativity 21:28:01 perhaps because of the way I think about Haskell 21:28:05 it basically becomes a pipeline 21:28:10 ais523: no, you use . for that 21:28:13 I can understand why you want $ to be infixl 21:28:23 :t ($) 21:28:24 forall a b. (a -> b) -> a -> b 21:28:25 :t (.) 21:28:25 unix | is (.) not ($) 21:28:26 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 21:28:32 (well, it's >>=, but it's definitely not ($)) 21:28:37 Is there really a big difference? 21:29:06 I think the UNIX | is (>=>), not ($) or (.) or (>>=) 21:29:36 The argument to the pipeline is then the stdin handle. 21:30:32 Result is stdout handle. 21:30:52 Or something like that. 21:31:12 actually, | is like >>= in a way: http://okmij.org/ftp/Computation/monadic-shell.html 21:32:50 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 fair enough 21:36:01 i just measured my english speed wpm and got 206 21:36:09 how about you guys= 21:36:10 ? 21:36:20 erm 21:36:22 speech, not speed 21:37:42 lol i was thinking you meant typing 21:37:51 i just felt inferior, wasn't even the slightest bit sceptical 21:38:02 -!- quintopia has quit (Ping timeout: 250 seconds). 21:39:57 i'm not a very fast typist 21:40:12 i'm way slower than you for instance 21:40:19 mainly i'm just a very slow thinker though 21:41:21 200 wpm is not *that* slow for speech 21:42:27 i should prolly measure in finnish though, english is hard to speak fast since it flows so nicely 21:42:35 because that means it also blurs nicely 21:45:30 252, but there were some weird names in the text i read 21:45:41 -!- quintopia has joined. 21:45:52 that's less than a half of the world record :DD 21:46:03 interestingly it seems speaju 21:46:14 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 150 with a longer sample :( 21:53:58 but finnish words are really long! 21:55:00 that was still 30 letters a second (including spaces :D) 21:56:14 http://www.youtube.com/watch?v=MzbnwASIFKU she's my idol 21:56:44 i wish i had books that weren't full of formulas i don't know how to read 21:58:39 king is something women are better at than men 21:58:40 king? 21:58:56 you have to read the next sentence 21:59:15 return button? aka enter 21:59:26 speajuking 21:59:49 yes 22:00:10 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 back 22:13:27 -!- jix_ has joined. 22:13:49 -!- jix has quit (Read error: No route to host). 22:13:58 so the addition plane i was asking about, if x is 5 and y is 4 then z will be 9 22:14:30 and if x is 4 and y is 5 then z wll be 9 22:15:06 so the plain generated by (1, 0, 1) and (0, 1, 1), common example in linear algebra 22:16:00 what about it? 22:16:28 erm 22:16:29 plane 22:16:44 -!- Milo_ has joined. 22:16:47 i am curious what it looks like 22:17:34 it's just a slanted version of the xy plane 22:17:49 a 45 degree slant? 22:18:02 i don't think so 22:18:07 heheh ok ok 22:18:14 lemme see 22:19:26 -!- Milo_ has left. 22:20:45 the vector (1, 1) is lifted the most and it is lifted by 54 degrees 22:21:31 ok :P 22:21:37 fascinating 22:21:42 it sounds so arbitrary 22:22:13 well if you just look at the x axis, you see 45, and same with y axis 22:22:46 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 ahh 22:24:13 i see now 22:24:41 i think :P .. enough to let it go 22:25:42 -!- monqy has joined. 22:25:51 so if you view it by rotating x plane 45 degrees towards y plane, it will be 54 degrees 22:26:14 no that doesnt make sense.. ah i should just drop it 22:26:34 letting it go... ,,, 22:27:35 -!- FireFly has quit (Quit: FireFly). 22:27:55 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 http://www.wolframalpha.com/input/?i=z+%3D+x+%2B+y 22:28:27 this site tries its best 22:28:47 alpha is good for this sorta stuff 22:29:15 i might not have asked if i had this much faith in alpha 22:31:17 so binary mathematical operations can be defined as planes 22:31:31 or in the case of multiplication a hyperplane 22:31:44 continuous ones produce 2d manifolds yes 22:31:45 oops no i mean 22:31:49 not planes though 22:31:51 hyperbolid paraboloid 22:31:58 ^bolic 22:32:02 manifold means it doesn't have to grow linearly 22:32:09 it can have hills too 22:33:39 so division operation is funny looking.. would it be better in 4d? 22:36:07 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 how would you do it in 4d? 22:44:03 the division operator is not continuous at y = 0 22:44:15 so you get a cut there 22:45:28 Are church numerals the only function of type forall a. (a -> a) -> a -> a ? 22:45:45 yes 22:45:48 modulo _|_s 22:45:51 (i think) 22:46:23 i think so too, all you can do is apply the function to the a instance n times 22:46:28 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 heh 22:46:44 -!- CakeProphet has joined. 22:46:44 -!- CakeProphet has quit (Changing host). 22:46:44 -!- CakeProphet has joined. 22:46:56 well depends on the definition of security i guess 22:47:18 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 by a definition like that, i suppose a complicated password is very very insecure 22:47:47 Sgeo, so fill in some random junk? Or the password itself? 22:47:49 choose something easy to remember like poop instead 22:48:08 Vorpal: the response is probably stored with less security than the password 22:48:17 oh true 22:48:20 Vorpal, fortunately, I don't have to fill it in, unless I want Facebook to show me as more secure 22:48:28 ah 22:48:30 Can you _sleep_ without that being shown? 22:48:51 depends on who he sleeps with I would guess. 22:49:04 true 22:49:09 I mean, probably not with the facebook security manager. 22:49:17 (or whatever) 22:50:45 night → 22:50:51 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 22:52:28 vorpal quits on nights now? 22:53:42 weiiiiiiird 22:53:55 I know, right? 22:54:16 you do know right. 22:59:28 I know rong. 22:59:35 [asterisk]wrong 22:59:43 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 ais523: why on earth does git only push the current branch by default? 23:00:29 it's infuriating 23:01:34 ais523: also, admin question: can I move [[User:Javamannen]] to [[User talk:Javamannen]] on the wiki? it's ridiculous 23:01:45 is there actually a discussion there? 23:01:57 _three_ 23:02:03 with _replies_ 23:02:05 no wait, four 23:02:06 heh 23:02:11 one of them started by himself and the only reply being himself 23:02:16 actually, that last section should be part of his user page 23:02:19 but the rest is talk content 23:02:40 -!- augur has quit (Remote host closed the connection). 23:02:41 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 and put a comment explaining 23:02:58 it's probably best to move to talk, then copy-paste-move the section from talk to main 23:03:00 (as it'll you-have-new-messages him, so there should at least actually /be/ a new message) 23:03:02 as talk has had more activity 23:03:11 perhaps, but that'll leave confusing redirects in the history 23:03:26 that's just a merge commit :D 23:03:32 actually, can't you move a page without redirecting? 23:03:34 at least on wikipedia 23:04:06 I can, you can't 23:04:08 you have to be an admin 23:04:18 ah 23:04:20 you wanna do it, then? :P 23:04:24 or make me admin ;D 23:04:25 (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 I can't on Esolang, the software's too old 23:04:38 oh 23:04:42 nor can I make you an admin either, I don't have the perms 23:04:48 MY PLANS KEEP FAILING 23:15:36 ais523: Is it a character flaw if I try and eliminate any linear search of a list? 23:16:08 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 [asterisk]table. 23:16:31 elliott: heh 23:16:46 I've been known to do lsearches deliberately and not lose sleep about it 23:17:24 ais523: The comparison would even be a pointer equality, so it's not even six string comparisons. :( 23:17:45 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 Where nfields is like seven at most 23:19:02 -!- Jafet has joined. 23:19:19 Yeah, I think it's time to admit that I Have A Problem. 23:19:34 Linearsearchophobes Anonymous. 23:21:33 You know what, fuck it, I'm doing the linear search. 23:21:52 you can't do that by yourself 23:22:36 I need whatshisname matrix. 23:23:06 james 23:23:15 Yes. 23:23:24 jack might be better actually 23:23:32 maybe he's jack james matric 23:23:35 *x 23:24:32 oh noes, too late for coding 23:25:05 it's never too late for coding 23:25:27 -- jack james matrix 23:26:11 hey that's actually a great idea 23:26:15 elliott: say something really smart 23:27:18 elliott: please, this is the important 23:27:42 oklopol: yes 23:28:03 oklopol: you should do some coding, just to be really out of character 23:28:33 please say a general philosophical wisdomness 23:28:36 ok 23:28:38 an friend is a house 23:28:39 so i can try this 23:28:40 but when a house disappears 23:28:43 is the friend a friend? 23:28:53 -- oklopol ominovorol, when he was like 5 23:28:59 yes 23:29:06 it's never too late for coding 23:29:06 -- jack james matrix 23:29:09 oh i thought that was a correction 23:29:12 but you already corrected it 23:29:14 i do that 23:29:15 a lot :( 23:29:18 yes, that's why i needed to do this 23:29:18 (attributing thigns) 23:29:20 (to poeople) 23:29:21 yes 23:30:07 actually i did some coding yesterday 23:30:16 and i've gotten sooooo slow :DDSDSD 23:30:19 is anyone here good at electronics? >.> 23:30:56 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 oklopol: what coding was it 23:31:24 elliott: making this game just to see if i still can.... 23:31:36 oklopol: does that make sense easy enough? 23:31:48 sure, i get it 23:31:54 nice idea huh 23:32:00 yes, totally awesome 23:32:05 i would so buy that 23:32:07 lol 23:32:14 oklopol: what game 23:32:37 elliott: it's called claustrophobia, you are in this infinite matrix of blocks and all of them want to kill you 23:33:25 oklopol: it's your mc-alike right 23:33:45 not really, but it's a subset of it i suppose, what isn't 23:34:18 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 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 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 ph got gravity working btw 23:36:58 yeah right 23:37:03 and then we found this javascript simulation of two-dimensional gravity that was way better 23:37:05 and actually had controls :P 23:37:07 can i see it 23:37:11 if I can find it 23:37:14 the better one 23:37:23 I know 23:37:52 -!- cheater has quit (Client Quit). 23:38:21 Well, the stuff I have in /msg is just babbling about Star Trek gravity, so no. 23:38:25 It might be in the channel logs. 23:38:57 oklopol: It did work in a stable manner, though. 23:39:54 so it didn't work, that was the whole issue 23:40:00 oklopol: Eh? 23:40:16 well obviously you can implement newtonian gravity in 5 minutes 23:40:23 oklopol: I said _did_ work, not didn't. 23:40:33 :D 23:40:37 ooooooops 23:40:43 oklopol - an stupids. 23:40:54 -- everyone, all the time 23:41:23 -!- augur has joined. 23:41:23 -- oklopol 23:41:30 "* augur (~augur@129.2.129.32) has joined #esoteric" --oklopol 23:41:43 i'm a profound dude. 23:42:30 -!- sllide has quit (Read error: Connection reset by peer). 23:43:07 halp 23:43:15 that's not english 23:43:24 hlep 23:43:30 * augur bits oklopol 23:43:43 monqy: hepl 23:44:00 tell me you know 23:44:04 things that i dont 23:44:59 bites even! D: 23:44:59 about voltage regulators 23:45:40 ah that's better. 23:46:02 voltage regulators? you mean those things that keep the voltage at a constant 23:46:32 i take it you cant help 23:46:44 where do i find some electronics makers 23:46:45 I don't think this monitor is meant to be detatchable 23:46:52 i'm pretty sure i can't, now answer mine 23:47:04 -!- Patashu has joined. 23:47:46 or just some thingie that removes spikes and shit and is of no theoretical interest 23:48:04 augur: i still have a scar from this guy biting me in the fifth grade 23:48:33 oklopol: oh my 23:48:43 that fun huh 23:49:05 hmm? 23:49:23 i only had straight sex in the fifth grade, and it was just finger sex 23:49:44 ... 23:50:13 that's a good quote to remember 23:50:19 what's the quote bot around here? 23:50:37 ^style ff7 23:50:37 Selected style: ff7 (Full script of the game Final Fantasy VII) 23:50:41 Use `addquote 23:50:44 yes oklopol. it maintains a voltage near a constant 23:50:46 thank you sir fungot 23:50:47 itidus20: now's our chance. we must search for him too! it's attacking!? talk! 23:51:10 fungot do you like haskell? 23:51:10 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 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 quintopia: ah we play with those all day in circuit theory 23:52:07 ^style 23:52:07 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 who should i ask questions about them 23:52:30 is there something to know about them? 23:52:30 ^style nethack 23:52:30 Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal) 23:52:34 who knows the emag equations and shit 23:52:37 quintopia: ais might know 23:52:47 ais523 to be precise 23:52:56 ais523 is a smart gu6 23:53:07 he's an electronics guy 23:53:30 "emag equations"? 23:53:44 I might be an electronics person, but I'm bad at remembering nontrivial equations 23:53:52 emag? 23:54:04 with just voltage regulators and resistors, the equations are trivial 23:55:11 ais523 is definitely an electronics guy 23:55:13 SORRY MAN 23:55:23 yes they should be trivial 23:55:28 but i dont remember them 23:55:35 so they are nontrivial to me 23:55:40 remember them? 23:55:40 someone tell me what emag stands for! 23:55:53 oh emag was mentioned by quintopia 23:56:07 ais523: can pm you a question? 23:56:24 quintopia: unless I have you on ignore, yes, that's how IRC works 23:56:27 and I don' think I have you on ignore 23:56:36 im being polite 23:56:38 or I wouldn't have been able to notice you'd asked me in-channel 23:56:42 well, fair enough 23:56:53 it just seems like a bit of a redundant question 23:58:00 everyone ask ais523 private questions 23:58:09 we must destroy the forces of politeness :( 23:58:10 http://www.utdallas.edu/~cantrell/ee4302/memorize.pdf i certainly have never heard most of these 23:58:28 memorize.pdf good name 23:59:10 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 well, except U = RI