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:18 Why is the sky yellow 00:36:30 Dear Indiana: THAT IS NOT THE CORRECT COLOR FOR THE SKY 00:37:07 Who do you think you are, saying what colour the sky ought to be? 00:37:13 Maybe it wants to be yellow. 00:38:26 im a sky doctor....and that is not what skys want.... 00:38:44 I should think a sky doctor would know how to spell "skies" ... 00:41:54 I should think a doctor would know how to spell "I'm", and what an ellipse looks like. 00:42:17 Anyways, clearly the sky is going through a rebellious stage. 00:44:47 Well that much is clear. 00:44:51 What with the lightening. 00:44:53 And yellow. 00:51:08 OK, this is a nasty thunderstorm ... 00:51:10 -!- Vorpal has quit (Ping timeout: 260 seconds). 00:52:39 Gregor: its sky barf 00:56:32 rebel barf 00:57:00 barf rebel 00:57:10 (the sky) 01:01:29 -!- zzo38 has joined. 01:08:36 -!- azaq23 has quit (Ping timeout: 240 seconds). 01:08:37 oh hmm that would be cool forleaden to have 01:10:39 Leaden? 01:10:53 yes 01:13:20 leaden. 01:14:11 Splain. 01:14:27 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 well this would be the same but it would try "display it" before print it and you'd have like 01:14:47 yes i know that 01:14:58 class Display a where ??? 01:14:59 and 01:15:01 like 01:15:10 a list could show the first like N elements that'll fit onto a screen 01:15:17 and have a ... that you can click to show more at the end?? 01:15:20 and other nice... things like that... 01:15:40 and you could maybe middle-click subexpressions to make them go into the prompt?? i don;t know 01:15:42 it wouldb e ... cool 01:16:07 hougle integration...might be nice 01:16:39 monqy: yes but like.......... 01:16:48 monqy: if you had a library with colours 01:16:53 you could construct a colour 01:17:00 and it'd show a little square of that colour next to how it would normally be shown?? 01:17:02 that would be cool?? 01:17:28 how would you 01:17:28 dou 01:17:29 that 01:17:47 instance Display RGB where displayWidget (RGB r g b) = ...some gui stuffe..... 01:18:13 and whenever peoiple make colourse they will write an instance for Leadne???? 01:18:33 no............. you would have to put itin your ghcirc or something?? 01:18:35 but 01:18:36 the point is that 01:18:40 it would make for a lot of coole things...... 01:18:53 ok 01:19:29 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 the biggest problem I see is people not bothering to make these instances 01:20:27 monqy: well you could still benefit from like the instances for lists? 01:20:28 because 01:20:32 typing in an infinite list 01:20:35 and then yuour emacs buffer exploes 01:20:36 not good 01:20:39 typing in infinite list 01:20:42 getting a bunch of elements 01:20:44 and it ending at "..." 01:20:45 good 01:20:58 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 and being able to manipulate sub-expressions separately is very good... 01:21:11 it could like turn anything too deeply-nested into a ... 01:21:54 and i guess you could make it not happen if you explicitly used show??? 01:22:12 well using "print" would be the explicietie thing.... 01:22:20 oh 01:22:28 i guess print would work too.... 01:22:41 isn't print just putStrLn . show or something like that 01:23:05 yes...... 01:23:09 wit h show it would have "" 01:23:10 and also 01:23:11 all the ""s inside 01:23:13 would be \" 01:23:17 and 01:23:17 yeah 01:23:27 oh rihgt 01:44:46 Wut. 01:44:53 On the IBM PC-AT, you could mask the NMI. 01:45:05 :D 01:45:39 You could write to a controller chip on the motherboard, which would prevent the NMI from reaching the CPU. 01:45:57 Rather than merely telling the CPU to ignore the interrupt. 01:54:11 "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 i think i have upse t him monqy 02:00:28 -!- ais523 has quit (Remote host closed the connection). 02:00:59 oops 02:04:59 ?hoogle f a -> f b -> f (a,b) 02:04:59 Prelude zip :: [a] -> [b] -> [(a, b)] 02:04:59 Data.List zip :: [a] -> [b] -> [(a, b)] 02:04:59 Language.Haskell.TH strictType :: Q Strict -> TypeQ -> StrictTypeQ 02:05:03 : ( 02:05:06 monqy: hepl 02:05:28 (I know, I know, liftAtwo (,)) 02:05:38 im just trying to generalise 02:05:42 reactimate $ const mainQuit <$> eWindowClosed 02:05:43 reactimate $ const mainQuit <$> eCtrlC 02:05:45 to be less ugl??? 02:05:59 generalise?? speaking of which sometime i should learn syb maybe 02:06:09 union :: Event f a -> Event f a -> Event f aSource 02:06:10 Merge two event streams of the same type. In case of simultaneous occurrences, the left argument comes first. Think of it as 02:06:11 oh there we go... 02:06:22 oh thats same element type though hmm 02:06:25 monqy: that was not syb......... 02:06:38 i know.. 02:06:44 but would syb help 02:07:33 -!- azaq23 has joined. 02:08:46 I don't see what's so not general enough about applicative functors though??? hlep???? 02:10:26 thats 02:10:28 not what aht i ameant 02:10:28 :t ignore 02:10:29 Not in scope: `ignore' 02:10:32 ?hoogle void 02:10:32 Foreign.Marshal.Error void :: IO a -> IO () 02:10:33 ?hoogle ignore 02:10:33 Text.Regex.Posix.ByteString compIgnoreCase :: CompOption 02:10:33 Text.Regex.Posix.Sequence compIgnoreCase :: CompOption 02:10:33 Text.Regex.Posix.String compIgnoreCase :: CompOption 02:10:37 >:E 02:10:40 :t ( Not in scope: `dollr' 02:10:41 Not in scope: `sign' 02:10:46 : (<$) 02:10:53 :t (<$) 02:10:54 forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a 02:11:12 :t ($>) 02:11:12 Not in scope: `$>' 02:11:48 would that be fmap (flip const) or what 02:15:44 :t fmap (flip const) 02:15:45 forall b a (f :: * -> *). (Functor f) => f a -> f (b -> b) 02:15:59 oops 02:16:14 i meant uh 02:16:18 i don't know what i was thinking 02:16:41 :t fmap . const 02:16:42 forall a b (f :: * -> *). (Functor f) => b -> f a -> f b 02:16:58 perhaps 02:17:13 wait no 02:17:47 (fmap . flip const), perhaps 02:18:00 but that's dumb 02:18:31 (flip (<$))?? I can't think of anything better 02:19:39 ok 02:19:50 ?pl \f a -> fmap (const a) f 02:19:50 flip (fmap . const) 02:19:57 yeah 02:30:20 fmap (const x) has a name 02:30:39 oh, you're using it 02:33:50 :P 02:58:56 "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 I'm betting that donating will not remove this annoying banner :P 03:01:43 It' 03:01:55 It's really hard to feel sympathy for such a thing. 03:02:22 Ads are a blight 03:04:33 But, but, "The free web is dependent on ads to continue to be free."! 03:05:22 Yes, yes, our economic system sucks ass. 03:07:12 You can use protocols and/or filetypes that do not have ads, too 03:07:21 pikhq_: COMMUNIST 03:07:24 -!- Sgeo has quit (Ping timeout: 245 seconds). 03:07:34 Which also helps in other ways depending on what you are doing with these files 03:09:07 More "anti-'free market'". 03:11:01 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 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 You said that is why there is no monad definition for sets. 03:21:36 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 But all the algorithms require it 03:24:49 I can see the description at the top about the algorithms. 03:33:22 "sourceLanguageManagerGetLanguageSource" Gtk, I... 03:35:20 So, Data.Set would not work if you need unordered sets, then 03:35:24 elliott: What. 03:37:00 I'd be willing to bet Data.Set is doing a binary tree behind the scenes. 03:37:21 zzo38: Data.Set is unordered. 03:37:26 Sort of. 03:37:33 It doesn't expose the ordering. 03:37:41 Either that or the utterly naive algorithm, nub . sort :P 03:38:04 zzo38: But the Ord instance can be totally arbitrary. 03:38:47 Well, yeah. I'd think the only thing Ord would imply is that there is, in fact, an ordering. 03:39:55 pikhq_: BTW it's slightly better than I said, s/GetLanguageSource/GetLanguage/ (Haddock fail) 03:40:11 elliott: Still, WTF does it even do? 03:40:23 Gets a language, given a source language manager and a language name. 03:41:24 Strange. 03:42:48 -!- azaq23 has quit (Ping timeout: 240 seconds). 03:46:06 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:46:38 I think it breaks. 03:47:42 Well you're at least going to have to get EQ vs. something that isn't EQ, I presume 03:47:51 Unless it specifically checks again with == which would be pointless :P 03:50:18 -!- DeM0nFiRe has joined. 03:50:22 Hello 03:53:49 hi 03:54:07 How's it going monqy? 03:55:17 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 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:56:59 hello DeM0nFiRe 03:57:01 please don't burn 03:57:23 DeM0nFiRe: oh hi. it's going. 03:57:51 Heh 03:58:17 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 Kay, so a Smalltalk machine? 03:59:53 Sounds like a completely and utterly reasonable goal. 03:59:55 Well, not for specifically Smalltalk, but that kind of idea 03:59:58 "Extreme late-binding of everything" Kay OOP. 04:00:12 evincar: Well, that is one of the 3 requirements, yes :P 04:00:17 That's the easy part :P 04:00:33 Indeed. 04:00:40 One of the requirements is local retention of state which is kind of getting me right now 04:01:04 what's local mean there 04:01:12 sounds like orthogonal persistence to me 04:01:14 but then so does everything 04:01:16 It means everything about an object is known only to an object 04:01:20 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:20 oh 04:01:30 DeM0nFiRe: doesn't that basically just mean there aren't any backdoors... 04:01:34 like you can't go poking pointers 04:01:40 otherwise i don't see why you would have to expose anything not explicitly exposed 04:01:51 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 Anything you need to know or anything you want the box to do has to be done through messages 04:02:11 I'm aware :) 04:02:45 I'm pretty sure elliott likes Alan Kay. :) 04:02:48 Heh 04:02:54 I was just making sure what I wanted was clear :D 04:03:04 But I don't see how local retention of state is something you have to... do? 04:03:09 Just don't expose anything about the objects 04:03:17 Yeah, it's more of a don't. 04:03:21 Unless you're trying to run arbitrary machine code and force it to obey these restrictions, in which case lol 04:03:25 Well, keeping objects from knowing about each other is easy enough 04:03:47 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:03:51 So don't give them any :) 04:04:17 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 But more as a thought excercise I would like to keep as true to that part of OOP as I can 04:06:30 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:40 Yeah I know what you mean :P 04:06:43 DeM0nFiRe: It sounds to me like you just want to define a really simple message-passing language 04:06:49 But to me it's still the only true OOP :P 04:06:51 Well 04:07:09 I mean, message passing and late binding are super easy, and keeping objects from knowing about other objects is easy 04:07:32 And just those things are enough to put the language I have designed on top of it 04:07:47 is it a good language 04:07:54 Well, I think so :P 04:08:11 I plan on using it for scripting for games :P 04:08:31 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:09:24 me too 04:09:40 This lounge needs a sofa. 04:09:50 Yeah well 04:10:02 Over here in my lounge, I can take the table I am not using anymore and make it a sofa 04:10:10 Life is good :P 04:10:26 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 And people sit on it and it's fucking uncomfortable 04:10:39 In this analogy the uncomfortability is using an impure language and you are the one doing the using 04:10:54 im the one putting the tacks there 04:10:55 thats me 04:11:08 Now now, are you two arguing about mutability? 04:11:08 would you like your tacks elsewhere 04:11:10 Tsk tsk. 04:11:12 lol, nah, it's cool. Saves a lot on up front design time 04:11:20 But I mean 04:11:32 If you use it like a different language, you're going to get burned 04:11:44 evincar: fuck tha police 04:11:44 If you program in C++ like you are programming in C#, you are going to get burned :P 04:11:52 If you program in C++ [...] you are going to get burned :P 04:11:57 Heh hey now 04:11:57 i was just about to say 04:12:00 that exact same thing 04:12:08 help 04:12:22 This is the problem with my sockpuppet account 04:12:35 He is prone to revealing his true nature >:( 04:12:48 That totally made sense when I was writing it. 04:12:51 C++ is not bad if you restrict yourself to a subset of it that is actually sane :D 04:12:59 (the subset is empty) 04:13:03 elliott: I know what you meant :P 04:13:08 You know what elliott? 04:13:10 You are a hater :P 04:13:23 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:13:44 am i a hatter too 04:14:10 mad hatter <-- us 04:14:14 (the us is all of us) 04:14:15 So anyway, no one here is interested in designing a machine more or less for the sake of designing a machine :P 04:14:24 We aren't? 04:14:28 I prefer to design good machines 04:14:39 Well, you were telling me to settle for less than Kay OO :P 04:14:42 but designing good machines for the sake of it is just fine 04:14:55 Well, this would be a good machine. If done properly it would be super secure 04:15:07 itt: object capability model 04:15:19 not actually restricted to OO languages :P 04:15:38 btw I am not seriously hating on your machine I just have to reassert my functional superiority when required 04:15:41 Well, of course not 04:15:52 Message passing is also not restricted to OOP :P 04:16:00 Neither is late binding :P 04:16:21 i save my hattred for evincar's languages 04:16:28 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:28 hattred 04:16:29 Hello. 04:16:34 evincar: hi 04:16:37 monqy: YUO SUMMED THE DEMON 04:16:45 This is a good read http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en 04:16:47 I didn't even get pinged. 04:16:51 I just lurk. 04:16:59 evincar: how're your languages 04:17:00 Like something eldritch that isn't an abomination. 04:17:13 Also "OOP to me means only messaging, local retention and protection and 04:17:13 hiding of state-process, and extreme late-binding of all things." 04:17:29 That is what Alan Kay said on what he meant when he originally said "OOP" 04:17:42 There's historical revisionism at work there :P 04:17:46 monqy: Oh, y'know. Thinking about that concatenative one and trying to figure out what sets it apart from Factor. 04:17:57 Heh well 04:18:09 I think, yes, he was able to state it more clearly now than then 04:18:10 is factor any good 04:18:33 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 how did you find this place btw was it the wiki 04:18:56 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 Yeah I did a search for something I forget what 04:19:13 And found the wiki 04:19:26 I forget how I found the wiki. maybe intercal. 04:19:55 I think I did a search for esoteric 04:20:11 maybe esoteric irc 04:20:20 Because I was specifically looking for an IRC channel :P 04:21:14 Hmm, unforgable reference. That is what I am missing 04:21:35 DeM0nFiRe: unforgeable references are not hard? just don't offer something stupid like casting an integer to a pointer 04:22:00 Well, I am not talking about from the language, that's easy to do like I said 04:22:22 Basically, I am talking about not being able to run even machine code to inspect objects 04:22:31 there is no difference between machine code and a langauge 04:22:32 language 04:22:43 Alright I guess I misunderstood what you meant 04:22:46 machine code just prioritises different things 04:22:55 for instance: how do you forge a reference on a traditional processor? 04:23:05 mov dword [something expecting to contain a pointer], 99 04:23:12 that's just casting an integer to a pointer :P 04:23:49 -!- sebbu has quit (Ping timeout: 258 seconds). 04:24:46 Alright I think I can figure something out. 04:25:43 So the other fun part about the language/machine 04:25:49 it has to work easily with C++! 04:26:10 work 04:26:10 easily 04:26:11 with 04:26:12 C++ 04:26:17 ok 04:26:22 I uh 04:26:25 Yeah, I write my game engine stuff in C++ 04:26:32 how do you plan on doing this 04:26:43 and why 04:27:22 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 The how is, well I haven't entirely figured it out. :P 04:28:04 but why do you do this in c++ 04:28:26 Because I want the low-ish level of C++ and I want classes 04:28:30 and what exactly do you mean by work easily with C++ 04:28:33 Why torture yourself? 04:29:01 monqy: Presumably he means "work easily with C". 04:29:02 I have to be able to expose C++ code to the language and vica versa 04:29:09 No, I do not mean work easily with C 04:29:10 why do you want low-ish level of c++, why do you want classes, are there no other suitable languages 04:29:26 DeM0nFiRe: There are very few languages that interact with C++. 04:29:40 Well then I guess that is why I am making one, isn't it? 04:29:48 DeM0nFiRe: if it's unrestricted c++, you're hopeless 04:29:48 I know full well that there are very few 04:29:50 And there is a reason for that. 04:29:56 monqy: It's not unrestricted 04:30:01 C++ is an esolang. 04:30:13 :| 04:30:17 Now you are just trolling 04:30:21 nope 04:30:25 No, I'm being entirely honest. 04:30:29 DeM0nFiRe: ok, what are the restrictions, and how will you enforce them 04:30:40 Alright, well there's no need to continue the discussion on whether you like C++ or not :| 04:30:47 It also contains a couple! 04:31:03 hehehe 04:31:07 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 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 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 zzo38: there are libraries that let you make things to derive things for things 04:32:10 I prefer C++ because I like classes 04:32:14 DeM0nFiRe: is there any way to undo this wrapping 04:32:15 DeM0nFiRe: As you may have noticed, C++ is not well-liked in here. 04:32:28 DeM0nFiRe: or tamper 04:32:34 DeM0nFiRe: hint: the answer is yes 04:32:38 monqy: Defined by the wrapper, but for it to be useful obviously you would want to make it reversible :P 04:33:18 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 monqy: Can you give examples of those kind of deriving? 04:33:29 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 But that's how a scripting language should be used in game development anyway 04:33:52 zzo38: deriving instances for datatypes? I think one such thing is in the derive package 04:34:34 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 But wrapping, say, a level class, some actor classes, some world object classes 04:35:11 -!- sebbu has joined. 04:35:18 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 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 DeM0nFiRe: and how would you do this wrapping in such a way that you maintain your machine/language's invariants 04:35:28 scripting* 04:36:15 zzo38: oh. there's TH, and possibly some other things as well, for things like that?? 04:36:22 zzo38: I'm not sure exactly what you want 04:36:22 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 monqy: TH can do that, but not automatically. 04:36:30 As a procedure object 04:36:39 zzo38: what do you mean by automatically? 04:36:42 Also, one thing to note is that things like classes and functions will only exist at the syntax level 04:36:47 zzo38: as in it's resolved by the type system? 04:37:00 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 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 So to make a new MyObject you will actually be cloning an object, not instancing a class 04:37:38 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 DeM0nFiRe: so something along the lines of prototypes? 04:38:26 Exactly 04:39:33 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 So that way you can ensure that a number object is actually a number object :P 04:40:24 oh you saida lot 04:40:30 monqy: was saying good or bad 04:40:37 in what case would a number object not be a nubmer object 04:40:46 monqy: Do you understand what I mean now? 04:40:58 monqy: Well, the heart of this whole thing is that an object can be completely redefined 04:41:14 So one object may have entirely different properties from when it was created 04:41:20 That would not be a good thing for numbers 04:41:28 would not be a good thing for anything 04:41:28 at all 04:41:33 Well, you're wrong :P 04:41:44 You wouldn't want to actually change every single property 04:41:46 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 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 there are a finite number of tuple types 04:42:01 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 DeM0nFiRe: how is that different to prototype-based oo? 04:42:21 zzo38: how would you write an instance-maker? 04:42:35 elliott: What is the limit of tuple types? 04:42:46 zzo38: fifteen i think, it's in the report 04:42:48 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 monqy: One way could be using Template Haskell. 04:43:11 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 And this is not only for tuples anyways. 04:43:37 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 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 i think a lot of languages have freezing 04:43:55 DeM0nFiRe: classes don't exist in prototype oo languages too :P 04:44:10 elliott: Well, they will exist in my language but not my machine 04:44:17 They will exist in syntax, but not the machine 04:44:52 zzo38: and how would that work, more specifically? 04:45:01 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:11 In all honesty 04:45:17 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 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 DeM0nFiRe: how is V8 not good? it's even C++ :P 04:45:51 Well 04:46:00 It's C++ but still utilized in mostly C style 04:46:05 Plus I hate google with a passion 04:46:06 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:16 Well 04:46:27 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 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 elliott: It also doesn't fill my needs, as I said 04:46:54 spidermonkey's just as standalone 04:46:57 Rhino too 04:47:20 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 not that i'm against writing a totally new thing 04:47:26 Rhino is Opera's right? That's not available to use AFAIK 04:47:30 but it seems weird to say that there is nothing that fits 04:47:31 no. 04:47:42 it's java though, so you probably don't care :) 04:47:47 it's Mozilla 04:47:47 elliott: Google's house style, like that of just about everyone sane, omits several C++ features. 04:47:51 Heh, ok well then no I don't care 04:47:56 In Google's case, most notably exceptions. 04:48:12 Well, that is not what I am talking about 04:48:15 C++ exceptions, of course, are a great misfeature. 04:48:29 You call a series of functions to define objects with V8, that is not what I want 04:48:40 oh nooooo 04:48:55 surely that is wrappable. 04:49:03 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 hehehehehehehe good luck 04:49:27 DeM0nFiRe: can't you make that translate to a series of function calls 04:49:35 and how do you plan on doing this? 04:49:41 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:49:43 monqy: rtti stuff i guess 04:50:25 Also the other cool thing is that my machine will work for making a JavaScript implementation on top of it :) 04:50:53 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 what all do you know about language design anyhow 04:51:34 or think you know, or want to explore, etc etc 04:51:37 Well, mostly what I have learned from studying the design of other languages, things like that 04:51:48 other languages like what 04:52:16 *shrugs* whatever, JavaScript, Ruby, Smalltalk, Java, C++ 04:52:26 Note that not all of them were looked at for examples of what was good :P 04:52:44 I advise learning at least a functional language and a logic language 04:52:45 at least 04:52:54 I do plan on that 04:53:40 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 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 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 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 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 I like LLVM too. I think LLVM is much better designed than C. 04:59:12 Heh 04:59:56 One thing is if there are new reserved words, they will never conflict with any names you use in your program. 05:00:22 LLVM with powerful macro preprocessor would be very good programming language. 05:00:36 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:00:44 ) 05:01:45 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 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 This MegaZeux http://en.wikipedia.org/wiki/MegaZeux ? 05:07:44 Yes, that one. However I made some extensions to it which are available here: http://zzo38computer.cjb.net/mzx1/mzx_extended/ 05:08:35 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 (Understanding ZZT would also help you to understand the uses of the examples better) 05:10:03 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:10:54 Ahh, looks like it's SDL now? 05:11:09 MegaZeux is using SDL. And I have used SDL for other programs too. 05:11:20 I'm not a fan of SDL myself 05:11:44 I like SDL, though. 05:11:46 does zzt like things even count as rendering 05:11:54 http://www.textmodegames.com/images/screens/zzt.gif pro rendering 05:12:10 :P 05:12:50 I don't know. 05:12:50 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 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:28 aloud* 05:13:30 My own extensions of MegaZeux do allow writing custom renderers in Forth, although it is not very well documented. 05:13:33 >.> <.< I didn't just do that 05:14:01 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 I like ascii rendering, it's pretty cool 05:14:25 Which things under "Criticize" do you believe and which ones not? 05:14:26 I wish I had a game idea that would be good for it lol 05:14:51 zzo38: What do you mean believe? 05:15:01 This game is bad because Hitler played it. 05:15:04 Note that MegaZeux does allow you to customize the character set (even at runtime), although I just used the CP437 05:15:21 Ahh by ASCII I was being bad and I meant text rendering :P 05:15:25 DeM0nFiRe: I mean which ones you believe are correct and which ones you believe are incorrect 05:16:10 Uhh my guess is that everything is false? 05:16:10 ("ASCII" appears in its name because the entire series uses only CP437 character set) 05:16:23 Yeah 05:16:36 If I was going to do a text game I would likely use the extended ASCII 05:16:43 OK, I believe you are correct that everything there is false 05:16:56 The stuff other than the "Criticize" list is correct, though. 05:17:20 Did the digital MZX people really say all of it was true though? o.0 05:18:05 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 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:18:56 :P 05:19:22 "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 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 Just note that the example Forth code I have linked to is much closer to being like ZZT gems. 05:22:21 I can't wait til I have my machine finished, it will open up a lot of possibilities for me 05:22:56 "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 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 Heh would I need to install MZX to run it? 05:25:12 You also need MegaZeux; select the file you need from http://zzo38computer.cjb.net/mzx1/mzx_extended/ 05:25:25 lol, sorry, I am not going to install that right now 05:26:02 (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 It is not an installer; simply unzip it into a directory, and then edit the config.txt to set your preferences. 05:28:36 Well it's 1:30AM so I am not planning on doing anything but chatting a bit more lol 05:28:57 OK 05:29:30 So you said you like SDL, have you ever used OpenGL or Direct3D directly? 05:29:47 -!- Nisstyre has joined. 05:29:54 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 I have never used OpenGL or Direct3D. 05:30:47 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 I have never used the 3D rendering stuff 05:31:58 In fact one program I wrote using SDL is available on Esolang wiki 05:32:02 Yeah I am not actually using OpenGL for 3D stuff right now either 05:32:14 direct opengl is pretty uglygross ime; i prefer sdl 05:32:20 Well 05:32:27 Depends on what you are doing 05:32:44 Most of the ugly stuff (like glBegin()/glEnd()) has been removed from OpenGL 05:33:06 is it just shaders now or what 05:33:06 (implementations will still let you use it for backwards compatibility reasons, but you aren't supposed to :P ) 05:33:15 Yep, everything's shader based now 05:33:51 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 Since I am not using things like geometry shaders from GL3.1 05:35:00 Direct mode was intuitive, but unwieldy. I'm glad it's been deprecated. 05:35:07 Exactly 05:35:16 It was something that was really easy to get started with 05:35:32 But it was very very slow and it made your code invariably ugly 05:35:38 But if you tried writing a large project with it, God help you. 05:35:55 The GL 3.1 way to do things is harder to get set up initially, but once you do, everything is just nice 05:35:56 nicer* 05:36:03 // Warning: GL2.0 code ahead. Here be dragons. 05:36:14 Faster, clearer, easier to maintain, easier to modify 05:36:38 I am using only one thing that is in GL2.0 but not GL3.1 05:36:42 GL_QUADS :P 05:37:05 I have been too lazy to set up the equivalent with GL_TRIANGLE_STRIP or GL_TRIANGLES 05:37:14 I will likely change it later, though 05:37:33 Oh yeah also I am using GLSL 1.1 obviously :P 05:38:03 But not using anything that has been removed from later GLSL versions 05:42:44 Now I made a list of implementation in my esolang wiki user page 05:45:10 My implementation of Deadfish in dc seems very strange 05:45:58 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 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 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 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 Many things that could be, none of them good. 06:47:04 Have you considered getting a monitor made this millenium? 06:47:13 (god I love that I can say that) 06:48:31 pikhq_: ^5 06:50:08 I -think- it was made this millenium 06:50:17 But I mean, why fix it if it ain't broke? Except now it is 06:52:21 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:53:49 Hello 06:54:09 Kindles disconnect easy we using 3G 06:54:59 I seem to have hepython documentation on my laptop 06:55:04 s/he/the / 06:56:33 Is anyone here? 06:57:15 no 06:57:20 Not really. 06:57:51 Okay 06:57:52 I'm trying to decide on which Lisp/Scheme web framework to use. 06:58:06 Anybody have meaningful opinions on that? 06:58:43 I think I'll give Tanebcraft a futuristic theme 06:59:01 And no, sorry 07:00:10 I have never used either Lisp/Scheme or a web framework 07:00:45 I guess I'll go with PLT, a.k.a. Racket, and hope for the best. 07:02:15 Tell me how that goes 07:06:34 One thing that the kindle lacks is tabbed browsing 07:08:01 So comma bye 07:12:19 -!- Taneb|Kindle has quit (Ping timeout: 252 seconds). 07:26:46 -!- chickenzilla has joined. 07:46:42 This library has a lot of needless abstraction. :( 07:46:52 And macro trickery for the mere sake of it. 07:48:05 hm? 07:48:08 No abstraction is needless. Most abstraction is underabstracted. 07:48:19 It ain't abstract enough until it's an endofunctor! 07:48:27 07:48:36 I agree with pikhq_; you're probably missing some point or another 07:48:49 monqy: I was kidding. 07:49:00 Many programmers are genuinely bad at abstraction. 07:49:05 See: FactoryFactory. 07:49:11 eek 07:49:24 I guess I'm not used to misabstraction horrors 07:49:28 usually it's the other way around 07:49:48 Yeah, but when you get misabstraction it's *bad*. 07:51:30 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:23 haha 08:06:32 clang has got blocks in C 08:07:34 -!- BeholdMyGlory has joined. 08:18:38 -!- evincar has joined. 08:23:50 "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 monqy: It's not that bad. I'm hard to please when it comes to libraries. 08:24:32 There are some handy macros, but they have awful names like #%# 08:24:43 ahaha what 08:24:59 do they at least have a consistent, if not half-sensible naming scheme? 08:25:14 They must, but I don't know where to find it. 08:25:20 where by half sensible I mean pertaining to their function 08:25:31 consistency alone is some sensibility, perhaps even a half 08:27:49 In the tutorial for making a basic blog, there's this: 08:27:55 (define new-post-formlet (formlet (#%# ,{input-string . => . title} ,{input-string . => . body}) (values title body))) 08:28:04 Rather than, say, this: 08:28:06 (define new-post-formlet (formlet (xexpr-list ((title input-string) (body input-string))) (values title body))) 08:28:39 Macros are all well and good, but I like things to be concise. 08:28:48 And to reflect the most common use case, with minimal weird syntax. 08:30:29 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 (Formlets being their own little quirk which arise from designing a web server...framework...thing around stateful continuations.) 08:30:36 I don't know enough to tell, of course 08:30:41 Sure, and neither do I. 08:30:48 But I'm saying that API design should 08:30:51 be simple. 08:31:06 Even at the cost of implementation complexity. 08:31:18 Because it probably *won't* come at the cost of implementation complexity. 08:31:29 In all but pathological cases. 08:32:01 It's not even that I can't figure out how to use it. 08:32:15 It should just be obvious. 08:32:25 Discoverability is a huge concern in API design. 08:32:34 A user should be able to guess what function he needs. 08:34:15 Or maybe I'm just griping 'cause it's fun. 08:34:28 I actually meant in terms of api design 08:36:33 Not sure what you're getting at. 08:36:56 But anyway, modelling web transactions with continuations is very pretty. 08:40:05 The world calls me with a request, and I generate and call a page which returns to me with another request. 08:40:22 The result of a form submission, etc. 08:40:31 oh, that is good 08:40:47 you don't think about why continuations are useful until you think about async io 08:41:12 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 monqy: Oh, it might be, if you understand the reasoning behind it. 08:42:22 well it depends on other things that can happen in the parts you changed 08:42:23 But it's not immediately clear that #%# denotes a list of XML expressions. 08:42:32 And I argue that it ought to be, all other things being equal. 08:42:52 (By renaming it.) 08:42:58 I was talking about the structure, rather than names 08:43:12 namely, of the part with the braces and arrows, which you restructured quite a bit 08:43:29 your names are generally more reasonable 08:43:46 Why should I have to use braces? Why should I have to unquote what I send to this macro? 08:44:12 I don't know! It depends on the other stuff in the library. that's my point. 08:45:02 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 I know this is a short example. 08:45:28 So it's hardly worth discussing. 08:45:52 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:18 Hm. This is interesting. 08:54:43 Racket also lets you model stateful servlets as stateless ones by serialising the continuations. 08:55:06 Strikes me as brittle, as all of the serialised continuations are invalidated whenever you change your application. 08:55:23 Also they can't be small. 08:55:26 won't non-serialised continuations be invalidated too? 08:55:49 They'll be removed though, because the server will have stopped running the program. 08:56:03 So they'll be invalid, but also gone. 08:56:15 what happens if you unserialize an invalid continuation? 08:56:17 So they can't persist to fuck shit up in the future. 08:56:36 Uh, presumably your application suffers catastrophic failure. 08:56:58 It might be smart enough to throw an exception 08:57:22 So it is, actually. 08:57:38 Still, peh. 08:57:43 There has to be a better way of going about it. 08:58:07 version-sensitive continuations? 08:58:35 That's still the same line of thinking though. 08:58:54 Ideally I'd like forward-compatible continuations. 08:59:04 -!- Vorpal has joined. 08:59:19 Those that don't fail unless what they refer to no longer exists. 09:00:02 do any programs even do that atm? 09:00:04 does chrome do it yet? lol 09:03:49 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 which is ok a lot of the time 09:07:11 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 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 I'm picturing some kind of diff-related utility 09:08:46 like the kind I read about that works on arbitrary data types not just strings 09:08:51 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 evincar: this is impossible 09:12:15 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 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:40 no you cannot 09:12:41 it'd be horrifically slow of course 09:13:59 This is probably one of those things I assume should just work which turns out to be equivalent to the halting problem. 09:14:26 equivalent? 09:14:53 monqy: Something bother you about the term? 09:14:56 yes 09:14:59 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 sorry that ' should be a ; 09:15:31 evincar: if "the term" means "comparing this to the halting problem" 09:15:37 you cannot possibly even compare those code paths 09:16:00 @cheater: 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:01 Unknown command, try @list 09:16:07 evincar: it's not related to the halting problem at all, let alone equivalent 09:16:08 Patashu, i was reading 09:16:11 ok 09:16:35 Patashu, i am thinking of writing an AST/ASG code editor at some point 09:16:40 this could facilitate such a language 09:16:41 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:16:54 we could call it ELLLANG 09:17:23 ELL = ? 09:17:27 because it will be the first version and it will suck 09:17:38 ell comes from elliott which sucks too 09:17:43 oh 09:17:45 ooh, burn 09:17:50 but i hope the language will only suck half as much so only ELL 09:17:54 :D 09:17:58 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 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 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 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 the IDE could write it for you 09:19:56 and then just don't modify the code outside of the IDE ever ever ever!!! 09:20:03 so yeah 09:20:19 6_o 09:20:28 hi 09:20:39 Yeah, it wouldn't be useful. 09:20:51 But it's an amusing thought experiment at five in the morning. 09:21:10 evincar, it's 4 o'clock in the morning. What on earth are you doing? 09:21:30 Messing with time, apparently. 09:21:42 Through the magic of being on a different part of a sphere. 09:22:01 I just realized I misquoted a meme oops 09:22:19 you are wrong, hotswapping of code is very important and is done in a lot of places 09:22:23 erlang does that 09:22:30 ksplice does that to the linux kernel 09:22:34 flex does it 09:22:43 satellites do that 09:22:50 you mean as in flex bison? 09:23:07 flex is a platform for flash: http://www.adobe.com/products/flex/ 09:23:38 cheater: hotswapping may be useful, but using it to maintain forwards compatability in the general case? maybe for special cases, sure 09:24:17 or were you not replying to me 09:24:20 in which case oops 09:24:25 i was 09:25:08 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 unless that one step is actually composed out of multiple such atomic steps 09:25:46 if you see it that way it becomes a much less daunting task 09:26:05 in fact you can then probably make it backwards compatible too 09:26:52 And I'm talking about web transactions specifically. 09:28:10 cheater: maybe there's some sort of disconnect in understanding and we're actually talking about different things 09:28:12 yeah that is fairly straightforward 09:28:23 Where the browser accepts a page and yields a request, and the app accepts a request and yields a page. 09:28:34 basically you have your data structure, and the state of a transaction 09:28:49 with web apps your data structure is migrated server-side anyways 09:29:26 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 there is no reason you couldn't migrate that together with the main version of the database though 09:30:36 the code is irrelevant to transactions 09:30:57 or rather 09:31:17 if you are mid transaction, code might decide what possible changes you can do to the data 09:31:44 there are usually just a few paths from every identifiable checkpoint in a transaction 09:32:04 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 you just want those checkpoints to map to something in the new version and that is all 09:32:22 and I probably messed up a bunch explaining previously and then 09:32:49 what do you mean by migration assistance and why did you think evincar didn't want it 09:33:15 But yeah, I don't think it would be useful at all. 09:33:22 It might be, in a way I'm not considering. 09:33:33 it is super useful 09:33:42 I mean something explicit to assist with migration from the old code to the new code 09:33:44 there are lots of things with long standing migrations 09:34:01 it is a true and important problem in the Industry 09:34:12 Right, but not generally between requests from the same user. :P 09:34:19 User requests Page 1. 09:34:23 I send him Page 1. 09:34:28 I change my code. 09:34:34 He expects Page 2. 09:34:36 you are wrong 09:34:39 My code should account for that. 09:34:39 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 you are thinking at the wrong level 09:35:03 building applications, be it web apps or not, is not about pages 09:35:08 or screens or dialogs or panels 09:35:21 it is about actions 09:35:26 Fine. I yield him "some data". 09:35:37 then he comes back with that data 09:35:42 And based on said data, he yields me "some request". 09:35:49 Call it what you want. 09:35:50 either you invalidate it or you give him a migration path 09:36:30 here is an example 09:36:50 a satellite with a realtime control spread across two processors 09:37:18 the integration time of the PID is several minutes in order to get proper resolution 09:37:54 for swapping of hot code in the general case, V8's optimizer/whatever does that, right? 09:37:56 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 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 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 that sensory information changes format in the new version because e.g. the old version allowed a bug 09:39:38 you have to upgrade this 09:39:53 here is a solid application of this programming problem 09:42:23 Solution 1: version everything. Solution 2: name fields and establish (possibly bidirectional) conversions. 09:42:46 Solution 2 is what Blender does for serialising structs in its save format. 09:42:47 ??? 09:43:19 Making them forward and backward compatible between versions, within reason. 09:43:30 how is solution 1 a solution, and what does solution 2 mean 09:43:46 alternatively, how are either of them solutions, and what do both of them mean 09:44:14 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 oh so this is about data? 09:45:01 Solution 2 = establish a conversion between the two formats based on some metadata. 09:45:09 My problem wasn't. 09:45:19 Well, only insofar as code isn't data. 09:45:35 it was, data and program are dual to eachother 09:45:38 But I was also talking about Scheme, so I guess I was wrong. 09:47:15 where by "about data" I mean "about establishing a translation between data formats, rather than code paths/etc." 09:47:31 It amounts to the same thing, though. 09:47:48 your code path is part of the data format. 09:47:58 Because code paths, as serialised continuations, are data. 09:48:37 But the obvious format to use isn't amenable to change. 09:48:48 what's the obvious format 09:48:50 So I guess I'm speculating about other formats. 09:49:04 anyway I kind of forget what I meant 09:49:07 :'( 09:49:17 I dunno, I ought to sleep. 09:49:57 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:09 me too :'( 09:50:16 anyway I think I got confused at some point 09:50:19 I imagine him as a small, skinny, angry fellow. 09:50:25 and thought the conversation was about something it wasn't 09:50:33 I guess I don't need to imagine that he's an angry fellow. 09:50:35 and then started talking about bad things 09:50:41 He's sort of demonstrated that. 09:51:07 Oh well, misunderstandings can be entertaining at least, and fruitful at best. 09:51:12 dear elliott: disregard everything i said in the preceeding conversation it (the conversation) was stupid and i was confused 09:51:39 I am immune to confusion. 09:51:41 Did you just "haha disregard that I suck cocks" yourself? 09:51:48 is it possible to have serialized continuations and also have native code compiling? 09:52:03 evincar: what does that mean 09:52:39 evincar: depending, I may have 09:52:43 monqy: http://knowyourmeme.com/memes/disregard-that-i-suck-cocks 09:52:45 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 haha, what a weird thought. compiling to both bytecode AND native code and running both simultaneously 09:53:24 evincar: sure whatever 09:53:26 Woo I got erbo'y talkin' 'bout what ah did be talkin' 'bout. 09:53:51 -!- cheater has joined. 09:53:55 monqy: It wasn't a good joke but it was a joke and I'm dealing with insomnia. 09:54:00 Patashu: well not simultaneous. Running one or the other when appropriate. 09:54:32 CakeProphet: it could be multi-threaded 09:54:39 Patashu: That's essentially the point of JIT compilation on architectures that otherwise use bytecode. 09:54:48 Such as the JVM. 09:55:09 ah yes, that makes much more sense. 09:55:10 You JIT what you can and bytecode what you have to. 09:55:16 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:18 compile to bytecode and JIT compile that. 09:55:28 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 I dunno, I'm not up on it. 09:56:02 jit jit jit jit jit 09:56:09 I'll jit that in a jiffy 09:56:13 !perl sleep 09:56:15 as soon as I'm over the jitters 09:56:31 I thought compilation to native code was done primarily as an optimisation. 09:56:37 yes 09:56:40 But maybe I'm living in the 90s. 09:56:55 compilation to native code is done because it's hip 09:56:58 there's no other reason 09:57:11 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 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 Language: EVERYTHING IS A CONSLIST 09:58:37 good one 09:58:39 Implementor: Ugh, no, dammit, sometimes things are numbers. 09:58:54 Language: I HAVE INFINITE MEMORY 09:59:03 Implementor: GC time. 09:59:07 etc. 09:59:20 > C and fortran are still an order of magnitude faster than any other language 09:59:21 : parse error on input `of' 09:59:42 haha, it took as long as 'of' to realize, hey, this ain't haskell! 10:00:40 In a language I was working on recently, that'd've parsed correctly. 10:01:00 hm? 10:01:00 would To Kill a Mockingbird be a valid program? 10:01:11 As ((C) and (fortran are still an order of magnitude faster than)(any (other language))). 10:01:27 Because "and" and "any" are builtins and identifiers can be multi-token. 10:01:27 what 10:02:03 I mean, it wouldn't've *run*. 10:02:23 I'm not *magic*. 10:02:41 "identifiers can be multi-token" wouldn't it be simpler to expand the lexical syntax to make multi-word identifier tokens? 10:03:00 wat 10:03:01 what's the difference? 10:03:03 er 10:03:09 one of them is simpler 10:03:11 :'( 10:03:20 they sound like the same thing to me............ 10:03:30 one of them jives with me betterly 10:04:41 Implementation-wise, yeah, identifier ::= identifier-part (ws* identifier-part)* 10:04:52 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 but who cares about tokens what are those 10:05:47 The feature is good for readability but bad for expectations. 10:06:11 "if foo bar" is a parse error because "foo bar" is an identifier. 10:06:30 I forget how I resolved that. 10:06:40 Other than "if (foo) bar". 10:07:13 Whatever. Time for sleep. 10:07:32 if foo then bar? 10:08:03 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 I was doing it to prove that PotatoDomainInteractionControllerSystem is unreadable. 10:09:13 but it is readable 10:09:19 but why would you type it 10:09:20 but 10:09:20 why 10:09:31 it's readable enough 10:09:39 what about potato_domain_interaction_controller_system? that's readable as fuc 10:09:46 and where the token begins and ends is embedded into it as a bonus 10:09:58 potato-domain-interaction-controller-system is good too 10:09:59 Also to make an intelligently structured language with minimal punctuation. 10:10:45 by punctuation do you mean "characters like .!~#$%^&*" or what 10:11:00 #define { begin 10:11:02 #define } end 10:11:07 hehehehe 10:11:10 yes 10:11:23 but the other way around? maybe? who knows??? 10:11:32 JUST LIEK PACSAL :D 10:11:36 depends on which way you're going. either way, yes. 10:11:45 it is a point which I was planning to make 10:11:48 after I got my answer 10:12:04 And yes, by punctuation I mean "characters like fuck". 10:12:26 seems like a bit of a strange goal 10:12:32 Alternatively, whatever ispunct() says. 10:13:00 It was one of the lesser important goals of that language. 10:13:08 SQL has low amounts of symbols 10:13:26 Bluh. Too much redundancy though. 10:14:11 http://golf.shinh.org/reveal.rb?1000+digits/leonid+%28alnum%29_1226043321&rb 10:14:25 I guess the point is that punctuation in a language should be intuitively meaningful, not just arbitrarily or conventionally specified. 10:14:31 so-called alnum solution 10:14:36 Because keywords are self-evident. 10:14:57 So punctuation ought to be held as close to that standard as possible. 10:15:42 keywords are hardly self-evident 10:15:50 I don't mind punctuation most of the time because it's similar in most languages 10:16:01 and it's as much defined by convention as other symbols 10:16:15 This goes back to the API design argument. 10:16:23 A keyword should give you a clue as to what it does. 10:16:41 + gives as much a clue about what it does as "plus" 10:16:49 <$> 10:16:52 perhaps even more 10:16:53 clue 10:16:53 self evident the operator 10:17:00 Well, yes, but that's an established convention. 10:17:02 Same as English is. 10:17:14 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 Whereas ++ isn't universally recognised as concatenation. 10:17:18 hmm, what about fortran? 10:17:26 like 95% of its features are new keywords 10:17:33 evincar: you said yourself that it shouldn't just be conventionally specified??? 10:17:37 evincar: maybe you're tired?? 10:17:48 You're right. 10:17:54 I think he means, established convention for -everyone- who speaks english 10:17:57 so + - etc are fine 10:18:04 ! is not, because what does ! mean? this sentence is really important? 10:18:21 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 what about when that would only hinder it 10:18:51 Patashu: Right. 10:19:04 Then you make the break. 10:19:09 But only then. 10:19:43 And in an esolang, that's entitled to happen more often than not. 10:19:49 But usability is usability. 10:20:10 You've got to respect convention and human constraints, whether you like it or not. 10:20:18 And I'm really leaving now. 10:20:21 -!- evincar has quit (Quit: leaving). 10:20:26 have you ever looked at inform, the scripting language for IFs? 10:20:27 bah 10:20:34 inform is written to look as much like english as possible 10:29:05 how do you send someone a message such that it bugs them about them the next time they come on 10:29:19 lambdabot 10:29:46 @help tell 10:29:46 tell . When shows activity, tell them . 10:30:25 tell evincar Check out this language, it's meant to be as english-like as possible: http://inform7.com/ 10:30:29 like that? 10:30:35 with a @ or ? in front 10:30:37 @tell evincar Check out this language, it's meant to be as english-like as possible: http://inform7.com/ 10:30:37 Consider it noted. 10:32:48 being too much like english is a bad thing imo 10:33:07 I think so too in this case 10:33:11 english is ambiguous 10:33:19 if you word your sentence wrong the person you talk to is like 'okay I get what you mean' 10:33:51 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 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 (programming language syntax that mimics natural language is stupid) 10:36:26 (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 (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 ((where by kind of stupid, I mean stupid)) 10:38:35 (((I put this here mostly just so I can tell evincar about it))) 10:39:54 what do you think about perl syntax? 10:40:03 it's a mess 10:40:10 .. best operator 10:48:41 -!- monqy has quit (Quit: hello). 11:03:49 ../... in a scalar context is indeed the best. 11:08:29 there's a ... operator too? 11:08:53 It's almost but not quite exactly like '..'. 11:09:01 In list context, it is the same. 11:10:08 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 http://www.perl.com/pub/2004/06/18/variables.html wow 11:11:21 perl is crazy lol 11:13:43 !perl @a = (1,2,3,4); for (@a) { print "dotdot $_ " if $_==1 .. 'truu'; print "dotdotdot $_ " if $_==1 ... 'truu'; } 11:13:44 dotdot 1 dotdotdot 1 dotdotdot 2 11:13:48 See, a difference. 11:14:38 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 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 http://perldoc.perl.org/perlop.html#The-Triple-Dot-Operator 11:19:52 doesn't talk about its flipflop use 11:20:10 ah 11:20:13 it's talked about udner range operators 11:21:11 Right, there's also that use. Though I thought the triple-dot stand-in was something quite new? 11:21:37 (I mean post-5.10 new here.) 11:22:02 haha 11:22:06 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 it's like stuff you see in java/C# just because C did it :O) 11:58:29 hm? 11:58:32 so 11:58:44 where could I put the 0 in Perl? 12:00:24 void context 12:02:15 1 while foo(); 12:02:16 oh 12:02:17 0; 12:02:18 1; 12:02:59 -!- Sgeo has joined. 12:03:11 It's like having a label at the end of a loop in C and using 0; just because labels need a statement. 12:03:16 fail: 0; 12:04:05 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 Admittedly with an artifical block the scope of it won't then extend to the other case statements. 12:05:10 (And makes it C++-legal.) 12:05:34 With C89 you need a block too :P 12:05:41 you could do just ; 12:05:45 like 12:05:56 if(something) ; else blah blah; 12:06:44 uh no, {;} 12:07:00 i remember playing with this 12:07:41 No, ; works. 12:07:58 -!- boily has joined. 12:07:59 But label:; reads like shit :) 12:08:44 Grammar-wise the ";" is an expression statement, only the expression is optional. 12:09:29 Possibly more often seen in for/while than elsewhere. 12:10:18 What also would look real stupid is "do ; while (whatever);" 12:10:41 is the idea that it looks stupid arbitrary or based on polling? 12:10:44 -!- Taneb|Kindle has joined. 12:11:00 "Do a sea monster while whatever." 12:11:03 Hello 12:11:21 `addquote "Do a sea monster while whatever." 12:11:26 am I doing it right 12:11:26 624) "Do a sea monster while whatever." 12:11:34 Yes, for some values of "right". 12:11:41 so right is an array? 12:12:01 No, a dict 12:12:14 "No, *you're* the dick!" 12:12:18 12:16:18 -!- Taneb|Kindle has quit (Ping timeout: 252 seconds). 12:17:22 is the word "do" redundant for a pc? :D 12:19:57 introducing the new keyword, dont 12:20:13 infuriating grammar pedants with its lack of apostrophe 12:30:16 dont { printf("blah\n"); } while (i > 5); 12:31:50 nou, ya' a dick, ya' the biggest dick in all of canada 12:57:08 rezzo crashes for /no freaking reason/ on Mac ... 12:57:19 It crashes while allocating the SDL window. 12:57:53 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 ALSO: I decided before uninstalling MacPorts, I should update it (I don't know why) 13:01:59 It's taking FOREVER to update >_< 13:34:22 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:36:52 goddamn GDT 13:37:29 The global descriptor table? 13:38:57 yep 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:24 lol 13:45:26 > 81 * 7 * 4 13:45:26 2268 13:45:31 itidus20! 13:45:45 Aesthetic Disgrace Error E9504 13:46:01 Please see your Graphic Designer. 13:46:39 (recycling someone elses joke) 13:47:02 A typo has created the greatest forename ever: Weclome. 13:47:14 Or middle name! 13:47:42 Mordechai Weclome Birkenstein 13:47:52 Or even surname! 13:47:55 Mordechai Weclome-Birkenstein 13:48:05 Phantom_Hoover: It's like SDL says "I need a window this size" and the Mac goes "NOT PRETTY ENOUGH" and barfs all over you. 13:48:47 > product [] 13:48:47 1 13:48:51 Gregor, perhaps the most Jewish name? 13:49:09 Although Weclome really looks English to me. 13:49:18 that joke has so much potential... oy vey 13:49:23 Phantom_Hoover: Idonno, it sounds hyperisraeli to me. 13:49:24 i mean the SDL one 13:49:45 The thing is, it actually crashes in the middle of Aqua garbage. 13:49:58 It's not SDL that crashes, it's the Aqua/Cocoa/whateverTF libraries. 13:50:15 how come? 13:50:58 Error "The ratio of your window's width to it's height is not expressible as a ratio of numbers less than 20" 13:51:29 :-?? 13:52:54 Your background color is atrocious. Your fontfaces are outdated, and your borders look like children's scribbles. 13:54:16 Now get your ugly yeller keister offa my property while (i > 0) i--; 13:54:45 -!- GuestIceKovu has joined. 13:55:14 itidus20: It's 1:1 :P 13:55:23 * itidus20 barfs. 13:55:25 -!- Slereah has quit (Ping timeout: 268 seconds). 13:57:41 for whatever reason regular polygons are ugly in computer interfaces 13:58:00 I don't think a polygon can be irregular 13:58:04 you need at least four vertices for that 13:59:00 lol 14:01:20 in any case we humans like our rectangles 14:01:32 -!- iamcal has quit (*.net *.split). 14:02:23 Patashu: have you ever heard of the game N? 14:03:48 yup 14:04:05 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 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:05:59 WTF, mac 14:06:57 it's because steve jobs resigned 14:07:05 http://www.google.com.au/search?sourceid=chrome&ie=UTF-8&q=Error+(1002)+creating+CGSWindow 14:08:57 ArghSDLmain 14:10:35 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 having said this.... some languages on the wiki do the same thing :D 14:11:16 isn't that how jvm works? before it started jitting 14:11:17 well not a bytecode but tokens or whatever 14:11:25 dunno 14:14:33 i think in the long run linux will be a safest bet 14:14:52 windows has evidently no interest in backwards compatability 14:15:43 ... 14:16:00 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:16:10 ms platforms gradually dying off.. dos.. win3.11 .. win95.. win98.. visual basic 6 runtimes.. etc etc etc 14:16:24 Whereas Linux binaries from four years ago won't run :P 14:16:32 oh darn 14:16:36 thats not good 14:16:42 (Depending on how you made them) 14:16:48 hehehe 14:16:54 Yeah, Linux has an abysmal track record for backwards-compatibility (though it's getting better) 14:17:08 And in fact, it's not Linux. 14:17:11 Linux has a great track record. 14:17:14 It's the GNU userland. 14:17:21 lol 14:17:26 even more reason for virtual machines 14:17:37 Linux 3 can run binaries made with libc4 for Linux 2 :) 14:17:41 (.0) 14:17:49 when you know the actual machine is going to be extinct... rely on vm 14:17:53 Yuh 14:20:02 Some of the best games are built ontop of VM's. 14:20:16 And when the machine that runs the VM is extinct ... run it in a VM! 14:23:44 So the creators of N have shown that even they can fall prey to the siren's call of overengineering. 14:27:41 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 skeletal animation system, aka adobe flash 14:28:08 :P 14:28:26 uhmm 14:29:05 am I not right? 14:29:07 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 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 Speaking of game design ... Rezzo! :P 14:31:17 lololobsessed 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:20:20 Hello 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 i really like it when new people in here get to talk to zzo 17:16:23 05:32:44: Most of the ugly stuff (like glBegin()/glEnd()) has been removed from OpenGL 17:16:38 if by ugly you mean not ugly, and by removed you mean now you get to write a shader for everything 17:24:01 `addquote 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 625) 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 elliott, oh come on, not everything I say about DF is quotable. 17:24:40 Phantom_Hoover: Except that it is. 17:24:48 Phantom_Hoover: Well, "* Phantom_Hoover makes SO MUCH SOAP" wasn't. 17:24:50 But that was. 17:25:31 `addquote But I mean, why fix it if it ain't broke? Except now it is 17:25:33 626) But I mean, why fix it if it ain't broke? Except now it is 17:26:01 `delquote 625 17:26:04 ​*poof* 17:26:38 `addquote 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 626) 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:48 `quote 625 17:26:51 625) But I mean, why fix it if it ain't broke? Except now it is 17:26:55 good 17:28:45 09:07:11: cheater: No, explicit migration wouldn't be necessary if the continuations were genuinely forward-compatible. 17:28:45 I too want a magic language that anticipates all future changes to my program 17:32:17 09:17:27: because it will be the first version and it will suck 17:32:17 09:17:38: ell comes from elliott which sucks too 17:32:17 glad to know I'm always in your thoughts, hope you find someone more interesting to obsess about one day 17:32:43 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 i like how you are too stupid to understand what people say 17:45:28 cheater, shut up. 17:45:47 -!- copumpkin has quit (Ping timeout: 276 seconds). 17:46:17 no u 17:47:38 \ood 17:47:43 \ood. 17:47:47 good. 17:47:56 layouts r a bitch 17:49:05 -!- copumpkin has joined. 18:06:37 -!- boily has quit (Ping timeout: 240 seconds). 18:43:44 http://pastebin.com/6kfwTsB0 18:55:11 -!- ais523 has joined. 19:17:17 haha at Half-Broken Car in Heavy Traffic 19:17:40 most ingenious 2D BF derivative I've seen at all recently 19:17:53 that hello world is pretty 19:17:59 looks like a two-dimensional CA trace 19:18:14 one wonders what @outtext does, though 19:18:54 presumably some I/O extension 19:27:18 -!- copumpkin has changed nick to TraderJoe. 19:27:19 Out of curiosity, can you 'nickserv ghost' the connection you're sending the request from? 19:27:29 let me try on a second nick 19:28:00 -!- ais523_ has joined. 19:28:11 RAW >>> :NickServ!NickServ@services. NOTICE fungot :You may not ghost yourself. <<< 19:28:11 fizzie: seriously if in future. tml i wake up long 19:28:13 Aw. 19:28:27 :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 (Alternative question: using the bot to test that: unethical, or just impolite?) 19:28:52 So what's fungot's password? 19:28:53 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 I don't think it's unethical 19:29:05 elliott: it actually uses an SSH key 19:29:09 because it has trouble remembering passwords 19:29:12 heh 19:33:03 ?pl \e -> eventQ eventKeyName e == "q" && Control `elem` eventQ eventModifier q 19:33:03 (&& Control `elem` eventQ eventModifier q) . ("q" ==) . eventQ eventKeyName 19:33:08 gross 19:33:11 erm 19:33:12 ?pl \e -> eventQ eventKeyName e == "q" && Control `elem` eventQ eventModifier e 19:33:12 ap ((&&) . ("q" ==) . eventQ eventKeyName) ((Control `elem`) . eventQ eventModifier) 19:33:15 grosser 19:33:33 :liftA2 (&&) 19:33:34 :t liftA2 (&&) 19:33:35 forall (f :: * -> *). (Applicative f) => f Bool -> f Bool -> f Bool 19:33:52 :t liftA2 (&&) ((== "q") . eventQ eventKeyName) (elem Control . eventQ eventModifier) 19:33:52 Not in scope: `eventQ' 19:33:53 Not in scope: `eventKeyName' 19:33:53 Not in scope: `eventQ' 19:33:56 good enough 19:34:03 -!- TraderJoe has changed nick to copumpkin. 19:46:36 -!- FireFly has quit (Quit: FireFly). 19:50:06 ?undo \e -> do x <- eventQ eventKeyName e; y <- eventQ eventModifier e; return (x == "q") && elem Control y 19:50:06 \ e -> eventQ eventKeyName e >>= \ x -> eventQ eventModifier e >>= \ y -> return (x == "q") && elem Control y 19:50:08 ?. pl undo \e -> do x <- eventQ eventKeyName e; y <- eventQ eventModifier e; return (x == "q") && elem Control y 19:50:08 ap ((>>=) . eventQ eventKeyName) ((. ((. elem Control) . (&&) . return . ("q" ==))) . (>>=) . eventQ eventModifier) 19:50:10 gross 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 ?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 first, i think you are missing $ after return 20:15:08 \e -> liftM2 (&&) ((== "q") <$> eventQ eventKeyName e) (elem Control <$> eventQ eventModifier e) 20:17:02 can you people not contain elliott 20:17:09 now he is invading other irc channels 20:17:21 oh no 20:17:23 ... 20:17:24 i mean you have a responsibility for your pets 20:18:55 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:25 fina 20:19:26 fucking 20:19:26 lly 20:19:37 -!- oerjan has set channel mode: -o oerjan. 20:19:38 oh boy I'm going to learn a little Visual Basic. 20:20:29 someone on Facebook asked if I knew "vba" 20:20:40 so, now I get to learn it to help them with something. weeeeee 20:20:55 Friendship ban. 20:21:09 hey I'm not a language zealot. 20:21:19 my goal is to become slightly familiar with all of them at some point. 20:21:31 enough to program well in each. 20:21:34 good luck 20:21:38 all of them 20:21:38 what's "all of them" 20:21:42 all of them. 20:21:45 hahahahaha 20:21:47 are you serious 20:21:52 ya dude 20:21:57 :> see this face? 20:22:00 that is the face of seriousness. 20:22:10 CakeProphet, are you Sgeo's idiot girlfriend. 20:22:16 No. :> 20:22:35 we're totally not like a thing or anything. 20:22:56 Are you a penguin. 20:23:24 uh, no. 20:23:44 what does any of this have to do with me learning "all of the languages" 20:23:54 :> 20:24:06 Should I point out that I do not, and have never had, a girlfriend? 20:24:06 >:3 20:24:13 Sgeo: no need. 20:24:16 sgeo's idiot boyfriend 20:24:56 Friendship idiot. 20:25:45 Nor a boyfriend, and I have little-to-no interest in men in that way 20:26:20 Sgeo: no, you shouldn't have done so 20:26:59 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 I only like interesting/good languages 20:29:44 other languages are boring/bad 20:30:16 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 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 it's just a way for me to learn about all of these things in practice. 20:31:26 I doubt I'll find anything worthwhile in VB though... 20:32:10 but hey, one more skill. programming is like RPGs right? 20:32:30 Yes, in that it involves lots of grinding. 20:32:43 "Ooh, I leveled up my semicolon skill." 20:33:17 character sheet = resume 20:33:32 well, a resume is like... an abridged character sheet. 20:34:32 yes i would like my profession to be in doing visual basic 20:35:23 !haskell main = return (error "hi" :: Int) 20:35:32 EgoBot? 20:35:34 !haskell main = print 99 >> return (error "hi" :: Int) 20:35:39 99 20:36:52 monqy: I would never get a job programming VB 20:37:17 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 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:38:00 monqy: I see. 20:38:40 I did find a SBCL job once. 20:40:03 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:40:34 PRNG = cheating 20:40:44 these are the rules. 20:42:46 -!- iamcal has joined. 20:43:23 CakeProphet: Gingerbread... I... 20:43:42 CakeProphet: Is "all at once" an option. 20:43:46 yes. 20:43:50 CakeProphet: All at once. 20:43:51 though I'd probably exclude lucky. 20:43:59 CakeProphet, all the drugs. 20:44:08 That too. 20:44:10 gingerbread and mint chocolate chip would probably be amazing though. 20:44:18 monqy: so my FRP Gtk stuff is going well... 20:45:11 Phantom_Hoover: how can you resist a drug that tastes like freshly baked cookies? 20:45:28 monqy: http://sprunge.us/jBMg................ 20:46:01 CakeProphet: yu mean christmas coffee? 20:46:46 No I don't know what that is. 20:46:47 sourceLanguageManagerGetDefault good names 20:46:54 monqy: that's oop for you 20:47:20 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 :t flip fmap 20:48:15 forall a b (f :: * -> *). (Functor f) => f a -> (a -> b) -> f b 20:48:19 ?hoogle flip fmap 20:48:19 No results found 20:48:22 how will you select every thing... 20:48:26 ?hoogle hi a nice operator for flip fmap or something please 20:48:26 No results found 20:48:37 monqy: ctrl+shift+a i guess???????? that is less important than cursor movesments 20:48:48 monqy: have you not used Ctrl+A/Ctrl+E do you not know...the power 20:49:05 i usually use vim because i am a bad person.... 20:49:13 monqy: do you ever use a shell 20:49:16 elliott: I read about this nifty thing in Haskell once that lets you associate a name to another expression. 20:49:19 I can't remember what it is though 20:49:25 (if you use your shell in vikeys mode i laugh) 20:49:32 CakeProphet: pamf is not a good name 20:49:37 I've never used ^A or ^E in shelle 20:49:47 monqy: do so it will make you happey 20:49:50 man. i would probably like a vi'd shell 20:49:51 but in vim i'm used to $ and ^ 20:50:02 @hoogle (|>) 20:50:02 Data.Sequence (|>) :: Seq a -> a -> Seq a 20:50:02 Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a 20:50:02 Text.Parsec.Prim (<|>) :: Monad m => ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a 20:50:20 elliott: just use some hilarious operator. 20:50:27 quintopia: you acn do it 20:50:31 quintopia: its bad though 20:50:41 quintopia: set -o vi 20:50:41 why bad? 20:50:42 can you use cents instead of dollars? 20:51:47 pamf = "pretty awesome motherfucker" 20:51:49 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:52:29 quintopia: so do it 20:52:29 set -o vi 20:52:45 i will maybe later 20:53:13 !wacro 20:53:16 ICAVS 20:53:20 @hoogle (<**>) 20:53:20 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 20:53:36 <$$> 20:53:43 for flip fmap 20:53:47 Going by that terminologogy. 20:53:56 get moar $$$$$ 20:54:11 hi 20:54:14 International Climbing And Vertical Society 20:54:19 hi monqy 20:54:21 !wacro 20:54:22 SSDL 20:54:35 solid state device language? 20:54:41 Super Standard Development Library? 20:55:02 sexy software description language 20:55:09 I am still displeased with the amount of garbage acronyms it produces. 20:55:16 International Conference for Angels, Vampires and Snakes. (For ICAVS, obvs.) 20:55:38 !wacro 20:55:40 TFAW 20:55:53 @hoogle (<**>) 20:55:53 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 20:55:56 fizzie: Not the same thing. 20:55:58 JOCKS is the latest one i've seen that i like (Journal Of Cave and Karst Sciences) 20:56:01 fizzie: That isn't a flip, the effects are reversed 20:57:12 > [1,2,3] <**> [1,2,3] <**> return (,) 20:57:13 Overlapping instances for GHC.Show.Show (b -> (a, b)) 20:57:13 arising from a use... 20:57:21 ?source (<**>) 20:57:21 (<**>) not available 20:57:25 oops 20:57:25 CakeProphet: You must find a large dataset of acronyms, and then learn letter bigram frequencies from that, and then go on from there. 20:57:38 ?source <**> 20:57:38 <**> not available 20:57:41 oops 20:58:11 fizzie: well the next generator was going to produce weighted acronyms that are vaguely pronouncable by using a markov chain. 20:58:38 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 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 using a better data source than /usr/share/dict/words is probably a start. 21:01:20 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 but I'd have them rare enough so that they don't litter the acronyms. 21:02:50 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:03:44 trigram? 21:04:03 Three-letter sequence, in this case. 21:04:10 double consosnant + vowel, double vowel + consonant 21:04:16 yes I know what you mean, but why? 21:04:46 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 because english has rs and st and th but you never see rsth :P 21:05:20 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 quintopia: the consonant/vowel alternation would prevent that 21:05:36 dict/words is sufficient for that 21:05:53 CakeProphet: but enforcing that requires more code 21:06:01 nah, just a markov chain. 21:06:20 more effort anyway 21:06:23 well yes. 21:06:26 id just let the data speak 21:06:40 I'm going to try this one first. 21:06:43 a markov chain will just produce text unless you run it on an acronym database. 21:07:00 -!- boily has joined. 21:07:03 and then maybe pull some more stats from data. 21:08:21 -!- hagb4rd has joined. 21:08:33 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 in other words it will not be possible to go to every state from every state. 21:10:01 Well, that's just stupid. 21:10:07 it will work though. 21:10:30 YOU WILL SEE. 21:11:10 hi 21:11:45 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 just the letter frequency weighting is enough for me, I think. We'll see. 21:13:28 ah maybe a hidden markov model would simplify the number of state transitions. 21:13:49 not sure. I have other stuff to work on first though so I'm going to do this later. 21:13:59 Certainly, if you make it have a lower amount of hidden states. 21:15:00 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 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 just so it doesn't produce quite so many alien-sounding words. 21:19:00 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 not entirely sure I'll need context, unless I want the words to sound vaguely English-esque 21:23:12 but I think the hidden markov chain is a pretty flexible model that could be fine-tuned later. 21:23:20 I don't know much about PCFG 21:23:43 it seems well-suited. 21:24:46 ah I see how it works. it's just a list of production rules with assigned probabilities 21:26:54 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 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 fizzie: give me something wovel-like pls 21:29:11 same input parameters as wacro 21:31:02 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 because I can always just add more hidden states. 21:31:51 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 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:00 probably the latter thing. 21:34:04 How would an object-capability model be expanded to a pure-FP language like Haskell? 21:34:07 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 basically I control the transitions and stop them whenever I want. 21:34:09 fizzie: you can terminate the run at any point 21:34:46 while length $outputstring < $inpLength 21:34:53 runMarkChain 21:34:58 *Markov 21:35:08 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 you can make a markov model that self terminates at a prescribed length too, though truncating seems easier 21:36:42 yeah my markov chain would not worry about terminating at all. 21:37:15 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 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 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 what do you call a time-dependent markov thing? 21:39:39 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:48 also, I wasn't aware time was involved. 21:39:57 Hidden semi-Markov model, usually. 21:40:02 ah 21:40:22 In your case time == number of letters. 21:40:28 not necessarily. 21:40:31 oh, well yes 21:41:16 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 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 also truncating double vowels at the ends of words would probably result in some strange results. 21:43:18 i still think you're overcomplicating it. learning a straight HMM from a dictionary is far easier than handcoding transitions 21:43:42 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 the problem is that I have no idea how to make a program "learn" a HMM 21:44:03 You use an existing library, of course. :p 21:44:32 or you just scan the document for trigrams, through them into a hashtable, count frequencies 21:44:48 and then covert those frequencies to probabilities in the obvious way 21:45:33 I still don't really understand why I would look for trigrams. 21:45:58 you dont have to, but it would better match english if you did 21:46:23 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:31 yes but its easy :P 21:47:50 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 Anyhoo. I'm a machine-learning person, my viewpoint is obviously biased. 21:49:03 (We dislike actually having any knowledge about anything.) 21:49:27 oh you work on unsupervised models? 21:50:11 fizzie: 21:50:11 In the days when Sussman was a novice, Minsky once came to him as he sat hacking at the PDP-6. 21:50:11 "What are you doing?", asked Minsky. 21:50:11 "I am training a randomly wired neural net to play Tic-tac-toe", Sussman replied. 21:50:11 "Why is the net wired randomly?", asked Minsky. 21:50:12 "I do not want it to have any preconceptions of how to play", Sussman said. 21:50:14 Minsky then shut his eyes. 21:50:16 "Why do you close your eyes?" Sussman asked his teacher. 21:50:20 "So that the room will be empty." 21:50:21 oerjan: also I'm curious as to why you banned cheater. 21:50:22 At that moment, Sussman was enlightened. 21:50:23 passive aggression? 21:50:24 fizzie: Couldn't resist. 21:50:35 i love that story 21:50:47 anywayz --> 21:52:01 ketchup + mayo = the perfect condiment 21:52:14 useful for making other perfect condiments 21:52:22 CakeProphet: well, he _was_ harassing me in another unrelated channel for joining it and then came here to complain about it... 21:52:24 but I can't speak for oerjan. 21:52:30 ah okay. 21:52:42 from my vantage point it sounded like he was just being somewhat passive aggressive towards you. 21:53:09 Is it passive if you're not actually being passive about it? 21:53:57 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 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 typically an indirect verbal aggression in other contexts is known as passive aggression though. 21:57:07 "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 I should have probably used some kind of parsing library for parsing this scripting language. 21:58:56 instead of hardcoding it. 21:59:02 oh well. 22:03:37 -!- Wamanuz has quit (Ping timeout: 260 seconds). 22:16:22 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:16:58 oh, happy birthday freax 22:17:11 heh, "professional like gnu" 22:18:03 Yeah, at that point in time GNU was going to be released "any time now". 22:18:25 HURD had only been around for about a year. 22:18:45 So it was completely and utterly understandable that it was a pile of dog shit at the time. :P 22:20:11 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 three, or maybe even more! 22:21:49 Just the kernel? I'm counting 24 ISAs. 22:22:05 And UML. 22:22:32 linux can run on diagrams? 22:22:48 No, but Linux can run on Linux. 22:23:04 * EgoBot (foobar@codu.org) has joined #esotericg 22:23:06 Gregor: foobar 22:23:20 elliott: Baf. 22:23:23 Gregor: wat 22:23:44 fungot: fun it up a bit 22:23:44 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 This is how low the bot has gone: now it's telling fart jokes. 22:25:26 ^style 22:25:26 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 fizzie: Did you ever do anything with those Google n-grams because you SHOULD. 22:26:50 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:27 it's just you 22:27:51 RMS is actually in Birmingham today 22:27:59 he was giving a talk at my University, but I didn't visit it 22:28:27 because it was on a subject where RMS' opinion was completely predictable 22:29:08 Probably one of his canned speeches that he's been given for the better part of 20 years now, anyways. 22:29:19 ais523: what subject? 22:29:19 s/given/giving/ 22:30:27 "Copyright vs Community in the Age of Computer Networks" 22:31:37 and the abstract is pretty much "copyright is bad and it's getting worse, go get rid of it" 22:32:09 Not unreasonable, but utterly predictable from him. :) 22:32:54 indeed 22:33:00 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 22:36:23 yes, it was obscenely overpriced. 23:10:40 `addquote I'm sacrificing the animals, then I'm going to bed. 23:10:46 627) I'm sacrificing the animals, then I'm going to bed. 23:11:17 gobject is really annoying. 23:12:00 gobsmacking 23:14:16 perhaps the trigram approach would be more effective. 23:14:17 -!- copumpkin has joined. 23:14:30 but... how do you count trigrams? gob|sma|cki|ng 23:14:37 wouldn't it be more like gob|sma|ck|ing 23:15:09 * Phantom_Hoover → sleep 23:15:11 -!- Phantom_Hoover has quit (Quit: Leaving). 23:17:56 fizzie: ^^^^^ 23:18:44 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:14 GOBSMACK 23:20:17 -!- Patashu has joined. 23:20:25 ah, I know. 23:21:35 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 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:23:56 and then ??? PROFIT? 23:24:15 :( 23:24:17 also maybe take into account positioning. For example "ck" is more likely to occur at the end of a word. 23:24:44 as is "ing" 23:25:42 the only way ck would occur elsewhere is if it's a compound word of some kind, I think. 23:26:05 ingratitude 23:26:16 I can't think of a word starting ck, though 23:26:57 well right... since "ingratitude" would be in my dictionary data most likely, ing at the start could be a possibility. 23:27:23 the main issue I'm having is how to decide how to split up words into n-grams 23:28:28 so maybe just accounting for every possible combination would be the best approach.. 23:28:32 I dunno. 23:31:04 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:16 oh okay. 23:31:37 using the first two letters to predict the third 23:31:55 I had the same impression as oerjan 23:32:18 this is a new area for me so I didn't really know how it worked. 23:32:52 so you're not plugging in the trigrams themselves just using them to determine individual characters based on previous characters. 23:33:30 well, stochastically determine 23:34:07 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 perhaps. i imagine it as having special initial/final trigrams with spaces in them for the boundary 23:34:54 so " g" and " go" 23:34:57 ah okay. 23:35:24 wow this makes so much more sense now. 23:37:06 I think what I'll probably do is allow for language options. 23:37:09 and mixing of languages. 23:37:25 I just need to find data sets for each language that I add. 23:38:27 I guess it's time to download some language packs. :D 23:38:31 Usually you count all trigrams, e.g. gob, obs, bsm, sma, mac, ack, cki, kin, ing. 23:38:44 right that's what I implied. 23:38:49 from what oerjan was saying. 23:39:06 I didn't bother to read what came after the highlighted-to-me bit. 23:39:21 mixing language data sets will be interesting. 23:39:54 the languages would need to have similar phonetic rules though. 23:40:24 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 what are the packages that contain /usr/share/dict language data? 23:41:28 And yes, usually there's start/end symbols to model the edges separately, So you'd normally have . And then use just the bigram frequencies for the first word with context "<". (But certainly taking < I like the double symbol one. 23:42:27 "wamerican", "wfinnish" is what I have installed. 23:42:42 Maybe the others are similarly names. 23:43:09 ah the descriptions all contain /usr/share/dict so I'll just search for that. 23:43:28 -!- augur has joined. 23:43:34 I guess I want the insane version of everything. 23:43:36 wamerican-insane 23:44:07 or maybe I want wamerican-insane wamerican-huge wamerican-large 23:44:15 ...if the others aren't subsets. 23:44:34 but I'd imagine they are. 23:44:53 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 not sure I understand what you mean by shorter-context 23:45:52 Two-letter combinations, basing the next letter only on one previous letter, as opposed to two. 23:46:14 oh wait, no I definitely don't want to use wamerican-insane because it contains things like possessives, abbreviations, company names, etc. 23:46:31 names, places... 23:46:44 Aaronitic's is a word in wamerican-insane apparently 23:47:19 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:47:24 but maybe I do want that? 23:48:12 oh okay, so split by trigrams and bigrams and combine the frequency data? 23:48:21 magically? 23:48:23 lol 23:49:21 wow wamerican-insane is truly insane. 23:49:31 Well, that's interpolation. Take the probabilities of next letter by a*trigram(2-letter-context) + (1-a)*bigram(1-letter context). 23:49:39 It's a viable method. 23:50:03 but what if I use a data set such as.... wamerican-insane 23:50:11 (You can even include the no-context unigrams there with a small weight.) 23:50:12 would I need to worry about this since you said it's only a problem for small data sets? 23:50:47 Well trigrams are reasonably easy still. Maybe there's enough data. 23:50:55 /usr/share/dict$ wc -l american-english-insane 23:50:56 638645 23:51:50 everything has a possessive version though, which I will probably remove. 23:51:53 so cut that in half. 23:52:08 fizzie: have you gogol ngramames yet 23:52:22 -!- sllide has quit (Ping timeout: 268 seconds). 23:52:26 Doesn't give the word length. Assuming 6, that's about 4*300000 trigrams. (4 positions in a 6-letter word.) 23:52:40 Ab 23:52:40 Ab's 23:52:40 Aba 23:52:40 Aba's 23:52:40 Ababa 23:52:43 Ababa's 23:52:46 ....this dictionary is insane. 23:53:02 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:02 > 26^3 23:53:03 17576 23:53:09 fizzie: Isn't it the banana problem :) 23:53:18 The sword alone can't stopping is better, though. 23:53:46 There are only that many trigrams, so it sounds like it perhaps wouldn't need any smoothing. 23:54:29 fizzie: Mmph, now you're making me want to write my own Markov bot. 23:54:48 So there's Aaronical, Aaronite, Aaronitic, Aaronsburg, Aaronson, but no Aaronsoniticalburgite? 23:54:54 fizzie: Out of curiosity how would a mere plebian obtain that Google data; preferably one of the forms that isn't five DVDs. 23:54:58 Or can't they. 23:55:04 I'm not sure. 23:55:19 "Run your own experiment! Raw data is available for download here." 23:55:20 Ah. 23:55:25 http://ngrams.googlelabs.com/datasets 23:55:27 Anyone can download the Google Books dataset. 23:55:32 Possibly others too. 23:55:38 Oh, right, but that is not the set you have, right? 23:55:55 so I'm guessing Googles data is better than what I'm using, yes? 23:56:07 CakeProphet: They're words, not letters, unless I'm terribly mistaken. 23:56:35 fizzie: Hmph, that's a lot of data to download for such low ns. 23:57:09 elliott: wamerican-insane is also a list of words... >_> 23:57:14 I am looking for word data. 23:57:24 CakeProphet: For an acronym generator? Stupid. 23:57:31 CakeProphet: You can take their unigram dataset as a word list if you want. 23:57:32 a pronouncable acronym generator. 23:58:07 elliott: Does it say anywhere how many words they had in the books that was built from? 23:58:24 fizzie: http://ngrams.googlelabs.com/datasets :P 23:58:56 wow this is a ridiculous amount of data. 23:59:28 It's more than you need. 23:59:44 13.6 billion, I see.