00:00:16 There are some things I would have changed in Wayland. 00:00:25 calamari: are you going to retract that ubuntu apologist remark? I've definitely spewed sufficient vitriol at Ubuntu in the past week or so that it's laughably inaccurate even if I'd spent every previous year of my life, I don't know, getting Ubuntu tattoos or something 00:00:33 elliott: wee! yasm appears to have lost those particular bugs 00:00:40 olsner: report a compatibility bug 00:01:04 and break the only assembler that correctly assembles my code? :( 00:01:19 olsner: well, I am sure they can add a -std= option :D 00:01:21 -std=nasm 00:01:25 -std=olsner 00:02:33 * Sgeo|web knows zilch about either Wayland or X. 00:02:40 -!- GreaseMonkey has joined. 00:02:47 Other than that X complaints are part of the UNIX Hater's Manual 00:02:56 And that more than just that agrees that X is bad. 00:03:06 There's enough to write an X Haters' Manual 00:03:21 elliott: sorry, was working on something for my kids.. sure, my bad 00:03:27 Of course, it's hated mainly because there isn't an alternative. Sort of like when people used to hate Motif. 00:03:28 calamari: thanks 00:03:34 people who think X is bad normally focus on the wrong bits of it 00:03:51 Jafet: I would like to see a class on design using X 00:03:53 like 00:03:57 here's today's example of what not to do 00:04:01 Maybe Motif really was bad though, because people still hate Motif. 00:04:11 I am not necessarily a huge xorg fan or anything either.. it's just the way things are and if they are taken away then I can't do what I need to do 00:04:13 motif is pretty awful 00:04:22 my main gripe with motif is how ugly it is 00:04:30 calamari: well, like I said, all current transition plans involve a transparent X server being run... so ssh -X would work without doing anything 00:04:32 like the time ubuntu shipped without a menu editor 00:04:39 olsner: did you know that even nowadays, Java has a Motif-like theme as one of the options? 00:04:44 olsner: you can get motif looking "ok" 00:04:47 I just realised I am watching Marble Hornets in the middle of the night alone with surround headphones 00:04:49 calamari: hmm, what did you need the menu editor for? 00:04:51 I am not sure if I am sane 00:04:55 I need sleep 00:04:57 Goodnight 00:04:59 -!- Ngevd has quit (Quit: Leaving). 00:05:03 ais523: customizing the gnome menu 00:05:09 yes, but I mean, why? 00:05:31 "In the Solaris kernel it is common practice to make heavy use of the virtual address space because it is designed to work well. However, in the Linux kernel most memory is addressed with a physical address and use of the virtual address space is strongly discouraged." 00:05:33 huh, is this really true? 00:05:34 for me, it's sorted quite sensibly, and has more or less what I want on there 00:05:35 ais523: you can hide things or show things that are hidden by default.. move them to other menus, etc 00:05:42 I knew Linux was crappy, but... 00:05:47 I needed the menu editor to find out what the programs' names actually were. 00:05:51 haha 00:05:52 calamari: you're describing the functionality of a menu editor, that's not what ais523 asked 00:06:12 elliott: well I thought the answer was obvious, so I figured he might not know? 00:06:17 elliott: that sounds believable 00:06:25 calamari: that's not a very productive way to communicate 00:06:30 What with the abuses of mmap, kmalloc, etc. 00:07:03 It's trying to imply that linux sucks at virtual memory, which may or may not be true 00:07:18 calamari: well, it seems to be sorted quite sensibly to me, and have a sensible set of programs on there by default, and I'm not quite clear why you'd want a GUI program installed but not on the menus 00:07:31 and the stuff that doesn't show by default is mostly things like KDE options setting in Gnome, etc 00:07:55 Lots of the more obscure programs are packaged without being added to the desktop menus 00:07:57 ais523: I'm a control freak, what can I say? that's why I am a programmer 00:08:23 calamari: what programs do you have installed that you don't want on the menu? 00:08:25 Jafet: heh, I write .desktop files for things I install locally sometimes 00:08:26 ais523: it's one of the reasons that linux appeals to me also 00:08:29 Jettyplat has one 00:08:31 *Jettyplay 00:08:36 I think it's more likely that the other code in the kernel sucks at virtual memory, e.g. assuming that kernel memory can never be paged out or can never fault, rather than the virtual memory system itself being bad 00:08:44 To me, the window system, should be designed, it is something a lot like SDL. And there are a fixed number of mouse pointer icons which are 16x16 2 bits per pixel (one for black/white, one for transparency). The size of the screen for each window is the inner size of the window. 00:09:11 elliott: well I'm running kde now... 00:09:13 olsner: covered in "abuses of kmalloc" 00:09:18 calamari: huh? 00:09:26 The window manager arranges windows, adds borders, can override keyboard commands and mouse warping, decides when the mouse pointer is hidden, and decides what gets focus. 00:10:18 elliott: meaning it handles the menu differently.. if you don't want something, you just delete it.. so I can't easily tell you what I hid 00:10:39 calamari: but why wouldn't you just uninstall them 00:11:11 The windows and the PRIMARY/SECONDARY/CLIPBOARD buffers (same as X) are accessible by FUSE directory. 00:11:38 elliott: depends on the program 00:12:21 elliott: this is one I still have on my menu.. but say I never used java web start.. I still want java so I don't uninstall it.. but I can get rid of it from my menu 00:12:44 that just tells me jws should be in another package 00:13:35 another example.. I could remove the pdf viewer from the menu.. since the file association lets me open pdfs 00:14:50 document viewers shouldn't be in the menu in the first place :p 00:15:40 another example: I have a ton of internet and multimedia related applications, so I manually organize them and add dividers so I can find what I want more easily 00:16:18 The menu doesn't have tab completion anyways 00:16:20 elliott: what if you want to open a document via URL? 00:16:58 ais523: what of it? 00:17:13 typically you do that from inside the document reader itself 00:17:27 I mean, I do it via alt-F2, but that's because I'm used to command lines 00:17:39 ais523: there should be an "Open URL..." thing somewhere 00:17:43 or more likely, just "Open" 00:17:45 another example.. they put diffuse in the accessories menu.. that's cool. But I only use it for development, so I moved it where it made more sense to me 00:17:55 elliott: yes, so in those cases, you open the document /reader/ via the main menu 00:18:07 diffuse? 00:18:09 ais523: why? 00:18:14 ais523: it should just be a global "Open..." 00:18:21 document-centric, not application-centric 00:18:35 elliott: gui diff tool 00:18:43 elliott: what if you want to open it with a specific application? 00:18:59 ais523: "Open with" 00:19:02 (non-stupid possible reason why: the remote server gives the wrong content-type) 00:19:02 as in 00:19:09 the open dialogue should have as one of the fields 00:19:14 Application: [ Determine automatically ] 00:19:26 (stupid but happens all too often in practice reason why: the default application for a video file is a web browser not video player) 00:19:53 hmm, or maybe it should be [Cancel] [Open With...] [Open], and if you click the middle, it loads the resource, and filters down the application list based on which ones offer to handle it 00:20:01 (with the option to show all applications if it's not listed) 00:20:07 that would be more efficient 00:20:44 so long as you can determine the content type from the first few bytes or the MIME type 00:20:50 otherwise, you'd have to download the file twice 00:20:57 ais523: no, just download it into /tmp 00:21:07 ah, I see 00:21:09 that's imperfect, but lots of apps don't support reading from URLs anyway 00:21:17 IIRC "evince http://blah/foo.pdf" doesn't work 00:21:19 what if the program I want to open it with is head? 00:21:23 from the command line 00:21:26 then you don't want to download the file 00:21:31 what if the file is infinitely long? 00:21:33 ais523: then you should be using a shell :P 00:21:35 ais523: did I answer your question about why I want to edit my menus? 00:21:39 elliott: GUIhead, then 00:21:41 calamari: yes, thanks 00:21:50 and the resulting conversation's been quite good 00:22:07 ais523: shrug, I guess there can be some way to select the application first, but this sounds PRETTY CONTRIVED to me 00:22:36 I suppose I'm thinking of attack surface 00:22:42 ais523: of course, the /real/ answer is that the entire current WIMP paradigm is inherently flawed and application-centric, and ... blah blah blah :) 00:23:19 I think being able to use different applications to edit the same thing is a good thing 00:23:29 in order to maintain that, you need the concept of an application pretty much no matter what 00:23:48 An indefinite-length .ogg stream sounds like a non-contrived thing to want to open with a user-specified app without having to impossibly download all of it. (Though with HTTP URLs one could possibly HEAD it for content type determination.) 00:23:55 time to go home, anyway 00:24:00 -!- ais523 has quit (Remote host closed the connection). 00:24:27 -!- augur has joined. 00:24:51 ais is wrong, but ninja-quit before I could disagree 00:25:40 fizzie: That sounds like a really bad way to do internet radio. 00:25:52 fizzie: And ais was operating under the assumption that MIME wouldn't be enough. 00:25:55 IMO it should just get the MIME and use that. 00:25:59 now that I have websplat I no longer need anything else. 00:26:03 fuck life. fuck success. 00:26:08 If the MIME is truly wrong, you can always select "all applications". 00:26:13 I'm just going to wall jump on wikipedia articles. 00:26:50 CakeProphet: http://web.archive.org/web/20110721010754/http://www.havenworks.com/ 00:27:01 Gregor might remember the window size and font settings requirements we agreed on for competition purposes. 00:27:08 But really, if you beat it no matter what the settings we'll be impressed. 00:29:20 how do I restart if I die? 00:30:07 CakeProphet: refresh 00:30:08 or uh 00:30:09 ask GreaseMonkey 00:30:10 erm 00:30:11 Gregor: 00:30:13 there might be a better way 00:30:22 CakeProphet: ugh, is that haevnworks link down for you too? 00:30:40 hmm, I should probably give you a link to the old interface 00:30:47 the images used in waybackmachine's UI will mess with websplat's score counting 00:30:49 yes it's down. 00:31:14 As for Wayland, I'm probably going to have to wait until someone writes a WMonad or something. 00:31:31 'lo uhh 00:31:59 fizzie: I'm sure that'll happen about three days after Wayland ships in a major distro. 00:32:22 (Well, OK, it _does_ need to handle compositing, so it's non-trivial.) 00:34:46 hmm, does a tiling window manager really need to handle compositing? what is there to compose? 00:35:07 olsner: a Wayland WM /is/ a compositor 00:35:11 wayland is based around compositing 00:35:28 mmhm, ok 00:35:56 It needs to do all the Wayland-servery stuff; they're all in the same pile. But I suppose someone will just take the simplest existing Wayland thingie and mesh some tiling into it at some point. 00:36:40 [FAQ on how to replace the window manager:] "Bringing up EGL and GLES2 on the Linux KMS framebuffer and reading input from evdev can be done in less that a thousand lines of code. The Wayland server side library provides the protocol implementation and makes it easy to put the pieces together." 00:37:08 Well, that's what they *say*... 00:37:24 -!- sllide has joined. 00:37:27 all you gotta do is write a thousand lines of code 00:37:28 ez 00:37:54 Patashu: Well, that's not much 00:38:10 yeah I'm joking 00:38:25 :P 00:38:27 Admittedly it probably can't be worse than writing a real, working X WM (what with all the nastiness), especially if you steal from others; but it's not quite just "port this WM over". 00:39:02 s/steal/reuse/ #better be politically correct 00:42:15 I think stealing is more appropriate if you do it by copying the useful parts of the code (rather than e.g. building a library out of the reusable parts) 00:43:16 or maybe copy/paste :) 00:43:25 " I think stealing is more appropriate" *yoink* the out-of-context quoter strikes again, fire up the `addquote machine. 00:44:04 `addquote I think stealing is more appropriate 00:44:09 694) I think stealing is more appropriate 00:44:29 pikhq: The dmenu code is not as good as I was hoping :( 00:44:30 what a world it would be if you could actually *steal* code so that the other project has to rewrite it or infiltrate your project to steal it back 00:44:32 `callthepolice OLSNER IS A THEIF 00:44:34 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: callthepolice: not found 00:44:40 elliott: are you allowed to partially quote a line? 00:44:42 (I'm trying to figure out how hard it would be to mod dmenu to do the matching I want.) 00:44:48 CakeProphet: Only with special authorisation. 00:44:53 from.... yourself? 00:44:56 Yes. 00:45:00 ah okay. 00:45:11 that sounds reasonable to me. 00:45:18 given papal customs. 00:45:21 olsner: that would be great 00:46:06 elliott: is using a katamari to collect all images on a page before I run websplat considered cheating 00:46:10 CakeProphet: you shouldn't trust the logs or quotes or even anything you read in person while logged in on this channel anyway 00:46:15 CakeProphet: Yes. 00:47:02 partial quotes are just a lesser breed of completely made up quotes 00:47:13 which I don't doubt we have a bunch of too 00:47:14 -!- pikhq_ has joined. 00:47:19 olsner: not many 00:47:23 `quote ALTERNATE 00:47:26 17) IN AN ALTERNATE UNIVERSE: First, invent the direct mind-computer interface. Second, learn the rest with your NEW MIND-COMPUTER INTERFACE. \ 23) IN AN ALTERNATE UNIVERSE: there is plenty of room to get head twice at once \ 24) In an alternate universe, ehird has taste \ 25) IN AN 00:47:26 -!- pikhq has quit (Ping timeout: 255 seconds). 00:47:36 oh no, newegg redesigned 00:47:45 how will I not purchase computer hardware now? 00:47:56 I made reverse of "collect" operation for barrier monad, it is: uncollect = foldl (>>) (Unit undefined) . map yield; 00:48:54 whats websplat there are too many things called websplat 00:49:20 monqy: the only good game 00:49:25 http://codu.org/websplat/ 00:50:26 monqy: protip: down-up is a really useful combination 00:51:08 so it is 00:51:18 god it is SUCH A GOOD GAME 00:53:20 Gregor: the win image tiling is broken :( 00:55:36 hmm, does anyone know if there's a well-known algorithm for doing the kind of fuzzy matching that lets you eliminate substrings entirely and otherwise acts like some form ofedit distance? 00:55:43 Gregor: also it's not compatible with existing katamari code. 00:55:50 thus I can't cheat. 00:57:17 -!- hagb4rd has joined. 00:58:16 I'm kind of confused as to why the websplate code is a lambda that is immediately called. 00:58:36 CakeProphet: try and write a bookmarklet without doing that 00:58:41 bookmarklets are expressions 00:58:45 ah 01:01:17 playing multiple games of websplat at once: amazing 01:11:59 Gregor: bug report!!! one of my Facebook friends can't get your bookmarklet to work. 01:12:07 (Note: they are probably just doing it wrong) 01:14:39 zzo38: if you use a version with foldr instead it can work on infinite lists, and might also nest better 01:15:27 yes he was trying to add it to the end of the address. bug resolved. :P 01:15:35 oerjan: OK I will put foldr thank you for telling me about it. 01:17:50 Now it is: uncollect = foldr (>>) (Unit ()) . map yield; 01:18:38 zzo38: note that now the Unit part comes last rather than first, in case that's a problem 01:19:07 -!- augur has quit (Remote host closed the connection). 01:19:15 -!- pikhq has joined. 01:19:58 zzo38: return = Unit, isn't it? in which case uncollect = mapM_ yield is equivalent. 01:20:14 oerjan: Yes it is return = Unit 01:20:44 OK, yes, mapM_ yield works too. 01:20:48 @src mapM_ 01:20:49 mapM_ f as = sequence_ (map f as) 01:20:52 -!- augur has joined. 01:20:54 much more readable 01:21:23 what... now he's saying the bookmarklet takes him to google 01:21:25 maybe he's just stupid. 01:21:28 @src sequence_ 01:21:29 sequence_ ms = foldr (>>) (return ()) ms 01:21:38 -!- ive has quit (Ping timeout: 255 seconds). 01:22:02 -!- pikhq_ has quit (Ping timeout: 240 seconds). 01:22:35 mapM instead of mapM_ works too (because I don't care the return type), but mapM_ seems to be faster so I will use mapM_ 01:23:10 OK now I used your suggestion and now it works. 01:23:44 mapM is basically a space leak 01:23:50 zzo38: yes, mapM collects all the monadic results in a list, so also uses more memory 01:23:54 whereas mapM_ is constant space 01:27:17 so I point him to the actual website so he can just drag the link into his bookmarks instead of having to use his brain to copypaste code. 01:27:21 and now it suddenly works! 01:28:21 gui ftw 01:29:18 "do you have javascript enabled?" "I honestly don't know." 01:29:23 -__- 01:29:45 granted, it was a dumb question of me to ask. He IS using facebook. 01:30:42 what you need is a program like teamviewer 01:30:45 instead of asking them check yourself 01:30:58 CakeProphet: do you expect most people to know whether they have js on or not? 01:31:04 that's pretty esoteric knowledge 01:31:17 no not really 01:31:20 I am young and naive. 01:31:24 and optimistic. 01:32:36 but seriously how do you mess up copypasting js. 01:32:40 into an address bar. 01:32:58 like, I had an entire comment that was the js, in a previous comment I said "copypaste this into your address bar" 01:35:07 ...probably included the part (or equivalent >:) ) 01:35:16 ...how 01:35:18 how is that even possible. 01:35:24 i dunno... 01:35:34 oerjan: do you like metal? 01:35:45 NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 01:35:46 as an oerjan expert 01:35:49 i can safely say 01:35:51 that oerjan is GUARANTEED 01:35:52 to love metal 01:35:57 of course he is. 01:36:20 his metal-loving nature sticks out like a... well it's really obvious. 01:36:34 there may be a handful of metal songs which i like. 01:37:22 oerjan: how many churches have you burned? 01:37:24 I hear it's popular 01:37:27 I mean 01:37:29 over there 01:37:31 approx. 0 01:37:46 only with the satanic metal people. 01:37:54 I wouldn't think oerjan would go that low. 01:38:06 I didn't think Vikernes was a satanist 01:38:09 just a weird pagan type thing 01:38:22 oh okay. 01:38:22 I guess Vikernes didn't actually burn any churches directly 01:38:32 well I think that's what he says anyway :P 01:38:38 i think he burned churches to avenge the norse gods, or something. 01:38:40 (I read his wikipedia page once, good times) 01:38:49 oerjan: lessee... "I am not going to say that I burnt any churches. But let me put it this way: There was one person who started it. I was not found guilty of burning the Fantoft stave church, but anyway, that was what triggered the whole thing. That was the 6th of June and everyone linked it to Satanism ... What everyone overlooked was that on the 6th June, 793, in Lindesfarne in Britain was the site of the first known Viking raid in history, wi 01:38:49 th Vikings from Hordaland, which is my county ... They [the Christians] desecrated our graves, our burial mounds, so it's revenge." 01:39:25 well, I kind of just thought all Scandinavians listen to Swedish progressive death metal band Opeth, as a matter of nation, er, culture, er, uh... geographical pride. 01:39:51 isn't Opeth shit, I distinctly recall somebody with good tastes telling me Opeth was shit at one point in my long, long life 01:39:53 and was wondering if oerjan was excited as I was about the new album. 01:40:02 no they are actually quite good as far as metal goes. 01:40:10 *progressive metal 01:40:17 people who listen to shitty metal will tell you that progressive metal is shit. 01:40:20 but they're lame. 01:41:14 also their new album actually probably isn't even metal. 01:41:40 more like... jazz rock. 01:41:51 sounds bad 01:42:06 YOU KNOW NOTHING 01:42:23 jazz fusion: also known as : " the worst genre," 01:42:33 no not that kind of jazz. 01:42:55 i just looked it up on wikipedia , they disagree , 01:42:58 it has stylings reminiscent of a 70s jazz band, with the technicality of death metal. 01:42:59 i am sorry to disappoint you, but my musical taste is on the side abba, verdi, and celine dion. i know this may not be popular and that you would have preferred me to be a satanist. 01:43:04 *side of 01:43:05 they ay, yes elliott this album is a member of :the worst genre 01:43:14 `addquote i am sorry to disappoint you, but my musical taste is on the side abba, verdi, and celine dion. i know this may not be popular and that you would have preferred me to be a satanist. 01:43:16 695) i am sorry to disappoint you, but my musical taste is on the side abba, verdi, and celine dion. i know this may not be popular and that you would have preferred me to be a satanist. 01:43:24 elliott: Heritage by Opeth is /jazz fusion/ 01:43:28 Wikipedia doesn't know what jazz fusion is. 01:43:43 Bitches Brew by Miles Davis is jazz fusion. 01:43:58 i like bitches brew, they should have banned people from making jazz fusion after that 01:44:08 eh, it's not all bad. 01:44:24 Herbie Hancock has some nice jazz fusion. 01:44:25 also sissel kyrkjebø, for a scandinavian angle. 01:44:47 I just listen to wasps all day 01:44:50 well okay it might be kind of jazz fusion 01:44:51 but not like that. 01:44:52 actual wasps 01:45:35 also there is some eastern influenced as far as rhythmic complexity. 01:45:41 -d +s 01:45:59 INTERESTING. ALBUM. GOOD. BAND. 01:46:25 "eastern influenced" is like the most tedious phrase i have ever heard 01:46:34 yes it is. 01:46:37 it inevitably means like 01:46:40 "we played some bongos" 01:46:43 shut the fuck up bongos are eastern 01:46:44 no not quite 01:46:54 I was referring specifically to the rhythms 01:46:57 as played by electric guitar. 01:46:59 bongo rhythms 01:47:07 well, oh wait this song has hand drums possibly bongos 01:47:15 OH NO 01:47:29 http://www.youtube.com/watch?v=tO70oJvrx4s 01:47:30 told 01:47:30 you 01:47:36 they played some fucking bongos 01:47:38 but it totally sounds eastern okay. 01:47:44 HAS NOTHING TO DO WITH BONGOS. 01:48:41 the guitar riffs occasionally remind me of arabic flute melodies. 01:48:51 TOTALLY EASTERN IN OTHER WAYS OKAY 01:50:16 also their heads are hanging from a tree. in the album art. 01:50:28 this makes the music much better. 01:51:21 oerjan: oi where should i put 01:51:22 showConcatMap 01:55:00 elliott: you are obviously listening to this awesome song right now as we speak and noting that it is entirely a mixture of jazz, eastern, and metal influences. 01:55:11 this fact is undeniable. 01:55:16 and not tedious. 01:55:34 i skipped around it, it was boring, then i went back to asking oerjan where to put showConcatMap 01:55:58 elliott: oh, well yeah... it's going to be boring if you skip around. Many songs require patience. 01:56:04 lol 01:56:24 because otherwise you lose the effect of the transitions. 01:56:52 so in things that aren't like palm superglue applied to a forehead 01:56:56 oerjan: WHERE SHOULD I PUT SHOCONCCAMCPTEMWC 01:57:23 elliott: perpetual facepalm? 01:57:48 what a... strange notion. 01:58:53 I read that a contravariant is something like (a -> b) -> f b -> f a and I noticed the similarity with what I have convert :: (f -> f') -> (b' -> b) -> Barrier f b t -> Barrier f' b' t so is this partially contravariant? 02:06:53 elliott: MC.ZALGOOOOOOOOOOOOOOOO_HeCOMES.showConcatMap 02:07:17 -!- pikhq has quit (Ping timeout: 245 seconds). 02:07:21 -!- pikhq_ has joined. 02:07:48 hlepful 02:07:59 five stars 02:08:03 five stars hlepful 02:09:25 zzo38: yes, it is afaict contravariant in b and covariant in f 02:09:44 oerjan: thanenkes 02:09:46 and also covariant in t, since it's a monad 02:10:04 (and thus essentially a functor) 02:11:06 monqy: nwhere put showConcatMap... 02:11:40 i have no clue,,., 02:11:45 monqy: help 02:12:03 MC.ShowConcatMap.showConcatMap 02:12:27 zzo38: basically the fields of a data definition are in covariant position, as is the last argument of -> but the first one is contravariant. (and things that are in covariant position inside a type inherit its overall variance, while contravariant positions reverse it. 02:12:31 ) 02:13:30 so in data A = A ((a -> b) -> (c -> d) e , there a, d and e are all covariant while b and c are contravariant. 02:14:06 monqy: dont like u 02:14:31 oerjan: I have data Barrier f b t = Unit t | Barrier f (b -> Barrier f b t) | Fail String; mean that it is contravariant in b (the back type) is that it? 02:15:09 and if we have data A x y = A ((x -> y) -> (y -> y) x , then A x y is covariant in x since all occurrences of x are in covariant position, but invariant in y since that occurs in both covariant and contravariant position. 02:15:38 (i may have made up the term co-/contravariant position here, since i don't know the official terms) 02:16:34 zzo38: Barrier f b t is covariant in f and t but contravariant in b 02:16:49 The only relevant thing under "contravariant" on Wikipedia seem to be "contravariant functor", nothing about "contravariant position". 02:17:11 oerjan: OK. It is what I thought. Now I can write that in the report. 02:17:22 zzo38: no i just made that up to explain how you decide whether it is 02:17:35 i'm sure someone has made an algorithm that is similar, though 02:18:00 I mean "Barrier f b t is covariant in f and t but contravariant in b" 02:19:00 zzo38: http://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science) is relevant, i think 02:19:53 even if that's based on subtyping, it's essentially from the same category theory, i think 02:20:29 it's just that since haskell doesn't have subtyping, you need to pass the conversion function as well 02:21:02 and in category theory, a functor is essentially a map _from_ conversion functions (the arrows) 02:21:02 That article doesn't look like it to me. The article about functors seems more like what it is, to me. 02:21:24 -!- augur has quit (Remote host closed the connection). 02:21:51 zzo38: it is the same basic idea applied to two slightly different purposes 02:22:01 as is usual in category theory :P 02:23:00 i guess in that case, the subtyping relations are the arrows, while in the haskell case, actual functions are the arrows 02:23:31 (that case = that computer science article) 02:23:45 OK. 02:27:24 this is i believe also related to parametricity, a property of haskell polymorphic functions 02:27:35 hm what was the lambdabot command again 02:27:43 So, does it mean, covariance mean you can have (a -> b) -> (f a -> f b) and contravariance means you can have (a -> b) -> (f b -> f a) for some f? 02:27:52 @free (a -> b) -> (a -> b) 02:27:52 Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34 02:27:58 Or do something else? 02:27:58 eek 02:28:03 @free f :: (a -> b) -> (a -> b) 02:28:03 h . k = p . g => h . f k = f p . g 02:28:20 zzo38: it means that, yes 02:30:02 -!- sllide has quit (Ping timeout: 244 seconds). 02:30:27 @free f :: oerjan 02:30:28 g f = f 02:30:35 um 02:30:44 oh right 02:30:51 because g has to be fully polymorphic 02:30:58 @free fix :: (a -> a) -> a 02:30:59 f . g = h . f => f (fix g) = fix h 02:31:10 :D 02:31:19 -!- augur has joined. 02:31:27 @free f :: Oerjan 02:31:27 f = f 02:31:41 ?help free 02:31:41 free . Generate theorems for free 02:32:00 thanks free 02:32:11 oerjan: 02:32:11 > Data.Foldable.foldMap shows [0,9] "" 02:32:11 "09" 02:32:16 oerjan: thanks to ion in #haskell 02:32:27 it's so beautiful :DD 02:32:47 :t shows 02:32:48 what, i thought that didn't work... 02:32:48 forall a. (Show a) => a -> String -> String 02:33:02 :t Data.Foldable.foldMap 02:33:03 forall a m (t :: * -> *). (Data.Foldable.Foldable t, Monoid m) => (a -> m) -> t a -> m 02:33:06 oh wait 02:33:09 > Data.Foldable.foldMap shows [0,9] "oh dear" 02:33:09 "0oh dear9oh dear" 02:33:21 XD 02:33:35 YOU CHEATING SCUM 02:33:35 what is this monoid instance 02:33:56 monqy: instance (Monoid b) => Monoid (a -> b) 02:33:58 with standard lifting 02:34:24 ah 02:34:53 maybe you should use Endo then 02:34:56 would that work 02:34:59 This seem to me, it follow monad laws, from the code, as well as from trying it, but I don't know how to make a proper proof; do you know how? Barrier a c >>= f = Barrier a $ c >=> f; 02:35:05 :t ala 02:35:05 monqy: tons of overhead man 02:35:05 forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o' 02:35:08 oh 02:35:17 what 02:35:22 yeah 02:35:25 overhead? syntactically you mean 02:35:28 @hackage newtype 02:35:28 or with ala 02:35:28 http://hackage.haskell.org/package/newtype 02:35:32 dependency etc. 02:35:41 I was actually just referencing ala to remind myself what it did 02:35:44 not suggesting it 02:36:01 I remembered there was something named ala that did newtype stuff but that's it 02:36:17 it should use type families and not use the word newtype 02:36:20 Wrapper or something 02:37:53 @src >=> 02:37:53 Source not found. I can't hear you -- I'm using the scrambler. 02:37:54 > appEndo . Data.Foldable.foldMap (Endo . shows) [0.9] $ "oh dear" 02:37:55 Couldn't match expected type `a -> Data.Monoid.Endo a1' 02:37:55 against inf... 02:37:57 @src (>=>) 02:37:57 Source not found. Maybe if you used more than just two fingers... 02:37:58 oops 02:38:24 zzo38: well that's equivalent to Barrier a $ \x -> c x >>= f, and i assume (>=>) is defined so that holds even if it's not already known to be a monad... 02:38:25 > appEndo . Data.Foldable.foldMap (Endo . shows) [0,9] $ "oh dear" 02:38:26 Couldn't match expected type `a -> Data.Monoid.Endo a1' 02:38:26 against inf... 02:38:27 monqy: ala Endo foldMap 02:38:28 oooops 02:38:50 im being dumb but yes that would work maybe help 02:38:57 ;_; ;_;; _; 02:40:52 +_+ 02:41:08 %> best emoticon 02:41:52 well, time to go get drunk and play Brawl. 02:41:55 it'll be like a drunken brawl. 02:41:55 oh i think i see what i did wrong, the dumbest mestake 02:41:58 except we're nerds. 02:42:10 >_> 02:42:30 maybe I'll finally playtest some portal chess. 02:42:33 > appEndo (Data.Foldable.foldMap (Endo . shows) [0,9]) "oh dear" 02:42:34 "09oh dear" 02:42:35 or make this relevant to esolangs somehow. 02:42:37 -!- augur has quit (Remote host closed the connection). 02:42:39 CakeProphet: Do you know the game Tetanus on Drugs? You don't need to be drunk to play tetris because you can program the computer to be drunk for you. 02:42:46 not using $ like an idiot: saves the day 02:42:51 lol wat 02:43:02 Tetanus on Drugs sounds bad. 02:43:03 oerjan: You assume (>=>) is defined... what? Its definition is what you have specified; what how do you do the proof? 02:43:06 ANYWAYS MUST GO. 02:43:52 http://www.pineight.com/tod/ 02:44:11 You're familiar with the Soviet Mind Game that involves stacking tetrominoes, or geometric shapes composed of four square blocks, inside a well. But have you ever played it while high? LOCKJAW: The Overdose simulates what it might be like to play the Soviet Mind Game under the influence of marijuana, LSD, or other hallucinogenic drugs. 02:44:47 (Except that you do not need LSD or any other drugs because the computer can do it) 02:44:58 zzo38: well for Barrier a c >>= Unit = Barrier a $ \x -> c x -> Unit, and i think "coinduction" allows you to assume the law holds inside the outer constructor so then that's = Barrier a >>= \x -> c x = Barrier a c 02:45:21 that's one case for the second law, i guess 02:45:33 the first law you have true by definition 02:45:50 er oops 02:46:08 *zzo38: well for Barrier a c >>= Unit = Barrier a $ \x -> c x >>= Unit, and i think "coinduction" allows you to assume the law holds inside the outer constructor so then that's = Barrier a >>= \x -> c x = Barrier a c 02:47:03 i assume you have the other cases of the second law already 02:47:18 What is coinduction? 02:47:34 I have "return a >>= k = k a 02:47:39 zzo38: it's a technique used for proving properties of infinite datastructures in haskell 02:47:43 by definition 02:47:52 oerjan: OK. 02:47:59 and other languages with "codata" 02:48:19 -!- augur has joined. 02:49:04 i am not entirely clear on what it allows, but basically to prove that two values are equal, you need to prove that their outer data constructors are equal, and then you can assume inductively what you want to prove for the inner parts 02:50:09 -!- augur has quit (Remote host closed the connection). 02:50:45 so once we've shown that both sides we want equal are Barriers, we can treat the fields as fulfilling the laws. 02:51:37 i think there might be complications if your definition looks deeper than one constructor, then you might have to prove that they're equal to that depth first, or something. 02:51:52 -!- CakeProphet has quit (Ping timeout: 245 seconds). 02:56:03 -!- pikhq has joined. 02:57:41 -!- pikhq_ has quit (Ping timeout: 248 seconds). 02:58:43 -!- augur has joined. 02:58:56 -!- augur has quit (Remote host closed the connection). 03:04:01 -!- augur has joined. 03:05:15 -!- augur has quit (Remote host closed the connection). 03:08:04 -!- MDude has changed nick to MSleep. 03:26:51 -!- pikhq_ has joined. 03:27:01 -!- pikhq has quit (Ping timeout: 248 seconds). 03:52:25 -!- ive has joined. 03:55:14 > ((+) :: a -> Int) 2 3 03:55:14 Couldn't match expected type `GHC.Types.Int' 03:55:14 against inferred type ... 03:56:31 -!- tiffany has quit (Quit: Bai~). 03:56:38 bloody implicit quantification 03:57:34 hm or 03:58:10 hi 03:58:19 oerjan: wait how would that work 03:58:25 oh without implicit quantification 03:58:26 ic ic ic 03:58:37 i still don't think there's an a that satisfies that :P 03:58:52 oh oops 03:59:05 > ((+) :: Int -> a) 2 3 03:59:06 Couldn't match expected type `a' 03:59:06 against inferred type `GHC.Types.I... 03:59:11 haha 03:59:12 well that didn't help 03:59:21 it did, lambdabot just cuts off too early 03:59:51 no it didn't, a = Int -> Int should work there 04:00:15 oerjan: well I mean 04:00:20 it gave the right type in the message 04:00:31 what I would like is some kind of 04:00:32 anyway i was wondering if the new ConstraintKinds could be used to get more flexible lists of heterogeneous types 04:00:33 :specialise foo :: t 04:00:38 and it tells you the type variables 04:00:39 like 04:00:47 :specialise (+) :: Int -> a -> b 04:00:49 a = Int 04:00:50 b = Int 04:00:52 (+) :: Int -> Int -> Int 04:02:00 data Any ctx where fromAny :: ctx a => a -> Any ctx 04:02:29 and then concatMap (show . fromAny) [Any (1::Int), Any "hello"] 04:02:52 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 04:02:55 heh, that's cute 04:02:56 except the inside of show . fromAny is probably not polymorphic enough 04:02:57 could you have 04:03:04 foo :: forall ctx. [Any ctx]? 04:03:06 hmm I guess not 04:03:10 well apart from [] obvs 04:03:12 and [undefined] 04:03:14 what would the type of 04:03:18 [Any (1::Int), Any "hello"] 04:03:19 be? 04:03:28 forall ctx. (ctx Int, ctx String) => [Any ctx] 04:03:28 ? 04:03:47 oh i missed an obvious type signature 04:04:01 *concatMap (show . fromAny) [Any (1::Int), Any "hello" :: Any Show] 04:04:18 so that it gets the right context in somewhere, i doubt it can deduce it 04:04:40 oerjan: um but that last type is THE BEST?? 04:05:01 oerjan: we're lucky GHC shares the namespace of types and classes :P 04:05:10 or ConstraintKinds would never work, it'd cause tons of clashes 04:05:17 um 04:05:19 s/GHC/Haskell/ 04:05:53 yeah 04:06:11 i was aiming for [Any Show], though 04:06:23 i doubt it can infer contexts in reverse 04:06:46 as long as it can typecheck them :P 04:06:52 hm that would be really powerful 04:07:02 you could define ad-hoc classes just to use them with polymorphic lists like that 04:07:10 it's basically an HList except the types are unordered 04:07:13 -!- copumpkin has joined. 04:07:16 and much easier to operate on 04:08:02 oerjan: ask copumpkin, I bet he knows ;D 04:08:13 i was inspired by a discussion in r/programming about how haskell supports heterogenous lists/arbitrary length tuples badly 04:08:36 (subthread of that bos slide thing, i think) 04:09:49 yeah, hlists are pretty clunky 04:10:26 oerjan: now I have to dig up that thread :P 04:11:02 http://www.reddit.com/r/programming/comments/ktxzn/running_a_startup_on_haskell/ 04:11:08 hmm, found an annoying issue in yasm, guess I'll just have to fork it then 04:11:51 namely, it doesn't implement the base offset parameter to structs that nasm has 04:12:14 type AnyFunc ctx b = forall a. ctx a => a -> b 04:12:52 olsner: lol 04:12:53 and then concatMap ((show :: AnyFunc Show String) . fromAny) [Any (1::Int), Any "hello" :: Any Show] 04:12:56 tried to work around it by simply redefining the struc macro, but that breaks listfiles 04:13:24 hm might not need the last :: Any Show 04:13:25 oerjan: why that instead of what you had before? to avoid monomorphism stuff? 04:13:33 olsner: can't you just work around the nasm bug? 04:13:42 yes, it needs to know that show should be polymorphic 04:13:48 oerjan: right 04:14:02 hm wait that won't even work either 04:14:16 elliott: no 04:14:19 olsner: why not 04:14:33 because fromAny needs to be polymorphic as well 04:14:44 it's that existential types not allowed to escape thing, i think 04:15:09 (all of this untested of course, i'm not about to try to get ghc head working) 04:16:14 monqy: can you believe my project has seriously been blocked for a day on where to put showConcatMap 04:16:23 elliott: yes 04:16:26 elliott: happens to me all the time 04:16:28 elliott: ;_; 04:16:33 oerjan: i have a ghc head source tree :P 04:16:47 elliott: well then you can try this out :P 04:17:05 although i suspect it still won't quite work 04:17:08 and sometimes I just every day forget to work 04:17:09 ooops 04:17:38 needs some higher order rank-n function to tell show what type to take 04:17:58 oerjan: /me sees __j_random_hacker in that comment thread, mental spam filter kicks in, saves me effort of reading a stupid comment 04:18:16 is he a baD erpson 04:18:18 (he is the guy who argued with ais that a TC proof still counted even though it blatantly used finite memory because real-world computers do) 04:18:20 it should probably have a type like (forall a. ctx a => a -> b) -> Any ctx -> b 04:18:25 ahh,,, 04:18:35 "I've seen a research paper in which a guy explains how to make a version of zip that takes an arbitrary number of inputs (unlike the fixed-size versions that run out at zip7) using a concept called applicative functors, but talk about making hard work of a simple, common kind of expressiveness!" 04:18:36 this is the best part 04:18:38 CONTROL.APPLICATIVE 04:18:39 SO ESOTERIC 04:18:39 SO HARD 04:18:44 so he is a bad person 04:18:59 "It would be enough for me if there was a way in Haskell to map over the elements of a nested tuple like (42, ("a string", (123.45, ()))), but the following attempt fails typechecking: 04:19:00 map_nested_tuple f () = () 04:19:00 map_nested_tuple f (a, b) = (f a, map_nested_tuple f b)" 04:19:02 withAny :: (forall a. ctx a => a -> b) -> Any ctx -> b 04:19:02 dude hasn't heard of typeclasses 04:19:15 withAny f (Any x) = f x 04:19:28 elliott: well, it's *almost* possible to work around, but only by making the code wrong in the opposite way from what nasm got wrong - and getting it to generate the code I want (RIP-relative offset to an absolute address) seems to actually be impossible 04:19:43 gah, I hate it when people go ENUMERATING THE DATA TYPES IN MY HETEROGENEOUS AS A UNION ISN'T EXTENSIBLE BECAUSE CLIENT CODE HAS TO BE MODIFIED WHEN I ADD A TYPE 04:19:53 how the heck is client code meant to process a heterogeneous list if it doesn't know anything about what it contains anyway??? 04:20:06 hhmmm that mapping over a nested tuple looks like a job for syb..................but why are you doing that nested tuple anyway why why why why why why why ugh I hate him so much already 04:20:09 and then maybe that's enough to get concatMap (withAny show) [Any (1::Int), Any "hello" :: Any Show] to work 04:20:13 either I can get absolute addressing (1 byte bigger!) or I can get RIP-relative adressing with the absolute address as the offset 04:20:24 olsner: dude, just use "db" 04:20:32 to inline some machine code for that specific thing 04:20:34 elliott: typeclass methods, you sadistic abstraction violator 04:20:45 oh wait 04:20:48 Jafet: so it's a homogeneous list 04:20:50 the problem is that the offset depends on the location of that code, which is what I use the assembler to figure out 04:21:01 (\(Any x) -> show x) should work, shouldn't it 04:21:01 Jafet: of whatever that typeclass contains 04:21:08 even... 04:21:18 Wait, you got a list of Any? 04:21:21 (\(Any x :: Any Show) -> show x) 04:21:29 Jafet: what i am saying and what oerjan is talking about are separate :) 04:21:35 Jafet: ok maybe a bad name, i think ghc uses it for something else 04:21:35 and oerjan's Any is a clash, not the same 04:21:42 oerjan: ghc uses Any as a datatype you can cast anything to 04:21:43 pretend it's called Some 04:21:45 and cast out of as the same type 04:21:48 yeah i recall 04:21:52 olsner: well can't you just define a macro 04:22:02 olsner: that gets the position, arithmetics it up and then "db"s it in as the instruction 04:23:14 dude hasn't heard of typeclasses <-- i was a bit surprised no one had mentioned it 04:23:26 oerjan: /r/programming is not a good venue for haskell discussion. 04:24:20 elliott: sure, that'd work (and at least it's not as bad as writing it all in a hex editor) 04:24:29 but... now I found an assembler that actually does what it's supposed to do (after a three-line change to the builtin struc macro anyway) 04:24:31 -!- pikhq has joined. 04:24:41 olsner: well if you're writing the same thing over and over it should be in a macro anyway 04:25:03 i'd just send a patch to the yasm folks 04:25:23 yes, I intend to 04:25:55 olsner: I like how software projects gradually build up more and more barriers to entry 04:25:56 like 04:26:00 first it's "install nasm, type make" 04:26:08 now it's "get yasm, apply this patch, compile yasm, type make" 04:26:25 in a few years, you'll need to install build infrastructure and have it download and compile dependencies for a few hours 04:26:29 Like a courtesan 04:27:30 -!- pikhq_ has quit (Ping timeout: 255 seconds). 04:27:58 yeah, or just download the already-setup VM image with all the custom and forked build tools installed 04:28:23 olsner: are you the kind of person who deludes themselves into thinking that's a low barrier to entry, or the kind of person who mocks those people? :P 04:28:26 Then you have to install the VM 04:28:28 I bet it's only a gigabyte, too 04:28:35 oh, and don't use virtualbox version xx, it has a bug that... 04:28:40 and a few years after that, you need a special forked hypervisor that can still run that VM image and operating system 04:28:40 ...and remember to disable USB 04:28:44 Is xx a wildcard? 04:28:51 Jafet: i can't type numbers 04:28:53 gotta get creative 04:29:00 or a CPU emulator, because everyone's moved to reducerons by then 04:29:17 olsner: if that happens, your OS will be pretty obsolet 04:29:17 e 04:29:35 but they can just use the CPU emulator they need for your OS :P 04:29:53 as long as it's the same one as the one that runs the build environment :P 04:30:10 :) 04:30:26 i wonder if we'll have inaccurate xeightsix emulators one day 04:30:27 like 04:30:28 There are still some programs sold exclusively for DOS. 04:30:29 for retrogaming 04:30:37 and they suffer the SNES problem of nobody ever fucking checks with the hardware 04:30:44 and just piles on hacks to get the vintage classic "call of duty" working 04:30:46 Probably not. Most x86 games have been crap 04:30:59 ehh... there have been a LOT of x86 games 04:31:08 One only hopes we will realize this before it is too late 04:31:09 hundreds upon hundreds of worthwhile ones 04:31:10 x86 has much less need for accuracy than SNES. 04:31:26 pikhq: yeah but you have no idea the kind of emulation reduceron 9000s are good at 04:31:31 it's wack 04:31:46 You've got a CPU with indeterminate timing hooked to a bus with indeterminate timing hooked to RAM and disk with indeterminate timing. 04:31:51 Jafet: I would say there are probably at least ten times as many worthwhile x86 games as there were SNES games, in total. 04:31:56 This is an emulator author's wet dream. 04:32:21 Seems like there were 784 SNES games. 04:32:27 So, I'll take that back. 04:32:35 That sounds like the US SNES library. 04:32:40 But two thousand worthwhile x86 games? Sounds possible. 04:32:44 pikhq: "721 in NA, 533 in EU and 470 in both" 04:32:51 wow, 1442 for the super famicom 04:32:56 -!- derrik has joined. 04:33:06 elliott: Yup. 04:33:14 Jafet: Anyway, I mean, people write "top one hundred PC games" lists all the time, and I'm sure there are some with very little dreck 04:33:38 I wouldn't be surprised if there were two thousand games that people in the future will want to play regardless of nostalgia 04:33:39 but a place I was a summer intern at had a similar problem (you know, in the real world), their 15 year deal to supply the exact hardware required for this system (and its OS) was running out and no existing virtualization/emulator had good enough support to boot the OS (yet) 04:33:59 elliott: One of the things that'll help *dramatically* for hypothetical future x86 emulators is that, past DOS, most of the hardware is actually abstracted. 04:34:11 pikhq: like the nintendo sixtyfour kinda 04:34:14 You literally will have no need to understand how the sound card, GPU, etc. actually worked. 04:34:19 but 04:34:19 elliott: fact is, every PC "game of the year" makes the last few rounds of PC "games of the year" obsolete 04:34:20 moreso 04:34:22 You'll just need to write drivers for your virtual device. 04:34:38 elliott: Not quite. The only reason N64's HLL works is that game authors were lazy. 04:34:39 Jafet: who gives a shit about game of the year? 04:34:44 Because they nearly all fit cleanly into a few genres 04:34:50 You actually uploaded bytecode to the N64's GPU. 04:34:52 so what? 04:35:01 Most game authors just used a stock bytecode. 04:35:06 presumably you see the fallacy of people who say "MODERN MUSIC SUX, JUST LOOK AT THE TOP FORTY" 04:35:12 that's basically the same argument but for games 04:35:23 pikhq: haha 04:36:17 A few games wrote their own. You can tell because they look 10 times better. 04:36:23 elliott: so what kinds of games get into "top one hundred PC games" lists 04:36:36 Jafet: Generic shooters 1 through 100. 04:36:56 Jafet: dunno, probably pretty bad, but I wasn't really referring to any given mainstream publication, and the point is that one /could/ write such a list and have very little dreck in it 04:37:10 and I'm sure people have 04:37:22 multiply by all the games they won't have ever heard of 04:37:28 I can probably name about... ten PC games I would play again 04:38:02 so what's your favourite platform? I strongly suspect you're just blinded by nostalgia shades :P 04:38:18 I've never owned a console or anything 04:38:40 Jafet: maybe you just don't like games? 04:38:48 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 04:38:52 Yeah, maybe they just don't impress me 04:39:09 That's quite bad for them, because I should be easily impressed 04:39:12 I dunno, if you say you've never owned any kind of games console at all and can only think of ten PC games you'd play again 04:39:13 then 04:39:17 it sounds to me like you don't dislike PC games 04:39:18 10? Only 10? Hell, that's nice and easy. You could probably pull that without leaving Valve. 04:39:20 you just dislike video games 04:39:37 which has completely different implications 04:39:58 Lessee. Half-Life, Half-Life 2, Ep. 1, Ep. 2, Portal, Portal 2. Okay, there's 6 without even struggling. 04:39:59 I want to like video games, but they're not letting me 04:40:12 Jafet: so what are those ten games, out of interest 04:40:29 pikhq: i have never played any half-life game, im cool 04:40:34 (my fiction backlog is literally the longest thing) 04:41:33 pikhq seems to have a high regard of the half-life engine 04:42:11 Jafet: The engine sucks worse than Minecraft's. 04:43:31 Jafet won't list me games :'( 04:43:48 elliott: Portal, Mirror's Edge, Master of Orion 2, Rainbow Six, TES: Oblivion... 04:43:53 Sorry, running out of steam here 04:44:06 Didn't Rainbow Six suck (I have never played it) 04:44:09 Jafet: Um, you suck. 04:44:10 (games that I would play again) 04:44:30 Also, you realise that "PC games" spans 3 decades, right? :) 04:44:50 I think my list spans at least 2 decades 04:44:50 I thought Oblivion was pretty bad too :P 04:45:10 Also, you t3h suck. 04:45:15 Just putting that out there. :P 04:45:15 Jafet: it spans two, and 1998 is like two years off not spanning two :P 04:45:31 Ok, where are your great early PC games 04:45:42 hm oh orion is 1996 04:45:49 Jafet: mother 04:45:50 data (:=>) ctx t where Some :: ctx => t -> (ctx :=> t); main = print $ concatMap (\(Some x :: Show t :=> t) -> show x) [Some (1::Int), Some "hello"] 04:45:50 fuckin' 04:45:51 alley 04:45:52 cat 04:46:02 elliott: ^ 04:46:05 anyone who doesn't think alley cat is the best game 04:46:05 just 04:46:06 die 04:46:07 Jafet: RTS; the entire genre. 04:46:09 and don't ever talk to me again 04:46:13 pikhq: alley cat: the best? 04:46:16 Pick a few you like. 04:46:17 oerjan: :') it am beautiful 04:46:21 Say, Starcraft. 04:46:33 oerjan: tpyo: "ctx =>" 04:46:36 Probably also a couple of Command & Conquer. 04:46:37 Starcraft is a pretty sad argument for "RTS; the entire genre" 04:46:49 OK I'm not letting pikhq say another word until he confirms to me that 04:46:53 (a) he has played Alley Cat; and 04:46:54 C&C was at least humorous 04:46:56 (b) he agrees that it is the best game ever. 04:46:59 elliott: I have not played Alley Cat. 04:47:02 I have not yet ever written any PC game that boots; they require DOS. But probably it uses not a lot of things and can make it compile to run directly with the PC BIOS by changing a few things (such as making a compiler that does that) 04:47:11 pikhq: Um OK so you are downloading it to rectify this situation now correct? 04:47:38 Jafet: Also, many an adventure game... 04:47:42 pikhq: http://www.abandonia.com/en/games/24/Alley+Cat.html 04:47:48 Pls play, thans. 04:47:55 pikhq: It's literally as old as the IBM PC. 04:48:01 Ok, I haven't played many an adventure game. 04:48:02 Baldur's Gate... 04:48:09 Wait no. 04:48:11 Especially anything by Sierra 04:48:12 Three years older than the IBM PC. 04:48:16 Jafet: Sierra games are terrible. 04:48:18 Seriously. 04:48:24 elliott: whoops, i don't think it will work, darn t implicitly quantified probably 04:48:29 Really, large pile of WRPGs. 04:48:47 pikhq: Excuse me you are about two minutes away from playing Alley Cat in DOSBox. 04:48:52 Use these minutes wisely?? 04:49:09 oerjan: tpyo: "ctx =>" <-- there's supposed to be one ctx => and one ctx :=> in there, that's the point 04:49:09 It is literally fifty kilobytes of a single executable file. 04:49:23 That executable file is "CAT.EXE" and if there was a Unix port I would give up my ability to concatenate files to have it. 04:49:25 -!- pikhq_ has joined. 04:49:26 http://www.minecraftwiki.net/wiki/File:Hardcore_heart.png this is a laugh riot 04:49:26 elliott is so literal sometimes 04:49:26 oerjan: oh, okay 04:49:41 pikhq_: pikhq: Excuse me you are about two minutes away from playing Alley Cat in DOSBox. Use these minutes wisely?? It is literally fifty kilobytes of a single executable file. That executable file is "CAT.EXE" and if there was a Unix port I would give up my ability to concatenate files to have it. 04:49:58 I don't remember the last time I really had to concatenate files 04:50:00 Jafet: YOU'RE so literal sometimes. And I bet you haven't played Alley Cat either. I am going to play Alley Cat now. 04:50:35 http://en.wikipedia.org/wiki/File:Alley_Cat_video_game_theme_song.ogg 04:50:36 Surely there's some Javascript DOS emulator somewhere? 04:50:39 Literally the best. 04:50:45 Sgeo|web: You mean a DOS xeightsix emulator? 04:50:46 erm 04:50:49 Sgeo|web: You mean a JS xeightsix emulator? 04:50:51 Sounds FAST. 04:50:53 Sgeo|web: Maybe but that would seem to be very good idea 04:50:58 Just run DOSBox in Bellard's x86 emulator 04:51:02 s/would/would not/ 04:51:06 hmm, how fast did Bellard's go anyway 04:51:16 Then you won't even need to compensate for clock speed 04:51:19 Better idea is running native code instead of JavaScript 04:51:39 pikhq: Dude it literally works in DOSBox with just "dosbox CAT.EXE". 04:51:47 You have less than no excuse to not play this masterpiece of gaming. 04:52:06 elliott: remind me to play next Thursday 04:52:40 ONLY IF NEXT THURSDAY IS NOW 04:53:09 If I make some PC game that is not DOS, you can run it using Bochs or something else like that, or copy the disk image to a floppy disk and then reboot your computer (if it is PC, that is) 04:53:13 -!- pikhq has quit (Ping timeout: 276 seconds). 04:53:30 * Sgeo|web has no inclination to reboot his computer just to play a game 04:53:33 God this game is hard. Jafet: Play Alley Cat and your list will have eleven elements. 04:53:35 Sgeo|web: DOSBox. 04:53:38 Then use an emulator 04:53:43 It probably won't even work on modern Windows. 04:53:49 Which might be part of why I'd rather single-boot into Windows than dual-boot like a sane person 04:53:57 elliott: I was referring to what zzo38 said 04:54:08 Sgeo|web: Play alley cat. 04:54:14 FOREVERRR 04:54:17 elliott: on Thursday, I will 04:54:20 elliott: Alley Cat actually does work on non-x86_64 Windows. 04:54:28 Sgeo|web: Um excuse me now is better than Thursday. 04:54:33 I have homework to do on Sunday, then Monday Tuesday Wednesday I have school 04:54:36 It is objective fact 04:54:43 And I have to go eat and sleep at some point 04:55:00 Yes, I'm eating at 1AM :( 04:55:52 What do you eat? Paper, or ice? 04:55:59 I always go for ice. 04:56:16 Pasta. With parmesan cheese. 04:56:20 So, paper 04:56:22 This has become my perpetual dinner. 04:56:24 OK. 04:57:30 "If the cat manages to kiss the female cat in the special room, the level advances by one and the player gains an extra life. The games difficulty level continues to increase until multiplier level 30 at which point it stays the same. Gameplay at this level can continue indefinitely. The goal is to see how far one can go before running out of lives." 04:57:32 I love games like that. 04:57:47 You win! LET'S PLAY AGAIN BUT HARDER!!!! 04:57:50 FOREVER 04:58:07 class (c1 t, c2 t) => (:|) c1 c2 t; instance (c1 t, c2 t) => (:|) c1 c2 t, would that be enough for (c1 :| c2) t to be equivalent to (c1 t, c2 t) (but possible to use in * -> Constraint arguments) 04:58:20 oerjan: you can do 04:58:31 type Foo c1 c2 t = (c1 t, c2 t) 04:58:49 that's probably not partially applicable though... 04:58:51 elliott: but type synonyms are not legal type arguments unless fully expandable 04:58:53 newtype Foo? :p 04:59:21 eek, you mean a type wrapping a constraint... 04:59:33 I think there should also be a kind for the classes constraint, called & 04:59:56 oerjan: :D 05:00:04 zzo38: classes constraint? 05:01:57 No, what I mean is have classes also have a kind, allowing in a constraint to left of => and even multiple => can be had, allow classes of classes, etc. 05:02:33 zzo38: Classes have the kind (* -> Constraint). 05:02:43 why would they have a separate kind all to themselves when that works? 05:03:21 Well, I dislike having the capitalized name for kinds since they are otherwise uncapitalized symbols, so they should be called & instead of Constraint 05:03:40 No, Nat is capitalised too 05:03:53 They should call it + instead of Nat 05:03:55 I suspect the kinds other than * and maybe ? will be renamed to be alphabetical sometime 05:03:59 since it was a historical mistake 05:04:50 zzo38: if this constraintkind thing takes off they're going to want polymorphic kinds soon, and then they'll need lower-case words for variables 05:05:28 Yes, they should use lowercase words for variables. But the built-in kind should be symbols. 05:05:36 If you make up your own kind then they should be letters. 05:06:30 pikhq_: Does musl still break C++? 05:07:14 elliott: Yes. 05:07:22 pikhq_: :( 05:08:26 pikhq_: Any work on that? 05:10:14 Not really. 05:10:43 musl? 05:10:44 pikhq_: That's a huge shame, since it means you'd have to build WebKit with uClibc + libc++ or something. 05:10:50 Sgeo|web: http://www.etalabs.net/musl/ 05:11:58 * Sgeo|web doesn 05:12:06 * Sgeo|web doesn't see glibc on that comparision chart 05:12:37 Sgeo|web: eglibc is shipped in most major Linux distributions. 05:13:02 I think Red Hat/Fedora is the only really popular distro shipping glibc nowadays since Debian and Ubuntu ship eglibc. 05:13:11 Does this have anything to do with that guy? 05:13:13 What do SUSE do? 05:13:33 The Red Hat guy who's kind of a prick 05:13:50 Sgeo|web: That is one of the reasons glibc was abandoned. 05:14:03 Ah, ok 05:14:19 But eglibc encourage people to send changes upstream and pull from glibc too, so... 05:14:27 It doesn't exactly eliminate Drepper entirely. 05:14:29 -!- pikhq has joined. 05:14:40 Sgeo|web: Ulrich Drepper? 05:14:53 pikhq: name sounds very familiar, so I think so 05:15:05 He's a dick and a moron. 05:15:15 And pretends race conditions are non-issues. 05:15:24 How did he get to be in a position of such control over glibc? 05:15:37 Sgeo|web: Because he's competent. 05:15:42 (Well, less so recently.) 05:15:48 (But Red Hat don't hire useless people.) 05:15:54 (Well OK they probably do, but not to work on libc.) 05:16:22 Oh, huh 05:16:27 pikhq: Apparently Drepper works at Goldman Sachs. 05:16:28 It's actually pretty funny: dalias keeps finding bugs in musl that also exist in glibc. 05:16:37 Oh, er. 05:16:38 http://en.wikipedia.org/w/index.php?title=GNU_C_Library&diff=451751748&oldid=450654445 05:16:42 Drepper says, roughly, "fuck off". 05:16:43 Perhaps not an accurate contrib. 05:17:00 Wait, nope. 05:17:01 http://www.linkedin.com/in/ulrichdrepper 05:17:09 Left Red Hat last year. 05:17:14 -!- pikhq_ has quit (Ping timeout: 240 seconds). 05:19:36 Too much malloc? 05:20:03 Sgeo|web: What? 05:20:11 In the comparison chart 05:20:21 Attention to corner cases: Too much malloc 05:20:41 Sgeo|web: i.e. prone to allocating too much and the like 05:21:13 making it more exploitable if you can get the application to pass ridiculous things 05:22:01 TCB passwords are really nice 05:22:10 TCB passwords? 05:22:11 I wonder if there's a way to get them without PAM 05:22:17 Sgeo|web: "TCB passwords are a feature from Openwall which move the password hashes from /etc/shadow to /etc/tcb/username/shadow. This allows users to change passwords and allows programs running as the user (for example, screen lockers) to authenticate the user's password without special suid or sgid privileges." 05:24:06 -!- augur has joined. 05:24:30 Oh, huh. That makes sense. Except a malicious program running as a user can get a copy of the has to attempt to crack... but hmm, why would it need to? To attempt to sudo, I guess 05:24:39 copy of the has -> copy of the hash 05:25:49 Sgeo|web: That risk is far lesser than the risk of running anything at all setuid root 05:26:13 Also, a malicious program running as a user can already fuck a lot of things up. 05:26:27 There's little worry about adding one *tiny* thing extra to that. 05:26:38 Sgeo|web: Also, it's easier to social engineer the password out of the user at that point 05:26:44 Truth. 05:27:26 I guess checkpasswd() which may delay or refuse to give an answer is still too much to trust with setuid? 05:27:52 You can't setuid a function. 05:28:10 A program, I guess, then 05:28:23 That'd have uncomfortable implications for "ps" 05:28:30 I mean 05:28:34 Here's how a program can exploit that 05:28:38 Sgeo|web: Continually run ps -A as the user 05:28:43 If you see "checkpasswd", snab that line 05:28:45 The hash is in it 05:29:03 OK, checkpassword could null out that element of its argv instantly, but still, if we're going on hypotheticals 05:29:10 Sgeo|web: Anyway, chpasswd isn't implementable with checkpasswd. 05:29:15 Erm 05:29:16 s/ch// 05:29:47 Oh, erm. A malicious program could change the password without ever knowing the password. 05:30:42 Sgeo|web: A malicious program can change the user's password today. 05:30:49 That's because users are allowed to change their own passwords. 05:30:51 Shocking, isn't it? 05:31:20 I thought the whatever needed for that asked for the password first 05:31:34 (current password) 05:32:00 Well, sure, but it's hardly a major step for a malicious program to get that. 05:32:05 You're really operating at the "already lost" stage here. 05:32:23 Hmm 05:32:24 http://www.openwall.com/presentations/Owl/mgp00020.html 05:32:32 Looks like they might restrict writing of the file to the shadow group, and just setgid is used 05:37:07 wow, Michael S. Hart was only 64 05:38:09 Maybe they should implement all the security beyond the standard UNIX security stuff by ptrace 05:38:49 There is nothing more wonderful than a maybe. 05:39:56 ptrace(PTRACE_ATTACH, 1) 05:40:17 And that includes ptrace itself. 05:40:39 Yo dawg 05:41:02 He never saught actual medical care? 05:43:27 Sgeo|web: For what 05:45:26 Hmm. Good point. In general I guess, but that might not actually be connected to his death 05:46:20 I see no illnesses mentioned at http://en.wikipedia.org/wiki/Michael_S._Hart 05:46:27 And having a heart attack is not exactly something predictable 05:47:18 I did say "Good point" 05:48:25 I just want to know what the hell you think he should have sought "actual medical care" for :P 05:49:18 In general. 05:49:22 Rather than "home remedies" 05:49:49 Did you place your bets on the Dungeons & Dragons game? 05:51:27 Sgeo|web: It is not necessary to visit a doctor every time you have a cold. 05:51:37 I see no implication that he tried to cure cancer with some herbs. 05:59:21 -!- hesus has joined. 05:59:26 -!- hesus has quit (Client Quit). 06:11:39 collect :: Barrier f () t -> [f]; collect x = maybe [] (: collect (continue x ())) $ approach x; uncollect :: [x] -> Barrier x a (); uncollect = mapM_ yield; What would this be called in a mathematics? Note they are different types, although the type (as well as the value, ignoring undefined cases) will be the same if type a and t are both () 06:12:00 oerjan is a mathematics. 06:12:21 OK, then ask oerjan. 06:15:34 You ask oerjan :( 06:15:55 collect and uncollect are probably natural transformations 06:17:38 collect is a natural transformation from the functor Barrier _ () t to the functor [_], although only the second one is a Functor in the haskell sense 06:17:59 but that's only because haskell functors need to be on the last type parameter 06:18:08 *haskell Functors 06:19:14 but if you defined a function (f -> g) -> Barrier f () t -> Barrier g () t, then that would essentially be the functor mapping 06:19:52 if you call it barrierFrontMap, say 06:20:53 then collect . barrierFrontMap h = map h . collect, the equation for it being a natural transformation 06:21:36 and similarly uncollect . map h = barrierFrontMap h . uncollect 06:22:59 oerjan: Such a function does exist; it is called (flip convert id) 06:23:36 right, convert is a bifunctor, i think 06:23:59 covariant in one type and contravariant in the other 06:24:31 so restricting one of the types to just apply id gives a single functor, either covariant or contravariant 06:24:45 Is coppro awake? 06:25:20 Yes. 06:25:29 (I mean yes to oerjan) 06:25:31 zzo38: you could probably even make a trifunctor that also changed the t type 06:25:46 oerjan: Yes, fmap changes the t type 06:25:50 (i assume they can be called that) 06:25:52 And that is covariant 06:26:08 You can combine them if you wanted to. 06:26:15 yeah 06:26:28 http://www.youtube.com/watch?v=da_qEyGmog0&feature=feedf clatter clatter clatter 06:26:46 a bifunctor or trifunctor can also be seen as a single functor between product categories, iirc 06:27:04 or wait hm 06:27:42 Would they have to be opposite product categories? 06:27:47 -!- elliott has quit (Quit: Leaving). 06:27:57 -!- elliott has joined. 06:28:05 (That is, if it is covariant in one type and contravariant in another) 06:28:25 more like (C^op X C) 06:28:40 elliott: That's an interesting way to /part a channel. 06:28:53 shachaf: I just don't have it on autojoin. 06:29:03 i'm not sure this is right though. it might be something else than product 06:29:04 Icy. 06:29:18 oerjan: It is what I meant. But I am unsure as you are too. 06:29:21 possibly some tensor-like product 06:29:28 rather than direct 06:29:47 My statement stands, I think. 06:30:46 zzo38: hm i think it may be a functor from Hask^op X Hask to Hask 06:31:35 and the trifunctor would be from Hask^op X Hask X Hask 06:32:13 i'm a bit too tired for this 06:34:21 -!- Ngevd has joined. 06:34:41 Helllo 06:35:34 -!- kwertii has joined. 06:35:39 hi 06:37:08 Ngevd is so q 06:37:46 nqevd 06:39:20 Yes. 06:39:39 I'm not entirely sure what's going on here 06:40:11 ngevd is so fly he fly away 06:40:59 ais523 and Gregor are both level 18 06:41:05 Deewiant is level 19 06:41:17 very active recent changes, today 06:41:19 Ngevd: wat 06:41:24 Slakoth, whom I forgot to name, is level 15 06:41:25 -!- kwertii has quit (Quit: kwertii). 06:41:28 oh 06:41:35 name a monkey monqy....... 06:41:37 and an elliott elliott 06:41:48 there are elliotts? 06:41:58 there should be 06:42:06 Yea, like Gulpin 06:42:09 :P 06:42:10 Can you make this (threaded cpp) code run faster? (code.google.com) 06:42:15 I was hoping for something much better than what I got 06:42:19 threaded preprocessor :') 06:42:26 Make code.google.com faster 06:42:31 threaded preprocessor? 06:42:33 yes 06:42:34 but 06:42:35 it wasn't 06:42:36 it was c++ 06:42:39 but it should be cpp 06:42:40 threaded cpp 06:42:43 threaded cpp 06:42:55 threaded cpp 06:43:01 people who call c++ cpp should be hung from a shame and left to rot 06:43:02 in shame 06:43:11 pikhq: So am I right in thinking that the way to get kernel releases right now is github.com/torvalds/linux? 06:43:14 until they stop it 06:43:32 monqy: what about alphanumeric contexts like file extensions and certain search engines 06:43:51 .c++ is a perfectly OK file extension 06:43:57 I use it, when playing C++ sudoku 06:43:59 search engines which think + is nothing so c++ is the same as c should also be hung from a shame 06:44:07 google 06:44:10 yes 06:44:12 +"c++" works in google 06:44:16 as does c++ 06:44:17 exactly the same 06:44:23 it used to not work 06:44:25 think it works now 06:44:28 "c++ compiler" gives results only for c++ compilers 06:44:34 oh it works now 06:44:37 last i checked it idnd;t 06:44:54 C++ sudoku? 06:45:06 Sgeo|web: The best game. 06:45:15 alsoe: I've seen more things .cc than .cpp but never .c++ but .c++ is good for c++ is good except c++ is bad so 06:45:19 the best game 06:45:36 Basically you have to replicate what would be ten lines in Haskell with C++ templates. 06:45:42 Preferably requiring C++0x magic. 06:45:44 .cpp should be for programming in the C preprocessor, obviously 06:45:44 let's name our programming language to be as hard to search for as possible.......... 06:45:54 Other fun tasks like implementing a strongly-typed boolean type in C++ fall under that too. 06:45:56 It is obscenely difficult. 06:45:58 cpppp for the c++ preprocessor 06:46:04 Sgeo|web: .h is the standard C preprocessor extension 06:46:11 What about .cccp? 06:46:21 get out of here pinko 06:46:24 @admin + shachaf 06:46:25 Not enough privileges 06:46:27 Aww. 06:46:41 @admin + elliott 06:46:41 @admin - shachaf 06:46:42 @admin - elliott 06:46:42 Not enough privileges 06:46:47 Aha! 06:46:47 Ha. 06:46:50 Hmm. 06:47:03 I realise you can reverse that, but scripting that was bot 06:47:03 h 06:47:07 (a) a small victory, and 06:47:13 (b) really depressing when I thought about what I was doing. 06:47:16 freudian newline 06:47:20 ... depressing? 06:47:23 I know, I kind of suspected that when you @admin +ed me out of the blue. 06:47:24 @admin - elliott 06:47:35 shachaf: I had to provoke you somehow. 06:47:41 ?admin + elliott 06:47:41 @admin - shachaf 06:47:43 Patashu: I don't want to be the kind of person who scripts these things just to one-up shachaf. 06:47:58 shachaf: It doesn't handle any additional spaces you might add. 06:47:59 Curses. You got the question marks too. 06:48:02 If you want to know how to circumvent it. 06:48:24 damn these people are good at ssbm http://www.youtube.com/watch?v=C​Q9c-2lAld4 06:48:27 @admin - elliott 06:48:30 @admin - elliott 06:48:34 !admin + elliott 06:48:35 @admin - shachaf 06:48:35 Not enough privileges 06:48:38 ,admin + elliott 06:48:38 @admin - shachaf 06:48:39 Not enough privileges 06:48:41 .,admin + elliott 06:48:41 @admin - shachaf 06:48:41 Not enough privileges 06:48:46 Stop flooding the channel, elliott. 06:48:53 Stop flooding the channel, lambdabot. 06:48:55 * shachaf is controlling two bots with one command. 06:49:01 ellibott 06:49:06 oadmin + elliott 06:49:06 @admin - shachaf 06:49:07 Not enough privileges 06:49:07 u mad? 06:49:09 badmin + elliott 06:49:09 @admin - shachaf 06:49:09 Not enough privileges 06:49:15 elliottadmin + elliott 06:49:15 @admin - shachaf 06:49:15 Not enough privileges 06:49:26 I wish I was an admin + elliott was awesome + everyone else was dead. 06:49:31 Aww, it doesn't self-trigger. 06:49:48 + elliott 06:49:54 shachaf-- 06:49:56 -admin + elliott-- 06:49:57 @admin - shachaf 06:49:57 Not enough privileges 06:50:12 I love how it logs my response before shachaf's line. 06:50:24 @ADMIN + elliott 06:50:24 Unknown command, try @list 06:50:24 @admin - shachaf 06:50:25 Not enough privileges 06:50:32 Enough with the spam. 06:50:35 Wow, it accounts for case? 06:50:51 u madmin + elliott 06:50:52 @admin - shachaf 06:50:52 Not enough privileges 06:50:53 admin + elliott 06:50:53 @admin - shachaf 06:50:53 Not enough privileges 06:51:05 zzo38: heh 06:53:11 -!- oerjan has quit (Quit: also, admin + elliott). 06:54:41 -!- zzo38 has quit (Quit: Also, please help me to interrogate Frank). 06:57:07 Dammit, Gregor, this is not the time to fall in love 06:57:18 `addquote Dammit, Gregor, this is not the time to fall in love 06:57:25 696) Dammit, Gregor, this is not the time to fall in love 06:57:39 -!- pikhq_ has joined. 06:57:46 'pastequotes Ngevd 06:57:49 -!- pikhq has quit (Ping timeout: 255 seconds). 06:57:51 Wrong quote. 06:58:38 `pastequotes Ngevd 06:58:41 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28305 06:59:38 oh no it 06:59:43 didn't work right 06:59:54 but why 07:00:41 `pastequotes taneb 07:00:44 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2264 07:01:17 something is broken but is it on my side or the other 07:01:51 "WTF is a .2264 file"? 07:01:53 chromes download them to file instead of do it properly 07:02:03 Firefox does similar 07:02:07 -!- myndzi\ has quit (Read error: Connection reset by peer). 07:02:14 it usually works properly though 07:02:43 i don't know the na,e of the theing that's porblaby emsted up thouyghew... 07:02:51 oh no my keybaord skills........ 07:03:17 * Sgeo|web tries web-sniffer.net because he is lazy 07:03:30 They are tele 07:03:51 it will be some encoding thing 07:04:01 Content-Disposition:inline; filename="paste.2264" 07:04:22 Wait, no, that's what it should be, right? 07:04:39 Content-Type:application/binary 07:04:44 waht 07:05:00 it will be some encoding thing 07:05:05 grehgor is this your faulte 07:05:07 because it looks like a binary file 07:05:09 to the browser 07:05:12 or webserver or whatever 07:06:07 If the webserver is thinking it's binary due to some encoding thing, the webserver is broken imo 07:06:19 what is it supposed to do instead 07:06:30 Get told what each file is, or something 07:06:41 Assume it's tertiary 07:06:41 but who encoded it badly.e... 07:06:46 Sgeo|web: neat 07:06:51 Sgeo|web: cue alternate universe Sgeo|web 07:06:57 why should it have to be told what every file is 07:06:59 it's broken 07:07:13 Oh dear god 07:07:20 hi Ngevd 07:07:22 how are you 07:07:25 I've got back into Runescape 07:07:37 no 07:07:38 I';ve never into that at all ever 07:07:39 stop that 07:07:40 is it 07:07:40 * Sgeo|web used to play a long time ago 07:07:41 good 07:07:46 cease Ngevd cease 07:07:47 iov'e never evenm 07:07:48 seeen 07:07:48 it 07:07:53 monqy: jsodfoj 07:07:54 Still visit on occasion, but never more than a few minutes, and rarely do anything substantial 07:07:54 I've heard only BAd 07:08:11 The music's nice 07:08:15 monqy: zdsklf;vxcb,vn.m 07:08:25 But then again, there is no such thing as non-nice music, anywhere ever, so 07:08:41 i distinctly remember Sgeo|web whining about his ears hurting after someone linking something in here 07:08:54 or do you just selectively define music 07:09:10 elliott: I sometimes say things that aren't literal >.> 07:09:18 wow me too 07:09:27 I tend to like a _lot_ of soundtracks 07:09:42 we should be saying things that aren't literal friends 07:10:33 * Sgeo|web finally parses that properly 07:11:39 * Sgeo|web wonders if he could make Freenode's webchat look like Mibbit 07:11:57 mibbit 07:11:59 paragon of design 07:12:15 sgeo why would you want to do this 07:12:19 to flex your web muscleS???? 07:12:24 wuscles 07:12:29 flex them 07:12:30 all over 07:12:33 the freenode webchat 07:12:47 So I get a consistent look between the other IRC channels I'm on and here 07:12:54 networks 07:12:55 if i was the freenode webchat i would be cowering and crying about now 07:13:05 i want to die 07:13:07 :( 07:13:10 :'( 07:14:06 Horrible evil idea: Setting up a proxy on my computer to let me connect to that proxy via Mibbit, and here via that proxy 07:14:57 this is a good thing to do 07:15:37 Sgeo|web: do you know how to set up a bouncer... 07:15:47 Sgeo|web: why not hack up a terminal emulator using snap and web sockets? 07:17:07 Wait, do bouncers actually look like full IRC networks to the client? 07:17:13 Snap as in the BYOB 4 alpha? 07:17:13 Why was I unaware of this 07:17:29 ngevd snap as in the haskell web framework, presumeabley 07:17:44 Ngevd: sma 07:17:53 Ngevd: snap framework 07:18:03 Ngevd: i don't know what BYOB 4 alpha is 07:18:37 And so you shouldn't 07:19:04 Sgeo|web: what would they look like instead? 07:19:52 ...annoying to use thing that looks almost like raw IRC? I'm really not sure what my mental picture was 07:20:33 you connect to an irc bouncer with a normal client 07:21:38 -!- calamari has quit (Quit: Leaving). 07:23:12 -!- ive has quit (Quit: leaving). 07:28:06 -!- CakeProphet has joined. 07:28:06 -!- CakeProphet has quit (Changing host). 07:28:06 -!- CakeProphet has joined. 07:31:14 pikhq_: :( 07:32:41 -!- carlos has joined. 07:32:55 hello carlos 07:32:56 `? welcome 07:32:58 elliott: ? 07:32:59 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 07:33:10 pikhq_: I can't figure out where you're meant to get the kernel from when kernel.org is down :P 07:33:13 github.com/torvalds/linux? 07:34:14 -!- carlos has left ("Leaving"). 07:34:22 bye carols 07:34:36 -!- pikhq has joined. 07:34:52 pikhq_: I can't figure out where you're meant to get the kernel from when kernel.org is down :P 07:34:53 github.com/torvalds/linux? 07:35:23 yes 07:35:40 so much wasteful downloading :'( 07:35:45 -!- myndzi has joined. 07:36:47 what? 07:37:28 -!- pikhq_ has quit (Ping timeout: 244 seconds). 07:40:27 coppro: of the entire kernel history + branches 07:40:29 just to get the latest release 07:41:32 elliott: it has tar download? 07:41:43 oh hmm 07:41:48 darn your facts,,, 07:42:04 also you can download a truncated copy of the repo iirc 07:42:10 brb 07:42:20 -!- Ngevd has quit (Quit: Leaving). 08:04:32 irssi is a bouncer. I seriously... not sure how I thought irssi had that feature I thought was advertised. I think I thought of people just ssh'ing to irssi 08:04:43 erm, s/is a bouncer/has bouncer functionality/ 08:05:05 Or maybe I'm reading too much into its presence on Wikipedia's BNC page 08:06:05 what feature 08:07:06 Someone mentioned any client being able to connect to it, I think. 08:07:11 I may be hallucinating that 08:07:19 yes 08:07:21 it's called 08:07:22 a bouncer 08:10:19 Clients need to actually support bouncers? 08:10:31 only if they want additional functionality 08:10:35 irssi's page on connecting via a bouncer seems to imply it... oh 08:10:37 ok 08:11:10 well i mean 08:11:16 one could make a bouncer that requires client support 08:11:18 depends how irssi does it 08:13:02 Maybe I'll just set up irssi somewhere and connect XChat to it 08:13:15 Does XChat support bouncers easily such that ... wait, XCHat sucks 08:13:26 YOU NEED NO CLIENT SUPPORT FFS 08:13:45 elliott: Doesn't mean I don't really want it 08:13:54 p.s. use miau 08:13:56 Sgeo|web: no you don't 08:13:57 it's unnecessary 08:13:58 I'd rather not have to type /quote server or whatever. 08:14:00 what 08:14:03 why would you have to do that 08:14:16 elliott: how do I tell the bouncer what servers I wish to connect to? 08:14:22 Sgeo|web: in its configuration file, duh 08:14:25 it stays connected automatically 08:14:33 THen again, that would be far more convenient than dealing with XChat's shit 08:14:57 p.s. use miau 08:15:21 Hmm. Why? 08:15:36 because it is the only tolerable bonucer 08:15:54 znc is way too overly-modular and bloated and basically a pain in the ass, psyBNC is shitty ~warez haxx0r~ crap 08:16:04 i forget the other half-decent one i used that wasn't miau but it was kind of sucky anyway 08:16:06 with miau you literally just 08:16:15 "miau -[some letter i don't remember] port server" 08:16:17 and it's done 08:16:36 How easy/difficult is it to spontaneously connect to a new server? 08:16:56 you shell in and start another miau 08:17:00 takes three seconds 08:17:25 no bouncer that smushes multiple servers into one connection is usable ever 08:17:37 not even simple commands like PRIVMSG make sense with that model 08:18:04 I was hoping that client support for bouncers made that sort of thing tolerable 08:18:11 what sort of thing 08:18:29 Easily spontaneously connecting to another server 08:18:38 like i said, it is easy 08:18:54 ssh foo; miau pooirc.net 08:19:00 -!- Vorpal has joined. 08:19:03 couldn't possibly be fewer clicks with a menu in a client 08:19:16 * Sgeo|web vaguely wonders if Quassel is as shitty on Linux as it is on Windows 08:19:30 elliott: Ctrl-T, /server whatever 08:19:45 Making it automatically join is another issue which is a major XChat fuckup 08:19:51 Sgeo|web: no client will just connect through everything with a bouncer... 08:19:55 that would be ridiculous 08:20:18 i guess what you want is a client/server architecture client type dealie, but those are really just overblown bouncers 08:20:39 just get miau on , use it, be happy 08:20:41 elliott: such as Quassel, then? Or maybe some other thing that's similar 08:21:02 sure, but like i said 08:21:12 it is basically a bouncer deliberately designed to only work with one client and not use the standard irc protocol 08:21:15 in return you get uh 08:21:20 connecting to servers is approximately a millisecond faster 08:21:24 ~~WHAT MASSIVE GAINS~~ 08:21:40 it is??? 08:22:07 Sgeo|web: how often do you connect to completely random servers anyway 08:22:16 there's no harm in running a handful of miaus for all the networks you regularly use, that's kind of the point 08:22:19 I could keep using mibbit and just use miau for Freenode as was the original plan 08:22:22 they can log channels for you while they're gone 08:22:26 elliott: quite frequently 08:22:26 and play back the log when you connect 08:22:38 You get a better backscroll thing too, IIRC. (Bouncers in general tend to have some sort of "replay logs a bit" features, but they are sometimes a bit kludgy.) 08:22:55 why do you want to use mibbit ughhh 08:22:58 fizzie: miau's is nice. 08:23:15 At least, it just replays it as normal but with timestamps tacked on, and you can disable those if you don't care. 08:23:25 I made a few-liner change to LimeChat to use that as the real timestamp WAY BACK WHEN 08:26:22 elliott: Yes, well, that's pretty much what bip does; but it's not completely optimal. I mean, it doesn't (and I don't want it to) replay things that I've already read, but sometimes I try to /lastlog something that I read in another client. 08:26:40 I don't use /lastlog. Maybe I should. 08:26:49 Anyway, I agree that some kind of client integration is, you know, the ideal, but it should be built on top of IRC, really. 08:26:55 And it's not a massive loss. 08:26:57 At all. 08:27:03 And the loss is definitely not in /server not doing something terrible. 08:27:10 "grep on the logs" is what I usually do, though, and that works well. 08:27:29 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 08:27:56 fizzie: TBH, I think it should replay things you've already read; ideally, your scrollback would just extend back into infinity as the logs. 08:28:12 So the whole window should look exactly the same, message-wise, on every client, no matter how much time passes (assuming nobody says anything). 08:30:22 Personally I think if you need a random connection for a day, you can just connect with the client you're using; if it's to be a permanent thing, just start a bouncer and/or add it to the bouncer configuration. (bip has a "single process, multiple networks" thing. And it actually only has one inbound port for connections and differentiates with the password, which is a bit weird but works.) 08:30:54 Yes, I didn't think to ask Sgeo|web why he wants a bouncer for random connections. 08:31:28 tiffany seems to use a bouncer for random connections 08:31:35 i don't understand tiffany 08:31:50 I suppose it's different for bots, they don't get bored setting things up? 08:32:00 perhaps 08:32:04 Maybe I want to switch from random connection to permanent on the drop of a hat. 08:32:04 (From what I've gathered on the on-channel discussion, this is the case.) 08:32:15 Sgeo|web: Maybe I want to live in a world of endless possibilities. 08:32:17 A world where every flower 08:32:19 has a meaning. 08:32:20 Every friend 08:32:21 has a story. 08:32:27 Maybe _I_ want to Live in a World 08:32:29 where my bouncer defines me 08:32:30 empowers me 08:32:31 supports me 08:32:33 My bouncer is me. 08:32:40 Share your bouncer story at iwanttoripmyownfuckingheadoff.com. 08:33:32 There's a point here, but I think it's lost in the fuzz. 08:33:33 Maybe that's a weird thing to want; I mean, by definition you make a new permanent IRC recidence not very often, so spending several seconds and a reconnection on it isn't all that much. But whatever, of course. 08:33:57 fizzie: That's some part of my point, but it's also the most obvious so it doesn't really come across, uh, at all. 08:34:27 Part of the reason I want the bouncer I think is to smooth out the absolute insanity that would occur if I tried directly connecting to anything 08:34:35 This computer's connection seems to be crap 08:34:35 how would that be 08:34:36 insanity 08:34:58 Sgeo|web seems very good at dismissing software and the like based on imagined problems (package namespace collisions) and failed attempts to account for imagined usecases (connecting to a billion minor IRC networks and then staying with half of them forever). 08:34:59 Unless you want to see me disconnect and reconnect every few seconds? 08:35:24 Sgeo|web: Freenode is a permanent server. 08:35:47 poopnet.org, petresellersirc.com aren't. 08:35:59 I don't want to inflict the pain of my connection issues on temporary servers 08:36:04 I'm sure they don't care about you reconnecting every more-than-few-seconds-I-have-seen-your-connection-and-it-is-not-that-unstable.. 08:36:06 s/../. 08:36:08 / 08:36:33 Sgeo|web: Oh well. No existing software meets your very tortured usecase. Guess you'll have to use none of it and ensure you reap NO benefits! 08:37:04 elliott: Quassel and WeeChat seem to meet it, except they don't use standard IRC protocol 08:37:13 You can connect to Quassel with mibbit?? 08:37:15 Wooow. 08:37:24 Other things Quassel doesn't meet: Actually being bearable to use. 08:37:50 Maybe the one bug that made Quassel unbearable for me is on Windows only 08:38:08 And I meant if I was going native client + bouncer or server route 08:38:15 so sgeo why do you want mibbit again? I keep forgetteng 08:38:20 Mibbit+bouncer with bouncer just on freenode is a separate thing 08:38:20 or you never 08:38:21 explained 08:38:22 yourself 08:38:27 Maybe you keep forgetting because he never said anything. 08:38:41 There could be a bouncer that will let you configurarate it through an existing connection; e.g. bip catches the "BIP" command so you can do things like "/bip whatever"; there's very limited support to editing the configuration, but it would be easy to extend (and possible something does it already) it to allow "/bip add_network stupidnet irc.stupid.com:25565" after which you can then just connect your client to bouncer.sgeo.com. 08:38:43 monqy: smooth out my connection issues. Which a bouncer or server would also do 08:39:05 Sgeo|web: what has mibbit got to do with that 08:39:31 fizzie: Very easy to extend for someone who can hack C. 08:39:43 fizzie: Inca-dentistry, do you know how well sshfs handles "weird things" like FIFOs? 08:39:48 I'm assuming it does stuff to make sure a 2 second disconnection or whatever isn't fatal 08:40:04 Sgeo|web: I'm sure it doesn't. 08:40:35 "[PsyBNC] allows Full Online Administration, the only thing you will have to set up before starting is your port where the demon should listen --" sounds like it does it; though, well, PsyBNC... 08:40:46 fizzie: As someone who used psyBNC for months: 08:40:51 Nobody should ever have to use psyBNC. 08:40:52 Ever. 08:41:20 Also I don't think sshfs handles weird things at all, but I could be worng. 08:41:48 Doesn't it just, like, use "cat" and stuff? :p 08:42:36 Device nodes you can't put on any FUSE thing, at least, for securattimanty reasons. 08:42:52 Well, yes, but they can act correctly when readden and written to. 08:43:00 -!- pikhq_ has joined. 08:43:25 -!- pikhq has quit (Ping timeout: 260 seconds). 08:45:21 Try it and see, I suppose; it could be that creating a fifo works. It's not going to push the data through the SSH connection though. 08:46:00 What do you mean? 08:46:22 I mean you'd get different pipes on different machines, as opposed to a pipe which you can write to on A and read from on B. 08:46:42 But I thought sshfs was basically based around ls and cat? 08:46:49 In which case you should certainly be able to do communication with it. 08:46:59 You know what would be cool? A desktop environment that just sent commands to bash, possibly over ssh 08:47:28 elliott: FIFOs are basically in-kernel buffers, the filesystem layer never sees the data you put into and read from one. The device node in the filesystem just attaches a name to one. 08:47:30 Wait, hmm, why would I need this, I assume sshfs would pretty much do everything I want 08:47:47 fizzie: Yes, but if sshfs is dumb, it won't create a pipe on my client machine. 08:47:50 It'll think it's an actual file. 08:48:46 elliott: Oh, well. Try it out if you want. A pipe would be a pretty weird actual file, though. 08:48:54 Well, yes. 08:49:10 I wonder if 9P might help. 08:49:20 $ mkfifo test.fifo 08:49:20 mkfifo: cannot create fifo `test.fifo': File exists 08:49:25 Oh no, bitten by my own cleverness. 08:49:47 lol 08:50:38 The pipe as seen through sshfs just looks like a pipe, sadly. And reads only what I write into it on the local machine. 08:51:33 :( 08:53:16 QNX has a 9P-ish network-distributed thingie too (you can access devices on other computers and so on), maybe you could do an over-the-network named pipe there. 08:53:51 -!- monqy has quit (Quit: hello). 09:05:16 -!- Ngevd has joined. 09:06:55 "Scotch, a kind of hybrid of Haskell and Python" 09:07:02 oh no 09:07:05 Heaven or hell? Discuss 09:09:03 Maybe I'll finally fall in love 09:09:24 oh no 09:10:42 http://www.bendmorris.com/2011/01/what-problem-does-scotch-solve.html 09:12:06 -!- Ngevd has quit (Remote host closed the connection). 09:12:32 Throw out the type-system security of Haskell, basically. Is this just going to be Python without OO and with decent lambdas? 09:12:34 -!- Ngevd has joined. 09:13:57 Earlier I had the probably already hadden idea of HaskellScript 09:17:53 -!- pikhq has joined. 09:18:25 -!- pikhq_ has quit (Ping timeout: 276 seconds). 09:22:43 -!- Jafet has quit (Quit: Leaving.). 09:35:00 -!- Phantom_Hoover has joined. 09:35:40 HI GAIZ 09:35:55 GREETINGS 09:36:18 Haskell and Python? 09:36:22 that could be cool maybe. 09:36:31 ..no wait 09:36:34 no that's not cool. 09:37:10 I think a Haskell-influenced language without some of the side-effect restrictions would be nice. 09:37:27 I'm not very good at Haskell 09:37:42 I'm... not very good at all. But I have a good understanding of the basics I feel. 09:37:43 I know this because I wrote the type thingy "String -> Int -> Int -> String -> Int -> Int -> [Int] -> Int -> Bool -> Bool -> Ordering" 09:37:49 ....... 09:37:53 what is that even. 09:38:01 that needs to be a data type. 09:38:15 -!- Ngevd has quit (Remote host closed the connection). 09:38:23 back 09:38:27 http://www.bendmorris.com/2011/01/what-problem-does-scotch-solve.html 09:38:29 -!- Ngevd has joined. 09:38:29 ahahahahahaha 09:39:45 why do easy-to-use scripting languages have to be interpreted? 09:39:59 So it's Haskell with crappier function call syntax? 09:40:18 "Type inference is great and makes languages like Haskell very flexible but not as much so as Python. For example: 'a' == 1 won't evaluate in Haskell because there's no instance of == specifically defined for a string and a number; in Python it evaluates to False, as == can be used between any two values. Sometimes you want this kind of type safety, sometimes you don't." 09:40:33 Pictured: types: they don't work that way. 09:40:36 Phantom_Hoover: the great thing is 09:40:37 (Int a) => 09:40:38 NOT VALID 09:40:48 if you remove the optional type declaration 09:40:53 haskell is lighter weight than scotch 09:43:08 "I believe that scientists, mathematicians, or anyone who uses math in their daily lives (that's everyone) will be able to read and understand a Scotch program - instead of learning a new "language," they simply have to learn how to apply a language with which they're already familiar." 09:43:26 ...lol 09:43:28 Wow, just by adding some parentheses to function definitions, suddenly scientists and mathematicians can use it too. 09:43:43 and everyday people! 09:43:50 isnt that how they sold cobol 09:43:57 fizzie: So how IS one meant to access fifos and the like remotely 09:44:00 nfs? 09:44:47 You just don't do that sort of stuff. 09:44:57 fizzie: What, nfs doesn't handle it? 09:45:22 I'm pretty sure it won't. 09:45:25 fizzie: What about Unix sockets? 09:45:57 Those are local to the machine too. The filesystem just provides a namespace for them, like it does in the case of named fifos. 09:46:08 Ugh. 09:46:22 This totally ruins my perfect IRC bouncer design. 09:46:36 If you want networking, you need to do networking. 09:46:46 Except again maybe on QNX and Plan 9 and such. 09:47:12 (Basically: Expose everything split into channels with a normal file to read and a FIFO to write; clients access these files and present an interface to the user appropriately; you can run multiple programs on them at once to be e.g. scripts, and you can write scripts as simple shell script; this is all very similar to the ii client.) 09:47:29 (But then the key thing is that I thought you could access these files over a network filesystem.) 09:47:40 (Thus allowing a completely transparent multi-connection bouncer system.) 09:47:41 Such more elegant operating systems, for a more civlized age. 09:47:48 More civlized indeed. 09:48:01 NO MOKC MY TYPNG 09:48:13 But seriously... is there no way to get the behaviour I want other than "reopen this file and check if it's changed every few ms to see if there's been a write"? 09:50:05 It's borderline possible that inotify and such can monitor changes in network-mounted filesystems too, at least NFS; but I doubt over sshfs, at least with any sort of sensible timeframe. 09:50:36 sshfs I don't care about too much. 09:50:41 I'd rather avoid NFS though. I realise that limits my options. 09:51:37 Lake Michigan looks like Norway 09:51:46 Sigh. All I want is to expose a very simple filesystem interface over a network. 09:52:21 Well, the more esoteric network filesystems might in fact do it better than NFS. I'm really not sure how fast (and if) changes propagate to NFS clients without them actually polling; but there might be some sort of "register for notifications" thing there. 09:52:57 elliott: Just use Plan 9. 09:53:02 Well, 9P is in the kernel these days. 09:53:06 "I'm a software developer and Biology student from Seattle," 09:53:08 shachaf: If only that were an option. 09:53:10 Ah, this explains it. 09:53:36 elliott: u mad? 09:53:40 shachaf: I sad. 09:53:44 :-( 09:54:19 https://github.com/bendmorris/scotch/blob/master/test.sco 09:54:38 I love the bit where this looks nothing like maths and everything like Python. 09:54:45 * shachaf finds the article you people were referring to. 09:54:55 You've already quoted all the good bits. :-( 09:55:09 https://github.com/bendmorris/scotch/blob/master/scotch.lib/std/fraction.sco 09:55:11 Phantom_Hoover: NO "f(n) = n" IT'S MATH. 09:55:12 at least it has pattern matching 09:55:20 better than python 09:55:30 https://github.com/bendmorris/scotch/blob/master/scotch.lib/std/math/infinity.sco 09:55:32 Also "std.math @ 'pi'" is how a mathematician would refer to pi. 09:55:36 Phantom_Hoover: oh no 09:55:48 I often see mathematicians refer to infinity as infinity(). 09:55:53 https://github.com/bendmorris/scotch/blob/master/scotch.lib/std/math/calculus.sco 09:55:55 calculus 09:55:59 literally all calculus 09:56:09 https://github.com/bendmorris/scotch/blob/master/scotch.lib/std/math/algebra.sco 09:56:12 literally all algebra 09:56:31 -!- derdon has joined. 09:56:32 I love how he doesn't even know the binomial theorem. 09:56:32 elliott: You're missing functions.sco which contains inv() such that inv(deriv) = integ 09:56:45 shachaf: Mathematical fact. 09:56:58 Where is functions.sco? 09:57:09 I'm sure he just forgot to commit i. 09:57:13 Oh. :p 09:57:37 "then a == c" 09:57:37 https://github.com/bendmorris/scotch/commit/cf1c887e1e6a5dc9e8aebd7065d52f7c090cdfd1 09:57:39 This commit message 09:57:40 makes no sense 09:57:43 "and git status" 09:57:45 == is of course the standard mathematical notation. 09:57:47 I think he tried to like 09:57:49 run git status in another window 09:57:54 but didn't manage to 09:58:04 This is some weird sort of pattern matching. 09:58:12 deriv(a) = 0 09:58:24 shachaf: It looks like term rewriting to me, which is a fine paradigm, but this attempt is rather malformed. 09:58:51 For one thing, it has nothing to do with the actual definition of the derivative. 09:59:20 ...oh my god he doesn't even know the product rule. 09:59:36 Does anyone truly know the product rule? Metaphysically? 09:59:45 Yes. 09:59:58 You learn it the same year you start calculus. 10:00:09 Phantom_Hoover: Metaphysically? 10:00:20 Metaphysical products aren't like regular products. 10:00:24 Exactly. 10:00:41 I also like how it doesn't have a case for constant multiples and can't be used to build up derivatives because the chain rule isn't there. 10:01:23 But it does a*(x^n) separately, so you have no reason to complain. 10:01:27 Let's be fair, we are all bound by chains in this life. 10:02:01 Except his functions, which can't be chained. 10:02:07 fizzie: That's pretty much the only chain that ever comes up in the real world. 10:02:24 shachaf: except for the ones that bind us. 10:02:26 `quote monad tutorial 10:02:29 477) oerjan, little do you realise that everything you say and do is part of that great monad tutorial we call life. 10:02:49 Monads are a lot like derivatives. 10:03:36 Ahahahaha it doesn't have x^(a*n). 10:03:47 deriv(x()) = 1 10:04:11 I'm sure oklopol can attest that this is exactly how mathematicians would write this. 10:06:45 Oh, it also only does e^x and e^(a*x), not e^f(x) in general. 10:07:16 it would seem that mentioning my name woke me up even though it doesn't make a sound 10:07:28 Sonar. 10:07:31 oklopol: You must be some sort of a psychic. 10:07:38 fizzie: BUT SERIOUSLY HOW CAN I ACHIEVE THAT CLIENT ARCHITECTURE ;__; 10:07:41 WITHOUT USING PLAN 9 10:07:52 fizzie, that's just a natural consequence of it not having the chain rule. 10:08:01 elliott: Possibly you could export your files and pipes using e.g. the IRC protocol to the client side. 10:08:15 fizzie: Eh? 10:08:19 oklopol, here, see http://www.bendmorris.com/2011/01/what-problem-does-scotch-solve.html and also https://github.com/bendmorris/scotch/tree/master/scotch.lib/std/math 10:08:27 fizzie: There is no IRC protocol involved from the client's point of view. 10:08:56 fizzie: A client (as in a program using the architecture) expects to be pointed at a filesystem tree where it opens files like "esoteric/log" and "esoteric/msg" to read and write to. 10:09:02 elliott: Well, provide an IRC daemon which delivers writes into the FIFO, and continuously reads from the file and delivers the content as messages. Then it works over the network. 10:09:10 The former is likely a normal file to be read from, the latter a FIFO or "similar". 10:09:15 The question is how to expose something LIKE this over a network. 10:09:36 fizzie: But why use IRC for that? It seems arbitrary; one could just as well use HTTP, or some random binary protocol over TCP, or gopher, or... 10:09:52 Yes, it was arbitrary; for maximum ridiculousness. 10:10:19 Hmphers. 10:10:31 fizzie: I /could/ simulate a FIFO with nc, couldn't I? 10:10:59 As in, an nc presenting a fifo on the user's laptop that, when written to, goes across the network and causes a write to the server's fifo. 10:11:57 -!- Jafet has joined. 10:11:58 Yeee-es, for some values of "could". I mean, there's no existing thing to automatically set up the pipes, but you could certainly have two FIFOs and a pair of netcats over the net reading one and writing to the other. 10:12:23 And the FIFO on the server wouldn't have to change. 10:12:35 "Scotch is interpreted, its syntax is intuitive, its type system won't fight you, variable definitions can be redefined, and types never need to be declared:" 10:12:39 I like the way that 10:12:41 I mean, yes, it wouldn't be so "network transparent", but there'd be a program taking an ssh host and a path and exposing "the same stuff" locally. 10:12:47 he thinks that haskell's immutable variables 10:12:59 are there to make life hard for you 10:13:09 rather than being a fundamental feature of the language 10:13:14 when in fact they only make your penis hard for you 10:13:27 Speak for yourself. 10:14:01 i don't get that calculus lib at all 10:14:15 deriv(a) = 0 10:14:21 deriv(a + b) = deriv(a) + deriv(b) 10:14:23 que 10:14:44 how does it know a is a constant in the first and a function in the second 10:14:53 also how horrid 10:14:58 is the fact 10:15:01 oklopol: You're reading it as if it's Python. It's not. Try reading it as if it's math. 10:15:33 okay, then my question is what the type of a is 10:15:46 * shachaf suspects oklopol just doesn't get math. 10:16:09 oklopol: Types? Look, sometimes you want that kind of safety, sometimes you don't. 10:16:25 in math, that's the most important thing 10:16:26 shachaf is the best worst person 10:16:39 deriv(a) = 0 10:16:39 deriv(a + b) = deriv(a) + deriv(b) 10:16:41 if the type is not obvious, you give it 10:16:43 i think variables are matched lower down 10:16:45 as deriv(x()) 10:16:53 oklopol: No, types are for losers. 10:16:59 shachaf: i like how you're trolling oklopol to the point where he mad 10:17:13 elliott, that would explain that hilariously non-mathsy syntax. 10:17:15 * shachaf mad too 10:17:18 Just sharing. 10:17:34 so umm a is a constant in the second case too? 10:17:37 elliott: Well, if you're talking about a program, sure. It might be possible to have sshfs do the stuff of exposing the files and the FIFO nodes, and the program doing the automatical forwarding of the pipes so that you don't need to do the pretend-file part in the program; it should be possible even to piggy-back the pipe forwarding over the same SSH connection sshfs is using, at least in theory if not in practice. 10:17:46 that's hilariously ridiculous 10:17:57 oklopol: no 10:18:03 oklopol: the deriv(a) = 0 is a catch-all case 10:18:06 for everything not matched below 10:18:13 and variables are passed as x() somehow 10:18:15 oh. 10:18:29 but then it catches pretty much all functions 10:18:47 fizzie: Yes. 10:18:51 fizzie: It seems so inelegant, though. 10:19:07 what do parens do, like the fuck is x() 10:19:09 oklopol, yes, yes it does. 10:19:28 elliott: You should invent a new operating system that lets you share this sort of thing over a network and has it as a basic primitive. 10:19:32 i don't get this shit, looks like tree rewriting done wrong 10:19:34 And based on what elliott said I think it means that x() is a variable, not a general pattern match. 10:19:40 shachaf: You mean @? 10:19:40 oklopol, well duh. 10:19:52 so what's up with say deriv(ln(x)) = 1 / x 10:20:02 Phantom_Hoover: So how does deriv(a + b) work? Can a and b be variables? 10:20:06 x is obviously the identity function there 10:20:10 not a constant 10:20:19 so why not x() 10:20:20 God only knows; this guy clearly has no idea what he's doing. 10:20:22 The parentheses are giving it identity. 10:20:29 He's a biologist, for christ's sake. 10:20:43 shachaf: I can't tell whether you were making An @ Joke or actually aren't aware of it. 10:20:44 I am not a function, I am a free mad! 10:20:46 " The parentheses are giving it identity." --- ? 10:20:47 It is very confusing to me, too. Clearly in "deriv(sin(x)) = cos(x) * deriv(x)" the 'x' can be anything (because it has the deriv(x) part), but in "deriv(x ^ n) = n * (x ^ (n - 1))" n is.. assumed a constant? 10:21:02 elliott: What's an @ joke? 10:21:14 @halp 10:21:14 help . Ask for help for . Try 'list' for all commands 10:21:18 shachaf: A joke wrt @, its perfection, and its slight aura of vapour. 10:21:21 fizzie, I have this sinking feeling that he special-cases x. 10:21:28 @whatis @ 10:21:28 I know nothing about @. 10:21:35 You and I have much in common, lambdabot. 10:21:40 shachaf: @ is -- breathes in -- 10:21:46 Phantom_Hoover: Is it even known if that thing actually works at all? Maybe it's just, you know, stream-of-consciousness musing. 10:21:46 Unless you're talking aobut roguelikes, that is. 10:21:49 * elliott finds an old explanation to ctrl+v 10:22:01 fizzie, very, very possibly. 10:22:10 elliott, no make it a SONG 10:22:12 test.sco doesn't have any "deriv"s. 10:22:15 deriv is obviously derivative w.r.t. x :D 10:22:25 so 10:22:26 that's why 10:22:32 x is special 10:22:46 shachaf: -- keeps breathing -- 10:22:49 I don't want to look into the implementation, but I guess I'll have to. 10:22:55 OK turns out I don't have a one-sentence description, so 10:23:16 -!- itidus20 has joined. 10:23:16 But IDGI, if 'x' is specially the variable-being-derived-w.r.t., why the "x()"s here and there? 10:23:19 It's an OS type thing elliott is making/will make/has made 10:23:35 Wait I can't read code under the best of circumstances. 10:23:39 Ngevd, you do it. 10:23:56 I'm not too sure what I'm doing 10:24:03 shachaf: It's an OS based on a pure functional languae at its core, with orthogonal persistence producing a single-address namespace, full network transparency, a core hopefully simple enough to host on top of basically any OS or platform without too much ridiculous effort that the rest is portable on top of, 10:24:06 To quote: "OHGAHGHGHAGH WHAT DOES IT MEAN!! AN ARMY OF SNEEZING WANGS STALKS MY NIGHTMARE" 10:24:16 shachaf: blah blah reflexive, bootstrapped, none of them lame boring languages like C or whatever. 10:24:29 It is also in a rather extended design phrase, and has been for a while. :p 10:24:40 rule algebra => (x + y) ^ n = if n > 2 then (x + y) ^ 2 * (x+y)^(n-2) else (x+y)^n, 10:24:40 (x + y) ^ 2 = x^2 + 2x(y) + y^2 10:24:46 ... 10:24:48 I aim to be still alive when @ is released 10:24:51 oklopol: That's Algebra! 10:24:55 oklopol, yes, he does not know the binomial theorem. 10:24:57 shachaf: Also everything runs in ring 0 because the security is provided at a type system / language / object-capability level. 10:24:57 Ngevd: Immortality, eh? 10:25:02 shachaf, that's Algebrawang! 10:25:06 This means that syscalls have 0 cost which is cool??? 10:25:12 !numberwang 12 10:25:20 that's not my issue, my issue is... i dunno, that's just argh 10:25:20 And there's also basically no distinction between "OS", "language" and "applications": also cool??? 10:25:23 @ is cool. 10:25:25 !show numberwang 10:25:34 @ admin + elliott 10:25:34 @admin - shachaf 10:25:35 Not enough privileges 10:25:50 HERE'S A RANDOM SIMPLIFICATION 10:25:57 WHO DELETED NUMBERWANG 10:26:07 oklopol: That right there is the Fundamental Theorem of Algebra. 10:26:10 WHO KILLED EGOBOT 10:26:23 Phantom_Hoover mad 10:26:23 it is? what a silly choice 10:26:25 shachaf: Now devote yourself to the Kvlt of @. 10:26:32 shachaf, I thought that was something about complexes. 10:26:53 Phantom_Hoover: Nope. It's about (x+y)^2 10:26:57 it's still just the definition of ^n, so why would you give it like that 10:26:57 * shachaf will devote himself to https://github.com/bendmorris/scotch/blob/master/Scotch/Eval/Eval.hs instead. 10:27:22 oklopol, you mean using (x+y)^2 as a base case? 10:28:06 well hurp it's not like that thing will open it completely as it is anyway 10:28:20 Disappointing lack of shachaf devotion. 10:28:25 Maybe the Kvlt needs a rebrand. 10:28:29 It is now simply: KVLT. 10:28:35 elliott: I'll devote myself when it has as many users as Plan 9. 10:28:36 shachaf: Yo, hip to KVLT. 10:28:45 * shachaf met an actual person who actually used to use Plan 9. 10:28:45 shachaf: But it already has as many users as Plan 9. 10:28:48 As in actually use it. 10:28:51 GLORIOVS SOCIALIST RESPVBLIC 10:29:07 the simplification he does is open every (x+y)^2 in (x+y)^n into something with three terms, and leave it like that 10:29:11 Wow Scotch.Eval.Eval is bad. 10:29:16 * itidus20 tries to figure out why KVLT looks so soviet 10:29:23 I heard there was a JIT 10:29:25 I wonder where it is 10:29:25 because he doesn't have associativity and the distributive law 10:29:34 Let's find the jit :)))))0000 10:29:38 so i really, really doubt that's the fundamental theorem of algebra 10:29:42 КУЛТ 10:29:51 Or is it КУЛТЬ? 10:30:11 also "The fundamental theorem of algebra states that every non-constant single-variable polynomial with complex coefficients has at least one complex root. Equivalently, the field of complex numbers is algebraically closed." just in case 10:30:25 shachaf, NO IMPERIALIST CHRISTIAN SCRIPTS ONLY GLORIOVS ROMAN RESPUBLIC 10:30:26 oklopol: Nope. 10:30:41 elliott: Maybe you should pledge some money for Scotch; e has only $50 out of $350 pledgie'd. 10:30:45 shachaf: that's the one i've always heard 10:30:46 I'm not sure who's trolling whom here. 10:30:54 oklopol: Nope, it's that rule algebra => thing. 10:31:00 fizzie: I could ... do that right now and nobody could stop me except for my brain. 10:31:03 -!- Ngevd has quit (Ping timeout: 252 seconds). 10:31:05 Phantom_Hoover: Does it even matter? 10:31:09 fizzie: I will have to figure out how tough my brain is. 10:31:12 fizzie, it would be so sad if he'd pledged it himself. 10:31:13 This channel brings it out in me. 10:31:17 -!- Ngevd has joined. 10:31:26 I'm not sure what exactly happens when it hits $350. 10:31:34 fizzie: Scotch is permanently erased. 10:31:44 Ngevd, you look like a man with more money than sense. Donate to Scotch. 10:32:01 Scotch was named after what you need after experiencing it. 10:32:06 but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y) is as good a fundamental theorem as any 10:32:17 Kind of like my horrifying language, Existential Crisis. 10:32:28 oklopol: Given that it's the only theorem, that's not very difficult. 10:32:28 personally i use that all the time 10:32:35 :P 10:32:39 `addquote but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y) is as good a fundamental theorem as any 10:32:41 697) but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y) is as good a fundamental theorem as any 10:32:42 Phantom_Hoover: "Donors (1): 1. Anonymous* [* Denotes a manually entered pledge.]" -- does that mean the $50 is just what he told pledgie.com he had gotten from someone, and not from anyone via their system? 10:32:57 So sad :( 10:33:36 elliott: You could donate a $0.01. 10:33:47 shachaf: Ah. 'Tis tempting. 10:33:54 That would be like donating a negative amount due to transaction costs. 10:34:01 fizzie: That seems a good way to mislead people into thinking a cause is popular. 10:34:02 Assuming it allows it. 10:34:10 one trouble with programming languages is that they don't passively evolve 10:34:25 their evolution is always active and studied 10:34:31 itidus20 wins today's "no shit sherlock" award. 10:34:35 Unless... 10:34:42 rule infinite => infinity() + x = infinity, x + infinity() = infinity + x,rule infinite => infinity() + x = infinity, x + infinity() = infinity + x, 10:34:46 oops 10:34:47 anyway 10:34:49 What if we made a language which *did* evolve passively? 10:34:59 here, we see some serious paren usage 10:35:04 Validation failed: Amount Your donation of $0.01 is below the required minimum of $1.00. 10:35:09 shachaf: fizzie: Phantom_Hoover: help, i mad 10:35:15 Phantom_Hoover: i don't come to this channel to be normal 10:35:17 elliott, so mad. 10:35:19 ehehhe. 10:35:20 How much is a dollar these days 10:35:25 64p 10:35:29 I thought Plof passively evolved 10:35:29 I guess it'll come out to a pound with fees 10:35:40 Ngevd: Is this brief moment of laughter worth an one squid 10:35:41 elliott, you could get a bus ticket for that money! 10:35:50 Phantom_Hoover: Good thing I don't need one! 10:35:51 How much is a pound? Half a kg? 10:35:52 Ngevd: well.... i am a newbie so i don't know the esolangs 10:35:58 shachaf: Yes. 10:36:11 Phantom_Hoover: i don't come to this channel to be normal 10:36:11 is plof one of gregor's creations? 10:36:15 elliott: I guess donating is a few of losing weight. 10:36:16 Yeah 10:36:18 Do you go *anywhere* to be normal? 10:36:20 The new Scotch diet. 10:36:28 Entirely scotch mist 10:36:41 " infinity() * x = if x is 0 10:36:41 then 0" 10:36:41 Did you know US pints < UK pints? 10:36:42 * shachaf mad 10:36:45 OK guys what do I credit myself as. 10:36:49 On the Pledgie thing. 10:36:57 This guy will see it and I don't want to hurt his feelings but I want to be HILARIOUS. 10:36:57 #esoteric 10:36:59 Phantom_Hoover: to be honest i wear a certain persona around the house because those people have to live with me 10:37:08 elliott: You're donating? 10:37:09 elliott, you need to hurt his feelings SO MUCH 10:37:15 shachaf: M...maybe. 10:37:15 i don't want to drive them to madness 10:37:16 Put him 10:37:17 Ngevd: YES 10:37:19 through 10:37:23 I will donate as "irc.freenode.net #esoteric" 10:37:24 feelings torture 10:37:27 elliott: HURT ALL THE FEELINGS 10:37:29 u mad? 10:37:32 There were problems with the following fields: 10:37:32 Login is too long (maximum is 24 characters) 10:37:32 Login can contain only numbers and letters, but must contain at least one letter. 10:37:38 Phantom_Hoover: usually infinity times 0 is 0 10:37:40 Wait, you weren't even the one who was annoyed by that. 10:37:45 "ircDOTfreenodeDOTnetHASHesotericVISITUS"??? WHAT ABOUT THAT??? 10:37:50 in measure theory 10:38:10 Gleh, even "ircXfreenodeXnetHASHesoteric" is too long. 10:38:12 Help me out here guys. 10:38:33 elliott, Freenode — hashesoteric 10:38:40 freenodeHASHesoteric 10:38:49 Ngevd: well it is surely a good thing then about plof 10:39:01 elliott: Where do I donate to you? 10:39:01 or freenode #esoteric 10:39:10 shachaf: Paypal penguinofthegods@gmail.com 10:39:13 * shachaf would donate to the great @ project. 10:39:16 or esolangs.org 10:39:17 Do it. Do it now. 10:39:21 formally i supppose 'passively evolving' means there is a feedback mechanism for users of the language to make the language better 10:39:22 I don't know much about Plof 10:39:26 GreaseMonkey: It has to be only letters. 10:39:36 Also I want him to visit here so the esolangs.org one is out. 10:39:45 elliott: How about I deliver it in person? 10:39:46 i'm beginning to suspect scotch is just an elaborate joke 10:39:50 esolangsDOTorg 10:39:55 oh right 10:39:58 oklopol: It's a creating of #esoteric. 10:40:02 in general, when someone writes 10 or 20 or 1000 lines of code, the language does not get affected.. there is no feedback 10:40:03 s/ng/on/ 10:40:08 shachaf: Very well 10:40:12 itidus20: no, it has to evolve on its own 10:40:17 @where elliott 10:40:17 I know nothing about elliott. 10:40:17 hmm 10:40:20 GTG 10:40:21 -!- Phantom_Hoover has quit (Quit: Leaving). 10:40:24 itidus20: I, too, wish my code's meaning changed as I wrote more of it. 10:40:26 although feedback is crucial to evolution 10:40:29 is lambdabot a bot coded in haskell 10:40:29 @Ngevd 10:40:30 Unknown command, try @list 10:40:31 It would eliminate the boring predictability of my code meaning one and one thing. 10:40:35 GreaseMonkey: FSVO "a". 10:40:44 what language is it coded in 10:40:45 More like "THE bot coded in haskell" for -- shachaf how long has \bot been around. 10:40:47 elliott: ahhhhhh i see.. that is a problem 10:40:49 hmmkay 10:41:05 Something tells me it's close to ten years now? 10:41:08 elliott: How should I know? 10:41:12 No, not ten years. 10:41:15 shachaf: I don't know, you're like this big mudball of wisdom. 10:41:16 @list 10:41:17 http://code.haskell.org/lambdabot/COMMANDS 10:41:23 elliott: however not all is lost... because if your code is compiled it doesn't need a meaning 10:41:24 shachaf: I said close to ten years. So like... eight years. 10:41:24 yeah that works 10:41:26 Seven. 10:41:35 Two. 10:41:36 Zero. 10:41:45 elliott: I only came to #haskell a few years ago, man. 10:41:52 itidus20: It doesn't? 10:41:58 write once, compile once :D 10:42:01 brilliant 10:42:07 wahahhaha 10:42:07 shachaf: Does that mean you can't study its glorious history? 10:42:18 shachaf: Let me tell you about how stupid everyone was in here six years ago. 10:42:20 elliott: In fact, a quick log search indicates that I first joined #haskell within a week of you first joining #haskell. 10:42:36 shachaf: Ooh. Now this me mad. 10:42:38 I have never been on Haskell 10:42:54 * shachaf = elliott 10:43:01 shachaf: With this nick, or? 10:43:33 elliott: With ehird, but the first occurence of the string "elliott" is something said by ehird. 10:43:37 elliott: i like this dialogue. because im never going to drop an idea so easily. whatever holes you can find in the idea i can apply more patches 10:43:54 itidus20: It's like watching a trainwreck in slow motion. 10:44:03 shachaf: Right. 10:44:06 :'D 10:44:17 so there is this assumption that a piece of code needs to be compilable multiple times 10:44:22 but its not really the case 10:44:58 writing a program would be so awesome, if you make too many errors, it would decide the syntax needs a change, and you need to change your whole program. just like every other user of the language on the planet 10:45:03 * itidus20 starts worrying about the hole getting bigger in this metaphorical boat 10:45:32 * itidus20 is now hopping in the lifeboat. 10:45:51 oklopol: it's like network headache if network headache was amazing 10:45:53 so you are doing for compilers what imperative programming did for functional programming 10:46:12 makes sense i guess 10:46:13 `addquote so you are doing for compilers what imperative programming did for functional programming 10:46:15 698) so you are doing for compilers what imperative programming did for functional programming 10:46:36 `quote 10:46:36 oklopol is slowly learning that I will `addquote anything he says that makes no sense. 10:46:38 332) There are white Africans out there, but, you know. A black swan in the hand does not imply causation. 10:46:47 that made perfect sense! 10:46:49 `quote elliott 10:46:51 207) elliott: i like scsh's mechanism best: it's most transparent and doesn't really serve a very useful feature. \ 210) elliott: it's hard to debug havoc on your mirror if you accidentally hit r, then a character could be multiple words long, depending on the task. \ 219) elliott: My university has 10:47:03 `quote oleg 10:47:05 553) I combined the wholegrain breakfast and chocolatey breakfast for maximum breakfast efficiency 10:47:12 Good Oleg quote. 10:47:14 Ooh, that's me 10:47:20 `quote shachaf 10:47:23 661) elliott: GHC bug? Come on, it's the parentheses. The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. 10:47:29 * shachaf mad 10:47:35 u mad bro? 10:47:39 imperative programming took functional programming and removed the weird feature that functions are deterministic 10:47:46 oklopol: :D 10:47:50 oklopol: Feature? More like bug. 10:48:07 yep 10:48:15 oklopol: well before logic caught up with me, i meant that somehow this feedback would operate on a social level, where, uhhh.. 10:48:20 maybe i am thinking about forth 10:48:23 Hah, the good old days of #haskell, when everyone thought I worked at Galois. 10:48:26 though i don't know forth 10:48:32 * shachaf the memories... 10:48:38 shachaf the memories? 10:48:43 Yes. 10:48:47 * shachaf the memories 10:48:51 "shachaf the memories" could be your superhero name 10:49:00 shachaf: Let us combine our powers of "people think you work at Galois" and "people think I'm Conal". 10:49:05 it would need to be a language wherein the syntax is definable 10:49:06 We will be the only Conal to work at Galois ever. 10:49:22 elliott: You just need a hostname that says "galois" in it. 10:49:31 shachaf: lmao 10:49:35 so that one coder could copy another coder's syntax definitions and thus form dialects 10:49:50 shachaf: That trick me mad. 10:49:55 but the problem that your code would stop making sense would be there 10:50:14 like me trying to read old english 10:50:35 easy? 10:51:03 old english has to be learned.. its not easy even if you are a native english speaker 10:51:24 how old 10:51:32 the oldest 10:51:41 zomg so old 10:51:41 i see, i thought you meant like spearshaker's 10:51:47 spearshaker's 10:51:47 pre-shakespeare 10:51:50 I thought you meant, like, the second-oldest, man. 10:52:04 shachaf: Have you ever met ZOMGMODULES? You are rather alike. 10:52:13 elliott: there are many ways to write the name 10:52:23 oklopol: if only you picked one of them 10:52:31 * shachaf can read a text thousands of years old reasonably easily. 10:52:41 Hey, Perry Bible Fellowship updated. Novel. 10:52:44 * shachaf considers this to be a superpower. 10:52:57 * shachaf has a lot of superpowers. 10:52:58 shachaf: That's the shittiest superpower ever. 10:53:00 elliott: fuck up! 10:53:12 For instance, recently someone explained to me how C type declarations work. 10:53:15 that's my new insult. 10:53:15 Wait, do we have proof that shachaf is not ZOMGMODULES? 10:53:19 Now I can just read them and they come out right. 10:53:48 s/read/write/ 10:53:54 yeah just fuck up shachaf 10:53:59 shachaf: Prove yourself. 10:54:36 elliott: Prove that I'm not ZOMGMODULES? 10:54:39 Yes. 10:54:44 Hmm. I have no idea who ZOMGMODULES is. 10:54:45 QED 10:54:50 Neither does ZOMGMODULES. 10:55:12 zomg 10:55:14 modules 10:55:32 (He is RARELY also known as cpressey. :p) 10:55:45 if you ask me, zomgmodules can fuck his way up 10:55:51 ZOMG! Ubuntu! (Re: omgubuntu.co.uk, which I hit by googling recently.) 10:56:09 but it is potentially a waste of human energy that code doesn't really have a means of improving inspite of how many coders hack away at it 10:56:22 (Also catseye too, I suppose?) 10:57:20 I should move. 10:57:24 Someone make me move. 10:57:33 shachaf: No. 10:57:40 :-( 10:57:42 * shachaf sad 10:58:03 * shachaf living in this small windowless room with sleep schedule being messed up as a result 10:58:08 I need to get a window. 10:58:16 wanna swap 10:58:16 There are easier ways to mess up sleep schedules. 10:58:31 shachaf: Is that in AM or PM? 10:58:48 When I see a listing of a place I could move, and there's a picture, and there's a window in the picture, I start drooling uncontrollable. 10:58:53 Sunlight. 10:59:11 Oh, I thought you meant move as in like, from your chair. 10:59:20 No, no, actual move. 10:59:22 shachaf: No but seriously, is it AM or PM there. 10:59:23 i want a windowless room with black walls 10:59:26 * itidus20 figures i havent had my vitamin d pill for the day 10:59:30 elliott: 24-hours time here. 10:59:36 s/s// 10:59:41 shachaf: So you're in, uhh, Greenland? 10:59:53 Cape Verde??? 11:00:04 ? 11:00:07 -shachaf- TIME Sun Oct 2 10:58:29 2011 11:00:13 Oh hmm, that's UTC minus /two/ isn't it 11:00:13 That's just my IRC client, man. 11:00:19 Since I'm on BST. 11:00:26 shachaf: Oh. I mad. :/ 11:00:36 You sure you're not in Uruguay? 11:00:39 elliott wants to hunt me down and kill me. 11:00:44 Well, duh. 11:00:57 I already live in a town that at one point in the 1990s had the most murders per capita in the country. 11:01:01 "the country" 11:01:15 there is a certain unstated depression which builds up in the coding community due to the limited expressiveness of their work 11:01:21 shachaf: You live in the US like all the boring people, don't you. :( 11:01:26 hmmm 11:01:36 elliott: What's boring about the US? 11:01:42 disregard my last post 11:01:45 shachaf: That's not a thing I said. 11:02:01 mathematics seems to have evolved in a very steady way 11:02:09 elliott: What's interesting about people who live outside the US? 11:02:12 making programming look like a mess 11:02:18 shachaf: But come on, being that guy from Greenland is approximately infinitely cooler than being that guy from the US, and as we all know, insert some kind of Scotch joke about its infinity module. 11:02:21 Mathematics is a huge mess. 11:02:29 elliott: Well, I'm not "from" the US. 11:02:33 * shachaf was born in Asia. 11:02:39 More like A"US"ia. 11:02:40 mathematics is a huge mess? 11:02:47 wanna elaborate 11:02:54 -!- pikhq_ has joined. 11:02:59 Euro"US"pe. 11:03:02 Afri"US"ca. 11:03:08 Ameri"US"ca 11:03:08 A"US"tralia. Wait. 11:03:10 -!- pikhq has quit (Ping timeout: 258 seconds). 11:03:13 elaboration operation is not defined on "mathematics is a huge mess" 11:03:14 :D 11:03:28 elliott: Anyway, southwest Asia. 11:03:31 what do you mean 11:03:35 Anta"US"rtic"US"ica. 11:03:36 Which is the best part of Asia, clearly. 11:03:45 shachaf: and what do you mean 11:03:49 elaboration ("mathematics is a huge mess") = "mathematics is a huge mess" 11:03:50 Pretty sure I didn't spell Antarctica right there. 11:04:00 oklopol: I'm a Finnish citizen, by the way. 11:04:11 no you are not 11:04:14 * shachaf triple citizen 11:04:16 u mad? 11:04:21 oklopol rejects this notion. He so verily mad. 11:04:25 elaborate 11:04:25 so the elaboration of "mathematics is a huge mess" is the identity of "mathematics is a huge mess" 11:04:27 I certainly am! 11:04:33 My grandmother is Finnish. QED 11:04:36 shachaf: I think he wants you to: elaborate. 11:05:26 r"US"sia 11:05:34 elaborate 11:05:36 type Tree = Mu [] 11:05:41 * shachaf likes this tree. 11:05:45 shachaf: I think he wants you to elaborate on: Mathematics being a huge mess. 11:05:49 I think he getting: mad. 11:05:58 Wait, what? 11:06:01 Oh. 11:06:04 I meant mathematical notation. 11:06:10 Were we still talking about Scotch? 11:06:29 you're saying mathematical notation is a mess? 11:06:34 Yes. 11:06:46 Well, I'm not saying it at the very moment. I said it earlier. 11:06:50 Oh, Scotch's "functions that never end" just mean "functions that, like, work on and produce lazy lists and shit". 11:06:51 wow. you really aren't a finnish citizen are you 11:06:59 "Unfortunately, it's impossible for Scotch to figure out that this is an infinite list; that would be equivalent to solving the halting problem, an undecidable problem in computer science. It's impossible to even tell that the evaluation of [1..] does not terminate." 11:07:04 oklopol: :-( 11:07:22 "The solution was to automatically rewrite addition expressions associatively: a + (b + c) should always be rewritten as (a + b) + c. This allows infinite sums like infinite_range to evaluate to [n, n+1, n+2 ... n+m] + infinite_range(n+m+1) which can be used in combination with "take m" to get the list of m elements." 11:07:50 * shachaf mad 11:07:51 "It's impossible to even tell that the evaluation of [1..] does not terminate." --- what the fuck???? 11:07:52 * shachaf suomalainen 11:08:04 what the fucking hell is going on with thsi shit 11:08:04 jhsdaf 11:08:30 Where are these qutoes coming from? 11:08:42 shachaf: http://www.bendmorris.com/search?updated-max=2011-02-03T10%3A54%3A00-07%3A00&max-results=7 11:08:45 Beware; it might you mad. 11:09:03 * shachaf notes it still $300 to go. 11:09:07 Hey guys, is HTTP or git usually faster at cloning? As in, via git. 11:09:20 shachaf: Do you really, really want me to spend a buck on that? 11:09:27 -!- Phantom_Hoover has joined. 11:09:29 Give me a buck to spend on it and I'll spend it. 11:09:39 shachaf: what's wrong with math notation 11:09:46 elliott: I want to deprive you of $1. But I also want to deprive Scotch of $1. 11:09:48 * shachaf dilemma 11:09:59 * shachaf dilemmad 11:10:06 oklopol, it's so hard to write neatly. 11:10:11 i mean a lot of things are wrong with the usual dialect, but nothing that crucial 11:10:15 what do you mean 11:10:22 I used to write fractions on a single line. 11:10:30 I didn't really mean anything fundamental. 11:10:34 shachaf: Give me one dollar, and I'll promise not to use it on anything but Scotch. There, now you'll be doubly dissatisfied. 11:10:38 Even when I was doing partial fractions and product rules and that kind of thing. 11:10:45 Just a lot of ad hoc notation that developed from people being used to their notation being read by other people. 11:10:53 oh for the love of god cambridge why is the step site down 11:11:00 i am going to find you and hit you 11:11:18 and somehow it works really well and never gets in your way 11:11:38 elliott: Where's the JIT? 11:11:43 shachaf: God knows. 11:11:43 * shachaf wants a JIT 11:11:48 You're a jit. 11:11:56 Shut up, I JIT. 11:11:57 * itidus20 prepares to make another post 11:11:57 Did you know Linux contains a JIT for packet filter rules? 11:12:05 i think you people are just stuppid prolly 11:12:19 https://github.com/bendmorris/scotch/blob/master/Scotch/Types/FFI.hs 11:12:21 What the fuck? 11:12:28 -!- GreaseMonkey has quit (Quit: The Other Game). 11:12:37 "JIT compilation: after a module is parsed, a binary version is stored, resulting in a significant speedup" 11:12:41 shachaf: I hear that pf is: the worst. 11:12:48 Erm. 11:12:48 Not pf. 11:12:49 iptables. 11:12:53 Fraeudeaudeaudneadn slup. 11:13:20 Cloning into linux... 11:13:20 remote: Counting objects: 1319157 11:13:23 This is a lot of object. 11:13:46 elliott: he worst? 11:13:53 it is not clear to me whether intangibles without instance exist 11:13:54 s/h/Th/ 11:14:05 elliott: Did you hear that before or after Scotch was created? 11:14:18 shachaf: Well, I hear iptables is a pain to use and the BSD things are nicer and less ridiculous. 11:14:22 But that just what I hear, and I may mad. 11:14:27 And god knows. 11:14:36 for example, gravity seems to require mass.. or does it? 11:14:38 elliott: By the way, I accidentally clicked on "Documentation". 11:14:48 itidus20, not really. 11:14:52 At least in GR. 11:14:52 shachaf: Which documentation? 11:14:53 elliott: And it me mad, just like you promised. 11:14:58 Scotch. 11:15:06 nnnggghhh im gonna get really wrong if i keep this up 11:15:09 I didn't see any documentation. 11:15:18 http://scotchlang.org/ 11:15:20 itidus20, you could try to, you know, learn something for once. 11:15:26 Oh. This me mad. 11:15:26 Oh, nice, man, hash tables. 11:15:29 Rather than going on about how stupid you are. 11:15:41 >> [for a in [1,2,3], a + 1] 11:15:41 [2,3,4] 11:15:44 Phantom_Hoover: as i understand it the ancient indians would discuss the latent nature of fire in the universe 11:15:47 That is the worst list comprehension syntax anyone has ever made. 11:16:01 that, when the right conditions are present, fire comes to be 11:16:14 >> # Scotch evaluation is lazy by default 11:16:14 >> GPA.total = ((GPA.current * credits.current) + (GPA.future * credits.future)) / (credits.current + credits.future) 11:16:14 >> GPA.current = 3.5 11:16:14 >> credits.current = 90 11:16:14 >> # expressions are evaluated as far as possible; it's ok if some values are undefined 11:16:15 >> GPA.total 11:16:17 ((315.0 + (GPA.future * credits.future)) / (90 + credits.future)) 11:16:19 shachaf: Laziness in action. 11:16:30 but whether that means that fire exists in the absence of the conditions of fire is more than my intelligence could say 11:16:38 itidus20: what does that have to do with what Phantom_Hoover was saying 11:17:08 What is this GPA thing please tell me. 11:17:21 Phantom_Hoover: Scotch. 11:17:24 * itidus20 looks at elliott and realizes my extreme lack of relevance. 11:17:32 ^in my post 11:17:36 itidus20: How dare you! In this channel! 11:17:42 At least elliott is talking about something on-topic. 11:17:48 i don't even recall why i brought it up 11:17:48 elliott, what, I've never heard of it. 11:17:54 Phantom_Hoover: What. 11:18:07 elliott, surely I would know about it if it was Scotch. 11:18:14 Phantom_Hoover: I mad. 11:18:30 (Maybe I can complain to Scotch for denigrating the good name of Scotland.) 11:19:01 http://scotchlang.org/docs 11:19:18 [1,2,3] + 4 == [1,2,3,4] 11:19:19 oh yes.. well.. in absolute terms, a computation is dependant on some physical instance of a computer 11:19:24 [1,2,3] + 4 == [1,2,3,4] 11:19:24 or is it? 11:19:28 dooo doo doo doo 11:19:29 dooo doo doo doo 11:19:38 [1,2,3] + [4,5,6] == [1,2,3,4,5,6] 11:19:45 shachaf: I mad. 11:19:56 elliott: Note that lists are heterogeneous. 11:20:08 So mad. 11:20:15 Receiving objects: 0% (9914/2138578), 3.75 MiB | 294 KiB/s 11:20:18 /whois So 11:20:20 Guys, how long is this going to take exactly. 11:20:24 so the computer is an element of the computation 11:20:28 elliott: One more than you can handle. 11:20:33 -!- Ngevd has quit (Ping timeout: 252 seconds). 11:20:34 shachaf: Ah. Will it me mad? 11:20:39 It might. 11:20:42 You have been warned. 11:20:43 Hmm. 11:20:46 I'm worried. 11:20:50 Mad lies that way. 11:21:35 elliott: Scotch supports @. 11:21:42 elliott: I think you might as well abandon your project. 11:21:43 shachaf: Oh no. Can I stop that? 11:21:54 Write @ in Scotch. 11:21:54 elliott: Only by not mad. 11:21:59 I'm going to need to pay people not to write @ software. 11:22:05 I gotta keep the riff-raff out. 11:22:24 I know someone who's considering writing a project in Haskell exactly for that reason. 11:22:25 or you could go with GNU/@ 11:22:35 He doesn't want his coworkers to get their grubby paaws on the code. 11:22:43 He's considering Haskell and Clojure right now, I think. 11:22:51 * itidus20 waits patiently for GNU/Windows 11:22:57 He should avoid Clojure; Clojure me mad. 11:22:58 The question is whether parentheses or monads are scarier. 11:23:03 itidus20: You can run a GNU/Windows system fairly easily. 11:23:11 elliott: But the *goal* is to people mad. 11:23:34 http://en.wikipedia.org/wiki/Ramsey%27s_theorem#Ramsey_numbers 11:23:34 Yes, but Clojure me mad in the sense that their IRC channel thinks multiplication of the expression inside big-O notation changes it. 11:23:38 Even if not in "theory", in "practice". 11:23:41 :-D 11:23:51 shachaf: Does Clojure actually have anything scary other than STM, parens, and macros? I mean, it's immutable, but... 11:23:53 As I said in #haskell-blah: 11:24:01 I'd say Haskell is definitely more inaccessible; use lots of operator characters. 11:24:04 O(1) isn't cool. You know what's cool? O(1000). 11:24:10 `quote slow 11:24:13 I find it terribly amusing that R(5,5) is one of 6 numbers, but we have no idea *which*. 11:24:13 249) The Perl script is probably slower than the Befunge code. \ 302) [on egojoust] The fact is that EgoBot's % handling is O(slow) and O(big), and mine isn't. \ 522) Vorpal: Won't be slower than Python ;-) elliott_, yeah but that is like saying a T-Ford going down a hill won't be slower 11:24:25 Hmph, we don't have bsmntbombdood's original O(slow) quote. 11:24:36 Phantom_Hoover: Can we just guess? 11:24:40 It did seem a bit too witty for you. 11:24:43 elliott, yes. 11:25:05 It's 1 of 7, actually, but eh. 11:25:29 Receiving objects: 16% (344427/2138578), 176.29 MiB | 546 KiB/s 11:25:32 This very quickly me mad. 11:25:37 elliott: Very slowly. 11:25:53 shachaf: It very slowly, but it very quickly me mad. 11:26:31 One of the deepest philosophical conundra of our times. 11:27:24 elliott: u exponentially mad? 11:27:35 shachaf: I can't handle that mad. 11:27:50 Oh. u polynomial mad? 11:28:28 Can I linearly mad? 11:29:20 elliott: But if it very slow, and u linearly mad, how can it very quickly u mad? 11:29:31 s/w/wly/ 11:29:33 i'm always just logarithmically mad. people just so damn stupid it's enough. 11:29:34 * elliott strokes chin. 11:29:41 shachaf: Sounds like u mad, bro. 11:29:50 * shachaf just confuse 11:30:46 shachaf, shachaf, shachaf. We all mad a little sometimes. 11:31:14 * shachaf :: Maybe Attitute 11:31:23 * shachaf Nothing | Just Mad? 11:31:34 u just mad, bro? 11:31:49 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 11:32:55 elliott: You know, I don't believe you when you said you hate this "u mad" thing. 11:33:07 It seems to be your favorite piece of vocabulary. 11:33:12 !admin + elliott mad 11:33:12 @admin - shachaf 11:33:13 Not enough privileges 11:33:33 shachaf: I am just sort of revelling in the exquisite decadence of it all at this point. 11:33:43 The self-hate is maintained at moderate levels for a short period of time. 11:34:10 u just mad 11:34:18 It's true. 11:34:39 Receiving objects: 60% (1301837/2138578), 460.25 MiB | 619 KiB/s 11:34:43 My maddening is lessening somewhat. 11:35:29 -!- derdon has quit (Remote host closed the connection). 11:35:37 * shachaf consider pull elliottcable 11:35:41 Now *that* would u mad 11:35:42 Augh. 11:35:59 Why are u download linux anyway? 11:36:10 Occasionally I get the urge to configure a kernel. 11:36:27 I'm doing this the logical way, by downloading years and years of Linux development, rather than just the release I want. 11:37:24 elliott: I recommend bitkeeper. 11:37:32 shachaf: Larry McVoy mad. 11:37:53 Speaking of Linus Torvalds and Larry McVoy and Mad, this thread is great: http://yarchive.net/comp/linux/o_direct.html 11:38:00 s/thread/collection of messages/ 11:38:39 McVoy must feel like a real idiot about the Trigdell thing now that git is, like, the most popuar. 11:39:39 «It sounds simple, but it sounds simple only to an idiot who writes databases and doesn't even UNDERSTAND what an OS is meant to do. For some reasons, db people think that they don't need one, and don't ever seem to really understand the concept of "security" and "correctness".» 11:39:58 * shachaf , as an idiot who writes databases using O_DIRECT, slightly mad 11:40:09 I looked at O_DIRECT and it was: terrible. 11:40:18 You should write databases using something else. Or not write databases. 11:40:23 That is my mad advice. 11:40:27 elliott: What something else should I use? 11:40:56 shachaf: I don't know, last time I extensively looked into Linux's various AIO stuff it turned out that it all sucked complete shit. 11:41:04 You should use FreeBSD or something, I think they have proper kernel AIO. 11:41:05 True. 11:41:16 Did I mention how the Linux AIO interface *only* works with O_DIRECT? 11:41:25 I especially like glibc's POSIX AIO implementation, based on top of blocking IO and pthreads. 11:41:37 All the inconvenience, none of the speed. 11:41:48 Right, that one is truly wonderful. 11:42:05 And none of the even remotely real ones even pretend to work on sockets, so they're useful for... database folk and nobody else. 11:42:16 What I'm saying is, we should just hang the database folk. 11:42:28 elliott: Well, there's non-blocking IO. 11:42:49 Anyway, apparently the Linux page cache is the only page cache anyone should ever use, no matter how well it fits their purposes or doesn't. 11:42:51 That doesn't work on sockets, does it? 11:43:07 The @ page cache is the only page cache anyone should ever use. 11:43:10 elliott: Non-blocking I/O? It only works on sockets. 11:43:16 Which is convenient, because @'s design pretty much makes it impossible to use anything else. 11:43:24 shachaf: Oh. 11:43:34 shachaf: Oh right, it's the useless polling-based one. 11:43:40 Useless? 11:43:51 Well, anything that uses all your CPU waiting on IO is useless. 11:44:05 Why does it use all your CPU waiting on IO? 11:44:28 Because you're trying to get some bytes out of the socket? 11:44:47 * shachaf not understand 11:44:57 Well, presumably you do other stuff in that tight loop or you could just use blocking IO. 11:45:03 But you need to get bytes out at some point. 11:45:25 Huh? 11:45:42 I predict you will continue saying huh until I break down and ask you what you're confused about. 11:46:09 read() gets the bytes out for you, or tells you there are no bytes right now, and then you wait. Which part is using all your CPU? 11:46:22 Wait for what? 11:46:27 For bytes. 11:46:29 It's a polling API. 11:46:40 If you use select() or whatever, you don't need to set nonblocking in the first place. 11:46:55 Do we mean the same thing by "polling API"? 11:47:15 You *do* use select() or whatever (well, epoll). That's the point of O_NONBLOCK, that you use it with select()orwhatever. 11:47:26 Then why do you need to set it nonblock? 11:48:03 readability (or writeability) indicated by select doesn't imply that all the bytes you ask for will be available in the in/out buffer 11:48:29 Well, you could just ask for one byte. 11:48:36 I guess that's probably not very smart though. 11:48:59 I think not :) 11:49:07 This is the exact same behavior as in FreeBSD, anyway, except you use kqueue instead of epoll. 11:49:17 Which part was FreeBSD smart about? Disk I/O? 11:49:45 ISTR FreeBSD's POSIX AIO implementation is Proper for disk files. 11:49:54 But I also STR that the POSIX AIO API is horrible. 11:50:05 well, you *can* use select with blocking sockets if you make sure to ask how many bytes are available before reading so that you "know" you won't block, but I think that's not reliable 11:50:13 elliott@katia:~$ du -sh linux 11:50:13 1.2Glinux 11:50:13 Ah. 11:50:40 elliott: Everyone implements their own API on top of it anyway, for everything. 11:50:43 It's the C way. 11:50:57 So it doesn't matter how bad the API is. 11:51:10 FSVO doesn't matter. 11:51:29 * shachaf wonder elliott mad 11:51:38 The maddest. 11:51:45 -!- itidus20 has left ("Leaving"). 11:52:05 Just use Haskell with the fancy IO manager, and you won't need to mad. 11:52:12 s/Haskell/GHC/ 11:52:27 Non-blocking I/O is just an excuse to write your own thread implementation and do blocking IO, anyway. 11:53:19 s/IO/event/ surely. 11:53:27 Anyway, @'s IO model is nice. 11:54:05 I @'s I/O model in the cloud? 11:54:10 Because @ is vapourware. 11:54:13 Get it? 11:54:16 Cloud? 11:54:38 shachaf: Ha ha ha. 11:54:41 Yes, you are the witty. 11:54:56 pikhq_: Hmm, there doesn't seem to be a git tag for 3.0.4. 11:54:56 * shachaf just lost opportunity to be told about about @'s IO model. :-( 11:55:08 What's @'s I/O model? 11:55:30 shachaf: Well, it has two, if you interpret IO model to mean "the model of whatever you'd consider the IO model in Unix". 11:55:32 That is to say, 11:56:17 shachaf: Its local disk model involves a single address space with a mapping to both disk and physical RAM, with virtual memory being used to map the various objects at their "abstract" locations. 11:56:38 It's basically mmap() on steroids all the way through. Though I'm sure you could access sectors directly. 11:56:39 If you really wanted to. 11:56:44 Does @ run on 286es? 11:56:53 RAM also contains, like, the first few generations of the GC. 11:56:59 Those don't need to be persisted out. 11:57:07 shachaf: 64-bit 286es, sure. 11:57:21 The actual @ model is portable to just about anything, but I don't feel like implementing it for 286s. 11:57:39 Especially since it wants more than 32 bits of address space. Unless your disks are two gigs big. 11:58:10 Oh, that reminds me, I was going to get a 16/32GB MicroSD card. 11:58:13 shachaf: Anyway, the IO model used for things like sockets is pretty much: 11:58:15 Which one? 16 or 32? 11:58:34 shachaf: Whenever data comes in, it's passed, CPS-style, to a big old bag of handlers registered with that IO port. 11:58:54 That's literally it. And writing to a port passes that data, CPS-style, to its write handlers. 11:59:06 -!- Jafet has quit (*.net *.split). 11:59:06 (You can trivially make a "pipe" style thing by just hooking up the write handler to a read handler.) 11:59:19 zomg 11:59:20 shachaf: On top of that, the actual usage can be as-if-blocking. 11:59:21 Advanced. 11:59:28 As in, it just uses call/cc or the like and stuffs that in as a handler. 11:59:31 Obviously more involved and with less overhead. 11:59:38 But when a thread is blocked on IO, it literally just doesn't exist. 11:59:39 -!- myndzi has quit (Read error: Connection reset by peer). 11:59:40 It's killed. 12:00:10 -!- myndzi has joined. 12:00:12 -!- derrik has quit (Quit: 15:00). 12:00:15 shachaf: Since everything is in ring 0, there's no kernel<->userspace context switching / data copying overhead, so you don't really need buffers of significant size to get decent IO performance. 12:00:59 Hmm. 12:01:07 OK, you've sold me. 12:01:10 * shachaf download @.iso 12:01:12 Wait. 12:01:14 * shachaf mad 12:01:24 shachaf: This is the experience of most @ devotees so far. 12:01:58 shachaf: If you've read the Synthesis paper, I pretty much stole the basic IO model from there, except instead of ridiculously micro-optimising my syscall stuff I just don't do the whole userspace thing. 12:02:06 elliott: In what sense is the thread "killed" that a thread isn't normally killed when it does blocking IO? 12:02:16 And I guess it isn't quite as elegantly CPS in Synthesis. 12:02:28 Synthesis paper? 12:02:36 The Synthesis OS thesis. 12:02:39 theithieshiehsiheis. 12:02:49 shachaf: Well, it isn't really. But, I mean, you could literally throw away all information about the thread if you wanted to, and the handler added would respawn it. 12:03:18 It's more efficient just to move it away from the set of scheduled tasks and then have the handler move it back and resume the continuation like that, but... if you wanted to completely eliminate any thread that blocks on IO, you could. 12:03:32 Well, because it has a continuation. 12:03:35 Well, yes. 12:03:50 You can't just say "Oh, you blocked on IO? I'm forgetting about you forever, goodbye." 12:03:52 That's called an OOM killer. 12:04:01 Although it is a remarkably low-overhead way of handling IO. 12:04:21 -!- Jafet has joined. 12:05:03 * shachaf implemented part of a userspace coöperative threading library for C++. 12:05:13 Seems like more or less the same thing? 12:05:25 shachaf: Well, @ threads are preemptively switched. 12:05:46 Although that may be partially in the form of "the compiler inserts a yield in a place it deems nice". 12:05:56 shachaf: But yes, the way it handles IO is like coroutines. 12:06:00 Which is like cooperative threading. 12:06:01 Hah, like GHC threads are preëmptively switched. 12:06:20 Well, there's always going to be timer-based switching. 12:06:32 But when you have everything going through a certain compiler, you can afford to be smart about it. 12:06:50 @ kind of cheats a lot like that, by simply demanding to know more about the structure of whatever's running on it, which in turn eliminates all the pesky problems. 12:06:51 GHC threads can be preëmpted either when the OS thread they're on is preëmpted or when they allocate memory. 12:08:06 [*] DMA memory allocation support 12:08:11 I like how this is a top-level menu item in menuconfig. 12:08:23 Which is how GHC wins the thread-ring entry on the shootout. 12:08:36 shachaf: Ha. 12:08:48 shachaf: (The guy behind it will get mad at you on the internet if you call it the "shootout".) 12:09:03 shootout.alioth.debian.org 12:09:25 shachaf: No, seriously, I've seen him on comment threads. 12:09:34 http://shootout.alioth.debian.org/u32/performance.php?test=threadring 12:09:36 There's a reason it doesn't appear anywhere on the actual page. :p 12:09:47 «Programs may use pre-emptive kernel threads or pre-emptive lightweight threads; but programs that use non pre-emptive threads (coroutines, cooperative threads) and any programs that use custom schedulers, will be listed as interesting alternative implementations.» 12:10:29 Kind of a ridiculous criterion. 12:10:33 ClojureTimed Out15 min 12:10:38 But Haskell won the shootout, so how can I mad? 12:10:40 Hickey mad. 12:10:43 * shachaf ain't even mad 12:11:57 Sad that ATS is so low down there 12:12:03 And, uh, has a bunch of inline C. 12:12:06 -!- Jafet has quit (*.net *.split). 12:12:54 shachaf: That's the one-core benchmark. 12:13:02 http://shootout.alioth.debian.org/u64q/performance.php?test=threadring 12:13:05 Ha, still wins. 12:13:07 Other languages mad. 12:13:35 elliott: I'm pretty sure he'll mad at your if you say "languages" instead of "implementations". 12:13:45 shachaf: The languages are shootouting. 12:13:49 s/your/your/ 12:13:52 ... 12:14:05 * shachaf fingers mad 12:14:47 Where's the page where you can tweak the balances of each benchmark and the like so that your language wins? 12:14:58 zombo.com 12:15:00 This benchmark is hilarious. 12:15:01 Thanks 12:15:07 thread-ring, I mean. 12:15:15 elliott: You can't mad at zombocom. 12:15:28 shachaf: I thought I could do anything. 12:15:30 You can do anything, and somehow you can't mad. 12:15:35 Amazing. 12:15:42 It's a paradox. 12:16:02 elliott: You should write about @ and put it on a web page thingy. 12:16:05 I would read it. 12:16:47 shachaf: Well, I wrote a buzzwordy kind of five-paragraph introduction thing once. Or do you mean some kind of substantial development diary? Because, I mean, that would require work, but... 12:17:12 elliott: Well, ELABORATE ON ALL THE THINGS. 12:17:27 shachaf: http://codu.org/logs/_esoteric/. :p 12:17:34 I suppose it could do with a bit more... structure. 12:17:50 I don't know, something. So when someone says "Look at how cool my operating system is", I can say "that's nothing! Look @ this thing!" 12:18:05 These are good things to be thinking. 12:18:24 I suppose I could get around with that "setting up some sort of blahg thing" thing sometimes. 12:18:27 It just feels so pretentious. 12:18:48 No need to blech it. :-( 12:18:55 Just a web page that has things in it. 12:19:04 * shachaf is mad by blechs. 12:19:27 shachaf: Yes, but you see, the advantage of a blauhgjlkfdshlgj is that I don't have to organise it. 12:19:30 Sites need organisation and shit. 12:19:45 Blgfjkdflshs, you just put a little line every now and then saying "I slept a lot in between these bits". 12:19:58 Not really. 12:20:10 As long as the text is there it doesn't matter. 12:20:21 But, sure, write a abdlfapu/nqwndkladf. 12:20:34 Yes. I will write a ?XZ|D>SF?gkxh,c;lv.h 12:20:45 * shachaf would, like, totally add it to his RSS reader. 12:20:48 If I had an RSS reader. 12:20:49 Which I don't. 12:21:07 But I'd read it, or something. 12:21:23 See if you can outdo comonad.com. 12:21:48 elliott: I'm only awake right now because of you, by the way. 12:21:49 * shachaf mad 12:21:59 I can't get into reading comonad.com. It not me mad, but it not me enthral overly much. 12:22:17 http://www.myspace.com/penguinofthegods 12:22:28 Huh. 12:22:33 I don't think I made that. 12:22:57 (A lot of people used to make accounts for me when I refuse to.) 12:23:02 It seems to say Elliott Hird. 12:23:03 (A lot of bad, bad people.) 12:23:10 Are you = sargetron? 12:23:15 No. 12:23:20 Also, stop googling for me. 12:23:31 http://en.wikipedia.org/wiki/User:ElliottHird 12:23:32 Aw. 12:23:47 I think that might be one of my ancient user pages, but I really don't remember any more. 12:23:50 I have about fifty Wikipedia accounts. 12:24:18 Is any of them an administrator? 12:24:27 No. I use my shadowy cabal connections for that. 12:24:42 $ cabal shadow 12:24:42 cabal: unrecognised command: shadow (try --help) 12:24:46 Shadowy, yet mysterious. 12:25:07 elliott: Can I "google" sargetron? 12:25:28 Can I "shachaf" a "mad"? 12:25:35 * shachaf bing.com elliott 12:25:35 Anyway, I too had really better be going. Thou verily art maddest. 12:25:38 -!- elliott has quit (Quit: Leaving). 12:25:45 :-( 12:25:47 * shachaf mad 12:37:25 -!- hagb4rd has quit (Ping timeout: 248 seconds). 12:38:25 -!- plycke has joined. 12:38:25 -!- plycke has quit (Excess Flood). 12:48:40 -!- Ngevd has joined. 12:54:16 -!- Ngevd has quit (Read error: Connection reset by peer). 12:54:45 -!- Ngevd has joined. 13:08:22 http://en.wikipedia.org/wiki/Elliott_wave_principle 13:21:37 elliott, the fractal economist 13:24:54 -!- Phantom_Hoover has joined. 13:24:56 -!- Phantom_Hoover has quit (Changing host). 13:24:56 -!- Phantom_Hoover has joined. 13:25:09 So have moneys been donated to Scotch? 13:25:56 No 13:28:19 hmm, looks like yasm uses 256-bit addresses internally... seems a bit overkill 13:34:39 You never know how many bits you'll need. 13:35:13 no :) yasm actually seems to be using a variable-length encoding to theoretically support any address size 13:36:47 -!- sllide has joined. 13:37:09 but I accidentally tricked it (by using a negative address) into printing all the addresses in the mapfile as 256-bit numbers 13:53:11 -!- Jafet has joined. 13:59:20 -!- Phantom_Hoover has quit (Quit: Leaving). 14:02:57 -!- monqy has joined. 14:12:54 -!- Ngevd has quit (Ping timeout: 260 seconds). 14:16:09 -!- MSleep has changed nick to MDude. 14:22:28 -!- pikhq has joined. 14:22:52 -!- pikhq_ has quit (Ping timeout: 255 seconds). 14:51:27 @tell elliott The 3.x.y releases aren't on Linus's tree. 14:51:27 Consider it noted. 14:53:09 -!- Jafet has quit (Quit: Leaving.). 14:56:33 -!- Phantom_Hoover has joined. 14:58:07 -!- copumpkin has joined. 15:05:17 hmm, what's a good name for "the address where I've mapped all available physical memory into virtual memory"? 15:07:29 -!- pikhq_ has joined. 15:07:35 -!- pikhq has quit (Ping timeout: 256 seconds). 15:14:31 Maybe you could be all retro and call it the "core". 15:17:08 apparently linux calls it "logical" addresses 15:18:15 That's not so logical, since it doesn't in any way indicate all physical memory is there. 15:19:04 I've been calling it the "kernel base", but that seems wrong since the kernel itself is just one page of it 15:25:34 -!- plycke has joined. 15:25:34 -!- plycke has quit (Excess Flood). 15:45:53 -!- ais523 has joined. 16:00:13 -!- Phantom_Hoover has quit (Ping timeout: 258 seconds). 16:07:47 -!- pikhq has joined. 16:07:55 -!- pikhq_ has quit (Ping timeout: 258 seconds). 16:15:50 -!- Phantom_Hoover has joined. 16:38:32 -!- pikhq_ has joined. 16:38:49 -!- pikhq has quit (Ping timeout: 256 seconds). 16:40:29 > 9*9*4 16:40:30 324 16:46:44 > ((300000000)^2)/(2*6.67*10^(-11)) 16:46:45 *Exception: Negative exponent 16:46:52 oh for the love of 16:47:12 > ((300000000)**2)/(2*6.67*10**(-11)) 16:47:12 6.746626686656672e26 16:50:42 -!- tiffany has joined. 16:59:35 shut up Deewiant 17:12:44 -!- CakeProphet has quit (Ping timeout: 258 seconds). 17:21:31 -!- zzo38 has joined. 17:40:37 I think there is something wrong with my gopher server program, that when it closes connection before the request is complete, it will use 100% CPU for one minute. 17:42:55 -!- pikhq has joined. 17:43:00 -!- pikhq_ has quit (Ping timeout: 244 seconds). 17:46:58 zzo38, have you written it in Enhanced CWEB? 17:49:42 Phantom_Hoover: No, but I do have one written in Enhanced CWEB at FreeGeek, so when I can get that program, I could use that one. However, its configuration is compiled into the executable program instead of a separate file, but it could still do 17:50:33 -!- CakeProphet has joined. 17:51:26 Mysoft: How do you do that in FreeBasic? 17:52:04 -!- zzo38 has left. 17:55:50 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 17:56:34 * CakeProphet has a programming language concept. 17:56:40 -!- zzo38 has joined. 17:57:03 Do you like pinball game? 17:57:05 essentially continuation passing style with side-effects. 17:57:25 the two first-class citizens would be continuations and environments. 17:58:09 obviously this is not very esoteric. 17:58:12 zzo38: haven't played much. 18:02:10 though maybe it will be esoteric in that I can make some static guarantees that you wouldn't typically make with this kind of model (where different scopes can be mutated dynamically) ...I think. 18:02:26 with the right semantics.. 18:13:44 Who is bytemark7.spotonnet.co.uk? They are connecting to my gopher server, which is OK, though. They have no gopher server, but they do have an unconfigured HTTP server. 18:13:55 Running on CentOS. 18:14:40 -!- Phantom_Hoover has joined. 18:15:00 Why does my computer have a connection to host.ilati.net? 18:15:21 It is on their port 80, not mine. 18:18:17 -!- copumpkin has quit (Ping timeout: 258 seconds). 18:18:40 What I am wondering is what is this for: TCP zzo38computer:1782 host.ilati.net:http ESTABLISHED I don't know who they are and do not even have a web-browser program loaded at this time. 18:18:42 -!- copumpkin has joined. 18:19:07 I also have this line; I don't know what it means, do you know? TCP zzo38computer:1425 router:9393 CLOSE_WAIT 18:23:27 On Linux, "netstat -np" may help; -n will give an address in place of the name 'router', and more importantly -p will tell which process the connection belongs to. 18:24:08 On Windows, I'm not sure how to map connections to processes. 18:24:30 It is Windows, and I know what address 'router' belongs to because I configured it myself. It corresponds to the router that my computer is connected to. 18:24:56 What I do not know, is what that connection is for. 18:27:40 Port 9393 mostly seems to be used by a VoIP thing called TalkSwitch (unlikely), and an open-source vulnerability scanner called OpenVAS (equally unlikely?). 18:27:59 -!- pikhq_ has joined. 18:28:08 -!- pikhq has quit (Ping timeout: 255 seconds). 18:28:50 I do not have either of those. But the router is also connected to my brother's computer wirelessly, I don't know if he uses VoIP but I don't know why the connection would appear on my computer if it is. 18:29:39 Apparently at least on some versions of Windows, if you say "netstat -ano" it will also show PIDs that you can then look up in the Task Manager. ("-o" is the relevant switch.) 18:31:22 OK that helped a bit. I do have a "process" command to list processes. I looked at the PID for both of those connections and neither appears on the process list. 18:31:50 O no, actually the router one does. 18:32:04 It is some service process. 18:33:23 -!- pikhq has joined. 18:33:38 -!- pikhq_ has quit (Ping timeout: 260 seconds). 18:33:48 OK I found information about that service. 18:35:04 -!- augur has quit (Remote host closed the connection). 18:36:28 It has \Device\NamedPipe\ROUTER open, as well as HKU\S-1-5-19\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap, and \Device\WebDavRedirector 18:39:00 The service is listening on ports 1863 and 5000 for TCP, and 1900 UDP. I found the list of services belonging to that process. They are SSDPSRV and WebClient. 18:41:54 SSDP is part of the UPnP thing, which (among other things) contains features for software automagically opening inbound ports on a router. The connection to the router might be related. But I'm certainly no Windows expert. 18:48:48 Whatever program is connecting to host.ilati.net appears to be loading the process to connect and then disconnect and then loading the process again to connect again, making it difficult to find the process that is causing those connections. 18:50:33 How do I tell Windows to reload the hosts file? 18:52:30 I received a HTTP request a few seconds ago for "http://www.silkool.com/cgi-bin/son!fuckyou.php" 18:54:08 That sounds like a probe for badly configured proxies. 18:54:30 O, it did already reload hosts file. 18:55:17 My logfile seems to have quite many requests of "GET http://vlad-tepes.bofh.it/freenode-proxy-checker.txt". 18:55:39 -!- Sgeo|web has quit (Ping timeout: 252 seconds). 18:55:46 Whatever program is making the connection to host.ilati.net is not using that domain name, though. 18:55:55 It is not using the name host.ilati.net 18:55:59 isn't >>= sort of the same thing as CPS? 18:56:17 with some extra rules. 18:59:20 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 18:59:56 -!- Vorpal has joined. 19:02:42 It is possible that the Windows Firewall would let you make a outgoing rule that would block connections to that host, and then you could perhaps see which application it was that tried to connect from the firewall log. But I do not know of the details. 19:04:05 -!- zzo38 has quit (Disconnected by services). 19:04:11 -!- zzo38 has joined. 19:04:14 I figured out what that host.ilati.net is. It is the same as sa.column80.com which is proper; I have a gopher service that connects to that server. 19:04:24 -!- augur has joined. 19:08:37 -!- calamari has joined. 19:10:11 It is not only robots.txt; now there are some requests for humans.txt on my HTTP log. 19:11:43 I get many requests for things like "/wiki/index.php?title=User_talk:NO_Body&action=edit" which I know are on the MFGG wiki and which is not on my computer!! 19:12:03 I told them on their IRC a few times, but they don't know why these requests are on my computer either. 19:13:51 Specifically, User_talk:NO_Body, User:NO_Body, Image_talk:NB_Art_Ref.png, Image:NB_Art_Ref.png, Special:Upload, and various things in the Mario_Fan_Games_Galaxy_Wiki: namespace. 19:26:14 -!- Sgeo|web has joined. 19:26:30 Bah, captcha was partial derivative thingy 19:26:37 d^2/dy^2 is what I wrote 19:26:45 Although it was using the partial derivative symbol 19:26:59 -!- calamari has quit (Quit: Bye). 19:29:17 I don't particuarly like those CAPTCHA. Sometimes they are hard to read, sometimes they use symbols that I do not have on my computer, and they won't work if images/scripts are disabled or unsupported. 19:30:04 And, of course, they waste energy. 19:30:29 -!- calamari has joined. 19:31:35 zzo38, they... waste... energy. 19:32:16 I have read of a different system someone has used. It uses CSS to hide a few form fields that should not be filled in. If CSS is disabled or unsupported, it says "Please do not fill these fields" 19:35:09 Another way to avoid spam messages is to prohibit comments over HTTP and SMTP. 19:36:38 And this works for me; I only allow comments over gopher protocol. Spambots don't access gopher protocol, so it works. The text is still viewable by HTTP, though. 19:37:55 I have a service named "PhlogJournal"; I occasionally put stuff there. People can send comments too, but only gopher, not HTTP. 19:38:25 -!- ive has joined. 19:39:46 -!- BeholdMyGlory has quit (Ping timeout: 244 seconds). 19:40:28 The gopher movie time service has been broken for a long time; do you know how I could fix it please? When it worked, it worked extremely well. Now it doesn't work at all. 19:44:01 Official Discussion Thread - Episode 13: The Wedding of Discussion 19:49:09 -!- BeholdMyGlory has joined. 20:01:43 -!- oerjan has joined. 20:13:05 -!- copumpkin has quit (Ping timeout: 252 seconds). 20:13:30 -!- copumpkin has joined. 20:15:21 <-- also, it's surprisingly annoying to google for, with main google insisting on autocorrecting by adding "pollution" and google maps showing some insignificant town named "lake [...] michigan" 20:15:25 wait what 20:15:31 Lake Michigan looks like Norway <-- also, it's surprisingly annoying to google for, with main google insisting on autocorrecting by adding "pollution" and google maps showing some insignificant town named "lake [...] michigan" 20:16:45 i guess it must be _really_ polluted, if that's more famous than the lake itself. 20:18:42 googles auto-complete stuff is /really/ annoying. 20:19:16 the only time I really need it is when I'm not entirely clear on the spelling or name of something. 20:19:30 you mean autocorrect? 20:19:39 well, that can be annoying sometimes. 20:20:00 yes, I mean autocorrect. 20:20:02 -!- Ngevd has joined. 20:20:12 but also in Chrome the way it saves previous searches and uses those if you type something similar 20:20:26 Hello! 20:20:38 is incredibly annoying. Yes, I know you can backspace but I often type queries very fast and don't take time to notice that google has suddenly changed my search. 20:21:40 Ngevd: you might want to check the last log lines, it started with a response to you 20:22:41 Wow 20:22:49 I just wikipedia'd the both 20:23:22 i'm divided on that google instant thing. it slows down my laptop enough that i sometimes cannot see what i'm writing, which is annoying when i'm not sure if i've typoed 20:23:37 also, it annoyingly steals up/down arrows 20:23:59 Ngevd: i thought google maps would be quicker, but no... 20:24:03 "Lake [...] Michigan" is a weird name for a town; I didn't think they'd do that punctuation-rich names. 20:24:13 * oerjan swats fizzie -----### 20:25:03 (especially since google is my homepage) 20:25:05 I'm pretty sure I'm owed a swat but I can't remember what for 20:25:21 Ngevd: for claiming Geom is not TC, i think 20:25:29 No, it was before that 20:25:30 It is one reason why, I prefer to avoid to use Google. 20:25:36 And I redacted that comment 20:25:39 I set my homepage to about:blank 20:26:40 zzo38: well i could probably change it in the preferences. but when my laptop isn't too busy, sometimes instant is nice 20:27:21 I suspected it wasn't, stated that opinion, made it public, and lo and behold it was wrong 20:27:29 I think 20:27:55 -!- Ngevd has quit (Read error: Connection reset by peer). 20:28:09 sometimes they've made doodles that nearly made my laptop croak, too 20:28:12 -!- Ngevd has joined. 20:28:22 -!- sllide has quit (Ping timeout: 248 seconds). 20:30:46 I also like how it doesn't have a case for constant multiples and can't be used to build up derivatives because the chain rule isn't there. 20:31:22 both the product rule and the chain rule are special cases of the multivariable chain rule 20:31:57 which is also nice to use for exponentials, i think 20:31:58 It doesn't have that either. 20:33:02 Once at school I found a infinite series for ${\rm e}^x$ in the math textbook, and I was also taking calculus class (it is a separate class and did not use these textbook). And then I realized I can figure out the derivative so I did, and it is the same thing. 20:33:24 My bed is a wifi death spot 20:34:19 zzo38: yeah that's nice. although you need to prove that power series can be differentiated term by term 20:34:25 I also figured out the derivatives for sine and cosine, and because I knew that the teacher decide to ask me about the derivative of tangent, too, which I managed to figure out too; because the teacher told us about the rules for derivatives of divisions and all that stuff, so it can be figure out. 20:34:44 oerjan: I think we have already done so in calculus class before that time. 20:34:50 My bed is a wifi death spot <-- so move from your bed to elsewhere then? 20:35:24 personally I never enjoyed using a laptop in bed. I find it very awkward, and I like a cooling pad anyway. 20:35:34 But we only dealt with finite series; I just assumed it worked for infinite series too. Later when I asked the teacher he told me it was correct. 20:36:15 zzo38: the thing is it only works for some kinds of infinite series, because of possible convergence problems 20:36:37 oerjan: What kinds does it work and not work? 20:36:39 -!- Ngevd has quit (Remote host closed the connection). 20:37:07 well it works for power series (maclaurin and taylor series), i'm not sure for which others 20:37:43 I dislike calculus, it is so messy compared to linear algebra for example. Or set theory 20:37:43 Power series are the only thing I ever tried to use it for anyways. 20:39:46 power series are central to complex analysis, because functions which are differentiable wrt. complex numbers automatically have them 20:40:44 oerjan: currently I have a course at university which is basically about calculus with many variables. 20:42:34 I will tell you about the electronics class at my school. The year I entered, the teacher decided he would teach electronics theory as well, but he didn't know much about it. He said, the water atom is the simplest atom, it has only one electron. Half the students in the class including myself said that is wrong, what it really is, etc. So he said, OK, so it has 3 electrons. (Still wrong!) 20:43:02 that's bad :P 20:43:36 although hydrogen is from the greek word for water 20:44:17 He had a container with some resistors in it, he passed it around the classroom and asked each student to take one. He explained how to determine their value (he was correct about those). But them some students had resistors with five bands. He said those were diodes, not resistors, and we should throw them out. 20:44:37 ugh 20:44:39 what a mess 20:45:03 i don't recall the color codes although i have seen my father work with them 20:45:23 I know the color codes; as far as I can tell they are designed to be easy to remember. 20:45:36 (The teacher didn't believe me when I told him I noticed that.) 20:45:39 I use a lookup table for resistor colour codes. Or an ohm-meter 20:45:41 far easier XD 20:46:12 designed to be easy to remember? Really? 20:46:41 i vaguely recall the system is essentially a kind of floating point 20:47:02 kind of yes 20:47:03 Yes it is similar to floating point. 20:47:26 also there is the issue of figuring out which way to read it 20:47:30 it wouldn't be so bad otherwise 20:47:53 Vorpal: If the tolerance band is on, it is known which direction to read. 20:48:02 zzo38: and if it isn't? 20:48:10 Then it is difficult. 20:48:15 yep 20:48:36 zzo38: look at the top one in https://secure.wikimedia.org/wikipedia/en/wiki/File:Resistors_color_code.jpg 20:48:48 that seems to be a LOT of bands? 20:52:58 Later on he gave all the students a schematic diagram for an electronic circuit, and put another copy on the board so that he could explain it. He did not explain it very well, but he could explain it a bit. He explained how to use a breadboard to build it. 20:54:19 One group of students came to my table to ask for help. To them, it looked correct. To me, it looked like many wires were connected to themself, some LEDs were connected backwards, there was only one resistor (which was not even of the correct value), and the power lines were not connected at all. 20:55:23 what was this? pre-high school? 20:55:34 Vorpal: No, it was high school. 20:55:37 ugh 20:56:36 I explained to them the wrong wires and so on, and I explained that there are supposed to be four resistors and not of this value. They said since they had a larger resistor, they only needed one (the resistor they used was in fact physically larger than the ones we ordinarily used). I told them the value was wrong, by the color stripes, and then they said those stripes are only for decoration. 20:57:43 Now something about the schematic diagrams we have been given. The transistors were labels T1 and T2. I told the teacher it should be Q1 and Q2, but he didn't believe me. 20:59:54 The teacher was good at PCBs; he did know how to use the etching and resist pens and all that stuff. That is one thing he was good at. 21:01:13 When it was time to build that circuit on the PCB, mine didn't work. I eventually figured out why. The schematic diagram he gave to all the students had an error in it; there was an extra wire that doesn't belong. Once I cut that trace, it worked. 21:01:32 But this was strange; all the other student's boards worked correctly the first time. 21:05:57 -!- Ngevd has joined. 21:06:03 -!- myndzi has quit (Ping timeout: 245 seconds). 21:06:20 Haskell, doing things a tricky and not obvious way 21:06:39 \x -> last $ zipWith const [1..] ['a'..x] 21:06:41 Ngevd: It seem to me the proper mathematical way. 21:07:39 Although that is strange way, though. 21:08:04 @src Ix 21:08:04 class (Ord a) => Ix a where 21:08:04 range :: (a,a) -> [a] 21:08:04 index :: (a,a) -> a -> Int 21:08:04 inRange :: (a,a) -> a -> Bool 21:08:04 rangeSize :: (a,a) -> Int 21:08:28 > let x = 'z' in index ('a',x) x 21:08:29 25 21:08:57 Yes that way seem better 21:09:07 off-by-one though 21:09:36 oh hm 21:09:44 > rangeSize ('a','z') 21:09:45 26 21:11:10 > ((+1) . on subtract fromEnum 'a') 'z' 21:11:12 26 21:11:28 > let x = 'z' in length ['a'..x] 21:11:29 26 21:11:47 Ngevd: rangeSize is more efficient though, i think 21:12:37 Deewiant's version might work for most Enums though 21:12:46 (not floats) 21:12:51 hm 21:12:52 All sensible Enums. 21:12:55 > fromEnum 1.0 21:12:56 1 21:12:59 > fromEnum 1.1 21:13:00 1 21:13:04 O, so, if function is called f, you have f = rangeSize . (,) 'a' 21:13:14 I really only have one major problem with haskell: that it is so hard to know the best and/or fastest way to do something in haskell. 21:13:25 heh 21:14:15 Vorpal: Yes; I was thinking about that too. You could have the compiler can prove some things about it to optimize it, and you can also specify your own proofs of various things, to make the program more efficient. 21:14:35 lazyness, while cool in general makes it hard for me to make any sort of useful prediction about how efficient some code will be. 21:14:49 hm it is possible Deewiant's method works for floats too, modulo rounding errors 21:15:10 > fromEnum 0.9 21:15:10 0 21:15:33 Since the way you would do things in mathematics is not necessarily the same way it would be done by computer. 21:16:13 zzo38: that doesn't solve best way though. Since there can still be the case of neater code using a few standard library functions instead of the huge function you just wrote 21:16:48 @check \x y -> x <= y ==> (((+1) . on subtract fromEnum x) y == length [x..y :: Double] 21:16:48 Unbalanced parentheses 21:16:49 :t fromEnum 21:16:49 forall a. (Enum a) => a -> Int 21:17:03 @check \x y -> x <= y ==> (((+1) . on subtract fromEnum x) y == length [x..y :: Double]) 21:17:03 No instance for (Test.QuickCheck.Testable 21:17:04 (Test.QuickCh... 21:17:12 wat 21:17:15 Vorpal: Well, yes, that is a different thing. Although it applies in general to computer programming, as well as to mathematics in some cases. 21:17:16 oerjan: ==> doesn't work in lambdabot IIRC 21:17:23 oh 21:17:34 @check \x y -> x > y || (((+1) . on subtract fromEnum x) y == length [x..y :: Double]) 21:17:34 "Falsifiable, after 1 tests:\n-2.6666666666666665\n0.6666666666666666\n" 21:17:35 zzo38: not really hard to learn with a small standard library like that of C. 21:17:37 (It used to work, but not for some years) 21:17:40 haskell has a huge standard library 21:17:55 oh well 21:17:56 -!- Ngevd has quit (Remote host closed the connection). 21:18:15 > fromEnum (-2.66) 21:18:16 @check \x y -> x > y || (((+1) . on subtract fromEnum x) y == length [x..y :: Rational]) 21:18:16 -2 21:18:17 "Falsifiable, after 7 tests:\n(-1) % 2\n0 % 1\n" 21:18:21 Vorpal: Yes, there are still differences, such as C smaller standard library. And therefore you can understand it better in C library possibly. 21:18:23 -!- augur has quit (Remote host closed the connection). 21:18:30 Deewiant: oh. 21:18:39 > [-2.666 .. 0.66] 21:18:40 [-2.666,-1.666,-0.6659999999999999,0.3340000000000001] 21:18:54 @check \x y -> x > y || x < 0 || (((+1) . on subtract fromEnum x) y == length [x..y :: Rational]) 21:18:54 "Falsifiable, after 11 tests:\n0 % 1\n1 % 2\n" 21:19:15 > [0%1 .. 1%2] 21:19:15 [0 % 1,1 % 1] 21:19:19 oh right, that too 21:19:24 > map fromEnum [0%1 .. 1%2] 21:19:25 [0,1] 21:20:15 Deewiant: that's a coincidence, i think 21:20:29 They have said to use something like reverse . reverse = id and some people complain it doesn't work; but I think that is not mathematically correct anyways. An infinite list has no final element, and the list must always have an initial element; therefore the reverse is not defined, so it doesn't work. 21:22:18 yes, that only works for finite lists 21:22:34 more to the point it only work for lists 21:22:50 :t reverse 21:22:51 forall a. [a] -> [a] 21:22:54 yeah 21:23:12 i don't think there's a standard typeclass for reversible types :P 21:23:58 http://science.cabot.ac.uk/index.php/2011/10/a-star-set-to-blow/ 21:23:59 Ooh. 21:24:05 nothing that would work on a tree, at least 21:27:05 hm that sounds a bit imprecise though, i recall betelgeuse is also "any moment" but that one could be now or in a million years 21:27:39 -!- calamari has quit (Ping timeout: 258 seconds). 21:27:52 but perhaps this type is supposed to be more predictable 21:29:23 Great, some idiot on the comments thread thinks that he's an expert on relativity but doesn't understand that simultaneity is defined in all reference frames. 21:30:13 dun dun dunning-kruger 21:30:39 * Phantom_Hoover swatpans oerjan --==\#/ 21:31:56 thank you, i'll be here all week, unless they drag me away 21:35:04 -!- Ngevd has joined. 21:35:54 Hello! 21:38:13 ayieeeeeh! 21:38:15 i mean, hi 21:38:25 Yeah, wifi deathspot 21:38:34 I'll probably disconnect again soon 21:40:25 -!- calamari has joined. 21:46:02 Have you placed bets on the D&D game yet? 21:49:17 -!- myndzi has joined. 21:49:59 @where elliott 21:50:04 @list where 21:50:04 where provides: where url what where+ 21:50:14 ?ty fromList 21:50:15 forall a (m :: * -> *). (MonadRandom m) => [(a, Rational)] -> m a 21:50:22 Funny fromList to pick. 21:50:23 @where+ elliott is tumbling around Northumberland 21:50:23 Nice! 21:50:26 -!- Ngevd has quit (Remote host closed the connection). 21:50:37 @where elliott 21:50:37 is tumbling around Northumberland 21:50:41 how much would people here hate me if I submitted [[BF Joust strategies]] to proggit? 21:50:43 ouch 21:50:47 Nortumblerland. 21:50:50 ais523, so much. 21:50:55 @where+ elliott elliott is tumbling around Northumberland 21:50:55 Done. 21:51:07 @where elliott 21:51:07 elliott is tumbling around Northumberland 21:51:12 ais523: To me, I don't care if you do or not. 21:51:12 @where+ elliott tumbling around Northumberland 21:51:13 Done. 21:51:19 * Phantom_Hoover → sleep 21:51:20 -!- Phantom_Hoover has quit (Quit: Leaving). 21:51:21 To other people, I don't know. 21:51:23 oh well, I'll do it anyway 21:51:23 Phantom_Hoover: what 21:51:26 @where+ elliott elliott is tumbling around Northumberland 21:51:26 Nice! 21:51:37 grammar fail! 21:52:03 oerjan: It makes sense the PH way too. "Where's elliott? Tumbling around tumble-land." 21:52:52 @where elliott 21:52:53 elliott is tumbling around Northumberland 21:52:54 ais523: the danger is they'll end up here to try it out 21:53:00 oerjan: indeed 21:53:08 I think we can probably handle it, though 21:53:23 worst case we just put EgoBot in #irp and let them try it there 21:53:35 (#irp's /intended purpose/ is as a honeypot for Redditors) 21:53:44 It occurs to me that I have no idea what the point of Katamari is 21:54:20 Sgeo|web: to pick up stuff into your katamari so that you may form new stars. 21:54:27 TO RESTORE COSMIC ORDER. 21:54:36 it's a good programming article, anyway 21:54:43 i* redditor pot 21:54:53 Sgeo|web: the /plot/ is irrelevant, the point is that it's fun to roll arbitrary objects up into a giant ball 21:54:59 So, how do I form a new star once I collect stuff? 21:55:08 I'm just playing with Katamari Hack 21:55:08 it happens 21:55:17 like, that's the primary game mode 21:55:24 you roll shit up in a certain amount of time and then you win. 21:55:45 -!- ive has quit (Ping timeout: 252 seconds). 21:55:52 oerjan: ? 21:56:17 oerjan: "irctacular". 21:56:20 shachaf: be vewy vewy quiet, i'm backwonyming 21:57:24 fizzie: i ... dunno 21:58:55 oerjan: Ircular. Ircsome. Ircoid. Irreverent. Wait, it's diverging. 21:59:54 Inevitable. 22:00:06 -!- calamari has quit (Ping timeout: 260 seconds). 22:03:14 Hah, the good old days of #haskell, when everyone thought I worked at Galois. <-- wait shachaf is a haskell _impostor_? 22:04:04 oerjan: Ah, you're reading the backlog. 22:04:19 oerjan: Not working about Galois makes you an impostor now? :-( 22:04:23 Impostor. 22:04:57 shachaf: the conclusion was based on other nearby comments as well. 22:05:28 ? 22:06:27 such as you being about the same #haskell age as elliott. 22:06:57 clearly your aura of ancient haskell guru is fake. 22:07:01 I guess you've found me out. 22:07:10 u mad? 22:07:13 * shachaf sure mad 22:07:34 u thant 22:08:59 -!- pikhq has quit (Remote host closed the connection). 22:09:15 -!- pikhq has joined. 22:12:55 -!- calamari has joined. 22:13:55 In a music file called "fracture_in_space.mod" I found that one of the samples seems to be not a sound file but part of "Turbo Debugger 80386 Device Driver Version 2.0; Copyright (C) 1988, 1990 by Borland International, Inc." 22:14:34 -!- Patashu has joined. 22:14:47 I don't know how that got in there. 22:15:04 neither do i 22:15:55 That is, if you look at what should be the sound data for sample 1, it is not a proper sound data but it is some binary containing that text in ASCII. 22:18:15 hows it sound? :P 22:18:21 fizzie: you should watch the trine credits. I think it was in the "thanks to" section that coffee was mentioned XD 22:18:40 It does not sound like a proper sound effect, but it is not a problem because it is not used in the music at all. 22:18:54 -!- ive has joined. 22:19:51 Maybe they deleted sample 1, but the tracker program they used used all samples in order anyways, so filled it in with whatever was in memory. 22:20:20 -!- twice11 has quit (*.net *.split). 22:21:07 -!- copumpkin has quit (*.net *.split). 22:21:08 -!- variable has quit (*.net *.split). 22:22:02 or maybe they actually used the device driver as a sample? 22:22:20 maybe they used the mod file to sneak the device driver around 22:22:30 It is only a part of the binary though. Not the entire device driver. 22:22:41 Not nearly enough to use it. 22:23:12 -!- twice11 has joined. 22:23:12 -!- copumpkin has joined. 22:23:12 -!- variable has joined. 22:23:30 the rest is somewhere else 22:23:48 I looked in the MOD file using a hex editor and it is not there. 22:23:57 So if the rest is somewhere else, it is in a different file. 22:24:00 yes 22:24:59 Ooh, a MOD file that contains random music? 22:25:02 That sounds cool 22:25:31 No, it does not contain random music. It contains proper music; the sample 1 (not used in the music) is the only one having the device driver code. 22:26:34 Oh, darn 22:27:14 Ah, misunderstood Maybe they deleted sample 1, but the tracker program they used used all samples in order anyways, so filled it in with whatever was in memory. 22:28:36 -!- zzo38 has quit (Read error: Connection reset by peer). 22:28:49 That would be weird, a .mod file that exploits a bug in some .mod player 22:29:04 -!- zzo38 has joined. 22:29:36 [18:28] That would be weird, a .mod file that exploits a bug in some .mod player 22:34:22 I think I've finally permanently decided that there are better channels for my personal issues than here 22:40:03 That's probably a wise decision. 22:43:07 I don't want to live anymore and I can't stop drinking, help. 22:45:24 Then go to somewhere that they have to test drugs or whatever, and then if the test fails then you will be dead from it. Or, run away and get eaten by the bears. Or put ductape on your mouth so that you are forced to stop drinking. 22:46:29 CakeProphet: Drink more? 22:55:13 Sgeo|web: poor other channel. That is all 22:55:17 but sure, not here 22:55:34 My logfile seems to have quite many requests of "GET http://vlad-tepes.bofh.it/freenode-proxy-checker.txt". 22:55:50 i'm sure i've seen that mentioned in their faq or something 22:56:29 well or it may not be freenode's own, of course 22:57:03 I added two new messages in PhlogJournal. 22:57:19 um wait no it's the server message at freenode startup 22:57:52 22:01 - freenode runs an open proxy scanner. Your use of the network 22:57:52 22:01 - indicates your acceptance of this policy. For details on 22:57:52 22:01 - freenode network policy, please take a look at our policy 22:57:52 22:01 - page (http://freenode.net/policy.shtml). Thank you for using 22:57:52 22:01 - the network! 22:58:14 yeah, kind of strange to echo it back through the same connection. 22:59:31 Vorpal: er, you mean my paste? 22:59:45 no the line "http://vlad-tepes.bofh.it/freenode-proxy-checker.txt"" 22:59:50 s/""/"/ 23:02:28 wtf, I had to chmod -x /usr/bin/pulseaudio to get sound to work suddenly 23:02:33 fuck pulseaudio 23:04:22 Specifically, User_talk:NO_Body, User:NO_Body, Image_talk:NB_Art_Ref.png, Image:NB_Art_Ref.png, Special:Upload, and various things in the Mario_Fan_Games_Galaxy_Wiki: namespace. 23:04:51 wild guess, you don't have a file on your own http server which is copied from there, and which might contain those links? 23:05:14 Maybe I accidentally copied a file that has those links; I have never intended to do so. 23:05:18 I will look. 23:11:00 If I have intended to copy it and have just forgotten, then I might want to add the BASE tag to specify where it actually is; but I think I saved a copy of that file somewhere in the directories accessible by my HTTP server by accident. 23:11:35 -!- pikhq has quit (Read error: Connection reset by peer). 23:11:37 -!- pikhq_ has joined. 23:19:33 hm I noticed I do not enjoy yogscast videos of a game I played (apart from minecraft) because I see all the mistakes they make all the time. 23:19:38 Like in Dead Island. 23:19:59 so fucking bad playing. Yet I discovered that game through yogscast. But yeah they suck at playing it. 23:20:32 I probably suck at most games 23:20:47 I'm quite good at RPGs. 23:21:49 especially the type with lots of complexity, I find that easy enough to learn. 23:22:06 Are you good at flipperless pinball game? 23:22:35 ... probably not. I find arcade games boring 23:23:07 recently I only played RPG and sandbox. 23:23:15 those are the genres I really enjoy 23:24:29 Do you like text adventure game? 23:24:35 Do you like Dungeons&Dragons game? 23:24:38 Do you like chess game? 23:24:40 I like 3D graphics, high end 3D graphics even. Above Crysis level preferred. 23:24:48 and I do like NWN. Graphics are dated. 23:24:56 but sure, I have some nostalgia for NWN 23:25:09 chess: meh 23:25:23 zzo38: recently I only played AAA titles really. 23:25:56 well okay, some indie too. Bastion. humble bundle 23:26:46 -!- ive has quit (Quit: leaving). 23:27:40 Flipperless pinball game is the only pinball games I am good at; I am one of the best players at flipperless pinball. 23:27:41 -!- ais523 has quit (Remote host closed the connection). 23:28:11 zzo38: titles I played recently and enjoyed (not all are new): Witcher 2, Oblivion, Deus Ex: Human Revolution, Dead Island, Terraria, GTA IV (had technical problems with this one though, lag spikes), Minecraft, Bastion, Trine. 23:28:41 zzo38: there, now you know what type of game I like. I don't care at all for arcade. 23:28:58 as you will notice, they are either RPG, or sandbox, or both 23:30:18 okay Trine stands out as a puzzle game with RPG elements. 23:31:00 If you want a game with a story, try text adventure games. Role playing games (I don't mean computer "RPG" games) are also often story based and text adventure games are probably the closest thing you can get on a computer, even though real role playing games are of an entirely different kind. There are a nearly unlimited different possible situations. 23:31:08 zzo38: I want graphics too 23:31:34 I haven't played nethack recently, not since I got this computer during the summer. 23:31:36 Well, then, the PlayStation 3 has a very powerful graphics. 23:31:54 zzo38: I prefer PC games. Since I don't own a PlayStation 3, nor any other console 23:31:59 Or at least, that is what I have heard. (I don't own a PlayStation 3) 23:32:07 I have a very powerful PC 23:33:08 Well, the modern "PC games" require an operating system, so they are not truly deserved to simply be called PC games. 23:33:26 zzo38: anyway, my main point here was not asking for game tips, but to point out I'm not really interested in pinball games, or text adventure (I find it hard to visualize which direction I should walk in to get to some other place, very annoying) 23:34:53 -!- ive has joined. 23:36:07 zzo38: where do you go to get killed from being drug tested? 23:36:26 CakeProphet: I think he meant helping testing new drugs 23:36:27 XD 23:36:29 CakeProphet: I don't know. 23:36:46 zzo38: anyway I have both windows and linux, so I can play pretty much ever game that is designed to run on a common OS on a PC. Because Mac-exclusive games are pretty much unheard of, unless it is for iphone/ipad/ipod touch 23:37:07 Vorpal: oh right. 23:37:08 in which case it isn't PC anyway 23:37:17 Well, yes, but to me, "PC game" means one that does not require an operating system at all and only requires the PC BIOS. 23:37:37 zzo38: well, that is pretty much you only. To most people it means windows games. 23:38:06 zzo38: besides my PC doesn't have a BIOS. It is EFI based. Sure there is BIOS emulation 23:38:11 but it is not a BIOS 23:38:59 zzo38: so I think a PC game in your sense would have to include ones that only use EFI and not the BIOS emulation of such exists 23:39:09 anything else would be illogical 23:39:16 zzo38: don't you agree? 23:39:57 zzo38: well? 23:40:05 Actually, no. The reason has to do with the way the PC was designed; it is the IBM compatible design, generally. But I can understand your point. 23:40:19 zzo38: PC just means personal computer 23:40:38 zzo38: so that means a PPC Mac running openfirmware would qualify too 23:40:50 zzo38: you want "IBM PC game" specifically 23:41:00 I hope that is what you will use in the future. 23:41:38 If you just think PC means personal computer, then you can even count Macintosh, and anything else someone makes too. Which makes "PC game" a meaningless term. 23:41:52 But, yes, I suppose "IBM PC game" is a more accurate for what I meant. 23:42:20 zzo38: PC does stand for personal computer. Look it up 23:42:29 Yes I know that. 23:43:07 in fact, a phone is a type of personal computer: It is a low end computer, you seldom share it between multiple users. 23:43:53 I suppose you mean cellular phone. 23:44:01 yes 23:44:17 though most phones these days contain computers 23:44:43 like wireless landline phones. Or landline phones with answering machines and a display. 23:44:54 Well, yes. But the landline telephones do not run as many programs and are often shared. 23:44:59 indeed 23:46:40 the question of what "PC" _should_ mean is probably nearly irrelevant to what its usual meaning is. 23:46:49 zzo38: anyway, what MOST people mean with PC games is games running under windows, or sometimes windows/linux/macosx 23:47:05 oerjan: yep 23:47:24 oerjan: still, barebone IBM PC game is NOT what most people mean with PC game 23:47:27 it's just another word affected by language change 23:47:31 which was the key point in this discussion 23:47:35 ITT: semantics 23:47:48 CakeProphet: I forgot, what did ITT stand for 23:47:56 typically in this thread. 23:47:58 once again, i canno... i'm with Vorpal 23:48:07 but on IRC I suppose it would mean in this topic. 23:48:14 as IRC isn't thread-based. 23:48:17 oerjan: canno? what? 23:48:33 We should make some sort of thread-based live chat 23:48:45 Vorpal: i am simulating an interrupted phrase here 23:49:02 oerjan: that doesn't really make much sense over IRC due to line ending 23:49:04 editing* 23:49:26 Vorpal: yeah i even added the canno part after i saw your message :P 23:49:34 oerjan: right 23:49:55 also it makes plenty of sense ;) 23:50:27 oerjan: the key point above was that when I said PC game zzo38 interpreted it as games running without OS just making use of BIOS functions. Which is a very weird definition of PC game. 23:50:34 i seem to be almost entirely transfering from D and ) to P in emoticons these days 23:51:06 oerjan: there is probably a deeper meaning to that, but I'm too lazy to figure it out 23:51:32 "that"? 23:51:43 that = "the transferring" 23:51:53 i assume i picked it up from this channel 23:52:16 oerjan: no I think it is because you are becoming older and more cynical 23:52:29 no, then i would use | or / 23:52:31 o~o 23:52:40 o~o 23:52:44 which still happens 23:52:55 @_@ 23:53:03 eh 23:53:05 or one of those 23:53:12 I hate when people say "PC game" and really mean "windows-only game" 23:53:12 tiffany: two buoys with a wave in between? 23:53:32 tiffany: actually I mean "game I can play on my dual booting PC" 23:53:33 :P 23:53:41 which includes everything but mac basically 23:53:47 the term is just so generic 23:53:57 "game that you play on a computer designed for personal use" 23:54:01 okay not freebsd games. But well, come on, are there freebsd exclusive titles? 23:54:15 tiffany: as opposed to mainframe games, yeah 23:54:23 or cluster games 23:54:23 are there even mainframe games? 23:54:30 aside from things like that tetris game on sdf 23:54:32 this game is so PC, no bloodshed or swearing at all 23:54:32 probably not 23:54:39 tiffany: sdf? 23:54:46 gopher://sdf.org :p 23:54:48 oerjan: augh 23:55:00 tiffany: too new firefox 23:55:03 can't do it 23:55:07 ;~; 23:55:07 well I could try lynx 23:55:21 * tiffany pulls up public proxy from floodgap 23:55:28 tiffany: two fishing hooks with a wave between? 23:55:32 weird smiley that 23:55:35 http://gopher.floodgap.com/gopher/gw?a=sdf.org 23:56:03 oh god, when was that last updated 23:56:12 I have no idea :p 23:56:14 it is like the early 90s 23:56:24 tiffany: anyway, that is a unix system, not a mainframe. 23:56:27 Vorpal: no it means tiffany is a crab 23:56:34 robot crab 23:56:37 .-. 23:56:40 well 23:56:48 aren't mainframes extinct? 23:56:50 mainframe is typically not a unix system, but something like an IBM mainframe. 23:56:58 tiffany: IBM zSeries still exist 23:57:06 otherwise they are pretty much extinct. 23:57:15 tiffany: things like banks and such still buy them 23:57:18 that is about it 23:57:19 o.o 23:57:58 oh it is "IBM System z" now 23:58:05 was zSeries a few years ago 23:59:45 I also hate when people say "PC game" and really mean "windows-only game"