00:03:27 -!- myndzi has quit (Ping timeout: 240 seconds).
00:04:09 -!- myndzi has joined.
00:06:18 -!- chickenzilla has quit (Ping timeout: 252 seconds).
00:21:43 -!- oerjan has quit (Quit: Good night).
00:27:03 -!- mtve- has joined.
00:27:34 -!- mtve has quit (Ping timeout: 252 seconds).
00:31:20 -!- mtve- has quit (Ping timeout: 260 seconds).
00:32:57 -!- evincar has joined.
00:36:10 -!- mtve has joined.
00:36:30 <Gregor> Dear Indiana: THAT IS NOT THE CORRECT COLOR FOR THE SKY
00:37:07 <evincar> Who do you think you are, saying what colour the sky ought to be?
00:37:13 <evincar> Maybe it wants to be yellow.
00:38:26 <monqy> im a sky doctor....and that is not what skys want....
00:38:44 <Gregor> I should think a sky doctor would know how to spell "skies" ...
00:41:54 <pikhq_> I should think a doctor would know how to spell "I'm", and what an ellipse looks like.
00:42:17 <pikhq_> Anyways, clearly the sky is going through a rebellious stage.
00:44:47 <Gregor> Well that much is clear.
00:44:51 <Gregor> What with the lightening.
00:51:08 <Gregor> OK, this is a nasty thunderstorm ...
00:51:10 -!- Vorpal has quit (Ping timeout: 260 seconds).
01:01:29 -!- zzo38 has joined.
01:08:36 -!- azaq23 has quit (Ping timeout: 240 seconds).
01:08:37 <elliott> oh hmm that would be cool forleaden to have
01:14:27 <elliott> monqy: i was thinking that like the haskell repl could be a fancy repl??? by which i mean: you know how like ghci sees if it's an io action and failing that does "print it"
01:14:44 <elliott> well this would be the same but it would try "display it" before print it and you'd have like
01:15:10 <elliott> a list could show the first like N elements that'll fit onto a screen
01:15:17 <elliott> and have a ... that you can click to show more at the end??
01:15:20 <elliott> and other nice... things like that...
01:15:40 <elliott> and you could maybe middle-click subexpressions to make them go into the prompt?? i don;t know
01:16:07 <monqy> hougle integration...might be nice
01:16:39 <elliott> monqy: yes but like..........
01:16:48 <elliott> monqy: if you had a library with colours
01:16:53 <elliott> you could construct a colour
01:17:00 <elliott> and it'd show a little square of that colour next to how it would normally be shown??
01:17:47 <elliott> instance Display RGB where displayWidget (RGB r g b) = ...some gui stuffe.....
01:18:13 <monqy> and whenever peoiple make colourse they will write an instance for Leadne????
01:18:33 <elliott> no............. you would have to put itin your ghcirc or something??
01:18:40 <elliott> it would make for a lot of coole things......
01:19:29 <elliott> monqy: im dont know it was just an idea..... (at first i was thinking that I should play around with a standalone REPL thing to do that, and then i thought "oops but then leadesn would seem inferior i should put it into leaden")
01:20:10 <monqy> the biggest problem I see is people not bothering to make these instances
01:20:27 <elliott> monqy: well you could still benefit from like the instances for lists?
01:20:32 <elliott> typing in an infinite list
01:20:35 <elliott> and then yuour emacs buffer exploes
01:20:42 <elliott> getting a bunch of elements
01:20:58 <elliott> and it could like do pretty-printing stuff too? so that if elements were long they'd go on their own line
01:21:06 <elliott> and being able to manipulate sub-expressions separately is very good...
01:21:11 <elliott> it could like turn anything too deeply-nested into a ...
01:21:54 <monqy> and i guess you could make it not happen if you explicitly used show???
01:22:12 <elliott> well using "print" would be the explicietie thing....
01:22:28 <monqy> i guess print would work too....
01:22:41 <monqy> isn't print just putStrLn . show or something like that
01:23:09 <elliott> wit h show it would have ""
01:44:53 <pikhq_> On the IBM PC-AT, you could mask the NMI.
01:45:39 <pikhq_> You could write to a controller chip on the motherboard, which would prevent the NMI from reaching the CPU.
01:45:57 <pikhq_> Rather than merely telling the CPU to ignore the interrupt.
01:54:11 <elliott> "Thanks for the info. I did not mean to imply anything negative about your knowledge. In fact, I think my post makes you look better than your own previous post do (because your comments about web2py are naive)."
01:54:29 <elliott> i think i have upse t him monqy
02:00:28 -!- ais523 has quit (Remote host closed the connection).
02:04:59 <elliott> ?hoogle f a -> f b -> f (a,b)
02:04:59 <lambdabot> Prelude zip :: [a] -> [b] -> [(a, b)]
02:04:59 <lambdabot> Data.List zip :: [a] -> [b] -> [(a, b)]
02:04:59 <lambdabot> Language.Haskell.TH strictType :: Q Strict -> TypeQ -> StrictTypeQ
02:05:28 <elliott> (I know, I know, liftAtwo (,))
02:05:38 <elliott> im just trying to generalise
02:05:42 <elliott> reactimate $ const mainQuit <$> eWindowClosed
02:05:43 <elliott> reactimate $ const mainQuit <$> eCtrlC
02:05:59 <monqy> generalise?? speaking of which sometime i should learn syb maybe
02:06:09 <elliott> union :: Event f a -> Event f a -> Event f aSource
02:06:10 <elliott> Merge two event streams of the same type. In case of simultaneous occurrences, the left argument comes first. Think of it as
02:06:22 <elliott> oh thats same element type though hmm
02:06:25 <elliott> monqy: that was not syb.........
02:06:44 <monqy> but would syb help
02:07:33 -!- azaq23 has joined.
02:08:46 <monqy> I don't see what's so not general enough about applicative functors though??? hlep????
02:10:32 <lambdabot> Foreign.Marshal.Error void :: IO a -> IO ()
02:10:33 <lambdabot> Text.Regex.Posix.ByteString compIgnoreCase :: CompOption
02:10:33 <lambdabot> Text.Regex.Posix.Sequence compIgnoreCase :: CompOption
02:10:33 <lambdabot> Text.Regex.Posix.String compIgnoreCase :: CompOption
02:10:54 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
02:11:48 <monqy> would that be fmap (flip const) or what
02:15:45 <lambdabot> forall b a (f :: * -> *). (Functor f) => f a -> f (b -> b)
02:16:18 <monqy> i don't know what i was thinking
02:16:42 <lambdabot> forall a b (f :: * -> *). (Functor f) => b -> f a -> f b
02:17:47 <monqy> (fmap . flip const), perhaps
02:18:31 <monqy> (flip (<$))?? I can't think of anything better
02:19:50 <elliott> ?pl \f a -> fmap (const a) f
02:58:56 <Gregor> "Hi! For some reason we can't display an ad here, probably because of an ad blocker. If this ad is not displayed our design gets screwed up. We have full respect if you want to run an ad blocker but we would appreciate if you add us to your white list or consider donating via Flattr or Paypal."
02:59:05 <Gregor> I'm betting that donating will not remove this annoying banner :P
03:01:55 <pikhq_> It's really hard to feel sympathy for such a thing.
03:04:33 <Gregor> But, but, "The free web is dependent on ads to continue to be free."!
03:05:22 <pikhq_> Yes, yes, our economic system sucks ass.
03:07:12 <zzo38> You can use protocols and/or filetypes that do not have ads, too
03:07:24 -!- Sgeo has quit (Ping timeout: 245 seconds).
03:07:34 <zzo38> Which also helps in other ways depending on what you are doing with these files
03:09:07 <pikhq_> More "anti-'free market'".
03:11:01 <zzo38> It is why, I should also invent SSH banking protocol, use this protocol to do banking transactions by computer by internet, including transfer money, copy bank statement, etc, in standardized way. Designed such that you can do it with a computer program that sends the commands for you simply, and can also be done simply by entering the commands manually, too.
03:17:16 <zzo38> I can see that a lot of the functions of Data.Set do require instance of Ord, however not all of them do.
03:18:03 <zzo38> You said that is why there is no monad definition for sets.
03:21:36 <elliott> Sets don't work without Ord, the fact that some functions don't have the cosntraint is just a mistake because it's not technically enforced
03:21:40 <elliott> But all the algorithms require it
03:24:49 <zzo38> I can see the description at the top about the algorithms.
03:33:22 <elliott> "sourceLanguageManagerGetLanguageSource" Gtk, I...
03:35:20 <zzo38> So, Data.Set would not work if you need unordered sets, then
03:37:00 <pikhq_> I'd be willing to bet Data.Set is doing a binary tree behind the scenes.
03:37:21 <elliott> zzo38: Data.Set is unordered.
03:37:33 <elliott> It doesn't expose the ordering.
03:37:41 <pikhq_> Either that or the utterly naive algorithm, nub . sort :P
03:38:04 <elliott> zzo38: But the Ord instance can be totally arbitrary.
03:38:47 <pikhq_> Well, yeah. I'd think the only thing Ord would imply is that there is, in fact, an ordering.
03:39:55 <elliott> pikhq_: BTW it's slightly better than I said, s/GetLanguageSource/GetLanguage/ (Haddock fail)
03:40:11 <pikhq_> elliott: Still, WTF does it even do?
03:40:23 <elliott> Gets a language, given a source language manager and a language name.
03:42:48 -!- azaq23 has quit (Ping timeout: 240 seconds).
03:46:06 <zzo38> What if you mess up things by making a pseudo Ord set (meaning it does not follow the Ord laws)
03:46:27 -!- azaq23 has joined.
03:47:42 <elliott> Well you're at least going to have to get EQ vs. something that isn't EQ, I presume
03:47:51 <elliott> Unless it specifically checks again with == which would be pointless :P
03:50:18 -!- DeM0nFiRe has joined.
03:55:17 <zzo38> My situation before of where you might want a value to have zero or more constructors of a datatype, is mathematically a set (assume constructors have no parameters for simplicity), and this Data.Set could be used, I guess, you can derive Ord and then it can be used.
03:55:58 <zzo38> But it might not necessarily be best, if you can store as a bit field and use the bit manipulation commands of the computer, for types with only a small number of constructors
03:57:23 <monqy> DeM0nFiRe: oh hi. it's going.
03:58:17 <DeM0nFiRe> What I am working on is not REALLY esoteric but some people might think it is. I am trying to design a machine to facilitate kay OOP
03:59:33 <pikhq_> Kay, so a Smalltalk machine?
03:59:53 <pikhq_> Sounds like a completely and utterly reasonable goal.
03:59:55 <DeM0nFiRe> Well, not for specifically Smalltalk, but that kind of idea
03:59:58 <evincar> "Extreme late-binding of everything" Kay OOP.
04:00:12 <DeM0nFiRe> evincar: Well, that is one of the 3 requirements, yes :P
04:00:40 <DeM0nFiRe> One of the requirements is local retention of state which is kind of getting me right now
04:01:12 <elliott> sounds like orthogonal persistence to me
04:01:14 <elliott> but then so does everything
04:01:16 <DeM0nFiRe> It means everything about an object is known only to an object
04:01:20 <evincar> I was working on a Smalltalk-like language recently, but I bailed when the folks in here made me realise that I really wanted a concatenative language rather than an applicative one.
04:01:30 <elliott> DeM0nFiRe: doesn't that basically just mean there aren't any backdoors...
04:01:34 <elliott> like you can't go poking pointers
04:01:40 <elliott> otherwise i don't see why you would have to expose anything not explicitly exposed
04:01:51 <DeM0nFiRe> The basic sum of what Kay OOP means is that objects are like little black boxes, and the only thing you know about each black box is that it can send and recieve messages
04:02:03 <DeM0nFiRe> Anything you need to know or anything you want the box to do has to be done through messages
04:02:45 <pikhq_> I'm pretty sure elliott likes Alan Kay. :)
04:02:54 <DeM0nFiRe> I was just making sure what I wanted was clear :D
04:03:04 <elliott> But I don't see how local retention of state is something you have to... do?
04:03:09 <elliott> Just don't expose anything about the objects
04:03:17 <evincar> Yeah, it's more of a don't.
04:03:21 <elliott> Unless you're trying to run arbitrary machine code and force it to obey these restrictions, in which case lol
04:03:25 <DeM0nFiRe> Well, keeping objects from knowing about each other is easy enough
04:03:47 <elliott> You don't have to "keep" them from doing it? If they don't have a reference to an object they don't know about it
04:04:17 <DeM0nFiRe> But yeah I want to be able to make it so from outside an object there is just no way to get the info from it. Of course since my machine is running on top of whatever other OS, once it gets to that OS level it's just in RAM like everything else
04:04:44 <DeM0nFiRe> But more as a thought excercise I would like to keep as true to that part of OOP as I can
04:06:30 <elliott> I'd call it something other than OOP, if onl because the term OOP is used to mean so many terrible things nowadays :P
04:06:43 <elliott> DeM0nFiRe: It sounds to me like you just want to define a really simple message-passing language
04:06:49 <DeM0nFiRe> But to me it's still the only true OOP :P
04:07:09 <DeM0nFiRe> I mean, message passing and late binding are super easy, and keeping objects from knowing about other objects is easy
04:07:32 <DeM0nFiRe> And just those things are enough to put the language I have designed on top of it
04:07:47 <monqy> is it a good language
04:08:11 <DeM0nFiRe> I plan on using it for scripting for games :P
04:08:31 <DeM0nFiRe> Being able to arbitrarily redefine objects at will would be awesome for that
04:08:39 * elliott sits, lounges in the superiority gifted to him by functional zealotry.
04:10:02 <DeM0nFiRe> Over here in my lounge, I can take the table I am not using anymore and make it a sofa
04:10:26 <elliott> And everyone else keeps assuming it's a table, and then suddenly your sofa is full of all kinds of shit that would normally go on a table
04:10:31 <elliott> And people sit on it and it's fucking uncomfortable
04:10:39 <elliott> In this analogy the uncomfortability is using an impure language and you are the one doing the using
04:10:54 <monqy> im the one putting the tacks there
04:11:08 <evincar> Now now, are you two arguing about mutability?
04:11:08 <monqy> would you like your tacks elsewhere
04:11:12 <DeM0nFiRe> lol, nah, it's cool. Saves a lot on up front design time
04:11:32 <DeM0nFiRe> If you use it like a different language, you're going to get burned
04:11:44 <DeM0nFiRe> If you program in C++ like you are programming in C#, you are going to get burned :P
04:11:52 <elliott> If you program in C++ [...] you are going to get burned :P
04:11:57 <monqy> i was just about to say
04:12:00 <monqy> that exact same thing
04:12:22 <elliott> This is the problem with my sockpuppet account
04:12:35 <elliott> He is prone to revealing his true nature >:(
04:12:48 <elliott> That totally made sense when I was writing it.
04:12:51 <DeM0nFiRe> C++ is not bad if you restrict yourself to a subset of it that is actually sane :D
04:13:23 <elliott> I guess with a sufficiently bad definition of sane the subset might be the parts of C that C++ isn't incompatible with :P
04:14:15 <DeM0nFiRe> So anyway, no one here is interested in designing a machine more or less for the sake of designing a machine :P
04:14:28 <monqy> I prefer to design good machines
04:14:39 <DeM0nFiRe> Well, you were telling me to settle for less than Kay OO :P
04:14:42 <monqy> but designing good machines for the sake of it is just fine
04:14:55 <DeM0nFiRe> Well, this would be a good machine. If done properly it would be super secure
04:15:07 <elliott> itt: object capability model
04:15:19 <elliott> not actually restricted to OO languages :P
04:15:38 <elliott> btw I am not seriously hating on your machine I just have to reassert my functional superiority when required
04:15:52 <DeM0nFiRe> Message passing is also not restricted to OOP :P
04:16:21 <monqy> i save my hattred for evincar's languages
04:16:28 <DeM0nFiRe> But it's all 3 together that make up OOP. Kay didn't invent all aspects of OOP, it took the seperate pieces and put it together
04:16:37 <elliott> monqy: YUO SUMMED THE DEMON
04:16:45 <DeM0nFiRe> This is a good read http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
04:16:59 <monqy> evincar: how're your languages
04:17:00 <evincar> Like something eldritch that isn't an abomination.
04:17:13 <DeM0nFiRe> Also "OOP to me means only messaging, local retention and protection and
04:17:13 <DeM0nFiRe> hiding of state-process, and extreme late-binding of all things."
04:17:29 <DeM0nFiRe> That is what Alan Kay said on what he meant when he originally said "OOP"
04:17:42 <elliott> There's historical revisionism at work there :P
04:17:46 <evincar> monqy: Oh, y'know. Thinking about that concatenative one and trying to figure out what sets it apart from Factor.
04:18:09 <DeM0nFiRe> I think, yes, he was able to state it more clearly now than then
04:18:10 <monqy> is factor any good
04:18:33 <DeM0nFiRe> But if you look at what inspired OOP in the first place, it's not too hard to see what he was going for
04:18:50 <elliott> how did you find this place btw was it the wiki
04:18:56 <DeM0nFiRe> The Burroughs 5000 is mentioned in there, and that's what got me into thinking about trying to really grab that local state hiding and protection deal
04:19:11 <DeM0nFiRe> Yeah I did a search for something I forget what
04:19:26 <monqy> I forget how I found the wiki. maybe intercal.
04:19:55 <DeM0nFiRe> I think I did a search for esoteric
04:20:20 <DeM0nFiRe> Because I was specifically looking for an IRC channel :P
04:21:14 <DeM0nFiRe> Hmm, unforgable reference. That is what I am missing
04:21:35 <elliott> DeM0nFiRe: unforgeable references are not hard? just don't offer something stupid like casting an integer to a pointer
04:22:00 <DeM0nFiRe> Well, I am not talking about from the language, that's easy to do like I said
04:22:22 <DeM0nFiRe> Basically, I am talking about not being able to run even machine code to inspect objects
04:22:31 <elliott> there is no difference between machine code and a langauge
04:22:43 <DeM0nFiRe> Alright I guess I misunderstood what you meant
04:22:46 <elliott> machine code just prioritises different things
04:22:55 <elliott> for instance: how do you forge a reference on a traditional processor?
04:23:05 <elliott> mov dword [something expecting to contain a pointer], 99
04:23:12 <elliott> that's just casting an integer to a pointer :P
04:23:49 -!- sebbu has quit (Ping timeout: 258 seconds).
04:24:46 <DeM0nFiRe> Alright I think I can figure something out.
04:25:43 <DeM0nFiRe> So the other fun part about the language/machine
04:26:25 <DeM0nFiRe> Yeah, I write my game engine stuff in C++
04:26:32 <monqy> how do you plan on doing this
04:27:22 <DeM0nFiRe> Well the why is not too hard, I write engines in C++, want to be able to natually connect the engine and the scripting without having to use C
04:27:56 <DeM0nFiRe> The how is, well I haven't entirely figured it out. :P
04:28:04 <monqy> but why do you do this in c++
04:28:26 <DeM0nFiRe> Because I want the low-ish level of C++ and I want classes
04:28:30 <monqy> and what exactly do you mean by work easily with C++
04:29:01 <pikhq_> monqy: Presumably he means "work easily with C".
04:29:02 <DeM0nFiRe> I have to be able to expose C++ code to the language and vica versa
04:29:09 <DeM0nFiRe> No, I do not mean work easily with C
04:29:10 <monqy> why do you want low-ish level of c++, why do you want classes, are there no other suitable languages
04:29:26 <pikhq_> DeM0nFiRe: There are very few languages that interact with C++.
04:29:40 <DeM0nFiRe> Well then I guess that is why I am making one, isn't it?
04:29:48 <monqy> DeM0nFiRe: if it's unrestricted c++, you're hopeless
04:29:48 <DeM0nFiRe> I know full well that there are very few
04:29:50 <pikhq_> And there is a reason for that.
04:30:25 <pikhq_> No, I'm being entirely honest.
04:30:29 <monqy> DeM0nFiRe: ok, what are the restrictions, and how will you enforce them
04:30:40 <DeM0nFiRe> Alright, well there's no need to continue the discussion on whether you like C++ or not :|
04:30:47 <pikhq_> It also contains a couple!
04:31:07 <zzo38> Other new idea of feature in Haskell is automatic instances, where if there is no instance it will make one up using the program you specify to make it up. One use can be for tuples instances, but there can be others.
04:31:33 <DeM0nFiRe> monqy: Well, the main restriction is that every type that is returned or taken as a paramater for a function has to be wrapped, so it requires either some foresight or glue code
04:31:37 <zzo38> What are you trying to make with C++? I prefer to use C rather than C++ but that is just my opinion
04:31:53 <monqy> zzo38: there are libraries that let you make things to derive things for things
04:32:10 <DeM0nFiRe> I prefer C++ because I like classes
04:32:14 <monqy> DeM0nFiRe: is there any way to undo this wrapping
04:32:15 <evincar> DeM0nFiRe: As you may have noticed, C++ is not well-liked in here.
04:32:28 <monqy> DeM0nFiRe: or tamper
04:32:34 <monqy> DeM0nFiRe: hint: the answer is yes
04:32:38 <DeM0nFiRe> monqy: Defined by the wrapper, but for it to be useful obviously you would want to make it reversible :P
04:33:18 <monqy> DeM0nFiRe: as I understand it, if you're able to muck with the invariants of your machine in any way from the c++ side, you're screwed
04:33:26 <zzo38> monqy: Can you give examples of those kind of deriving?
04:33:29 <DeM0nFiRe> Realistically speaking, it means you will only want to wrap at a very high level so that you can wrap as few classes as possible
04:33:39 <DeM0nFiRe> But that's how a scripting language should be used in game development anyway
04:33:52 <monqy> zzo38: deriving instances for datatypes? I think one such thing is in the derive package
04:34:34 <DeM0nFiRe> Doing something like wrapping a whole game engine would be a pain in the ass, and it would also be not a great idea in any language
04:34:46 <DeM0nFiRe> But wrapping, say, a level class, some actor classes, some world object classes
04:35:11 -!- sebbu has joined.
04:35:18 <zzo38> monqy: Actually I mean other things too. For example you might make up a automatic instance to make a function automatically work with all lengths of tuples
04:35:24 <DeM0nFiRe> That's more managable, if done right you're going to get better performance, it's a clearer seperation of core programming and game scriptiing
04:35:26 <monqy> DeM0nFiRe: and how would you do this wrapping in such a way that you maintain your machine/language's invariants
04:36:15 <monqy> zzo38: oh. there's TH, and possibly some other things as well, for things like that??
04:36:22 <monqy> zzo38: I'm not sure exactly what you want
04:36:22 <DeM0nFiRe> monqy: Well, that is part of what I am working out. I want to have functions actually be procedure objects, and so then wrapping a class will actually wrap each member function
04:36:30 <zzo38> monqy: TH can do that, but not automatically.
04:36:39 <monqy> zzo38: what do you mean by automatically?
04:36:42 <DeM0nFiRe> Also, one thing to note is that things like classes and functions will only exist at the syntax level
04:36:47 <monqy> zzo38: as in it's resolved by the type system?
04:37:00 <zzo38> monqy: I mean, if it requires an instance but there isn't one, it calls the TH code you specify to create that instance.
04:37:13 <DeM0nFiRe> When read by the interpreter, the functions will become some sort of procedure object, and classes will actually become a clonable object
04:37:34 <DeM0nFiRe> So to make a new MyObject you will actually be cloning an object, not instancing a class
04:37:38 <zzo38> And will automatically determine when this is needed and use the same TH code in all these cases that it can be used with.
04:38:21 <monqy> DeM0nFiRe: so something along the lines of prototypes?
04:39:33 <DeM0nFiRe> I will be adding some stuff on top of that such as "freezing" and object which will make it so that object cannot be redefined, finalizing an object which will make it so it and copies of it cannot be changed
04:39:55 <DeM0nFiRe> So that way you can ensure that a number object is actually a number object :P
04:40:30 <elliott> monqy: was saying good or bad
04:40:37 <monqy> in what case would a number object not be a nubmer object
04:40:46 <zzo38> monqy: Do you understand what I mean now?
04:40:58 <DeM0nFiRe> monqy: Well, the heart of this whole thing is that an object can be completely redefined
04:41:14 <DeM0nFiRe> So one object may have entirely different properties from when it was created
04:41:20 <DeM0nFiRe> That would not be a good thing for numbers
04:41:28 <monqy> would not be a good thing for anything
04:41:44 <DeM0nFiRe> You wouldn't want to actually change every single property
04:41:46 <elliott> <zzo38> monqy: Actually I mean other things too. For example you might make up a automatic instance to make a function automatically work with all lengths of tuples
04:41:49 <zzo38> And that the automatic instances can be recursive in case some cases of the ways that automatic instances are made up require instances too
04:41:50 <elliott> there are a finite number of tuple types
04:42:01 <DeM0nFiRe> But the fact that the properties of an object are defined at the object level rather than at a class level is super useful
04:42:18 <elliott> DeM0nFiRe: how is that different to prototype-based oo?
04:42:21 <monqy> zzo38: how would you write an instance-maker?
04:42:35 <zzo38> elliott: What is the limit of tuple types?
04:42:46 <elliott> zzo38: fifteen i think, it's in the report
04:42:48 <DeM0nFiRe> elliott: Well, first of all prototype based OO is closer to real OO than anything I know of except Kay OO itself :P
04:42:52 <zzo38> monqy: One way could be using Template Haskell.
04:43:11 <DeM0nFiRe> Second of all, like I said I will be adding things that are not in any prototype language that I know of
04:43:12 <zzo38> And this is not only for tuples anyways.
04:43:37 <DeM0nFiRe> Like freezing and finalizing, and there will be a sort of different inheritance model, since classes won't actually exist in the machine
04:43:41 <monqy> perhaps if objects were immutable and there was no way for the c++ side to muck............then you'd have your numbers be numbers............
04:43:45 <elliott> i think a lot of languages have freezing
04:43:55 <elliott> DeM0nFiRe: classes don't exist in prototype oo languages too :P
04:44:10 <DeM0nFiRe> elliott: Well, they will exist in my language but not my machine
04:44:17 <DeM0nFiRe> They will exist in syntax, but not the machine
04:44:52 <monqy> zzo38: and how would that work, more specifically?
04:45:01 <elliott> zzo38: you may be interested in http://community.haskell.org/~ndm/downloads/paper-deriving_a_relationship_from_a_single_example-04_sep_2009.pdf
04:45:17 <elliott> or in SLIDE FORM :P http://community.haskell.org/~ndm/downloads/slides-deriving_a_relationship_from_a_single_example-04_sep_2009.pdf
04:45:28 <DeM0nFiRe> If there was a good implementation of JavaScript I would use that probably because it is close enough that I could use it for what I want
04:45:45 <elliott> DeM0nFiRe: how is V8 not good? it's even C++ :P
04:46:00 <DeM0nFiRe> It's C++ but still utilized in mostly C style
04:46:06 <zzo38> monqy: Hypothetically assume Template Haskell has a function: automaticInstance :: Class -> (Type -> Q [Dec]) -> Q [Dec] (I might have some details wrong)
04:46:08 * elliott pings Gregor to handle whatever DeM0nFiRe says about javascript implementations since he's the expert
04:46:27 <elliott> DeM0nFiRe: you're letting your opinions of companies get in the way of using open source code that fills your needs? ok
04:46:42 <DeM0nFiRe> V8 is really the only true, mature standalone implementation of JavaScript, at least that I know of. I mean there's SpiderMonkey but that comes from mozilla
04:46:51 <DeM0nFiRe> elliott: It also doesn't fill my needs, as I said
04:46:54 <elliott> spidermonkey's just as standalone
04:47:20 <elliott> DeM0nFiRe: you just said it was "mostly C style" which was totally not the impression I got when I read its API docs and I don't see how wrapping it to your needs wouldn't be simpler than writing a totally new thing :P
04:47:24 <elliott> not that i'm against writing a totally new thing
04:47:26 <DeM0nFiRe> Rhino is Opera's right? That's not available to use AFAIK
04:47:30 <elliott> but it seems weird to say that there is nothing that fits
04:47:42 <elliott> it's java though, so you probably don't care :)
04:47:47 <pikhq_> elliott: Google's house style, like that of just about everyone sane, omits several C++ features.
04:47:56 <pikhq_> In Google's case, most notably exceptions.
04:48:12 <DeM0nFiRe> Well, that is not what I am talking about
04:48:15 <pikhq_> C++ exceptions, of course, are a great misfeature.
04:48:29 <DeM0nFiRe> You call a series of functions to define objects with V8, that is not what I want
04:49:03 <DeM0nFiRe> I am pretty sure I can come up with a way to at least semi-automagically wrap a C++ class and turn it into an object in my language
04:49:17 <monqy> hehehehehehehe good luck
04:49:27 <elliott> DeM0nFiRe: can't you make that translate to a series of function calls
04:49:35 <monqy> and how do you plan on doing this?
04:49:41 <DeM0nFiRe> Well, it's also not about going for the easiest solution. If there was an out-of-the-box JavaScript solution, I would use it. There's not, so I might as well go all out and make a language that does exactly what I want
04:50:25 <DeM0nFiRe> Also the other cool thing is that my machine will work for making a JavaScript implementation on top of it :)
04:50:53 <DeM0nFiRe> And it will also be a platform for me to explore other language design related ideas that aren't something I would want to put in this language I am working on
04:51:08 <monqy> what all do you know about language design anyhow
04:51:34 <monqy> or think you know, or want to explore, etc etc
04:51:37 <DeM0nFiRe> Well, mostly what I have learned from studying the design of other languages, things like that
04:51:48 <monqy> other languages like what
04:52:16 <DeM0nFiRe> *shrugs* whatever, JavaScript, Ruby, Smalltalk, Java, C++
04:52:26 <DeM0nFiRe> Note that not all of them were looked at for examples of what was good :P
04:52:44 <monqy> I advise learning at least a functional language and a logic language
04:53:40 <zzo38> I advise all programmers to learn a few things about Forth programming, even if they decide later to never use it and/or to never continue to learn it
04:53:56 <DeM0nFiRe> I decided to make my own language because I actually looked at, I don't know, maybe 30 different languages? Trying to find one to do what I wanted
04:54:22 <DeM0nFiRe> And none of them did what I want, so I am sick of looking at languages so it's time to make one :P
04:55:38 <zzo38> I have also had ideas trying to find one to do what I wanted, although different than yours. Still read this I wrote my ideas of what I wanted in a specific usage programming language https://devlabs.linuxassist.net/projects/texnicard/wiki/Dangelo_Programming_Language It could probably be done with enough extensions to Haskell, though.
04:58:07 <DeM0nFiRe> LLVM is pretty cool stuff, but I couldn't quite find a way to implement what I wanted on top of it
04:59:03 <zzo38> I like LLVM too. I think LLVM is much better designed than C.
04:59:56 <zzo38> One thing is if there are new reserved words, they will never conflict with any names you use in your program.
05:00:22 <zzo38> LLVM with powerful macro preprocessor would be very good programming language.
05:00:36 <DeM0nFiRe> I will likely later change my language up a bit to make it work on LLVM (I would mainly just have to remove the C++ interop stuff
05:01:45 <DeM0nFiRe> The C++ interop stuff makes it more useful to me as a scripting language for games, but LLVM would add better C interop plus presumedly MUCH better performance, which would be better for a standalone language
05:05:22 <zzo38> I have included Forth in MegaZeux for use as an interpreted language; MegaZeux also has Robotic, and you can use both codes in the same game world.
05:06:24 <DeM0nFiRe> This MegaZeux http://en.wikipedia.org/wiki/MegaZeux ?
05:07:44 <zzo38> Yes, that one. However I made some extensions to it which are available here: http://zzo38computer.cjb.net/mzx1/mzx_extended/
05:08:35 <zzo38> Here are some examples of the Forth codes that you can use with it: http://www.digitalmzx.net/wiki/index.php?title=PZX#Examples_of_Forth_Codes
05:09:07 <zzo38> (Understanding ZZT would also help you to understand the uses of the examples better)
05:10:03 <DeM0nFiRe> Heh, well, I kind of doubt any of this would be directly useful for what I do, anyway. Know where I can find more technical info about things like the renderer and such?
05:11:09 <zzo38> MegaZeux is using SDL. And I have used SDL for other programs too.
05:11:44 <zzo38> I like SDL, though.
05:11:46 <elliott> does zzt like things even count as rendering
05:11:54 <elliott> http://www.textmodegames.com/images/screens/zzt.gif pro rendering
05:12:50 <evincar> elliott: Sure, you're rendering to a high-level (char+fg+bg) display, rather than a low-level (r+g+b) one.
05:12:51 <DeM0nFiRe> zzo38: No yeah I was just thinking allowed. I hadn't ever heard of MegaZeux before so I was wondering if it's something worth looking more into for myself
05:13:30 <zzo38> My own extensions of MegaZeux do allow writing custom renderers in Forth, although it is not very well documented.
05:14:01 <zzo38> Here describes a series of games I make with MegaZeux: http://www.digitalmzx.net/wiki/index.php?title=Super_ASCII_MZX_Town
05:14:18 <DeM0nFiRe> I like ascii rendering, it's pretty cool
05:14:25 <zzo38> Which things under "Criticize" do you believe and which ones not?
05:14:26 <DeM0nFiRe> I wish I had a game idea that would be good for it lol
05:15:01 <monqy> This game is bad because Hitler played it.
05:15:04 <zzo38> Note that MegaZeux does allow you to customize the character set (even at runtime), although I just used the CP437
05:15:21 <DeM0nFiRe> Ahh by ASCII I was being bad and I meant text rendering :P
05:15:25 <zzo38> DeM0nFiRe: I mean which ones you believe are correct and which ones you believe are incorrect
05:16:10 <DeM0nFiRe> Uhh my guess is that everything is false?
05:16:10 <zzo38> ("ASCII" appears in its name because the entire series uses only CP437 character set)
05:16:36 <DeM0nFiRe> If I was going to do a text game I would likely use the extended ASCII
05:16:43 <zzo38> OK, I believe you are correct that everything there is false
05:16:56 <zzo38> The stuff other than the "Criticize" list is correct, though.
05:17:20 <DeM0nFiRe> Did the digital MZX people really say all of it was true though? o.0
05:18:05 <zzo38> DeM0nFiRe: Well, sort of. Actually some of them are things other people said, but some are other stuff, or things in between these extremes, etc
05:18:43 <zzo38> For example, "This game is bad because Hitler played it." is actually a quotation from a scroll in one of the levels in this game.
05:19:22 <zzo38> "MagicGems are exactly like ZZT gems." is a statement general to MegaZeux, not specific to my game, although many people believe it to be correct although it isn't true at all.
05:19:46 <DeM0nFiRe> Heh well, clearly I would have no comment on that since I know what neither gems are :D
05:21:15 -!- elliott has quit (Ping timeout: 260 seconds).
05:21:58 <zzo38> Just note that the example Forth code I have linked to is much closer to being like ZZT gems.
05:22:21 <DeM0nFiRe> I can't wait til I have my machine finished, it will open up a lot of possibilities for me
05:22:56 <zzo38> "In one level you have to go through a corridor of lava with a windy potion and then quickly retreat from danger." Actually someone is being deluded by one of the puzzles; that is not the way to solve the puzzle at all.
05:24:46 <zzo38> There is the world file ZIP in case you want to play a game: http://zzo38computer.cjb.net/mzx1/ASCMZXTO/ascmzxto.zip
05:25:03 <DeM0nFiRe> Heh would I need to install MZX to run it?
05:25:12 <zzo38> You also need MegaZeux; select the file you need from http://zzo38computer.cjb.net/mzx1/mzx_extended/
05:25:25 <DeM0nFiRe> lol, sorry, I am not going to install that right now
05:26:02 <zzo38> (You do not need the megazeux.4th file unless you are writing games that use Forth codes; if you are running a game using Forth codes it will include its own copy of megazeux.4th)
05:27:09 <zzo38> It is not an installer; simply unzip it into a directory, and then edit the config.txt to set your preferences.
05:28:36 <DeM0nFiRe> Well it's 1:30AM so I am not planning on doing anything but chatting a bit more lol
05:29:30 <DeM0nFiRe> So you said you like SDL, have you ever used OpenGL or Direct3D directly?
05:29:47 -!- Nisstyre has joined.
05:29:54 <zzo38> Did you know I have play D&D game? I have even recorded it, although I am not finished recording the second session
05:30:02 <zzo38> I have never used OpenGL or Direct3D.
05:30:47 <DeM0nFiRe> Ahh. Took me a while to decide to use OpenGL directly. I used SDL and a few different wrappers for Ruby of it before that
05:31:37 <zzo38> I have never used the 3D rendering stuff
05:31:58 <zzo38> In fact one program I wrote using SDL is available on Esolang wiki
05:32:02 <DeM0nFiRe> Yeah I am not actually using OpenGL for 3D stuff right now either
05:32:14 <monqy> direct opengl is pretty uglygross ime; i prefer sdl
05:32:44 <DeM0nFiRe> Most of the ugly stuff (like glBegin()/glEnd()) has been removed from OpenGL
05:33:06 <monqy> is it just shaders now or what
05:33:06 <DeM0nFiRe> (implementations will still let you use it for backwards compatibility reasons, but you aren't supposed to :P )
05:33:15 <DeM0nFiRe> Yep, everything's shader based now
05:33:51 <DeM0nFiRe> So I write OpenGL 3.1 compliant code (mostly) but I do it in an OpenGL 2.0 context so that it can be used on more machines
05:34:08 <DeM0nFiRe> Since I am not using things like geometry shaders from GL3.1
05:35:00 <evincar> Direct mode was intuitive, but unwieldy. I'm glad it's been deprecated.
05:35:16 <DeM0nFiRe> It was something that was really easy to get started with
05:35:32 <DeM0nFiRe> But it was very very slow and it made your code invariably ugly
05:35:38 <evincar> But if you tried writing a large project with it, God help you.
05:35:55 <DeM0nFiRe> The GL 3.1 way to do things is harder to get set up initially, but once you do, everything is just nice
05:36:03 <evincar> // Warning: GL2.0 code ahead. Here be dragons.
05:36:14 <DeM0nFiRe> Faster, clearer, easier to maintain, easier to modify
05:36:38 <DeM0nFiRe> I am using only one thing that is in GL2.0 but not GL3.1
05:37:05 <DeM0nFiRe> I have been too lazy to set up the equivalent with GL_TRIANGLE_STRIP or GL_TRIANGLES
05:37:14 <DeM0nFiRe> I will likely change it later, though
05:37:33 <DeM0nFiRe> Oh yeah also I am using GLSL 1.1 obviously :P
05:38:03 <DeM0nFiRe> But not using anything that has been removed from later GLSL versions
05:42:44 <zzo38> Now I made a list of implementation in my esolang wiki user page
05:45:10 <zzo38> My implementation of Deadfish in dc seems very strange
05:45:58 <zzo38> The entire program fits right here (it implements the XKCD variation of Deadfish): [p]1:z[d*]2:z[1+]3:z[1-]4:z[0sB]dsAx[lB0>AlB256=A0d?lBz;zxsBclCx]dsCx
05:46:30 <zzo38> dc codes are often like that, but this one is a bit more strange than most dc codes in one way
05:49:53 -!- DeM0nFiRe has quit (Quit: KVIrc 4.0.4 Insomnia http://www.kvirc.net/).
05:56:29 <zzo38> Although it is already possible to implement Markov chain using FurryScript, it might be better to add some commands to specifically deal with Markov chain, although I am unsure.
06:11:23 -!- zzo38 has quit (Remote host closed the connection).
06:42:15 -!- Patashu has joined.
06:43:17 <Patashu> Looks like my brother's CRT monitor has a problem. It's permanently stuck on projecting an apple core shape (sides bending in) and the bottom of it goes off screen even when you try to shrink it
06:46:53 <pikhq_> Many things that could be, none of them good.
06:47:04 <pikhq_> Have you considered getting a monitor made this millenium?
06:47:13 <pikhq_> (god I love that I can say that)
06:50:08 <Patashu> I -think- it was made this millenium
06:50:17 <Patashu> But I mean, why fix it if it ain't broke? Except now it is
06:52:21 <Patashu> I think it's a good educational experience. He just learned how to manipulate windows (minimize restore etc) using just the keyboard
06:53:37 -!- Taneb|Kindle has joined.
06:54:59 <Taneb|Kindle> I seem to have hepython documentation on my laptop
06:57:52 <evincar> I'm trying to decide on which Lisp/Scheme web framework to use.
06:58:06 <evincar> Anybody have meaningful opinions on that?
06:58:43 <Taneb|Kindle> I think I'll give Tanebcraft a futuristic theme
07:00:10 <Taneb|Kindle> I have never used either Lisp/Scheme or a web framework
07:00:45 <evincar> I guess I'll go with PLT, a.k.a. Racket, and hope for the best.
07:06:34 <Taneb|Kindle> One thing that the kindle lacks is tabbed browsing
07:12:19 -!- Taneb|Kindle has quit (Ping timeout: 252 seconds).
07:26:46 -!- chickenzilla has joined.
07:46:42 <evincar> This library has a lot of needless abstraction. :(
07:46:52 <evincar> And macro trickery for the mere sake of it.
07:48:08 <pikhq_> No abstraction is needless. Most abstraction is underabstracted.
07:48:19 <pikhq_> It ain't abstract enough until it's an endofunctor!
07:48:36 <monqy> I agree with pikhq_; you're probably missing some point or another
07:49:00 <pikhq_> Many programmers are genuinely bad at abstraction.
07:49:24 <monqy> I guess I'm not used to misabstraction horrors
07:49:28 <monqy> usually it's the other way around
07:49:48 <pikhq_> Yeah, but when you get misabstraction it's *bad*.
07:51:30 <monqy> evincar: any examples? I'm a bit curious, now
07:52:20 -!- evincar has quit (Ping timeout: 252 seconds).
07:52:36 -!- sebbu2 has joined.
07:54:06 -!- sebbu has quit (Ping timeout: 240 seconds).
07:54:08 -!- sebbu2 has changed nick to sebbu.
08:00:54 -!- nooga has joined.
08:01:52 -!- pikhq_ has quit (Ping timeout: 252 seconds).
08:01:58 -!- pikhq has joined.
08:06:32 <nooga> clang has got blocks in C
08:07:34 -!- BeholdMyGlory has joined.
08:18:38 -!- evincar has joined.
08:23:50 <fizzie> "For the benefit of those who observe Webster’s spelling reforms, \textblockcolor is defined as a synonym for \textblockcolour, but those who would condemn such anaemic half measures can use \tekstblokkulur instead. There are also the corresponding spelling-reform variants of \textblockrulecolour."
08:24:06 <evincar> monqy: It's not that bad. I'm hard to please when it comes to libraries.
08:24:32 <evincar> There are some handy macros, but they have awful names like #%#
08:24:59 <monqy> do they at least have a consistent, if not half-sensible naming scheme?
08:25:14 <evincar> They must, but I don't know where to find it.
08:25:20 <monqy> where by half sensible I mean pertaining to their function
08:25:31 <monqy> consistency alone is some sensibility, perhaps even a half
08:27:49 <evincar> In the tutorial for making a basic blog, there's this:
08:27:55 <evincar> (define new-post-formlet (formlet (#%# ,{input-string . => . title} ,{input-string . => . body}) (values title body)))
08:28:06 <evincar> (define new-post-formlet (formlet (xexpr-list ((title input-string) (body input-string))) (values title body)))
08:28:39 <evincar> Macros are all well and good, but I like things to be concise.
08:28:48 <evincar> And to reflect the most common use case, with minimal weird syntax.
08:30:29 <monqy> I don't get #%#, but depending on the other workings of the library, I see how the ,{} notation could make more sense than what you did
08:30:30 <evincar> (Formlets being their own little quirk which arise from designing a web server...framework...thing around stateful continuations.)
08:30:36 <monqy> I don't know enough to tell, of course
08:30:48 <evincar> But I'm saying that API design should
08:31:06 <evincar> Even at the cost of implementation complexity.
08:31:18 <evincar> Because it probably *won't* come at the cost of implementation complexity.
08:31:29 <evincar> In all but pathological cases.
08:32:01 <evincar> It's not even that I can't figure out how to use it.
08:32:15 <evincar> It should just be obvious.
08:32:25 <evincar> Discoverability is a huge concern in API design.
08:32:34 <evincar> A user should be able to guess what function he needs.
08:34:15 <evincar> Or maybe I'm just griping 'cause it's fun.
08:34:28 <monqy> I actually meant in terms of api design
08:36:33 <evincar> Not sure what you're getting at.
08:36:56 <evincar> But anyway, modelling web transactions with continuations is very pretty.
08:40:05 <evincar> The world calls me with a request, and I generate and call a page which returns to me with another request.
08:40:22 <evincar> The result of a form submission, etc.
08:40:47 <Patashu> you don't think about why continuations are useful until you think about async io
08:41:12 <monqy> evincar: I was talking about it might be conceptually nicer and more elegant etc etc to use a notation more like the one in the original rather than yours
08:41:51 <evincar> monqy: Oh, it might be, if you understand the reasoning behind it.
08:42:22 <monqy> well it depends on other things that can happen in the parts you changed
08:42:23 <evincar> But it's not immediately clear that #%# denotes a list of XML expressions.
08:42:32 <evincar> And I argue that it ought to be, all other things being equal.
08:42:58 <monqy> I was talking about the structure, rather than names
08:43:12 <monqy> namely, of the part with the braces and arrows, which you restructured quite a bit
08:43:29 <monqy> your names are generally more reasonable
08:43:46 <evincar> Why should I have to use braces? Why should I have to unquote what I send to this macro?
08:44:12 <monqy> I don't know! It depends on the other stuff in the library. that's my point.
08:45:02 <evincar> My point is that you ought to know, or rather, you ought to be able to discern from the code itself why it's written the way it is.
08:45:07 <evincar> I know this is a short example.
08:45:28 <evincar> So it's hardly worth discussing.
08:45:52 <monqy> if it's always of the same ,{thing . => . thing} structure, then yours is probably more reasonable, though just a slight bit less intuitive to read
08:54:43 <evincar> Racket also lets you model stateful servlets as stateless ones by serialising the continuations.
08:55:06 <evincar> Strikes me as brittle, as all of the serialised continuations are invalidated whenever you change your application.
08:55:26 <Patashu> won't non-serialised continuations be invalidated too?
08:55:49 <evincar> They'll be removed though, because the server will have stopped running the program.
08:56:03 <evincar> So they'll be invalid, but also gone.
08:56:15 <Patashu> what happens if you unserialize an invalid continuation?
08:56:17 <evincar> So they can't persist to fuck shit up in the future.
08:56:36 <evincar> Uh, presumably your application suffers catastrophic failure.
08:56:58 <Patashu> It might be smart enough to throw an exception
08:57:43 <evincar> There has to be a better way of going about it.
08:58:07 <Patashu> version-sensitive continuations?
08:58:35 <evincar> That's still the same line of thinking though.
08:58:54 <evincar> Ideally I'd like forward-compatible continuations.
08:59:04 -!- Vorpal has joined.
08:59:19 <evincar> Those that don't fail unless what they refer to no longer exists.
09:00:02 <Patashu> do any programs even do that atm?
09:00:04 <Patashu> does chrome do it yet? lol
09:03:49 <cheater> evincar, every time you upgrade you have to make a migration script unless you are happy with the continuations being thrown away
09:04:06 <cheater> which is ok a lot of the time
09:07:11 <evincar> cheater: No, explicit migration wouldn't be necessary if the continuations were genuinely forward-compatible.
09:07:43 -!- CakeProphet has joined.
09:07:43 -!- CakeProphet has quit (Changing host).
09:07:43 -!- CakeProphet has joined.
09:08:17 <evincar> What I'm wondering is what kind of language has continuations for referring to "where I am now and what the rest of the compuation is" in a way that doesn't depend on the rest of the program.
09:08:36 <Patashu> I'm picturing some kind of diff-related utility
09:08:46 <Patashu> like the kind I read about that works on arbitrary data types not just strings
09:08:51 <evincar> If you make continuations explicit by writing things in CPS, your whole program is inside-out and the "rest" is "goddamn everything".
09:09:18 <cheater> evincar: this is impossible
09:12:15 <evincar> I disagree. If you specify things at a sufficiently high level, you can probably reduce dependencies to the point where it's feasible.
09:12:33 <Patashu> what about a 'language simulator' where the operations you can do on the code are small and atomic, so it can keep track of every programming element, e.g. assigning IDs to them?
09:12:41 <Patashu> it'd be horrifically slow of course
09:13:59 <evincar> This is probably one of those things I assume should just work which turns out to be equivalent to the halting problem.
09:14:53 <evincar> monqy: Something bother you about the term?
09:14:59 <cheater> how do you automatically migrate a continuation from "def main { f() } def f {yield; print 2 }" to "def main { print 2+2, yield' g() } def g { z = 7 ; yield; v = 3 }"
09:15:16 <cheater> sorry that ' should be a ;
09:15:31 <monqy> evincar: if "the term" means "comparing this to the halting problem"
09:15:37 <cheater> you cannot possibly even compare those code paths
09:16:00 <Patashu> @cheater: <Patashu> what about a 'language simulator' where the operations you can do on the code are small and atomic, so it can keep track of every programming element, e.g. assigning IDs to them?
09:16:07 <monqy> evincar: it's not related to the halting problem at all, let alone equivalent
09:16:35 <cheater> Patashu, i am thinking of writing an AST/ASG code editor at some point
09:16:40 <cheater> this could facilitate such a language
09:16:41 <evincar> monqy: No, but some problems can be reduced to "if you could do this, then you could solve the halting problem, therefore your ideas are bad and you are bad".
09:17:27 <cheater> because it will be the first version and it will suck
09:17:38 <cheater> ell comes from elliott which sucks too
09:17:50 <cheater> but i hope the language will only suck half as much so only ELL
09:17:58 <evincar> cheater: The point is, anyway, that you can't resume f() between versions because it's missing in the newer version. But if f() continues to exist, it might be possible.
09:18:08 -!- azaq23 has quit (Ping timeout: 252 seconds).
09:18:52 <cheater> evincar, then you would keep f around as a stub. so replace the f in my question with an empty function and think about that again. the answer is the same.
09:19:22 <cheater> you can keep code around forever if you want but what you are doing is explicitly writing a migration path, which is exactly what you didn't want
09:19:43 <monqy> I think maintaining forwards compatability in this manner wouldn't be useful, and would only lead to pain in the programmers, in trying to make it useful
09:19:48 <Patashu> the IDE could write it for you
09:19:56 <Patashu> and then just don't modify the code outside of the IDE ever ever ever!!!
09:20:39 <evincar> Yeah, it wouldn't be useful.
09:20:51 <evincar> But it's an amusing thought experiment at five in the morning.
09:21:10 <Patashu> evincar, it's 4 o'clock in the morning. What on earth are you doing?
09:21:30 <evincar> Messing with time, apparently.
09:21:42 <evincar> Through the magic of being on a different part of a sphere.
09:22:01 <Patashu> I just realized I misquoted a meme oops
09:22:19 <cheater> you are wrong, hotswapping of code is very important and is done in a lot of places
09:22:30 <cheater> ksplice does that to the linux kernel
09:22:50 <cheater> you mean as in flex bison?
09:23:07 <Patashu> flex is a platform for flash: http://www.adobe.com/products/flex/
09:23:38 <monqy> cheater: hotswapping may be useful, but using it to maintain forwards compatability in the general case? maybe for special cases, sure
09:24:17 <monqy> or were you not replying to me
09:24:20 <monqy> in which case oops
09:25:08 <cheater> forward compatibility should be managed at the level of one update, not as a concept of making old code compatible with new code in one step
09:25:21 <cheater> unless that one step is actually composed out of multiple such atomic steps
09:25:46 <cheater> if you see it that way it becomes a much less daunting task
09:26:05 <cheater> in fact you can then probably make it backwards compatible too
09:26:52 <evincar> And I'm talking about web transactions specifically.
09:28:10 <monqy> cheater: maybe there's some sort of disconnect in understanding and we're actually talking about different things
09:28:12 <cheater> yeah that is fairly straightforward
09:28:23 <evincar> Where the browser accepts a page and yields a request, and the app accepts a request and yields a page.
09:28:34 <cheater> basically you have your data structure, and the state of a transaction
09:28:49 <cheater> with web apps your data structure is migrated server-side anyways
09:29:26 <cheater> and the transaction is just a state of the data structure that is like a VCS brabch, not merged into the main version until it is committed
09:29:51 <cheater> there is no reason you couldn't migrate that together with the main version of the database though
09:30:36 <cheater> the code is irrelevant to transactions
09:31:17 <cheater> if you are mid transaction, code might decide what possible changes you can do to the data
09:31:44 <cheater> there are usually just a few paths from every identifiable checkpoint in a transaction
09:32:04 <monqy> anyway, what I meant, more specifically, was that I don't think it would be generally useful (though it would be in some cases, maybe even the common case) to swap stuff in the way evincar described for forwards-compatability purposes without some sort of migration assistance
09:32:04 <cheater> you just want those checkpoints to map to something in the new version and that is all
09:32:22 <monqy> and I probably messed up a bunch explaining previously and then
09:32:49 <cheater> what do you mean by migration assistance and why did you think evincar didn't want it
09:33:15 <evincar> But yeah, I don't think it would be useful at all.
09:33:22 <evincar> It might be, in a way I'm not considering.
09:33:42 <monqy> I mean something explicit to assist with migration from the old code to the new code
09:33:44 <cheater> there are lots of things with long standing migrations
09:34:01 <cheater> it is a true and important problem in the Industry
09:34:12 <evincar> Right, but not generally between requests from the same user. :P
09:34:39 <evincar> My code should account for that.
09:34:39 <monqy> what I inferred from what evincar described is that he wanted it to be based on names, without requirement for writing migrations between versions
09:34:51 <cheater> you are thinking at the wrong level
09:35:03 <cheater> building applications, be it web apps or not, is not about pages
09:35:08 <cheater> or screens or dialogs or panels
09:35:26 <evincar> Fine. I yield him "some data".
09:35:37 <cheater> then he comes back with that data
09:35:42 <evincar> And based on said data, he yields me "some request".
09:35:50 <cheater> either you invalidate it or you give him a migration path
09:36:50 <cheater> a satellite with a realtime control spread across two processors
09:37:18 <cheater> the integration time of the PID is several minutes in order to get proper resolution
09:37:54 <monqy> for swapping of hot code in the general case, V8's optimizer/whatever does that, right?
09:37:56 <cheater> you want to upgrade the program without knocking the satellite off orbit. if the PID has to collect data over several minutes again while being unable to correct the orbit, the satellite is gone
09:38:48 <monqy> by general case I mean it is a specific application of a more general thing than swapping specifically for transition between versions
09:39:01 <cheater> the engine subsystem gets correction data based on the controller's output, and feeds the controller back with sensory information it got
09:39:28 <cheater> that sensory information changes format in the new version because e.g. the old version allowed a bug
09:39:53 <cheater> here is a solid application of this programming problem
09:42:23 <evincar> Solution 1: version everything. Solution 2: name fields and establish (possibly bidirectional) conversions.
09:42:46 <evincar> Solution 2 is what Blender does for serialising structs in its save format.
09:43:19 <evincar> Making them forward and backward compatible between versions, within reason.
09:43:30 <monqy> how is solution 1 a solution, and what does solution 2 mean
09:43:46 <monqy> alternatively, how are either of them solutions, and what do both of them mean
09:44:14 <evincar> Solution 1 = accept data in the old format but only generate it in the new one, and everything will be sorted eventually and then you can disable the old format.
09:44:53 <monqy> oh so this is about data?
09:45:01 <evincar> Solution 2 = establish a conversion between the two formats based on some metadata.
09:45:19 <evincar> Well, only insofar as code isn't data.
09:45:35 <cheater> it was, data and program are dual to eachother
09:45:38 <evincar> But I was also talking about Scheme, so I guess I was wrong.
09:47:15 <monqy> where by "about data" I mean "about establishing a translation between data formats, rather than code paths/etc."
09:47:31 <evincar> It amounts to the same thing, though.
09:47:48 <cheater> your code path is part of the data format.
09:47:58 <evincar> Because code paths, as serialised continuations, are data.
09:48:37 <evincar> But the obvious format to use isn't amenable to change.
09:48:48 <monqy> what's the obvious format
09:48:50 <evincar> So I guess I'm speculating about other formats.
09:49:04 <monqy> anyway I kind of forget what I meant
09:49:17 <evincar> I dunno, I ought to sleep.
09:49:57 <evincar> This hasn't been terribly useful, and if elliott reads it later he'll probably find some reason or another to shout at me.
09:50:16 <monqy> anyway I think I got confused at some point
09:50:19 <evincar> I imagine him as a small, skinny, angry fellow.
09:50:25 <monqy> and thought the conversation was about something it wasn't
09:50:33 <evincar> I guess I don't need to imagine that he's an angry fellow.
09:50:35 <monqy> and then started talking about bad things
09:50:41 <evincar> He's sort of demonstrated that.
09:51:07 <evincar> Oh well, misunderstandings can be entertaining at least, and fruitful at best.
09:51:12 <monqy> dear elliott: disregard everything i said in the preceeding conversation it (the conversation) was stupid and i was confused
09:51:41 <evincar> Did you just "haha disregard that I suck cocks" yourself?
09:51:48 <Patashu> is it possible to have serialized continuations and also have native code compiling?
09:52:03 <monqy> evincar: what does that mean
09:52:39 <monqy> evincar: depending, I may have
09:52:43 <evincar> monqy: http://knowyourmeme.com/memes/disregard-that-i-suck-cocks
09:52:45 <CakeProphet> Patashu: the serialized continuations would have to be either 1) platform dependent 2) bytecode interpreted seperately from the native code
09:53:04 -!- cheater has quit (Read error: Operation timed out).
09:53:09 <Patashu> haha, what a weird thought. compiling to both bytecode AND native code and running both simultaneously
09:53:24 <monqy> evincar: sure whatever
09:53:26 <evincar> Woo I got erbo'y talkin' 'bout what ah did be talkin' 'bout.
09:53:51 -!- cheater has joined.
09:53:55 <evincar> monqy: It wasn't a good joke but it was a joke and I'm dealing with insomnia.
09:54:00 <CakeProphet> Patashu: well not simultaneous. Running one or the other when appropriate.
09:54:32 <Patashu> CakeProphet: it could be multi-threaded
09:54:39 <evincar> Patashu: That's essentially the point of JIT compilation on architectures that otherwise use bytecode.
09:55:10 <evincar> You JIT what you can and bytecode what you have to.
09:55:16 <Patashu> then threads that can run entirely on native code do so, while threads that need e.g. serialized continuations run on the bytecode version
09:55:28 <Patashu> I don't think JVM works like that (it never needs to stick to bytecode, it JITs when it detects it needs to)
09:56:01 <evincar> I dunno, I'm not up on it.
09:56:15 <Patashu> as soon as I'm over the jitters
09:56:31 <evincar> I thought compilation to native code was done primarily as an optimisation.
09:56:40 <evincar> But maybe I'm living in the 90s.
09:56:55 <monqy> compilation to native code is done because it's hip
09:56:58 <monqy> there's no other reason
09:57:11 <evincar> Not, y'know, performance or anything like that.
09:57:36 -!- EgoBot has quit (Remote host closed the connection).
09:57:47 -!- EgoBot has joined.
09:57:59 <evincar> I've slowly been realising lately that a language ought to spare no expense when it comes to abstraction, and leave it up to the poor compiler writer to come up with clever optimisations to compensate.
09:58:22 <evincar> Language: EVERYTHING IS A CONSLIST
09:58:39 <evincar> Implementor: Ugh, no, dammit, sometimes things are numbers.
09:58:54 <evincar> Language: I HAVE INFINITE MEMORY
09:59:20 <Patashu> > C and fortran are still an order of magnitude faster than any other language
09:59:21 <lambdabot> <no location info>: parse error on input `of'
09:59:42 <Patashu> haha, it took as long as 'of' to realize, hey, this ain't haskell!
10:00:40 <evincar> In a language I was working on recently, that'd've parsed correctly.
10:01:00 <Patashu> would To Kill a Mockingbird be a valid program?
10:01:11 <evincar> As ((C) and (fortran are still an order of magnitude faster than)(any (other language))).
10:01:27 <evincar> Because "and" and "any" are builtins and identifiers can be multi-token.
10:02:03 <evincar> I mean, it wouldn't've *run*.
10:02:41 <monqy> "identifiers can be multi-token" wouldn't it be simpler to expand the lexical syntax to make multi-word identifier tokens?
10:03:09 <monqy> one of them is simpler
10:03:20 <Patashu> they sound like the same thing to me............
10:03:30 <monqy> one of them jives with me betterly
10:04:41 <evincar> Implementation-wise, yeah, identifier ::= identifier-part (ws* identifier-part)*
10:04:52 <monqy> I wouldn't want to bother having to stick my tokens together to form identifiers; it strikes me cleaner to have identifiers parsed nicely by the lexer
10:05:16 <monqy> but who cares about tokens what are those
10:05:47 <evincar> The feature is good for readability but bad for expectations.
10:06:11 <evincar> "if foo bar" is a parse error because "foo bar" is an identifier.
10:06:30 <evincar> I forget how I resolved that.
10:06:40 <evincar> Other than "if (foo) bar".
10:08:03 <Patashu> tokens being able to have spaces in them seems like it's just asking for trouble, unless you're doing it to prove something
10:09:05 <evincar> I was doing it to prove that PotatoDomainInteractionControllerSystem is unreadable.
10:09:13 <monqy> but it is readable
10:09:19 <monqy> but why would you type it
10:09:39 <Patashu> what about potato_domain_interaction_controller_system? that's readable as fuc
10:09:46 <Patashu> and where the token begins and ends is embedded into it as a bonus
10:09:58 <monqy> potato-domain-interaction-controller-system is good too
10:09:59 <evincar> Also to make an intelligently structured language with minimal punctuation.
10:10:45 <monqy> by punctuation do you mean "characters like .!~#$%^&*" or what
10:11:23 <monqy> but the other way around? maybe? who knows???
10:11:36 <monqy> depends on which way you're going. either way, yes.
10:11:45 <monqy> it is a point which I was planning to make
10:11:48 <monqy> after I got my answer
10:12:04 <evincar> And yes, by punctuation I mean "characters like fuck".
10:12:26 <monqy> seems like a bit of a strange goal
10:12:32 <evincar> Alternatively, whatever ispunct() says.
10:13:00 <evincar> It was one of the lesser important goals of that language.
10:13:08 <Patashu> SQL has low amounts of symbols
10:13:26 <evincar> Bluh. Too much redundancy though.
10:14:11 <Patashu> http://golf.shinh.org/reveal.rb?1000+digits/leonid+%28alnum%29_1226043321&rb
10:14:25 <evincar> I guess the point is that punctuation in a language should be intuitively meaningful, not just arbitrarily or conventionally specified.
10:14:36 <evincar> Because keywords are self-evident.
10:14:57 <evincar> So punctuation ought to be held as close to that standard as possible.
10:15:42 <monqy> keywords are hardly self-evident
10:15:50 <Patashu> I don't mind punctuation most of the time because it's similar in most languages
10:16:01 <monqy> and it's as much defined by convention as other symbols
10:16:15 <evincar> This goes back to the API design argument.
10:16:23 <evincar> A keyword should give you a clue as to what it does.
10:16:41 <monqy> + gives as much a clue about what it does as "plus"
10:17:00 <evincar> Well, yes, but that's an established convention.
10:17:14 <monqy> 03:16:00 < evincar> I guess the point is that punctuation in a language should be intuitively meaningful, not just arbitrarily or conventionally specified.
10:17:16 <evincar> Whereas ++ isn't universally recognised as concatenation.
10:17:26 <Patashu> like 95% of its features are new keywords
10:17:33 <monqy> evincar: you said yourself that it shouldn't just be conventionally specified???
10:17:37 <monqy> evincar: maybe you're tired??
10:17:54 <Patashu> I think he means, established convention for -everyone- who speaks english
10:18:04 <Patashu> ! is not, because what does ! mean? this sentence is really important?
10:18:21 <evincar> What I should have said was "the convention shouldn't be fully internal to the language: it should have a rational basis elsewhere".
10:18:51 <monqy> what about when that would only hinder it
10:19:43 <evincar> And in an esolang, that's entitled to happen more often than not.
10:19:49 <evincar> But usability is usability.
10:20:10 <evincar> You've got to respect convention and human constraints, whether you like it or not.
10:20:18 <evincar> And I'm really leaving now.
10:20:21 -!- evincar has quit (Quit: leaving).
10:20:26 <Patashu> have you ever looked at inform, the scripting language for IFs?
10:20:34 <Patashu> inform is written to look as much like english as possible
10:29:05 <Patashu> how do you send someone a message such that it bugs them about them the next time they come on
10:29:46 <lambdabot> tell <nick> <message>. When <nick> shows activity, tell them <message>.
10:30:25 <Patashu> tell evincar Check out this language, it's meant to be as english-like as possible: http://inform7.com/
10:30:35 <monqy> with a @ or ? in front
10:30:37 <Patashu> @tell evincar Check out this language, it's meant to be as english-like as possible: http://inform7.com/
10:32:48 <monqy> being too much like english is a bad thing imo
10:33:07 <Patashu> I think so too in this case
10:33:19 <Patashu> if you word your sentence wrong the person you talk to is like 'okay I get what you mean'
10:33:51 <monqy> even if being like being like english itself isn't a hinderenace enough, it's bound just to end up being confusing constructing sentences that the thing will understand
10:35:06 <monqy> I agree that it's best to stick to well-established convention when it's not a hinderence, but I think a better rule is simply "don't be stupid"
10:35:42 <monqy> (programming language syntax that mimics natural language is stupid)
10:36:26 <monqy> (an inconsistent mess of symbols instead of making sense when it'd be just as easy to provide an english name is also stupid)
10:37:47 <monqy> (and in between those, it's kind of stupid to turn a simple consistent set of newly-introduced symbols into a mess of english words, especially when they aren't descriptive enough to actually convey more meaning or be more memorable than the symbols without being stupidly verbose)
10:37:59 <monqy> ((where by kind of stupid, I mean stupid))
10:38:35 <monqy> (((I put this here mostly just so I can tell evincar about it)))
10:39:54 <Patashu> what do you think about perl syntax?
10:48:41 -!- monqy has quit (Quit: hello).
11:03:49 <fizzie> ../... in a scalar context is indeed the best.
11:08:29 <Patashu> there's a ... operator too?
11:08:53 <fizzie> It's almost but not quite exactly like '..'.
11:09:01 <fizzie> In list context, it is the same.
11:10:08 <fizzie> In scalar context, there's a slight difference in whether it tests the right operand on the first time when it becomes true.
11:11:20 <Patashu> http://www.perl.com/pub/2004/06/18/variables.html wow
11:13:43 <fizzie> !perl @a = (1,2,3,4); for (@a) { print "dotdot $_ " if $_==1 .. 'truu'; print "dotdotdot $_ " if $_==1 ... 'truu'; }
11:13:44 <EgoBot> dotdot 1 dotdotdot 1 dotdotdot 2
11:14:38 <fizzie> The dotdot tests the right side also on the round when $_ == 1, and thus becomes false immediately; the dotdotdot doesn't test until $_ = 2.
11:16:11 <fizzie> If you wonder about the "'truu'", I just needed something that's always true, except it couldn't be a constant number (e.g. 1) because if it's that, it gets magically automatically turned from 1 to $. == 1.
11:19:05 -!- GreaseMonkey has quit (Quit: The Other Game).
11:19:43 <Patashu> http://perldoc.perl.org/perlop.html#The-Triple-Dot-Operator
11:19:52 <Patashu> doesn't talk about its flipflop use
11:20:13 <Patashu> it's talked about udner range operators
11:21:11 <fizzie> Right, there's also that use. Though I thought the triple-dot stand-in was something quite new?
11:21:37 <fizzie> (I mean post-5.10 new here.)
11:22:06 <Patashu> Perl doesn't officially have a no-op operator, but the bare constants 0 and 1 are special-cased to not produce a warning in a void context
11:22:15 <Patashu> it's like stuff you see in java/C# just because C did it :O)
11:58:44 <nooga> where could I put the 0 in Perl?
12:02:59 -!- Sgeo has joined.
12:03:11 <Gregor> It's like having a label at the end of a loop in C and using 0; just because labels need a statement.
12:04:05 <fizzie> Or wanting to have a local variable in a case X: statement, and having to either insert an artificial {block} there, or put a 0; or something after the label.
12:04:38 <fizzie> Admittedly with an artifical block the scope of it won't then extend to the other case statements.
12:05:10 <fizzie> (And makes it C++-legal.)
12:05:34 <Gregor> With C89 you need a block too :P
12:05:41 <nooga> you could do just ;
12:05:56 <nooga> if(something) ; else blah blah;
12:07:00 <nooga> i remember playing with this
12:07:58 -!- boily has joined.
12:07:59 <Gregor> But label:; reads like shit :)
12:08:44 <fizzie> Grammar-wise the ";" is an expression statement, only the expression is optional.
12:09:29 <fizzie> Possibly more often seen in for/while than elsewhere.
12:10:18 <fizzie> What also would look real stupid is "do ; while (whatever);"
12:10:41 <Patashu> is the idea that it looks stupid arbitrary or based on polling?
12:10:44 -!- Taneb|Kindle has joined.
12:11:00 <fizzie> "Do a sea monster while whatever."
12:11:21 <Patashu> `addquote <fizzie> "Do a sea monster while whatever."
12:11:26 <HackEgo> 624) <fizzie> "Do a sea monster while whatever."
12:11:34 <fizzie> Yes, for some values of "right".
12:12:14 <fizzie> "No, *you're* the dick!"
12:12:18 <Patashu> <things you can do right,bool>
12:16:18 -!- Taneb|Kindle has quit (Ping timeout: 252 seconds).
12:17:22 <itidus20> is the word "do" redundant for a pc? :D
12:19:57 <Patashu> introducing the new keyword, dont
12:20:13 <Patashu> infuriating grammar pedants with its lack of apostrophe
12:30:16 <itidus20> dont { printf("blah\n"); } while (i > 5);
12:31:50 <itidus20> nou, ya' a dick, ya' the biggest dick in all of canada
12:57:08 <Gregor> rezzo crashes for /no freaking reason/ on Mac ...
12:57:19 <Gregor> It crashes while allocating the SDL window.
12:57:53 <Gregor> It's like SDL says "I need a window this size" and the Mac goes "NOT PRETTY ENOUGH" and barfs all over you.
13:01:55 <Gregor> ALSO: I decided before uninstalling MacPorts, I should update it (I don't know why)
13:01:59 <Gregor> It's taking FOREVER to update >_<
13:34:22 <fizzie> It took a day or two when I last booted the iBook and told it to update MacPorts, and I don't even have really much of anything installed from there.
13:37:29 <fizzie> The global descriptor table?
13:40:20 -!- Phantom_Hoover has joined.
13:41:23 -!- iamcal has quit (Ping timeout: 276 seconds).
13:41:29 -!- iamcal has joined.
13:45:45 <itidus20> Aesthetic Disgrace Error E9504
13:46:01 <itidus20> Please see your Graphic Designer.
13:46:39 <itidus20> (recycling someone elses joke)
13:47:02 <Gregor> A typo has created the greatest forename ever: Weclome.
13:47:42 <Gregor> Mordechai Weclome Birkenstein
13:47:55 <Gregor> Mordechai Weclome-Birkenstein
13:48:05 <itidus20> Phantom_Hoover: <Gregor> It's like SDL says "I need a window this size" and the Mac goes "NOT PRETTY ENOUGH" and barfs all over you.
13:49:18 <itidus20> that joke has so much potential... oy vey
13:49:23 <Gregor> Phantom_Hoover: Idonno, it sounds hyperisraeli to me.
13:49:45 <Gregor> The thing is, it actually crashes in the middle of Aqua garbage.
13:49:58 <Gregor> It's not SDL that crashes, it's the Aqua/Cocoa/whateverTF libraries.
13:50:58 <itidus20> Error "The ratio of your window's width to it's height is not expressible as a ratio of numbers less than 20"
13:52:54 <itidus20> Your background color is atrocious. Your fontfaces are outdated, and your borders look like children's scribbles.
13:54:16 <itidus20> Now get your ugly yeller keister offa my property while (i > 0) i--;
13:54:45 -!- GuestIceKovu has joined.
13:55:25 -!- Slereah has quit (Ping timeout: 268 seconds).
13:57:41 <itidus20> for whatever reason regular polygons are ugly in computer interfaces
13:58:00 <Patashu> I don't think a polygon can be irregular
13:58:04 <Patashu> you need at least four vertices for that
14:01:20 <itidus20> in any case we humans like our rectangles
14:01:32 -!- iamcal has quit (*.net *.split).
14:02:23 <itidus20> Patashu: have you ever heard of the game N?
14:04:05 <itidus20> Either way, I have been reading their blog today. It seems that after the success of N they have spent 4 years trying to make a 2d robot simulator. Poor things.
14:05:56 <Gregor> 2011-08-25 10:06:47.642 rezzo[21005:10b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error (1002) creating CGSWindow'
14:05:56 -!- iamcal has joined.
14:06:57 <itidus20> it's because steve jobs resigned
14:07:05 <Patashu> http://www.google.com.au/search?sourceid=chrome&ie=UTF-8&q=Error+(1002)+creating+CGSWindow
14:10:35 <itidus20> it may just mean i'm lazy, but my planned design for a virtual machine is basically to wrap high level function calls to a bytecode
14:11:00 <itidus20> having said this.... some languages on the wiki do the same thing :D
14:11:16 <Patashu> isn't that how jvm works? before it started jitting
14:11:17 <itidus20> well not a bytecode but tokens or whatever
14:14:33 <itidus20> i think in the long run linux will be a safest bet
14:14:52 <itidus20> windows has evidently no interest in backwards compatability
14:16:00 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:16:10 <itidus20> ms platforms gradually dying off.. dos.. win3.11 .. win95.. win98.. visual basic 6 runtimes.. etc etc etc
14:16:24 <Gregor> Whereas Linux binaries from four years ago won't run :P
14:16:42 <Gregor> (Depending on how you made them)
14:16:54 <Gregor> Yeah, Linux has an abysmal track record for backwards-compatibility (though it's getting better)
14:17:08 <Gregor> And in fact, it's not Linux.
14:17:11 <Gregor> Linux has a great track record.
14:17:14 <Gregor> It's the GNU userland.
14:17:26 <itidus20> even more reason for virtual machines
14:17:37 <Gregor> Linux 3 can run binaries made with libc4 for Linux 2 :)
14:17:49 <itidus20> when you know the actual machine is going to be extinct... rely on vm
14:20:02 <itidus20> Some of the best games are built ontop of VM's.
14:20:16 <Gregor> And when the machine that runs the VM is extinct ... run it in a VM!
14:23:44 <itidus20> So the creators of N have shown that even they can fall prey to the siren's call of overengineering.
14:27:41 <itidus20> I thought(verb1) I was(verb2) clever by thinking(verb3) of creating(verb4) a skeletal animation system with no actual game in mind for it. However they spent like 4 years mucking around with one and they're not even close to having an actual game.
14:28:06 <Patashu> skeletal animation system, aka adobe flash
14:29:07 <itidus20> i dunno... they seemed to resist using common terminology such as "bone" as if it would reduce the signifigance of their work somehow.
14:30:53 <itidus20> another case of aimless r&d (they are quite happy to call the work they're doing r&d) under the guise of game development
14:31:12 <Gregor> Speaking of game design ... Rezzo! :P
14:39:45 -!- copumpkin has joined.
14:45:08 -!- caddyshack has joined.
14:47:36 -!- caddyshack has left ("Ex-Chat").
15:03:53 -!- augur has joined.
15:08:14 -!- cheater has quit (Remote host closed the connection).
15:09:08 -!- cheater has joined.
15:13:33 -!- augur_ has joined.
15:13:42 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
15:14:42 -!- augur__ has joined.
15:15:22 -!- augur has quit (Read error: Connection reset by peer).
15:18:05 -!- augur_ has quit (Ping timeout: 246 seconds).
15:18:58 -!- augur__ has changed nick to augur.
15:20:08 -!- Taneb|Kindle has joined.
15:24:46 -!- Taneb|Kindle has quit (Ping timeout: 252 seconds).
15:26:03 -!- GuestIceKovu has changed nick to Slereah.
16:04:05 -!- sllide has joined.
16:51:36 -!- MDude has joined.
17:13:28 -!- elliott has joined.
17:15:49 <elliott> i really like it when new people in here get to talk to zzo
17:16:23 <elliott> 05:32:44: <DeM0nFiRe> Most of the ugly stuff (like glBegin()/glEnd()) has been removed from OpenGL
17:16:38 <elliott> if by ugly you mean not ugly, and by removed you mean now you get to write a shader for everything
17:24:01 <elliott> `addquote <Phantom_Hoover> The fact that the elves will be happy with this will hopefully be counteracted by the fact that I plan to drop them into the magma cistern.
17:24:07 <HackEgo> 625) <Phantom_Hoover> The fact that the elves will be happy with this will hopefully be counteracted by the fact that I plan to drop them into the magma cistern.
17:24:32 <Phantom_Hoover> elliott, oh come on, not everything I say about DF is quotable.
17:24:40 <elliott> Phantom_Hoover: Except that it is.
17:24:48 <elliott> Phantom_Hoover: Well, "* Phantom_Hoover makes SO MUCH SOAP" wasn't.
17:25:31 <elliott> `addquote <Patashu> But I mean, why fix it if it ain't broke? Except now it is
17:25:33 <HackEgo> 626) <Patashu> But I mean, why fix it if it ain't broke? Except now it is
17:26:38 <elliott> `addquote <Phantom_Hoover> The fact that the elves will be happy with this will hopefully be counteracted by the fact that I plan to drop them into the magma cistern.
17:26:40 <HackEgo> 626) <Phantom_Hoover> The fact that the elves will be happy with this will hopefully be counteracted by the fact that I plan to drop them into the magma cistern.
17:26:51 <HackEgo> 625) <Patashu> But I mean, why fix it if it ain't broke? Except now it is
17:28:45 <elliott> 09:07:11: <evincar> cheater: No, explicit migration wouldn't be necessary if the continuations were genuinely forward-compatible.
17:28:45 <elliott> I too want a magic language that anticipates all future changes to my program
17:32:17 <elliott> 09:17:27: <cheater> because it will be the first version and it will suck
17:32:17 <elliott> 09:17:38: <cheater> ell comes from elliott which sucks too
17:32:17 <elliott> glad to know I'm always in your thoughts, hope you find someone more interesting to obsess about one day
17:32:43 <elliott> i really like how cheater went from "this is completely impossible" to "let's all design a language that does this and also has an AST editor which will somehow make this work" in about five seconds
17:38:19 -!- FireFly has joined.
17:43:00 <cheater> i like how you are too stupid to understand what people say
17:45:47 -!- copumpkin has quit (Ping timeout: 276 seconds).
17:49:05 -!- copumpkin has joined.
18:06:37 -!- boily has quit (Ping timeout: 240 seconds).
18:43:44 <cheater> http://pastebin.com/6kfwTsB0
18:55:11 -!- ais523 has joined.
19:17:17 <ais523> haha at Half-Broken Car in Heavy Traffic
19:17:40 <ais523> most ingenious 2D BF derivative I've seen at all recently
19:17:53 <elliott> that hello world is pretty
19:17:59 <elliott> looks like a two-dimensional CA trace
19:18:14 <elliott> one wonders what @outtext does, though
19:18:54 <ais523> presumably some I/O extension
19:27:18 -!- copumpkin has changed nick to TraderJoe.
19:27:19 <fizzie> Out of curiosity, can you 'nickserv ghost' the connection you're sending the request from?
19:27:29 <ais523> let me try on a second nick
19:28:00 -!- ais523_ has joined.
19:28:11 <fizzie> RAW >>> :NickServ!NickServ@services. NOTICE fungot :You may not ghost yourself. <<<
19:28:11 <fungot> fizzie: seriously if in future. tml i wake up long
19:28:27 <ais523> :NickServ!NickServ@services. NOTICE ais523_ :You may not ghost yourself.
19:28:31 -!- ais523_ has quit (Client Quit).
19:28:44 -!- kwertii has joined.
19:28:47 <fizzie> (Alternative question: using the bot to test that: unethical, or just impolite?)
19:28:52 <elliott> So what's fungot's password?
19:28:53 <fungot> elliott: am i that much bad. take mno practice... i ll " comeoff" sardar:-behan di taki or tu sochti hai k mai roz ash said... ' today its me... because i m quite free these days la
19:28:55 <ais523> I don't think it's unethical
19:29:05 <ais523> elliott: it actually uses an SSH key
19:29:09 <ais523> because it has trouble remembering passwords
19:33:03 <elliott> ?pl \e -> eventQ eventKeyName e == "q" && Control `elem` eventQ eventModifier q
19:33:03 <lambdabot> (&& Control `elem` eventQ eventModifier q) . ("q" ==) . eventQ eventKeyName
19:33:12 <elliott> ?pl \e -> eventQ eventKeyName e == "q" && Control `elem` eventQ eventModifier e
19:33:12 <lambdabot> ap ((&&) . ("q" ==) . eventQ eventKeyName) ((Control `elem`) . eventQ eventModifier)
19:33:35 <lambdabot> forall (f :: * -> *). (Applicative f) => f Bool -> f Bool -> f Bool
19:33:52 <elliott> :t liftA2 (&&) ((== "q") . eventQ eventKeyName) (elem Control . eventQ eventModifier)
19:34:03 -!- TraderJoe has changed nick to copumpkin.
19:46:36 -!- FireFly has quit (Quit: FireFly).
19:50:06 <elliott> ?undo \e -> do x <- eventQ eventKeyName e; y <- eventQ eventModifier e; return (x == "q") && elem Control y
19:50:06 <lambdabot> \ e -> eventQ eventKeyName e >>= \ x -> eventQ eventModifier e >>= \ y -> return (x == "q") && elem Control y
19:50:08 <elliott> ?. pl undo \e -> do x <- eventQ eventKeyName e; y <- eventQ eventModifier e; return (x == "q") && elem Control y
19:50:08 <lambdabot> ap ((>>=) . eventQ eventKeyName) ((. ((. elem Control) . (&&) . return . ("q" ==))) . (>>=) . eventQ eventModifier)
20:00:06 -!- monqy has joined.
20:02:37 -!- oerjan has joined.
20:03:24 -!- iamcal has quit (Remote host closed the connection).
20:12:09 <oerjan> <elliott> ?undo \e -> do x <- eventQ eventKeyName e; y <- eventQ eventModifier e; return (x == "q") && elem Control y
20:13:37 -!- EgoBot has quit (Remote host closed the connection).
20:13:49 -!- EgoBot has joined.
20:14:01 <oerjan> first, i think you are missing $ after return
20:15:08 <oerjan> \e -> liftM2 (&&) ((== "q") <$> eventQ eventKeyName e) (elem Control <$> eventQ eventModifier e)
20:17:02 <cheater> can you people not contain elliott
20:17:09 <cheater> now he is invading other irc channels
20:17:24 <cheater> i mean you have a responsibility for your pets
20:18:55 <cheater> lets just try and keep ourselves from making the whole irc network fall victim
20:19:02 -!- ChanServ has set channel mode: +o oerjan.
20:19:17 -!- oerjan has set channel mode: +b *!*ubuntu@*.vodafone-net.de.
20:19:17 -!- oerjan has kicked cheater Even I have my limits.
20:19:37 -!- oerjan has set channel mode: -o oerjan.
20:19:38 <CakeProphet> oh boy I'm going to learn a little Visual Basic.
20:20:40 <CakeProphet> so, now I get to learn it to help them with something. weeeeee
20:21:19 <CakeProphet> my goal is to become slightly familiar with all of them at some point.
20:21:38 <monqy> what's "all of them"
20:22:35 <CakeProphet> we're totally not like a thing or anything.
20:23:44 <CakeProphet> what does any of this have to do with me learning "all of the languages"
20:24:06 <Sgeo> Should I point out that I do not, and have never had, a girlfriend?
20:24:16 <monqy> sgeo's idiot boyfriend
20:25:45 <Sgeo> Nor a boyfriend, and I have little-to-no interest in men in that way
20:26:20 <coppro> Sgeo: no, you shouldn't have done so
20:26:59 <CakeProphet> What I really mean is "learn as many languages as possible." I just do this thing with English where I don't always mean what I literally say.
20:29:23 <monqy> I only like interesting/good languages
20:29:44 <monqy> other languages are boring/bad
20:30:16 <CakeProphet> I can't know for sure until I write code in it. Then I have a better understanding of what I would use for.
20:30:42 <CakeProphet> also, I feel that some truly bad languages have a few decent ideas, and that these could be incorporated into new languages.
20:30:51 <CakeProphet> it's just a way for me to learn about all of these things in practice.
20:31:26 <CakeProphet> I doubt I'll find anything worthwhile in VB though...
20:32:10 <CakeProphet> but hey, one more skill. programming is like RPGs right?
20:32:30 <fizzie> Yes, in that it involves lots of grinding.
20:32:43 <fizzie> "Ooh, I leveled up my semicolon skill."
20:33:32 <CakeProphet> well, a resume is like... an abridged character sheet.
20:34:32 <monqy> yes i would like my profession to be in doing visual basic
20:35:23 <elliott> !haskell main = return (error "hi" :: Int)
20:35:34 <elliott> !haskell main = print 99 >> return (error "hi" :: Int)
20:36:52 <CakeProphet> monqy: I would never get a job programming VB
20:37:17 <CakeProphet> but, with freelancing, it allows me to program VB for a short period of time and make money off of the skill, while not getting burnt out.
20:37:48 <monqy> I don;t want to touch things I dislike
20:37:49 * CakeProphet has yet to find any Haskell jobs out there, but would like to.
20:40:03 <CakeProphet> Pick a hookah flavor for me #esoteric: gingerbread, mint chocolate chip, pumpkin spice, or lucky (vaguely tastes like some kind of fruity/sour gum)
20:42:46 -!- iamcal has joined.
20:43:23 <elliott> CakeProphet: Gingerbread... I...
20:43:42 <elliott> CakeProphet: Is "all at once" an option.
20:44:10 <CakeProphet> gingerbread and mint chocolate chip would probably be amazing though.
20:44:18 <elliott> monqy: so my FRP Gtk stuff is going well...
20:45:11 <CakeProphet> Phantom_Hoover: how can you resist a drug that tastes like freshly baked cookies?
20:45:28 <elliott> monqy: http://sprunge.us/jBMg................
20:46:01 <quintopia> CakeProphet: yu mean christmas coffee?
20:46:47 <monqy> sourceLanguageManagerGetDefault good names
20:47:20 <elliott> monqy: now I am going to do a good thing (make Ctrl+A and Ctrl+E move the cursor to the beginning/end of the line rather than selecting all and doing nothing respectively)
20:48:15 <lambdabot> forall a b (f :: * -> *). (Functor f) => f a -> (a -> b) -> f b
20:48:22 <monqy> how will you select every thing...
20:48:26 <elliott> ?hoogle hi a nice operator for flip fmap or something please
20:48:37 <elliott> monqy: ctrl+shift+a i guess???????? that is less important than cursor movesments
20:48:48 <elliott> monqy: have you not used Ctrl+A/Ctrl+E do you not know...the power
20:49:05 <monqy> i usually use vim because i am a bad person....
20:49:13 <elliott> monqy: do you ever use a shell
20:49:16 <CakeProphet> elliott: I read about this nifty thing in Haskell once that lets you associate a name to another expression.
20:49:25 <elliott> (if you use your shell in vikeys mode i laugh)
20:49:32 <elliott> CakeProphet: pamf is not a good name
20:49:37 <monqy> I've never used ^A or ^E in shelle
20:49:47 <elliott> monqy: do so it will make you happey
20:49:50 <quintopia> man. i would probably like a vi'd shell
20:49:51 <monqy> but in vim i'm used to $ and ^
20:50:02 <lambdabot> Data.Sequence (|>) :: Seq a -> a -> Seq a
20:50:02 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
20:50:02 <lambdabot> Text.Parsec.Prim (<|>) :: Monad m => ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
20:50:20 <CakeProphet> elliott: just use some hilarious operator.
20:51:49 <quintopia> vi uses only regular qwerty keys for most everything. thus my terminal would be super portable (since mobile keyboards arent gud at specialty keys)
20:53:20 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
20:53:47 <fizzie> Going by that terminologogy.
20:54:14 <quintopia> International Climbing And Vertical Society
20:55:02 <quintopia> sexy software description language
20:55:09 <CakeProphet> I am still displeased with the amount of garbage acronyms it produces.
20:55:16 <fizzie> International Conference for Angels, Vampires and Snakes. (For ICAVS, obvs.)
20:55:53 <elliott> <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
20:55:56 <elliott> fizzie: Not the same thing.
20:55:58 <quintopia> JOCKS is the latest one i've seen that i like (Journal Of Cave and Karst Sciences)
20:56:01 <elliott> fizzie: That isn't a flip, the effects are reversed
20:57:13 <lambdabot> Overlapping instances for GHC.Show.Show (b -> (a, b))
20:57:25 <fizzie> CakeProphet: You must find a large dataset of acronyms, and then learn letter bigram frequencies from that, and then go on from there.
20:58:11 <CakeProphet> fizzie: well the next generator was going to produce weighted acronyms that are vaguely pronouncable by using a markov chain.
20:58:38 <CakeProphet> I was just going to keep this one for the non-pronouncable variety, though maybe I could improve that as well I just don't know where I'd find helpful data for that thing.
20:58:44 <quintopia> i doubt there are many patterns in acronyms, other than a disproportionate number containing S, ending in A and starting with N, I, or J
20:58:53 <CakeProphet> using a better data source than /usr/share/dict/words is probably a start.
21:01:20 <CakeProphet> quintopia: the markov chain one would alternate between consonant and vowel more or less, with each consonant/vowel using the same weighting scheme as in wacro, but with the added possibility of some double consonants/vowels for example SH, TH, GH, PF, FN, EE, EA, EO, actually I'd imagine there's a large variety of double vowels you could use.
21:01:32 <CakeProphet> but I'd have them rare enough so that they don't litter the acronyms.
21:02:50 <quintopia> for longer words, you may want to calculate trigram frequencies. i know that takes a lot more space to store, but it would save you some special casing for double letters like that
21:04:03 <fizzie> Three-letter sequence, in this case.
21:04:10 <CakeProphet> double consosnant + vowel, double vowel + consonant
21:04:46 <fizzie> The longer context, the more actual acronym data you need for frequency estimation, assuming no smoothing or interpolation. (Also assuming you're doing it machine-learning style, "find a pile of data, make a model", instead of manually writing some sort of sense-making rules.)
21:05:11 <quintopia> because english has rs and st and th but you never see rsth :P
21:05:20 <CakeProphet> well I wasn't planning on finding more data because I don't really know where I would find that sort of thing for this.
21:05:34 <CakeProphet> quintopia: the consonant/vowel alternation would prevent that
21:05:53 <quintopia> CakeProphet: but enforcing that requires more code
21:06:43 <elliott> a markov chain will just produce text unless you run it on an acronym database.
21:07:00 -!- boily has joined.
21:07:03 <CakeProphet> and then maybe pull some more stats from data.
21:08:21 -!- hagb4rd has joined.
21:08:33 <CakeProphet> elliott: the markov chain would give the probabilities for what the next character will be. it will be set up to alternate consonants and vowels.
21:08:47 <CakeProphet> in other words it will not be possible to go to every state from every state.
21:11:45 <fizzie> You could do the same thing with a PCFG and the rules might be vaguely more sense-making, possibly. (If you insist of having Expert Knowledge(tm) of acronyms in there.)
21:12:33 <CakeProphet> just the letter frequency weighting is enough for me, I think. We'll see.
21:13:28 <CakeProphet> ah maybe a hidden markov model would simplify the number of state transitions.
21:13:49 <CakeProphet> not sure. I have other stuff to work on first though so I'm going to do this later.
21:13:59 <fizzie> Certainly, if you make it have a lower amount of hidden states.
21:15:00 <fizzie> For example, a strictly-alternating two-state ('consonant', 'wovel') HMM is going to have exactly [1 0; 0 1] as the transition probabilities, and then you don't even need to assign any.
21:15:32 <CakeProphet> one for vowel, one for consonant, perhaps. some letters/bigrams will probably end up being special cases that have different transition probabilities.
21:17:08 <CakeProphet> just so it doesn't produce quite so many alien-sounding words.
21:19:00 <fizzie> You can just stick exceptional two-letter combinations as rare-but-possible emission probabilities there. But the HMM output in the consonant state will be completely independent from what it emitted in the vowel state, so there's no sort of context there.
21:22:00 <CakeProphet> not entirely sure I'll need context, unless I want the words to sound vaguely English-esque
21:23:12 <CakeProphet> but I think the hidden markov chain is a pretty flexible model that could be fine-tuned later.
21:24:46 <CakeProphet> ah I see how it works. it's just a list of production rules with assigned probabilities
21:26:54 <fizzie> Well, maybe. The grammar might end up looking a bit funky if you want generic-enough output out of it. E.g. to generate any wovel-consonant-alternating sequence you might need something like "S -> SVC | SCV; SVC -> V C SVC | V C | V; SCV -> C V SCV | C V | C; C -> [something Consonantlike]; V -> [something woVellike]".
21:28:28 <CakeProphet> well the length is going to be either given by the user, or randomly generated beforehand by a user-given range or by the default range
21:29:10 <quintopia> fizzie: give me something wovel-like pls
21:31:02 <CakeProphet> so yeah I think the hidden markov model will be more flexible, or at least easier to make flexible.
21:31:04 -!- hagb4rd has quit (Ping timeout: 252 seconds).
21:31:17 <CakeProphet> because I can always just add more hidden states.
21:31:51 <fizzie> I'm not so sure a predefined length and a PCFG will work so well. Also unless I'm mistaken, something as simple as that up there can only give you random lengths out of a(ny) exponential distribution, which might not be what you want.
21:32:32 <fizzie> It's the same thing as with a HMM, the duration of staying in a particular state is always an exponential distribution, unless you go for some sort of hidden semi-Markov model.
21:34:04 <Sgeo> How would an object-capability model be expanded to a pure-FP language like Haskell?
21:34:07 <fizzie> Our Finnish speech thing smooshes separate Gamma distributions to HMM states, because the phoneme duration matters more here than in English. (It often distinguishes between different-meaning words.)
21:34:07 <CakeProphet> basically I control the transitions and stop them whenever I want.
21:34:09 <quintopia> fizzie: you can terminate the run at any point
21:35:08 <fizzie> quintopia: Is this still re PCFG, or not? I mean, it's not really a PCFG production if you truncate it; but of course that's certainly possible.
21:36:09 <quintopia> you can make a markov model that self terminates at a prescribed length too, though truncating seems easier
21:36:42 <CakeProphet> yeah my markov chain would not worry about terminating at all.
21:37:15 <fizzie> Well, yes, but that's not related at all to what I said about HMM state durations. I was talking about the length of time (number of steps) it spends in a particular hidden state, which will always be random from an exponential distribution, unless you explicitly alter the transition probabilities based on the time spent there, at which point it is no longer a Markov model at all.
21:37:16 <CakeProphet> I would just run the transitions until the output string matched the correct length. But I will need to somehow make it impossible for a double consonant to occur at the end.
21:37:32 <CakeProphet> but I guess I could just truncate the double consonant. I'm not sure how that would effect the output word.
21:38:01 -!- variable has quit (Quit: I found 1 in /dev/zero).
21:38:49 -!- boily has quit (Ping timeout: 252 seconds).
21:39:30 <quintopia> what do you call a time-dependent markov thing?
21:39:39 <CakeProphet> but as you can see from conversations regarding Rezzo, I have absolutely no issue with hacking a formal model to suit my needs.
21:39:57 <fizzie> Hidden semi-Markov model, usually.
21:40:22 <fizzie> In your case time == number of letters.
21:41:16 <fizzie> HSMM's are problematical when it comes to learning one from data, though sampling from one (if you write the probabilities by yourself) is of course just as easy as from a HMM.
21:41:52 <CakeProphet> I guess truncation would be fine actually. Though it does slightly mess up the weight distribution. S will have more weight at the last transition because SH = S at that point
21:43:11 <CakeProphet> also truncating double vowels at the ends of words would probably result in some strange results.
21:43:18 <quintopia> i still think you're overcomplicating it. learning a straight HMM from a dictionary is far easier than handcoding transitions
21:43:42 <fizzie> Not that an exponential duration would necessarily be a bad thing. If you make a consonant/vowel two-state thing and give it a small but nonzero self-transition probability, you'll get alternating consonats and vowels, except occasionally but very rarely double-consonants or double-vowels. (But I guess you want to give different weights for different double-consonants.)
21:43:54 <CakeProphet> the problem is that I have no idea how to make a program "learn" a HMM
21:44:03 <fizzie> You use an existing library, of course. :p
21:44:32 <quintopia> or you just scan the document for trigrams, through them into a hashtable, count frequencies
21:44:48 <quintopia> and then covert those frequencies to probabilities in the obvious way
21:45:33 <CakeProphet> I still don't really understand why I would look for trigrams.
21:45:58 <quintopia> you dont have to, but it would better match english if you did
21:46:23 <fizzie> Getting transition probabilities "in the obvious way" won't give you the maximum-likelihood HMM, like "real" HMM learning (with Baum-Welch) would.
21:47:50 <fizzie> Well, I guess it would for a strictly alternating consonant-vowel-thing, since there's always only one state where you could be.
21:48:23 <fizzie> Anyhoo. I'm a machine-learning person, my viewpoint is obviously biased.
21:49:03 <fizzie> (We dislike actually having any knowledge about anything.)
21:49:27 <quintopia> oh you work on unsupervised models?
21:50:11 <elliott> In the days when Sussman was a novice, Minsky once came to him as he sat hacking at the PDP-6.
21:50:11 <elliott> "What are you doing?", asked Minsky.
21:50:11 <elliott> "I am training a randomly wired neural net to play Tic-tac-toe", Sussman replied.
21:50:11 <elliott> "Why is the net wired randomly?", asked Minsky.
21:50:12 <elliott> "I do not want it to have any preconceptions of how to play", Sussman said.
21:50:14 <elliott> Minsky then shut his eyes.
21:50:16 <elliott> "Why do you close your eyes?" Sussman asked his teacher.
21:50:20 <elliott> "So that the room will be empty."
21:50:21 <CakeProphet> oerjan: also I'm curious as to why you banned cheater.
21:50:22 <elliott> At that moment, Sussman was enlightened.
21:52:14 <CakeProphet> useful for making other perfect condiments
21:52:22 <elliott> CakeProphet: well, he _was_ harassing me in another unrelated channel for joining it and then came here to complain about it...
21:52:24 <elliott> but I can't speak for oerjan.
21:52:42 <CakeProphet> from my vantage point it sounded like he was just being somewhat passive aggressive towards you.
21:53:09 <elliott> Is it passive if you're not actually being passive about it?
21:53:57 <CakeProphet> well I suppose in a chatroom verbal aggression is actual aggression.
21:54:05 -!- BeholdMyGlory has quit (Remote host closed the connection).
21:54:24 <fizzie> I can possibly reveal that my official op-opinion was (posthumously) polled regarding this unfortunate matter, but of course all this was done in camera, and I simply cannot comment in any more detailed way.
21:56:19 <CakeProphet> typically an indirect verbal aggression in other contexts is known as passive aggression though.
21:57:07 <CakeProphet> "At least I'M not being passive aggressive like SOME people."
21:58:12 -!- GreaseMonkey has joined.
21:58:12 -!- GreaseMonkey has quit (Changing host).
21:58:12 -!- GreaseMonkey has joined.
21:58:53 <CakeProphet> I should have probably used some kind of parsing library for parsing this scripting language.
22:03:37 -!- Wamanuz has quit (Ping timeout: 260 seconds).
22:16:22 <pikhq> 20 years ago today. "I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones." — Linus
22:17:11 <olsner> heh, "professional like gnu"
22:18:03 <pikhq> Yeah, at that point in time GNU was going to be released "any time now".
22:18:25 <pikhq> HURD had only been around for about a year.
22:18:45 <pikhq> So it was completely and utterly understandable that it was a pile of dog shit at the time. :P
22:20:11 <Lymee> How many architectures does Linux run on now?
22:20:12 -!- EgoBot has quit (Ping timeout: 250 seconds).
22:20:47 -!- augur has quit (Remote host closed the connection).
22:20:54 -!- EgoBot has joined.
22:21:00 <olsner> three, or maybe even more!
22:21:49 <pikhq> Just the kernel? I'm counting 24 ISAs.
22:22:32 <olsner> linux can run on diagrams?
22:22:48 <pikhq> No, but Linux can run on Linux.
22:23:04 <elliott> * EgoBot (foobar@codu.org) has joined #esotericg
22:23:44 <olsner> fungot: fun it up a bit
22:23:44 <fungot> olsner: k. i bring the mini project. and course i wait for u. borrowing chem lab. u? phone dead yet, just asking becoz i also didn't go andthere wasn't lec proper with little space for the fart to release...prrrrrrrrr......
22:24:27 <fizzie> This is how low the bot has gone: now it's telling fart jokes.
22:25:26 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms* speeches ss wp youtube
22:25:41 <elliott> fizzie: Did you ever do anything with those Google n-grams because you SHOULD.
22:26:50 <fizzie> Is it just me, or does RMS look like he's... uh, been chemically inspired, in that cover photo of Free as in Freedom (also first photo in Wikipedia "Linux" article)?
22:27:51 <ais523> RMS is actually in Birmingham today
22:27:59 <ais523> he was giving a talk at my University, but I didn't visit it
22:28:27 <ais523> because it was on a subject where RMS' opinion was completely predictable
22:29:08 <pikhq> Probably one of his canned speeches that he's been given for the better part of 20 years now, anyways.
22:30:27 <ais523> "Copyright vs Community in the Age of Computer Networks"
22:31:37 <ais523> and the abstract is pretty much "copyright is bad and it's getting worse, go get rid of it"
22:32:09 <pikhq> Not unreasonable, but utterly predictable from him. :)
22:33:00 <ais523> so there was no need to actually attend the talk
22:35:39 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:35:52 * CakeProphet is officially the proud owner of a Dave record T-shirt
23:10:40 <elliott> `addquote <Phantom_Hoover> I'm sacrificing the animals, then I'm going to bed.
23:10:46 <HackEgo> 627) <Phantom_Hoover> I'm sacrificing the animals, then I'm going to bed.
23:11:17 <elliott> gobject is really annoying.
23:14:16 <CakeProphet> perhaps the trigram approach would be more effective.
23:14:17 -!- copumpkin has joined.
23:14:30 <CakeProphet> but... how do you count trigrams? gob|sma|cki|ng
23:15:11 -!- Phantom_Hoover has quit (Quit: Leaving).
23:18:44 <CakeProphet> because I realized currently the markov model doesn't allow for compound wording such as gobsmacking where there are three consonants in a row.
23:20:17 -!- Patashu has joined.
23:21:35 <CakeProphet> perhaps I could analyze each word using multiple different approaches. so gobsmacking would become gob sma cki ng, go bsm ack ing, gob sm ack ing, etc
23:23:29 <CakeProphet> then I could find the most frequent trigrams and then pick the trigram combination for each word where the sum of its trigram frequencies is the greatest, and then only use that one for the final frequency result.
23:24:17 <CakeProphet> also maybe take into account positioning. For example "ck" is more likely to occur at the end of a word.
23:25:42 <CakeProphet> the only way ck would occur elsewhere is if it's a compound word of some kind, I think.
23:26:16 <ais523> I can't think of a word starting ck, though
23:26:57 <CakeProphet> well right... since "ingratitude" would be in my dictionary data most likely, ing at the start could be a possibility.
23:27:23 <CakeProphet> the main issue I'm having is how to decide how to split up words into n-grams
23:28:28 <CakeProphet> so maybe just accounting for every possible combination would be the best approach..
23:31:04 <oerjan> CakeProphet: i may be wrong, but i had the impression that trigrams used for building markov models like this would be overlapping, so gob, obs, bsm, sma, mac, ack, cki, kin, ing
23:31:37 <oerjan> using the first two letters to predict the third
23:31:55 <monqy> I had the same impression as oerjan
23:32:18 <CakeProphet> this is a new area for me so I didn't really know how it worked.
23:32:52 <CakeProphet> so you're not plugging in the trigrams themselves just using them to determine individual characters based on previous characters.
23:34:07 <CakeProphet> so then how do you pick the first two letters? based on the frequencies of the first two letters for each word in the data set?
23:34:44 <oerjan> perhaps. i imagine it as having special initial/final trigrams with spaces in them for the boundary
23:37:06 <CakeProphet> I think what I'll probably do is allow for language options.
23:37:25 <CakeProphet> I just need to find data sets for each language that I add.
23:38:27 <CakeProphet> I guess it's time to download some language packs. :D
23:38:31 <fizzie> Usually you count all trigrams, e.g. gob, obs, bsm, sma, mac, ack, cki, kin, ing.
23:39:06 <fizzie> I didn't bother to read what came after the highlighted-to-me bit.
23:39:21 <CakeProphet> mixing language data sets will be interesting.
23:39:54 <CakeProphet> the languages would need to have similar phonetic rules though.
23:40:24 <CakeProphet> otherwise you'd probably get words that can't be pronounced easily without inventing new phonetic rules.
23:40:39 -!- nooga has quit (Ping timeout: 268 seconds).
23:41:26 <CakeProphet> what are the packages that contain /usr/share/dict language data?
23:41:28 <fizzie> And yes, usually there's start/end symbols to model the edges separately, So you'd normally have <go, gob, obs, ..., ing and ng>. And then use just the bigram frequencies for the first word with context "<". (But certainly taking <<g, <go, gob, ... is possible too.)
23:42:27 <fizzie> "wamerican", "wfinnish" is what I have installed.
23:42:42 <fizzie> Maybe the others are similarly names.
23:43:09 <CakeProphet> ah the descriptions all contain /usr/share/dict so I'll just search for that.
23:43:28 -!- augur has joined.
23:43:34 <CakeProphet> I guess I want the insane version of everything.
23:44:07 <CakeProphet> or maybe I want wamerican-insane wamerican-huge wamerican-large
23:44:53 <fizzie> Often you need to consider the shorter-context frequencies too because there's not enough data to build a full model to cover unseen data well. Of course if you're generating from it, that doesn't really matter, since it's not going to generate anything unseen.
23:45:21 <CakeProphet> not sure I understand what you mean by shorter-context
23:45:52 <fizzie> Two-letter combinations, basing the next letter only on one previous letter, as opposed to two.
23:46:14 <CakeProphet> oh wait, no I definitely don't want to use wamerican-insane because it contains things like possessives, abbreviations, company names, etc.
23:46:44 <CakeProphet> Aaronitic's is a word in wamerican-insane apparently
23:47:19 <fizzie> A trigram built with little data might have the 'sword alone can't stop' problem (technical term); if you only ever see a single instance of "ab?", say "abc", the trigram frequencies will then never generate anything else than "c" after "ab".
23:48:12 <CakeProphet> oh okay, so split by trigrams and bigrams and combine the frequency data?
23:49:31 <fizzie> Well, that's interpolation. Take the probabilities of next letter by a*trigram(2-letter-context) + (1-a)*bigram(1-letter context).
23:50:03 <CakeProphet> but what if I use a data set such as.... wamerican-insane
23:50:11 <fizzie> (You can even include the no-context unigrams there with a small weight.)
23:50:12 <CakeProphet> would I need to worry about this since you said it's only a problem for small data sets?
23:50:47 <fizzie> Well trigrams are reasonably easy still. Maybe there's enough data.
23:50:55 <CakeProphet> /usr/share/dict$ wc -l american-english-insane
23:51:50 <CakeProphet> everything has a possessive version though, which I will probably remove.
23:52:08 <elliott> fizzie: have you gogol ngramames yet
23:52:22 -!- sllide has quit (Ping timeout: 268 seconds).
23:52:26 <fizzie> Doesn't give the word length. Assuming 6, that's about 4*300000 trigrams. (4 positions in a 6-letter word.)
23:53:02 <elliott> <fizzie> A trigram built with little data might have the 'sword alone can't stop' problem (technical term); if you only ever see a single instance of "ab?", say "abc", the trigram frequencies will then never generate anything else than "c" after "ab".
23:53:09 <elliott> fizzie: Isn't it the banana problem :)
23:53:18 <elliott> The sword alone can't stopping is better, though.
23:53:46 <fizzie> There are only that many trigrams, so it sounds like it perhaps wouldn't need any smoothing.
23:54:29 <elliott> fizzie: Mmph, now you're making me want to write my own Markov bot.
23:54:48 <CakeProphet> So there's Aaronical, Aaronite, Aaronitic, Aaronsburg, Aaronson, but no Aaronsoniticalburgite?
23:54:54 <elliott> fizzie: Out of curiosity how would a mere plebian obtain that Google data; preferably one of the forms that isn't five DVDs.
23:55:19 <elliott> "Run your own experiment! Raw data is available for download here."
23:55:25 <elliott> http://ngrams.googlelabs.com/datasets
23:55:27 <fizzie> Anyone can download the Google Books dataset.
23:55:38 <elliott> Oh, right, but that is not the set you have, right?
23:55:55 <CakeProphet> so I'm guessing Googles data is better than what I'm using, yes?
23:56:07 <elliott> CakeProphet: They're words, not letters, unless I'm terribly mistaken.
23:56:35 <elliott> fizzie: Hmph, that's a lot of data to download for such low ns.
23:57:09 <CakeProphet> elliott: wamerican-insane is also a list of words... >_>
23:57:24 <elliott> CakeProphet: For an acronym generator? Stupid.
23:57:31 <fizzie> CakeProphet: You can take their unigram dataset as a word list if you want.
23:58:07 <fizzie> elliott: Does it say anywhere how many words they had in the books that was built from?
23:58:24 <elliott> fizzie: http://ngrams.googlelabs.com/datasets :P