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