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